enhance(client): 投稿フォームをちょっといい感じに (#10442)
* .formラッパーを削除 * fix type of MkPostFormAttaches * 🚀 * 🎨 * 🎨 * 🎨 * 🎨 * specifiedの時は連合なしをdisabledに * ✌️ * set select default * gap: 2px (max-width: 500px) / 4px * wip * ✌️ * 🎨 * fix maxTextLength * 今後表示しない * 🎨 * cache channel * 🎨 * 連合なしにする * use i18n.ts.neverShow * ✌️ * refactor * fix indent * tweak --------- Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
This commit is contained in:
parent
d739aeee32
commit
6798effbab
16 changed files with 338 additions and 211 deletions
|
@ -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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue