diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2023-04-05 14:30:03 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-05 14:30:03 +0900 |
| commit | 6798effbabe52e1afb9c83767f971679306c3428 (patch) | |
| tree | c7e3be197132b215465c59ad83dd041307d012a1 /packages/frontend/src/components/MkVisibilityPicker.vue | |
| parent | fix(frontend): add missing import (diff) | |
| download | misskey-6798effbabe52e1afb9c83767f971679306c3428.tar.gz misskey-6798effbabe52e1afb9c83767f971679306c3428.tar.bz2 misskey-6798effbabe52e1afb9c83767f971679306c3428.zip | |
enhance(client): 投稿フォームをちょっといい感じに (#10442)
* .formラッパーを削除
* fix type of MkPostFormAttaches
* :rocket:
* :art:
* :art:
* :art:
* :art:
* specifiedの時は連合なしをdisabledに
* :v:
* set select default
* gap: 2px (max-width: 500px) / 4px
* wip
* :v:
* :art:
* fix maxTextLength
* 今後表示しない
* :art:
* cache channel
* :art:
* 連合なしにする
* use i18n.ts.neverShow
* :v:
* refactor
* fix indent
* tweak
---------
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'packages/frontend/src/components/MkVisibilityPicker.vue')
| -rw-r--r-- | packages/frontend/src/components/MkVisibilityPicker.vue | 76 |
1 files changed, 34 insertions, 42 deletions
diff --git a/packages/frontend/src/components/MkVisibilityPicker.vue b/packages/frontend/src/components/MkVisibilityPicker.vue index 703c75c7d0..c181d84bc0 100644 --- a/packages/frontend/src/components/MkVisibilityPicker.vue +++ b/packages/frontend/src/components/MkVisibilityPicker.vue @@ -1,6 +1,9 @@ <template> -<MkModal ref="modal" :z-priority="'high'" :src="src" @click="modal.close()" @closed="emit('closed')"> - <div class="_popup" :class="$style.root"> +<MkModal ref="modal" v-slot="{ type }" :z-priority="'high'" :src="src" @click="modal.close()" @closed="emit('closed')"> + <div class="_popup" :class="{ [$style.root]: true, [$style.asDrawer]: type === 'drawer' }"> + <div :class="[$style.label, $style.item]"> + {{ i18n.ts.visibility }} + </div> <button key="public" class="_button" :class="[$style.item, { [$style.active]: v === 'public' }]" data-index="1" @click="choose('public')"> <div :class="$style.icon"><i class="ti ti-world"></i></div> <div :class="$style.body"> @@ -29,21 +32,12 @@ <span :class="$style.itemDescription">{{ i18n.ts._visibility.specifiedDescription }}</span> </div> </button> - <div :class="$style.divider"></div> - <button key="localOnly" class="_button" :class="[$style.item, $style.localOnly, { [$style.active]: localOnly }]" data-index="5" @click="localOnly = !localOnly"> - <div :class="$style.icon"><i class="ti ti-world-off"></i></div> - <div :class="$style.body"> - <span :class="$style.itemTitle">{{ i18n.ts._visibility.disableFederation }}</span> - <span :class="$style.itemDescription">{{ i18n.ts._visibility.disableFederationDescription }}</span> - </div> - <div :class="$style.toggle"><i :class="localOnly ? 'ti ti-toggle-right' : 'ti ti-toggle-left'"></i></div> - </button> </div> </MkModal> </template> <script lang="ts" setup> -import { nextTick, watch } from 'vue'; +import { nextTick } from 'vue'; import * as misskey from 'misskey-js'; import MkModal from '@/components/MkModal.vue'; import { i18n } from '@/i18n'; @@ -52,42 +46,58 @@ const modal = $shallowRef<InstanceType<typeof MkModal>>(); const props = withDefaults(defineProps<{ currentVisibility: typeof misskey.noteVisibilities[number]; - currentLocalOnly: boolean; + localOnly: boolean; src?: HTMLElement; }>(), { }); const emit = defineEmits<{ (ev: 'changeVisibility', v: typeof misskey.noteVisibilities[number]): void; - (ev: 'changeLocalOnly', v: boolean): void; (ev: 'closed'): void; }>(); let v = $ref(props.currentVisibility); -let localOnly = $ref(props.currentLocalOnly); - -watch($$(localOnly), () => { - emit('changeLocalOnly', localOnly); -}); function choose(visibility: typeof misskey.noteVisibilities[number]): void { v = visibility; emit('changeVisibility', visibility); nextTick(() => { - modal.close(); + if (modal) modal.close(); }); } </script> <style lang="scss" module> .root { - width: 240px; + min-width: 240px; padding: 8px 0; + + &.asDrawer { + padding: 12px 0 max(env(safe-area-inset-bottom, 0px), 12px) 0; + width: 100%; + border-radius: 24px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + + .label { + pointer-events: none; + font-size: 12px; + padding-bottom: 4px; + opacity: 0.7; + } + + .item { + font-size: 14px; + padding: 10px 24px; + } + } } -.divider { - margin: 8px 0; - border-top: solid 0.5px var(--divider); +.label { + pointer-events: none; + font-size: 10px; + padding-bottom: 4px; + opacity: 0.7; } .item { @@ -107,13 +117,7 @@ function choose(visibility: typeof misskey.noteVisibilities[number]): void { } &.active { - color: var(--fgOnAccent); - background: var(--accent); - } - - &.localOnly.active { color: var(--accent); - background: inherit; } } @@ -144,16 +148,4 @@ function choose(visibility: typeof misskey.noteVisibilities[number]): void { .itemDescription { opacity: 0.6; } - -.toggle { - display: flex; - justify-content: center; - align-items: center; - margin-left: 10px; - width: 16px; - top: 0; - bottom: 0; - margin-top: auto; - margin-bottom: auto; -} </style> |