Select Git revision
MyCoursesNavigation.vue
Forked from
Stud.IP / Stud.IP
Source project has a limited visibility.
-
Jan-Hendrik Willms authored
Closes #1696 Merge request studip/studip!772
Jan-Hendrik Willms authoredCloses #1696 Merge request studip/studip!772
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>