# ZeenSidebar
# Примеры:
Размеры:
zeenSidebar
zeen-sidebar-width
zeen-sidebar-padding-top
zeen-sidebar-padding-bottom
zeen-sidebar-padding-left
zeen-sidebar-padding-right
zeen-sidebar-filter-blur
Цвета:
zeen-sidebar-background
По умолчанию наследуется от main-light
zeen-sidebar-overlay-background
По умолчанию наследуется от main-transparent
# props
Название | Тип | Обязательный | По умолчанию | Описание |
---|---|---|---|---|
sidebar | Boolean | - | false | активный компонент или нет |
width | Number | - | 270 | Максимальная ширинa компонента |
# emits
Название | Тип | Обязательный | Описание |
---|---|---|---|
sidebar | Boolean | - | Для закрытия компонента после клика по overlay. Передайте сюда значение props sidebar = false |
# Source Code - исходный код компонента
<template>
<div v-show="sidebar">
<div
class="zeen-sidebar"
:style="{
'--zeen-sidebar-width': width ? width + 'px' : undefined,
}"
>
<ZeenScrollBar class="zeen-sidebar__content">
<div class="zeen-sidebar__content-scroller">
<slot></slot>
</div>
</ZeenScrollBar>
<div class="zeen-sidebar__overlay" @click="$emit('sidebar')" />
</div>
</div>
</template>
<script>
import ZeenScrollBar from '../ZeenScrollBar/ZeenScrollBar'
import {disablePageScroll, enablePageScroll} from 'scroll-lock'
export default {
name: 'ZeenSidebar',
components: {ZeenScrollBar},
props: {
width: {
type: Number,
},
sidebar: {
type: Boolean,
default: false,
},
scrollLock: {
type: Boolean,
default: false,
},
},
watch: {
scrollLock(newVal) {
if (newVal) {
disablePageScroll()
} else {
enablePageScroll()
}
},
},
}
</script>
<style>
:root {
/* Размеры */
--zeen-sidebar-width: 300px;
--zeen-sidebar-filter-blur: 5px;
--zeen-sidebar-padding-top: 0;
--zeen-sidebar-padding-bottom: 0;
--zeen-sidebar-padding-left: 0;
--zeen-sidebar-padding-right: 0;
/* Цвета */
--zeen-sidebar-background: var(--main-light);
--zeen-sidebar-overlay-background: var(--main-transparent);
}
</style>
<style lang="scss" scoped>
.zeen-sidebar {
position: fixed;
right: 0;
top: 0;
left: 0;
bottom: 0;
z-index: 1000;
box-sizing: border-box;
&__content {
padding-top: var(--zeen-sidebar-padding-top);
padding-bottom: var(--zeen-sidebar-padding-bottom);
padding-left: var(--zeen-sidebar-padding-left);
padding-right: var(--zeen-sidebar-padding-right);
max-width: 100%;
width: var(--zeen-sidebar-width);
background: var(--zeen-sidebar-background);
position: absolute;
top: 0;
right: 0;
bottom: 0;
overflow: auto;
z-index: 2;
&-scroller {
width: 100%;
overflow: hidden;
}
}
&__overlay {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: 1;
background: var(--zeen-sidebar-overlay-background);
backdrop-filter: blur(var(--zeen-sidebar-filter-blur));
}
}
</style>
← ZeenHeader ZeenChat →