diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-06 10:11:47 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-06 10:11:47 +0900 |
| commit | 9aececc921584781247934101b83bfb0f792c889 (patch) | |
| tree | c234ff43a4c57d46f748aa462860328ff9c3ecd3 /packages/frontend/src/components | |
| parent | :art: (diff) | |
| download | misskey-9aececc921584781247934101b83bfb0f792c889.tar.gz misskey-9aececc921584781247934101b83bfb0f792c889.tar.bz2 misskey-9aececc921584781247934101b83bfb0f792c889.zip | |
:art:
Diffstat (limited to 'packages/frontend/src/components')
| -rw-r--r-- | packages/frontend/src/components/MkPopupMenu.vue | 3 | ||||
| -rw-r--r-- | packages/frontend/src/components/form/select.vue | 17 |
2 files changed, 18 insertions, 2 deletions
diff --git a/packages/frontend/src/components/MkPopupMenu.vue b/packages/frontend/src/components/MkPopupMenu.vue index b5987715a9..34af209c06 100644 --- a/packages/frontend/src/components/MkPopupMenu.vue +++ b/packages/frontend/src/components/MkPopupMenu.vue @@ -1,5 +1,5 @@ <template> -<MkModal ref="modal" v-slot="{ type, maxHeight }" :z-priority="'high'" :src="src" :transparent-bg="true" @click="modal.close()" @closed="emit('closed')"> +<MkModal ref="modal" v-slot="{ type, maxHeight }" :z-priority="'high'" :src="src" :transparent-bg="true" @click="modal.close()" @close="emit('closing')" @closed="emit('closed')"> <MkMenu :items="items" :align="align" :width="width" :max-height="maxHeight" :as-drawer="type === 'drawer'" class="sfhdhdhq" :class="{ drawer: type === 'drawer' }" @close="modal.close()"/> </MkModal> </template> @@ -20,6 +20,7 @@ defineProps<{ const emit = defineEmits<{ (ev: 'closed'): void; + (ev: 'closing'): void; }>(); let modal = $shallowRef<InstanceType<typeof MkModal>>(); diff --git a/packages/frontend/src/components/form/select.vue b/packages/frontend/src/components/form/select.vue index 068ca2ebc6..4b5a14f5be 100644 --- a/packages/frontend/src/components/form/select.vue +++ b/packages/frontend/src/components/form/select.vue @@ -18,7 +18,7 @@ > <slot></slot> </select> - <div ref="suffixEl" class="suffix"><i class="ti ti-chevron-down"></i></div> + <div ref="suffixEl" class="suffix"><i class="ti ti-chevron-down" :class="[$style.chevron, { [$style.chevronOpening]: opening }]"></i></div> </div> <div class="caption"><slot name="caption"></slot></div> @@ -56,6 +56,7 @@ const slots = useSlots(); const { modelValue, autofocus } = toRefs(props); const v = ref(modelValue.value); const focused = ref(false); +const opening = ref(false); const changed = ref(false); const invalid = ref(false); const filled = computed(() => v.value !== '' && v.value != null); @@ -119,6 +120,7 @@ onMounted(() => { const onClick = (ev: MouseEvent) => { focused.value = true; + opening.value = true; const menu = []; let options = slots.default!(); @@ -158,6 +160,9 @@ const onClick = (ev: MouseEvent) => { os.popupMenu(menu, container.value, { width: container.value.offsetWidth, + onClosing: () => { + opening.value = false; + }, }).then(() => { focused.value = false; }); @@ -277,3 +282,13 @@ const onClick = (ev: MouseEvent) => { } } </style> + +<style lang="scss" module> +.chevron { + transition: transform 0.5s ease; +} + +.chevronOpening { + transform: rotateX(180deg); +} +</style> |