summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkVisibilityPicker.vue
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2023-04-05 14:30:03 +0900
committerGitHub <noreply@github.com>2023-04-05 14:30:03 +0900
commit6798effbabe52e1afb9c83767f971679306c3428 (patch)
treec7e3be197132b215465c59ad83dd041307d012a1 /packages/frontend/src/components/MkVisibilityPicker.vue
parentfix(frontend): add missing import (diff)
downloadmisskey-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.vue76
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>