diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-06-25 10:08:44 +0900 |
|---|---|---|
| committer | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-06-25 10:08:44 +0900 |
| commit | 43abbce2af609797fb45bdad9dbfbc653bec201b (patch) | |
| tree | 286c55fe039b8cba0ca5be82a4f27649f04c8cc2 /packages/frontend/src/components | |
| parent | enhance(frontend): improve useScrollPositionKeeper (diff) | |
| download | misskey-43abbce2af609797fb45bdad9dbfbc653bec201b.tar.gz misskey-43abbce2af609797fb45bdad9dbfbc653bec201b.tar.bz2 misskey-43abbce2af609797fb45bdad9dbfbc653bec201b.zip | |
enhance(frontend): 全てのページネーションにおいてコンテキストメニューからリロードできるように
Diffstat (limited to 'packages/frontend/src/components')
| -rw-r--r-- | packages/frontend/src/components/MkPagination.vue | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/packages/frontend/src/components/MkPagination.vue b/packages/frontend/src/components/MkPagination.vue index 681abd2eff..aded18f220 100644 --- a/packages/frontend/src/components/MkPagination.vue +++ b/packages/frontend/src/components/MkPagination.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<component :is="prefer.s.enablePullToRefresh && pullToRefresh ? MkPullToRefresh : 'div'" :refresher="() => paginator.reload()"> +<component :is="prefer.s.enablePullToRefresh && pullToRefresh ? MkPullToRefresh : 'div'" :refresher="() => paginator.reload()" @contextmenu.prevent.stop="onContextmenu"> <!-- :css="prefer.s.animation" にしたいけどバグる(おそらくvueのバグ) https://github.com/misskey-dev/misskey/issues/16078 --> <Transition :enterActiveClass="prefer.s.animation ? $style.transition_fade_enterActive : ''" @@ -41,6 +41,7 @@ SPDX-License-Identifier: AGPL-3.0-only </template> <script lang="ts" setup generic="T extends PagingCtx"> +import { isLink } from '@@/js/is-link.js'; import type { PagingCtx } from '@/composables/use-pagination.js'; import type { UnwrapRef } from 'vue'; import MkButton from '@/components/MkButton.vue'; @@ -48,6 +49,7 @@ import { i18n } from '@/i18n.js'; import { prefer } from '@/preferences.js'; import { usePagination } from '@/composables/use-pagination.js'; import MkPullToRefresh from '@/components/MkPullToRefresh.vue'; +import * as os from '@/os.js'; type Paginator = ReturnType<typeof usePagination<T['endpoint']>>; @@ -73,6 +75,19 @@ function appearFetchMore() { paginator.fetchOlder(); } +function onContextmenu(ev: MouseEvent) { + if (ev.target && isLink(ev.target as HTMLElement)) return; + if (window.getSelection()?.toString() !== '') return; + + os.contextMenu([{ + icon: 'ti ti-refresh', + text: i18n.ts.reload, + action: () => { + paginator.reload(); + }, + }], ev); +} + defineSlots<{ empty: () => void; default: (props: { items: UnwrapRef<Paginator['items']> }) => void; |