Skip to content
Snippets Groups Projects
Select Git revision
  • a9815b1b5f59a84b6526a33bebdb86619e8234f6
  • main default protected
  • studip-rector
  • ci-opt
  • course-members-export-as-word
  • data-vue-app
  • pipeline-improvements
  • webpack-optimizations
  • rector
  • icon-renewal
  • http-client-and-factories
  • jsonapi-atomic-operations
  • vueify-messages
  • tic-2341
  • 135-translatable-study-areas
  • extensible-sorm-action-parameters
  • sorm-configuration-trait
  • jsonapi-mvv-routes
  • docblocks-for-magic-methods
19 results

MyCoursesNavigation.vue

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    MyCoursesNavigation.vue 1.59 KiB
    <template>
        <ul class="my-courses-navigation" v-if="navigationLength > 0">
            <li v-for="(nav, index) in navigation" class="my-courses-navigation-item" :class="nav.class" :key="index">
                <a v-if="nav" :href="nav.url" v-bind="nav.attr">
                    <studip-icon :shape="nav.icon.shape" :role="nav.icon.role" :size="iconSize"></studip-icon>
                </a>
                <span v-else class="empty-slot" :style="{width: `${iconSize}px`}"></span>
            </li>
        </ul>
    </template>
    
    <script>
    export default {
        name: 'my-courses-navigation',
        props: {
            navigation: Object,
            iconSize: {
                type: Number,
                required: false,
                default: 24,
            },
        },
        computed: {
            navigationLength () {
                return Object.keys(this.navigation).length;
            }
        }
    }
    </script>
    
    <style lang="scss">
    @use '../../assets/stylesheets/mixins.scss';
    $icon-padding: 3px;
    
    .my-courses-navigation {
        list-style: none;
        margin: 0;
        margin-bottom: -10px;
        padding: 0;
    
        display: flex;
        flex-wrap: wrap;
    }
    .my-courses-navigation-item {
        margin: 0 3px 10px 0;
    
        a {
            display: inline-block;
            padding: $icon-padding;
        }
    
        &:last-child {
            margin-right: 0;
        }
    
        img {
            vertical-align: bottom;
        }
    
        .empty-slot {
            display: inline-block;
            padding-left: $icon-padding;
            padding-right: $icon-padding;
        }
    }
    .my-courses-navigation-important {
        $border-width: 1px;
        border: $border-width solid mixins.$red;
    
        a {
            padding: $icon-padding - $border-width;
        }
    }
    </style>