[WIP] Добавил анимацию сайдбара

This commit is contained in:
megavrilinvv
2023-05-31 17:40:52 +03:00
parent 415528a62f
commit 3424b0bb26
2 changed files with 87 additions and 75 deletions

View File

@@ -1,7 +1,7 @@
<template lang="pug"> <template lang="pug">
.w-full.flex.gap-x-2 .w-full.flex.gap-x-2
calendar-open-sidebar(v-if="isOpen", :open-sidebar="openSidebar") calendar-open-sidebar(:class="{'close': !isOpen, 'active': isOpen}" :open-sidebar="openSidebar")
calendar-sidebar(v-else, :open-sidebar="openSidebar") calendar-sidebar.-ml-2(v-if="!isOpen", :open-sidebar="openSidebar")
calendar-wrapper calendar-wrapper
</template> </template>
@@ -27,3 +27,17 @@ export default {
}, },
}; };
</script> </script>
<style lang="sass" scoped>
.close
opacity: 0
width: 0px
height: 0
transition: opacity 0.2s, width 0.3s
.active
opacity: 1
width: 232px
height: 100%
transition: opacity 0.5s, width 0.3s
</style>

View File

@@ -1,76 +1,77 @@
<template lang="pug"> <template lang="pug">
.sidebar.flex.flex-col.gap-y-1 .flex.flex-col.gap-y-1
.form.flex.items-center.justify-end.py-4.pr-4.rounded-t .item.flex.flex-col
q-btn.rotate-180( .form.flex.items-center.justify-end.py-4.pr-4.rounded-t
@click="openSidebar", q-btn.rotate-180(
dense, @click="openSidebar",
padding="8px", dense,
style="color: var(--font-grey-color); background: var(--bg-light-grey)" padding="8px",
) style="color: var(--font-grey-color); background: var(--bg-light-grey)"
img(:src="arrow")
.form.flex.p-4
q-btn(
color="primary",
size="16px",
label="Создать запись",
no-caps,
icon="add",
:style="{width: '100%', height: '40px'}",
padding="0"
)
.flex.flex-col.gap-y-1(v-for="elem in patientList")
q-expansion-item.expansion.font-bold.text-xm(
expand-separator
:label="elem.label",
:class="{'patient': elem.label === 'Пациенты'}"
)
.select.flex.flex-col.font-medium.text-smm.px-4(
v-if="elem.label !== 'Пациенты'",
v-for="item in elem.data"
) )
.status.flex.items-center.gap-x-1.px-2 img(:src="arrow")
img(:src="item.icon") .form.flex.p-4
span {{item.name}} q-btn(
.flex.flex-col.p-4.pb-0(v-else) color="primary",
.flex.h-8.w-full.items-center.justify-between size="16px",
base-input( label="Создать запись",
v-model="foundPerson", no-caps,
debounce="10", icon="add",
@keyup.enter="searchPerson", :style="{width: '100%', height: '40px'}",
@input="searchPerson", padding="0"
id="input", )
placeholder="Найти пациента...", .flex.flex-col.gap-y-1(v-for="elem in patientList")
outlined, q-expansion-item.expansion.font-bold.text-xm(
:width="160", expand-separator
iconLeft, :label="elem.label",
fontSize="12px", :class="{'patient': elem.label === 'Пациенты'}"
lineHeight="16px", )
textColor="var(--font-grey-color)" .select.flex.flex-col.font-medium.text-smm.px-4(
) v-if="elem.label !== 'Пациенты'",
q-icon(name="app:icon-search", size="16px", style="color: var(--font-grey-color)") v-for="item in elem.data"
q-btn.btn.ml-2( )
@click="sortPerson(elem.data)", .status.flex.items-center.gap-x-1.px-2
icon="app:sort-number", img(:src="item.icon")
:style="{width: '32px', height: '32px'}", span {{item.name}}
padding="0" .flex.flex-col.p-4.pb-0(v-else)
) .flex.h-8.w-full.items-center.justify-between
.flex.flex-col base-input(
.flex.items-center.justify-between.font-medium.text-smm.h-10.py-2.cursor-pointer( v-model="foundPerson",
@click="checkAll(elem.data)" debounce="10",
) @keyup.enter="searchPerson",
span Все @input="searchPerson",
img(v-if="selectAll(elem.data)", :src="icon_ok") id="input",
.person-wrapper.flex.flex-col placeholder="Найти пациента...",
.person.items-center.flex.justify-between.py-2.cursor-pointer( outlined,
v-for="(person, index) in choiceData(elem.data)", :width="160",
@click="checkPerson(index, elem.data)" iconLeft,
fontSize="12px",
lineHeight="16px",
textColor="var(--font-grey-color)"
) )
.flex.items-center.gap-x-2 q-icon(name="app:icon-search", size="16px", style="color: var(--font-grey-color)")
img.h-10.w-10.object-cover.rounded-full(:src="person.avatar") q-btn.btn.ml-2(
.flex.flex-col.font-medium @click="sortPerson(elem.data)",
.text-smm {{trimOwnerName(person.last_name, person.first_name, person.patronymic)}} icon="app:sort-number",
.text.text-xsx {{person.birthday}} :style="{width: '32px', height: '32px'}",
img.h-6.w-6(v-if="person.check", :src="icon_ok") padding="0"
)
.flex.flex-col
.flex.items-center.justify-between.font-medium.text-smm.h-10.py-2.cursor-pointer(
@click="checkAll(elem.data)"
)
span Все
img(v-if="selectAll(elem.data)", :src="icon_ok")
.person-wrapper.flex.flex-col
.person.items-center.flex.justify-between.py-2.cursor-pointer(
v-for="(person, index) in choiceData(elem.data)",
@click="checkPerson(index, elem.data)"
)
.flex.items-center.gap-x-2
img.h-10.w-10.object-cover.rounded-full(:src="person.avatar")
.flex.flex-col.font-medium
.text-smm {{trimOwnerName(person.last_name, person.first_name, person.patronymic)}}
.text.text-xsx {{person.birthday}}
img.h-6.w-6(v-if="person.check", :src="icon_ok")
</template> </template>
<script> <script>
@@ -137,9 +138,6 @@ export default {
</script> </script>
<style lang="sass" scoped> <style lang="sass" scoped>
.sidebar
width: 232px
.form .form
background: var(--default-white) background: var(--default-white)
width: 100% width: 100%