diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2023-08-09 09:08:47 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-09 09:08:47 +0900 |
| commit | e6f3dd81ba4ad492158e278ecb0f9d9893bf2958 (patch) | |
| tree | c20e9671edd38da0bba9c42dd6c71263274014a7 /packages/frontend/src/components/MkPopupMenu.vue | |
| parent | fix(backend/ApNoteService): try retrieving again when failed by duplication (... (diff) | |
| download | misskey-e6f3dd81ba4ad492158e278ecb0f9d9893bf2958.tar.gz misskey-e6f3dd81ba4ad492158e278ecb0f9d9893bf2958.tar.bz2 misskey-e6f3dd81ba4ad492158e278ecb0f9d9893bf2958.zip | |
fix(frontend): MkPopupMenuがドロワーで子メニューの出現と同時にpopupをresolveさせるのをやめさせる (#11441)
* fix(frontend): MkPopupMenuがドロワーで子メニューの出現と同時にpopupをresolveさせるのをやめさせる
* fix
* noCache
* :v:
* fix
* ????
* a
* a
* :v:
* fix emoji picker
* ?????
* close
* 1
* fix2
* :v:
* fix
* :v:
* :v:
* :v:
* preferClick
* :v:
* fix lint
* a
* rm nocache
Diffstat (limited to 'packages/frontend/src/components/MkPopupMenu.vue')
| -rw-r--r-- | packages/frontend/src/components/MkPopupMenu.vue | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/packages/frontend/src/components/MkPopupMenu.vue b/packages/frontend/src/components/MkPopupMenu.vue index 6e7656f745..ee7dbecf05 100644 --- a/packages/frontend/src/components/MkPopupMenu.vue +++ b/packages/frontend/src/components/MkPopupMenu.vue @@ -4,13 +4,13 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<MkModal ref="modal" v-slot="{ type, maxHeight }" :zPriority="'high'" :src="src" :transparentBg="true" @click="modal.close()" @close="emit('closing')" @closed="emit('closed')"> - <MkMenu :items="items" :align="align" :width="width" :max-height="maxHeight" :asDrawer="type === 'drawer'" :class="{ [$style.drawer]: type === 'drawer' }" @close="modal.close()"/> +<MkModal ref="modal" v-slot="{ type, maxHeight }" :manualShowing="manualShowing" :zPriority="'high'" :src="src" :transparentBg="true" @click="click" @close="onModalClose" @closed="onModalClosed"> + <MkMenu :items="items" :align="align" :width="width" :max-height="maxHeight" :asDrawer="type === 'drawer'" :class="{ [$style.drawer]: type === 'drawer' }" @close="onMenuClose" @hide="hide"/> </MkModal> </template> <script lang="ts" setup> -import { } from 'vue'; +import { ref } from 'vue'; import MkModal from './MkModal.vue'; import MkMenu from './MkMenu.vue'; import { MenuItem } from '@/types/menu'; @@ -29,6 +29,46 @@ const emit = defineEmits<{ }>(); let modal = $shallowRef<InstanceType<typeof MkModal>>(); +const manualShowing = ref(true); +const hiding = ref(false); + +function click() { + close(); +} + +function onModalClose() { + emit('closing'); +} + +function onMenuClose() { + close(); + if (hiding.value) { + // hidingであればclosedを発火 + emit('closed'); + } +} + +function onModalClosed() { + if (!hiding.value) { + // hidingでなければclosedを発火 + emit('closed'); + } +} + +function hide() { + manualShowing.value = false; + hiding.value = true; + + // closeは呼ぶ必要がある + modal?.close(); +} + +function close() { + manualShowing.value = false; + + // closeは呼ぶ必要がある + modal?.close(); +} </script> <style lang="scss" module> |