diff options
Diffstat (limited to 'packages/frontend/src/components/MkPostForm.vue')
| -rw-r--r-- | packages/frontend/src/components/MkPostForm.vue | 53 |
1 files changed, 7 insertions, 46 deletions
diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index e31c33149f..d57300f647 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only </div> <div :class="$style.headerRight"> <template v-if="!(channel != null && fixed)"> - <button v-if="channel == null" ref="visibilityButton" v-tooltip="i18n.ts.visibility" :class="['_button', $style.headerRightItem, $style.visibility]" @click="setVisibility"> + <button v-if="channel == null" ref="visibilityButton" v-click-anime v-tooltip="i18n.ts.visibility" :class="['_button', $style.headerRightItem, $style.visibility]" @click="setVisibility"> <span v-if="visibility === 'public'"><i class="ti ti-world"></i></span> <span v-if="visibility === 'home'"><i class="ti ti-home"></i></span> <span v-if="visibility === 'followers'"><i class="ti ti-lock"></i></span> @@ -32,11 +32,15 @@ SPDX-License-Identifier: AGPL-3.0-only <span :class="$style.headerRightButtonText">{{ channel.name }}</span> </button> </template> - <button v-tooltip="i18n.ts._visibility.disableFederation" class="_button" :class="[$style.headerRightItem, { [$style.danger]: localOnly }]" :disabled="channel != null || visibility === 'specified'" @click="toggleLocalOnly"> + <button v-click-anime v-tooltip="i18n.ts._visibility.disableFederation" class="_button" :class="[$style.headerRightItem, { [$style.danger]: localOnly }]" :disabled="channel != null || visibility === 'specified'" @click="toggleLocalOnly"> <span v-if="!localOnly"><i class="ti ti-rocket"></i></span> <span v-else><i class="ti ti-rocket-off"></i></span> </button> - <button ref="otherSettingsButton" v-tooltip="i18n.ts.other" class="_button" :class="$style.headerRightItem" @click="showOtherSettings"><i class="ti ti-dots"></i></button> + <button v-click-anime v-tooltip="i18n.ts.reactionAcceptance" class="_button" :class="[$style.headerRightItem, { [$style.danger]: reactionAcceptance === 'likeOnly' }]" @click="toggleReactionAcceptance"> + <span v-if="reactionAcceptance === 'likeOnly'"><i class="ti ti-heart"></i></span> + <span v-else-if="reactionAcceptance === 'likeOnlyForRemote'"><i class="ti ti-heart-plus"></i></span> + <span v-else><i class="ti ti-icons"></i></span> + </button> <button v-click-anime class="_button" :class="$style.submit" :disabled="!canPost" data-cy-open-post-form-submit @click="post"> <div :class="$style.submitInner"> <template v-if="posted"></template> @@ -107,7 +111,6 @@ import { toASCII } from 'punycode.js'; import { host, url } from '@@/js/config.js'; import type { ShallowRef } from 'vue'; import type { PostFormProps } from '@/types/post-form.js'; -import type { MenuItem } from '@/types/menu.js'; import type { PollEditorModelValue } from '@/components/MkPollEditor.vue'; import MkNotePreview from '@/components/MkNotePreview.vue'; import XPostFormAttaches from '@/components/MkPostFormAttaches.vue'; @@ -168,7 +171,6 @@ const textareaEl = shallowRef<HTMLTextAreaElement | null>(null); const cwInputEl = shallowRef<HTMLInputElement | null>(null); const hashtagsInputEl = shallowRef<HTMLInputElement | null>(null); const visibilityButton = shallowRef<HTMLElement>(); -const otherSettingsButton = shallowRef<HTMLElement>(); const posting = ref(false); const posted = ref(false); @@ -554,47 +556,6 @@ async function toggleReactionAcceptance() { reactionAcceptance.value = select.result; } -//#region その他の設定メニューpopup -function showOtherSettings() { - let reactionAcceptanceIcon = 'ti ti-icons'; - - if (reactionAcceptance.value === 'likeOnly') { - reactionAcceptanceIcon = 'ti ti-heart _love'; - } else if (reactionAcceptance.value === 'likeOnlyForRemote') { - reactionAcceptanceIcon = 'ti ti-heart-plus'; - } - - const menuDef = [{ - icon: reactionAcceptanceIcon, - text: i18n.ts.reactionAcceptance, - action: () => { - toggleReactionAcceptance(); - }, - }, { type: 'divider' }, { - icon: 'ti ti-trash', - text: i18n.ts.reset, - danger: true, - action: async () => { - if (props.mock) return; - const { canceled } = await os.confirm({ - type: 'question', - text: i18n.ts.resetAreYouSure, - }); - if (canceled) return; - clear(); - }, - }] satisfies MenuItem[]; - - const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkPostFormOtherMenu.vue')), { - items: menuDef, - textLength: textLength.value, - src: otherSettingsButton.value, - }, { - closed: () => dispose(), - }); -} -//#endregion - function pushVisibleUser(user: Misskey.entities.UserDetailed) { if (!visibleUsers.value.some(u => u.username === user.username && u.host === user.host)) { visibleUsers.value.push(user); |