mattyatea Fork とマージ
This commit is contained in:
parent
71382a6f85
commit
ed2f1772b0
|
@ -7403,6 +7403,10 @@ export interface Locale extends ILocale {
|
||||||
* {name}はオリジナルのType4nyを改変したバージョンを使用しています。
|
* {name}はオリジナルのType4nyを改変したバージョンを使用しています。
|
||||||
*/
|
*/
|
||||||
"thisIsModifiedVersion": ParameterizedString<"name">;
|
"thisIsModifiedVersion": ParameterizedString<"name">;
|
||||||
|
/**
|
||||||
|
* 当フォークのソースコード
|
||||||
|
*/
|
||||||
|
"forksource": string;
|
||||||
/**
|
/**
|
||||||
* Type4nyを翻訳
|
* Type4nyを翻訳
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -257,7 +257,6 @@ import MkReactionIcon from '@/components/MkReactionIcon.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import { miLocalStorage } from '@/local-storage.js';
|
import { miLocalStorage } from '@/local-storage.js';
|
||||||
import { infoImageUrl, instance, isEnabledUrlPreview } from '@/instance.js';
|
import { infoImageUrl, instance, isEnabledUrlPreview } from '@/instance.js';
|
||||||
import MkPostForm from '@/components/MkPostFormSimple.vue';
|
|
||||||
import { deviceKind } from '@/scripts/device-kind.js';
|
import { deviceKind } from '@/scripts/device-kind.js';
|
||||||
|
|
||||||
const MOBILE_THRESHOLD = 500;
|
const MOBILE_THRESHOLD = 500;
|
||||||
|
|
|
@ -99,25 +99,11 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.mentionMax, 'mentionLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.mentionMax }}</template>
|
<MkFoldableSection>
|
||||||
<template #suffix>
|
<template #header>{{ i18n.ts.timeline}}</template>
|
||||||
<span v-if="role.policies.mentionLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.mentionLimit.value }}</span>
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.gtlAvailable, 'gtlAvailable'])" class="_margin">
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.mentionLimit)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.mentionLimit.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkInput v-model="role.policies.mentionLimit.value" :disabled="role.policies.mentionLimit.useDefault" type="number" :readonly="readonly">
|
|
||||||
</MkInput>
|
|
||||||
<MkRange v-model="role.policies.mentionLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.gtlAvailable, 'gtlAvailable'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.gtlAvailable }}</template>
|
<template #label>{{ i18n.ts._role._options.gtlAvailable }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.gtlAvailable.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.gtlAvailable.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
@ -156,8 +142,12 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
</MkFoldableSection>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canPublicNote, 'canPublicNote'])">
|
<MkFoldableSection>
|
||||||
|
<template #header>{{ i18n.ts.note }}</template>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canPublicNote, 'canPublicNote'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canPublicNote }}</template>
|
<template #label>{{ i18n.ts._role._options.canPublicNote }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.canPublicNote.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.canPublicNote.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
@ -177,7 +167,91 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canInvite, 'canInvite'])">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.mentionMax, 'mentionLimit'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.mentionMax }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.mentionLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.mentionLimit.value }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.mentionLimit)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.mentionLimit.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="role.policies.mentionLimit.value" :disabled="role.policies.mentionLimit.useDefault" type="number" :readonly="readonly">
|
||||||
|
</MkInput>
|
||||||
|
<MkRange v-model="role.policies.mentionLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canEditNote, 'canEditNote'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.canEditNote }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.canEditNote.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.canEditNote.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canEditNote)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.canEditNote.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkSwitch v-model="role.policies.canEditNote.value" :disabled="role.policies.canEditNote.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkRange v-model="role.policies.canEditNote.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canSearchNotes, 'canSearchNotes'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.canSearchNotes }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.canSearchNotes.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.canSearchNotes.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canSearchNotes)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.canSearchNotes.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkSwitch v-model="role.policies.canSearchNotes.value" :disabled="role.policies.canSearchNotes.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkRange v-model="role.policies.canSearchNotes.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canUseTranslator, 'canUseTranslator'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.canUseTranslator }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.canUseTranslator.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.canUseTranslator.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canUseTranslator)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.canUseTranslator.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkSwitch v-model="role.policies.canUseTranslator.value" :disabled="role.policies.canUseTranslator.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkRange v-model="role.policies.canUseTranslator.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
|
||||||
|
</MkFoldableSection>
|
||||||
|
|
||||||
|
<MkFoldableSection>
|
||||||
|
<template #header>{{ i18n.ts.invite }}</template>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canInvite, 'canInvite'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canInvite }}</template>
|
<template #label>{{ i18n.ts._role._options.canInvite }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.canInvite.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.canInvite.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
@ -185,7 +259,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canInvite)"></i></span>
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canInvite)"></i></span>
|
||||||
</template>
|
</template>
|
||||||
<div class="_gaps">
|
<div class="_gaps">
|
||||||
<MkSwitch v-model="role.policies.canInvite.useDefault" :readonly="readonly">
|
<MkSwitch v-model="role.policies.canInvite.useDefault" :readonly="readonly" >
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkSwitch v-model="role.policies.canInvite.value" :disabled="role.policies.canInvite.useDefault" :readonly="readonly">
|
<MkSwitch v-model="role.policies.canInvite.value" :disabled="role.policies.canInvite.useDefault" :readonly="readonly">
|
||||||
|
@ -197,7 +271,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteLimit, 'inviteLimit'])">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteLimit, 'inviteLimit'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.inviteLimit }}</template>
|
<template #label>{{ i18n.ts._role._options.inviteLimit }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.inviteLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.inviteLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
@ -214,9 +288,9 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder >
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteLimitCycle, 'inviteLimitCycle'])">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteLimitCycle, 'inviteLimitCycle'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.inviteLimitCycle }}</template>
|
<template #label>{{ i18n.ts._role._options.inviteLimitCycle }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.inviteLimitCycle.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.inviteLimitCycle.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
@ -255,8 +329,11 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
</MkFoldableSection>
|
||||||
|
<MkFoldableSection >
|
||||||
|
<template #header>カスタム絵文字系</template>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canManageCustomEmojis, 'canManageCustomEmojis'])">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canManageCustomEmojis, 'canManageCustomEmojis'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canManageCustomEmojis }}</template>
|
<template #label>{{ i18n.ts._role._options.canManageCustomEmojis }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.canManageCustomEmojis.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.canManageCustomEmojis.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
@ -275,68 +352,88 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canRequestCustomEmojis, 'canRequestCustomEmojis'])">
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canManageAvatarDecorations, 'canManageAvatarDecorations'])">
|
<template #label>{{ i18n.ts._role._options.canRequestCustomEmojis }}</template>
|
||||||
<template #label>{{ i18n.ts._role._options.canManageAvatarDecorations }}</template>
|
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.canManageAvatarDecorations.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.canRequestCustomEmojis.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
<span v-else>{{ role.policies.canManageAvatarDecorations.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
<span v-else>{{ role.policies.canRequestCustomEmojis.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canManageAvatarDecorations)"></i></span>
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canRequestCustomEmojis)"></i></span>
|
||||||
</template>
|
</template>
|
||||||
<div class="_gaps">
|
<div class="_gaps">
|
||||||
<MkSwitch v-model="role.policies.canManageAvatarDecorations.useDefault" :readonly="readonly">
|
<MkSwitch v-model="role.policies.canRequestCustomEmojis.useDefault" :readonly="readonly">
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkSwitch v-model="role.policies.canManageAvatarDecorations.value" :disabled="role.policies.canManageAvatarDecorations.useDefault" :readonly="readonly">
|
<MkSwitch v-model="role.policies.canRequestCustomEmojis.value" :disabled="role.policies.canRequestCustomEmojis.useDefault" :readonly="readonly">
|
||||||
<template #label>{{ i18n.ts.enable }}</template>
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkRange v-model="role.policies.canManageAvatarDecorations.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
<MkRange v-model="role.policies.canRequestCustomEmojis.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
</MkFoldableSection>
|
||||||
|
<MkFoldableSection>
|
||||||
|
<template #header>Type4ny</template>
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.emojiPickerProfileLimit, 'emojiPickerProfileLimit'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.emojiPickerProfileLimit }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.emojiPickerProfileLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.emojiPickerProfileLimit.value }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.emojiPickerProfileLimit)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.emojiPickerProfileLimit.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="role.policies.emojiPickerProfileLimit.value" :disabled="role.policies.emojiPickerProfileLimit.useDefault" type="number" :readonly="readonly">
|
||||||
|
</MkInput>
|
||||||
|
<MkRange v-model="role.policies.emojiPickerProfileLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.listPinnedLimit, 'listPinnedLimit'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.listPinnedLimit }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.listPinnedLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.listPinnedLimit.value }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.listPinnedLimit)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.listPinnedLimit.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="role.policies.listPinnedLimit.value" :disabled="role.policies.listPinnedLimit.useDefault" type="number" :readonly="readonly">
|
||||||
|
</MkInput>
|
||||||
|
<MkRange v-model="role.policies.listPinnedLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.localTimelineAnyLimit, 'localTimelineAnyLimit'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.localTimelineAnyLimit }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.localTimelineAnyLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.antennaLimit.value }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.localTimelineAnyLimit)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.localTimelineAnyLimit.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="role.policies.localTimelineAnyLimit.value" :disabled="role.policies.localTimelineAnyLimit.useDefault" type="number" :readonly="readonly">
|
||||||
|
</MkInput>
|
||||||
|
<MkRange v-model="role.policies.localTimelineAnyLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canSearchNotes, 'canSearchNotes'])">
|
</MkFoldableSection>
|
||||||
<template #label>{{ i18n.ts._role._options.canSearchNotes }}</template>
|
<MkFoldableSection>
|
||||||
<template #suffix>
|
<template #header>{{ i18n.ts.drive }}, {{ i18n.ts.files }}</template>
|
||||||
<span v-if="role.policies.canSearchNotes.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.canSearchNotes.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canSearchNotes)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.canSearchNotes.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkSwitch v-model="role.policies.canSearchNotes.value" :disabled="role.policies.canSearchNotes.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts.enable }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkRange v-model="role.policies.canSearchNotes.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canUseTranslator, 'canUseTranslator'])">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.driveCapacity, 'driveCapacityMb'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canUseTranslator }}</template>
|
|
||||||
<template #suffix>
|
|
||||||
<span v-if="role.policies.canUseTranslator.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.canUseTranslator.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canUseTranslator)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.canUseTranslator.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkSwitch v-model="role.policies.canUseTranslator.value" :disabled="role.policies.canUseTranslator.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts.enable }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkRange v-model="role.policies.canUseTranslator.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.driveCapacity, 'driveCapacityMb'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.driveCapacity }}</template>
|
<template #label>{{ i18n.ts._role._options.driveCapacity }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.driveCapacityMb.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.driveCapacityMb.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
@ -375,180 +472,28 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
</MkFoldableSection>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.pinMax, 'pinLimit'])">
|
<MkFoldableSection>
|
||||||
<template #label>{{ i18n.ts._role._options.pinMax }}</template>
|
<template #header>{{ i18n.ts.avatarDecorations}}</template>
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canManageAvatarDecorations, 'canManageAvatarDecorations'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.canManageAvatarDecorations }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.pinLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.canManageAvatarDecorations.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
<span v-else>{{ role.policies.pinLimit.value }}</span>
|
<span v-else>{{ role.policies.canManageAvatarDecorations.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.pinLimit)"></i></span>
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canManageAvatarDecorations)"></i></span>
|
||||||
</template>
|
</template>
|
||||||
<div class="_gaps">
|
<div class="_gaps">
|
||||||
<MkSwitch v-model="role.policies.pinLimit.useDefault" :readonly="readonly">
|
<MkSwitch v-model="role.policies.canManageAvatarDecorations.useDefault" :readonly="readonly">
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkInput v-model="role.policies.pinLimit.value" :disabled="role.policies.pinLimit.useDefault" type="number" :readonly="readonly">
|
<MkSwitch v-model="role.policies.canManageAvatarDecorations.value" :disabled="role.policies.canManageAvatarDecorations.useDefault" :readonly="readonly">
|
||||||
</MkInput>
|
|
||||||
<MkRange v-model="role.policies.pinLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.antennaMax, 'antennaLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.antennaMax }}</template>
|
|
||||||
<template #suffix>
|
|
||||||
<span v-if="role.policies.antennaLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.antennaLimit.value }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.antennaLimit)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.antennaLimit.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkInput v-model="role.policies.antennaLimit.value" :disabled="role.policies.antennaLimit.useDefault" type="number" :readonly="readonly">
|
|
||||||
</MkInput>
|
|
||||||
<MkRange v-model="role.policies.antennaLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.wordMuteMax, 'wordMuteLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.wordMuteMax }}</template>
|
|
||||||
<template #suffix>
|
|
||||||
<span v-if="role.policies.wordMuteLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.wordMuteLimit.value }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.wordMuteLimit)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.wordMuteLimit.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkInput v-model="role.policies.wordMuteLimit.value" :disabled="role.policies.wordMuteLimit.useDefault" type="number" :readonly="readonly">
|
|
||||||
<template #suffix>chars</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkRange v-model="role.policies.wordMuteLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.webhookMax, 'webhookLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.webhookMax }}</template>
|
|
||||||
<template #suffix>
|
|
||||||
<span v-if="role.policies.webhookLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.webhookLimit.value }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.webhookLimit)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.webhookLimit.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkInput v-model="role.policies.webhookLimit.value" :disabled="role.policies.webhookLimit.useDefault" type="number" :readonly="readonly">
|
|
||||||
</MkInput>
|
|
||||||
<MkRange v-model="role.policies.webhookLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.clipMax, 'clipLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.clipMax }}</template>
|
|
||||||
<template #suffix>
|
|
||||||
<span v-if="role.policies.clipLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.clipLimit.value }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.clipLimit)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.clipLimit.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkInput v-model="role.policies.clipLimit.value" :disabled="role.policies.clipLimit.useDefault" type="number" :readonly="readonly">
|
|
||||||
</MkInput>
|
|
||||||
<MkRange v-model="role.policies.clipLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.noteEachClipsMax, 'noteEachClipsLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.noteEachClipsMax }}</template>
|
|
||||||
<template #suffix>
|
|
||||||
<span v-if="role.policies.noteEachClipsLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.noteEachClipsLimit.value }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.noteEachClipsLimit)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.noteEachClipsLimit.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkInput v-model="role.policies.noteEachClipsLimit.value" :disabled="role.policies.noteEachClipsLimit.useDefault" type="number" :readonly="readonly">
|
|
||||||
</MkInput>
|
|
||||||
<MkRange v-model="role.policies.noteEachClipsLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.userListMax, 'userListLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.userListMax }}</template>
|
|
||||||
<template #suffix>
|
|
||||||
<span v-if="role.policies.userListLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.userListLimit.value }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.userListLimit)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.userListLimit.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkInput v-model="role.policies.userListLimit.value" :disabled="role.policies.userListLimit.useDefault" type="number" :readonly="readonly">
|
|
||||||
</MkInput>
|
|
||||||
<MkRange v-model="role.policies.userListLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.userEachUserListsMax, 'userEachUserListsLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.userEachUserListsMax }}</template>
|
|
||||||
<template #suffix>
|
|
||||||
<span v-if="role.policies.userEachUserListsLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.userEachUserListsLimit.value }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.userEachUserListsLimit)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.userEachUserListsLimit.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkInput v-model="role.policies.userEachUserListsLimit.value" :disabled="role.policies.userEachUserListsLimit.useDefault" type="number" :readonly="readonly">
|
|
||||||
</MkInput>
|
|
||||||
<MkRange v-model="role.policies.userEachUserListsLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
||||||
</MkRange>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canHideAds, 'canHideAds'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.canHideAds }}</template>
|
|
||||||
<template #suffix>
|
|
||||||
<span v-if="role.policies.canHideAds.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
||||||
<span v-else>{{ role.policies.canHideAds.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canHideAds)"></i></span>
|
|
||||||
</template>
|
|
||||||
<div class="_gaps">
|
|
||||||
<MkSwitch v-model="role.policies.canHideAds.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
<MkSwitch v-model="role.policies.canHideAds.value" :disabled="role.policies.canHideAds.useDefault" :readonly="readonly">
|
|
||||||
<template #label>{{ i18n.ts.enable }}</template>
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkRange v-model="role.policies.canHideAds.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
<MkRange v-model="role.policies.canManageAvatarDecorations.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.avatarDecorationLimit, 'avatarDecorationLimit'])">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.avatarDecorationLimit, 'avatarDecorationLimit'])">
|
||||||
<template #label>{{ i18n.ts._role._options.avatarDecorationLimit }}</template>
|
<template #label>{{ i18n.ts._role._options.avatarDecorationLimit }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
|
@ -568,63 +513,233 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.emojiPickerProfileLimit, 'emojiPickerProfileLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.emojiPickerProfileLimit }}</template>
|
</MkFoldableSection>
|
||||||
|
<MkFoldableSection>
|
||||||
|
<template #header>{{i18n.ts.clip}}</template>
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.clipMax, 'clipLimit'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.clipMax }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.emojiPickerProfileLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.clipLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
<span v-else>{{ role.policies.emojiPickerProfileLimit.value }}</span>
|
<span v-else>{{ role.policies.clipLimit.value }}</span>
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.emojiPickerProfileLimit)"></i></span>
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.clipLimit)"></i></span>
|
||||||
</template>
|
</template>
|
||||||
<div class="_gaps">
|
<div class="_gaps">
|
||||||
<MkSwitch v-model="role.policies.emojiPickerProfileLimit.useDefault" :readonly="readonly">
|
<MkSwitch v-model="role.policies.clipLimit.useDefault" :readonly="readonly">
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkInput v-model="role.policies.emojiPickerProfileLimit.value" type="number" :min="0" :disabled="role.policies.emojiPickerProfileLimit.useDefault" >
|
<MkInput v-model="role.policies.clipLimit.value" :disabled="role.policies.clipLimit.useDefault" type="number" :readonly="readonly">
|
||||||
<template #label>{{ i18n.ts._role._options.emojiPickerProfileLimit }}</template>
|
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<MkRange v-model="role.policies.emojiPickerProfileLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
<MkRange v-model="role.policies.clipLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.listPinnedLimit, 'listPinnedLimit'])">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.noteEachClipsMax, 'noteEachClipsLimit'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.listPinnedLimit }}</template>
|
<template #label>{{ i18n.ts._role._options.noteEachClipsMax }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.listPinnedLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.noteEachClipsLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
<span v-else>{{ role.policies.listPinnedLimit.value }}</span>
|
<span v-else>{{ role.policies.noteEachClipsLimit.value }}</span>
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.listPinnedLimit)"></i></span>
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.noteEachClipsLimit)"></i></span>
|
||||||
</template>
|
</template>
|
||||||
<div class="_gaps">
|
<div class="_gaps">
|
||||||
<MkSwitch v-model="role.policies.listPinnedLimit.useDefault" :readonly="readonly">
|
<MkSwitch v-model="role.policies.noteEachClipsLimit.useDefault" :readonly="readonly">
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkInput v-model="role.policies.listPinnedLimit.value" type="number" :min="0" :disabled="role.policies.listPinnedLimit.useDefault" >
|
<MkInput v-model="role.policies.noteEachClipsLimit.value" :disabled="role.policies.noteEachClipsLimit.useDefault" type="number" :readonly="readonly">
|
||||||
<template #label>{{ i18n.ts._role._options.listPinnedLimit }}</template>
|
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<MkRange v-model="role.policies.listPinnedLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
<MkRange v-model="role.policies.noteEachClipsLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.localTimelineAnyLimit, 'localTimelineAnyLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.localTimelineAnyLimit }}</template>
|
</MkFoldableSection>
|
||||||
|
<MkFoldableSection >
|
||||||
|
<template #header>{{i18n.ts.userList}}</template>
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.userListMax, 'userListLimit'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.userListMax }}</template>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<span v-if="role.policies.localTimelineAnyLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
<span v-if="role.policies.userListLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
<span v-else>{{ role.policies.localTimelineAnyLimit.value}}</span>
|
<span v-else>{{ role.policies.userListLimit.value }}</span>
|
||||||
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.localTimelineAnyLimit)"></i></span>
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.userListLimit)"></i></span>
|
||||||
</template>
|
</template>
|
||||||
<div class="_gaps">
|
<div class="_gaps">
|
||||||
<MkSwitch v-model="role.policies.localTimelineAnyLimit.useDefault" :readonly="readonly">
|
<MkSwitch v-model="role.policies.userListLimit.useDefault" :readonly="readonly">
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkInput v-model="role.policies.localTimelineAnyLimit.value" type="number" :min="0" :disabled="role.policies.localTimelineAnyLimit.useDefault" >
|
<MkInput v-model="role.policies.userListLimit.value" :disabled="role.policies.userListLimit.useDefault" type="number" :readonly="readonly">
|
||||||
<template #label>{{ i18n.ts._role._options.localTimelineAnyLimit }}</template>
|
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<MkRange v-model="role.policies.localTimelineAnyLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
<MkRange v-model="role.policies.userListLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.userEachUserListsMax, 'userEachUserListsLimit'])" >
|
||||||
|
<template #label>{{ i18n.ts._role._options.userEachUserListsMax }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.userEachUserListsLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.userEachUserListsLimit.value }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.userEachUserListsLimit)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.userEachUserListsLimit.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="role.policies.userEachUserListsLimit.value" :disabled="role.policies.userEachUserListsLimit.useDefault" type="number" :readonly="readonly">
|
||||||
|
</MkInput>
|
||||||
|
<MkRange v-model="role.policies.userEachUserListsLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
</MkFoldableSection>
|
||||||
|
<MkFoldableSection>
|
||||||
|
<template #header>{{i18n.ts.note}}</template>
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canSearchNotes, 'canSearchNotes'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.canSearchNotes }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.canSearchNotes.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.canSearchNotes.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canSearchNotes)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.canSearchNotes.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkSwitch v-model="role.policies.canSearchNotes.value" :disabled="role.policies.canSearchNotes.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkRange v-model="role.policies.canSearchNotes.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canUseTranslator, 'canUseTranslator'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.canUseTranslator }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.canUseTranslator.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.canUseTranslator.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canUseTranslator)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.canUseTranslator.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkSwitch v-model="role.policies.canUseTranslator.value" :disabled="role.policies.canUseTranslator.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkRange v-model="role.policies.canUseTranslator.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.pinMax, 'pinLimit'])">
|
||||||
|
<template #label>{{ i18n.ts._role._options.pinMax }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.pinLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.pinLimit.value }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.pinLimit)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.pinLimit.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="role.policies.pinLimit.value" :disabled="role.policies.pinLimit.useDefault" type="number" :readonly="readonly">
|
||||||
|
</MkInput>
|
||||||
|
<MkRange v-model="role.policies.pinLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
</MkFoldableSection>
|
||||||
|
<MkFoldableSection>
|
||||||
|
<template #header>etc...</template>
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.antennaMax, 'antennaLimit'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.antennaMax }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.antennaLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.antennaLimit.value }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.antennaLimit)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.antennaLimit.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="role.policies.antennaLimit.value" :disabled="role.policies.antennaLimit.useDefault" type="number" :readonly="readonly">
|
||||||
|
</MkInput>
|
||||||
|
<MkRange v-model="role.policies.antennaLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.wordMuteMax, 'wordMuteLimit'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.wordMuteMax }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.wordMuteLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.wordMuteLimit.value }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.wordMuteLimit)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.wordMuteLimit.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="role.policies.wordMuteLimit.value" :disabled="role.policies.wordMuteLimit.useDefault" type="number" :readonly="readonly">
|
||||||
|
<template #suffix>chars</template>
|
||||||
|
</MkInput>
|
||||||
|
<MkRange v-model="role.policies.wordMuteLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.webhookMax, 'webhookLimit'])" class="_margin">
|
||||||
|
<template #label>{{ i18n.ts._role._options.webhookMax }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.webhookLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.webhookLimit.value }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.webhookLimit)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.webhookLimit.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="role.policies.webhookLimit.value" :disabled="role.policies.webhookLimit.useDefault" type="number" :readonly="readonly">
|
||||||
|
</MkInput>
|
||||||
|
<MkRange v-model="role.policies.webhookLimit.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canHideAds, 'canHideAds'])" >
|
||||||
|
<template #label>{{ i18n.ts._role._options.canHideAds }}</template>
|
||||||
|
<template #suffix>
|
||||||
|
<span v-if="role.policies.canHideAds.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
||||||
|
<span v-else>{{ role.policies.canHideAds.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
||||||
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canHideAds)"></i></span>
|
||||||
|
</template>
|
||||||
|
<div class="_gaps">
|
||||||
|
<MkSwitch v-model="role.policies.canHideAds.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkSwitch v-model="role.policies.canHideAds.value" :disabled="role.policies.canHideAds.useDefault" :readonly="readonly">
|
||||||
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkRange v-model="role.policies.canHideAds.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
</MkRange>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
</MkFoldableSection>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</FormSlot>
|
</FormSlot>
|
||||||
</div>
|
</div>
|
||||||
|
@ -646,6 +761,7 @@ import { i18n } from '@/i18n.js';
|
||||||
import { ROLE_POLICIES } from '@/const.js';
|
import { ROLE_POLICIES } from '@/const.js';
|
||||||
import { instance } from '@/instance.js';
|
import { instance } from '@/instance.js';
|
||||||
import { deepClone } from '@/scripts/clone.js';
|
import { deepClone } from '@/scripts/clone.js';
|
||||||
|
import MkFoldableSection from "@/components/MkFoldableSection.vue";
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'update:modelValue', v: any): void;
|
(ev: 'update:modelValue', v: any): void;
|
||||||
|
|
|
@ -23,7 +23,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #caption>{{ i18n.ts._role._options.descriptionOfRateLimitFactor }}</template>
|
<template #caption>{{ i18n.ts._role._options.descriptionOfRateLimitFactor }}</template>
|
||||||
</MkRange>
|
</MkRange>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
<MkFoldableSection :expanded="false">
|
|
||||||
|
<MkFoldableSection>
|
||||||
<template #header>タイムライン系</template>
|
<template #header>タイムライン系</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.gtlAvailable, 'gtlAvailable'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.gtlAvailable, 'gtlAvailable'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.gtlAvailable }}</template>
|
<template #label>{{ i18n.ts._role._options.gtlAvailable }}</template>
|
||||||
|
@ -41,7 +42,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
|
||||||
|
<MkFoldableSection>
|
||||||
<template #header>ノート系</template>
|
<template #header>ノート系</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canPublicNote, 'canPublicNote'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canPublicNote, 'canPublicNote'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canPublicNote }}</template>
|
<template #label>{{ i18n.ts._role._options.canPublicNote }}</template>
|
||||||
|
@ -50,12 +52,14 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #label>{{ i18n.ts.enable }}</template>
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.mentionMax, 'mentionLimit'])">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.mentionMax, 'mentionLimit'])">
|
||||||
<template #label>{{ i18n.ts._role._options.mentionMax }}</template>
|
<template #label>{{ i18n.ts._role._options.mentionMax }}</template>
|
||||||
<template #suffix>{{ policies.mentionLimit }}</template>
|
<template #suffix>{{ policies.mentionLimit }}</template>
|
||||||
<MkInput v-model="policies.mentionLimit" type="number">
|
<MkInput v-model="policies.mentionLimit" type="number">
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canEditNote, 'canEditNote'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canEditNote, 'canEditNote'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canEditNote }}</template>
|
<template #label>{{ i18n.ts._role._options.canEditNote }}</template>
|
||||||
<template #suffix>{{ policies.canEditNote ? i18n.ts.yes : i18n.ts.no }}</template>
|
<template #suffix>{{ policies.canEditNote ? i18n.ts.yes : i18n.ts.no }}</template>
|
||||||
|
@ -71,6 +75,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #label>{{ i18n.ts.enable }}</template>
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canSearchNotes, 'canSearchNotes'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canSearchNotes, 'canSearchNotes'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canSearchNotes }}</template>
|
<template #label>{{ i18n.ts._role._options.canSearchNotes }}</template>
|
||||||
<template #suffix>{{ policies.canSearchNotes ? i18n.ts.yes : i18n.ts.no }}</template>
|
<template #suffix>{{ policies.canSearchNotes ? i18n.ts.yes : i18n.ts.no }}</template>
|
||||||
|
@ -79,13 +84,14 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canUseTranslator, 'canSearchNotes'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canUseTranslator, 'canUseTranslator'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canUseTranslator }}</template>
|
<template #label>{{ i18n.ts._role._options.canUseTranslator }}</template>
|
||||||
<template #suffix>{{ policies.canUseTranslator ? i18n.ts.yes : i18n.ts.no }}</template>
|
<template #suffix>{{ policies.canUseTranslator ? i18n.ts.yes : i18n.ts.no }}</template>
|
||||||
<MkSwitch v-model="policies.canUseTranslator">
|
<MkSwitch v-model="policies.canUseTranslator">
|
||||||
<template #label>{{ i18n.ts.enable }}</template>
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.pinMax, 'pinLimit'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.pinMax, 'pinLimit'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.pinMax }}</template>
|
<template #label>{{ i18n.ts._role._options.pinMax }}</template>
|
||||||
<template #suffix>{{ policies.pinLimit }}</template>
|
<template #suffix>{{ policies.pinLimit }}</template>
|
||||||
|
@ -93,15 +99,18 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
|
||||||
|
<MkFoldableSection>
|
||||||
<template #header>招待系</template>
|
<template #header>招待系</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canInvite, 'canInvite'])">
|
|
||||||
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canInvite, 'canInvite'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canInvite }}</template>
|
<template #label>{{ i18n.ts._role._options.canInvite }}</template>
|
||||||
<template #suffix>{{ policies.canInvite ? i18n.ts.yes : i18n.ts.no }}</template>
|
<template #suffix>{{ policies.canInvite ? i18n.ts.yes : i18n.ts.no }}</template>
|
||||||
<MkSwitch v-model="policies.canInvite">
|
<MkSwitch v-model="policies.canInvite">
|
||||||
<template #label>{{ i18n.ts.enable }}</template>
|
<template #label>{{ i18n.ts.enable }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteLimit, 'inviteLimit'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteLimit, 'inviteLimit'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.inviteLimit }}</template>
|
<template #label>{{ i18n.ts._role._options.inviteLimit }}</template>
|
||||||
<template #suffix>{{ policies.inviteLimit }}</template>
|
<template #suffix>{{ policies.inviteLimit }}</template>
|
||||||
|
@ -109,21 +118,6 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canInvite, 'canInvite'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.canInvite }}</template>
|
|
||||||
<template #suffix>{{ policies.canInvite ? i18n.ts.yes : i18n.ts.no }}</template>
|
|
||||||
<MkSwitch v-model="policies.canInvite">
|
|
||||||
<template #label>{{ i18n.ts.enable }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteLimit, 'inviteLimit'])">
|
|
||||||
<template #label>{{ i18n.ts._role._options.inviteLimit }}</template>
|
|
||||||
<template #suffix>{{ policies.inviteLimit }}</template>
|
|
||||||
<MkInput v-model="policies.inviteLimit" type="number">
|
|
||||||
</MkInput>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteLimitCycle, 'inviteLimitCycle'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteLimitCycle, 'inviteLimitCycle'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.inviteLimitCycle }}</template>
|
<template #label>{{ i18n.ts._role._options.inviteLimitCycle }}</template>
|
||||||
<template #suffix>{{ policies.inviteLimitCycle + i18n.ts._time.minute }}</template>
|
<template #suffix>{{ policies.inviteLimitCycle + i18n.ts._time.minute }}</template>
|
||||||
|
@ -132,16 +126,17 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteExpirationTime, 'inviteExpirationTime'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.inviteExpirationTime, 'inviteExpirationTime'])" >
|
||||||
<template #label>{{ i18n.ts._role._options.inviteExpirationTime }}</template>
|
<template #label>{{ i18n.ts._role._options.inviteExpirationTime }}</template>
|
||||||
<template #suffix>{{ policies.inviteExpirationTime + i18n.ts._time.minute }}</template>
|
<template #suffix>{{ policies.inviteExpirationTime + i18n.ts._time.minute }}</template>
|
||||||
<MkInput v-model="policies.inviteExpirationTime" type="number">
|
<MkInput v-model="policies.inviteExpirationTime" type="number">
|
||||||
<template #suffix>{{ i18n.ts._time.minute }}</template>
|
<template #suffix>{{ i18n.ts._time.minute }}</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
<MkFoldableSection >
|
||||||
<template #header>PrisMisskey独自機能系</template>
|
<template #header>Type4ny独自機能系</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.emojiPickerProfileLimit, 'pickerProfileDefault'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.emojiPickerProfileLimit, 'pickerProfileDefault'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.emojiPickerProfileLimit }}</template>
|
<template #label>{{ i18n.ts._role._options.emojiPickerProfileLimit }}</template>
|
||||||
<template #suffix>{{ policies.emojiPickerProfileLimit }}</template>
|
<template #suffix>{{ policies.emojiPickerProfileLimit }}</template>
|
||||||
|
@ -162,7 +157,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
<MkFoldableSection>
|
||||||
<template #header>カスタム絵文字系</template>
|
<template #header>カスタム絵文字系</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canManageCustomEmojis, 'canManageCustomEmojis'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canManageCustomEmojis, 'canManageCustomEmojis'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canManageCustomEmojis }}</template>
|
<template #label>{{ i18n.ts._role._options.canManageCustomEmojis }}</template>
|
||||||
|
@ -180,7 +175,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
<MkFoldableSection >
|
||||||
<template #header>ドライブ、ファイル系</template>
|
<template #header>ドライブ、ファイル系</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.driveCapacity, 'driveCapacityMb'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.driveCapacity, 'driveCapacityMb'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.driveCapacity }}</template>
|
<template #label>{{ i18n.ts._role._options.driveCapacity }}</template>
|
||||||
|
@ -198,7 +193,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
<MkFoldableSection >
|
||||||
<template #header>アイコンデコレーション系</template>
|
<template #header>アイコンデコレーション系</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.canManageAvatarDecorations, 'canManageAvatarDecorations'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canManageAvatarDecorations, 'canManageAvatarDecorations'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.canManageAvatarDecorations }}</template>
|
<template #label>{{ i18n.ts._role._options.canManageAvatarDecorations }}</template>
|
||||||
|
@ -214,7 +209,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
<MkFoldableSection >
|
||||||
<template #header>クリップ系</template>
|
<template #header>クリップ系</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.clipMax, 'clipLimit'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.clipMax, 'clipLimit'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.clipMax }}</template>
|
<template #label>{{ i18n.ts._role._options.clipMax }}</template>
|
||||||
|
@ -230,7 +225,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
<MkFoldableSection >
|
||||||
<template #header>リスト系</template>
|
<template #header>リスト系</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.userListMax, 'userListLimit'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.userListMax, 'userListLimit'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.userListMax }}</template>
|
<template #label>{{ i18n.ts._role._options.userListMax }}</template>
|
||||||
|
@ -246,7 +241,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
<MkFoldableSection >
|
||||||
<template #header>その他</template>
|
<template #header>その他</template>
|
||||||
<MkFolder v-if="matchQuery([i18n.ts._role._options.antennaMax, 'antennaLimit'])" class="_margin">
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.antennaMax, 'antennaLimit'])" class="_margin">
|
||||||
<template #label>{{ i18n.ts._role._options.antennaMax }}</template>
|
<template #label>{{ i18n.ts._role._options.antennaMax }}</template>
|
||||||
|
|
|
@ -39,54 +39,15 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<MkSwitch v-model="alwaysShowPlayer">Youtube.comや、nicovideo.jpのプレイヤーを全て開いた状態にする</MkSwitch>
|
<MkSwitch v-model="alwaysShowPlayer">Youtube.comや、nicovideo.jpのプレイヤーを全て開いた状態にする</MkSwitch>
|
||||||
<MkSwitch v-model="alwaysExpandTweet">Xのポストを常時表示させる</MkSwitch>
|
<MkSwitch v-model="alwaysExpandTweet">Xのポストを常時表示させる</MkSwitch>
|
||||||
<MkSelect v-model="draftSavingBehavior">
|
<MkSelect v-model="draftSavingBehavior">
|
||||||
<template #label>{{ i18n.ts.draftSavingBehavior }}<span class="_beta">{{ i18n.ts.kakuregaFeature }}</span></template>
|
<template #label>{{ i18n.ts.draftSavingBehavior }}</template>
|
||||||
<option value="auto">{{ i18n.ts._draftSavingBehavior.auto }}</option>
|
<option value="auto">{{ i18n.ts._draftSavingBehavior.auto }}</option>
|
||||||
<option value="manual">{{ i18n.ts._draftSavingBehavior.manual }}</option>
|
<option value="manual">{{ i18n.ts._draftSavingBehavior.manual }}</option>
|
||||||
</MkSelect>
|
</MkSelect>
|
||||||
<MkSwitch v-model="disableNoteDrafting">
|
<MkSwitch v-model="disableNoteDrafting">
|
||||||
<template #caption>{{ i18n.ts.disableNoteDraftingDescription }}</template>
|
<template #caption>{{ i18n.ts.disableNoteDraftingDescription }}</template>
|
||||||
{{ i18n.ts.disableNoteDrafting }}
|
{{ i18n.ts.disableNoteDrafting }}
|
||||||
<span class="_beta">{{ i18n.ts.kakuregaFeature }}</span>
|
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkFolder>
|
|
||||||
<template #label>{{ i18n.ts.pinnedList }}</template>
|
|
||||||
<div v-for="pinnedLists in defaultStore.reactiveState.pinnedUserLists.value" class="_margin">
|
|
||||||
{{ pinnedLists.name }}
|
|
||||||
<MkButton danger @click="removePinnedList(pinnedLists.id,pinnedLists.name)"><i class="ti ti-trash"></i> {{ i18n.ts.remove }}</MkButton>
|
|
||||||
</div>
|
|
||||||
<MkButton v-if="pinnedMax > defaultStore.reactiveState.pinnedUserLists.value.length " @click="setPinnedList()">{{ i18n.ts.add }}</MkButton>
|
|
||||||
<MkButton v-if="defaultStore.reactiveState.pinnedUserLists.value.length " danger @click="removePinnedList('all')"><i class="ti ti-trash"></i> {{ i18n.ts.all }}{{ i18n.ts.remove }}</MkButton>
|
|
||||||
</MkFolder>
|
|
||||||
<MkFolder>
|
|
||||||
<template #label>{{ i18n.ts.pinnedChannel }}</template>
|
|
||||||
<div v-for="pinnedLists in defaultStore.reactiveState.pinnedChannels.value" class="_margin">
|
|
||||||
{{ pinnedLists.name }}
|
|
||||||
<MkButton danger @click="removePinnedChannel(pinnedLists.id,pinnedLists.name)"><i class="ti ti-trash"></i> {{ i18n.ts.remove }}</MkButton>
|
|
||||||
</div>
|
|
||||||
<MkButton v-if="pinnedMax > defaultStore.reactiveState.pinnedChannels.value.length " @click="setPinnedChannel()">{{ i18n.ts.add }}</MkButton>
|
|
||||||
<MkButton v-if="defaultStore.reactiveState.pinnedChannels.value.length " danger @click="removePinnedChannel('all')"><i class="ti ti-trash"></i> {{ i18n.ts.all }}{{ i18n.ts.remove }}</MkButton>
|
|
||||||
</MkFolder>
|
|
||||||
<MkFoldableSection :expanded="false" class="item">
|
|
||||||
<template #header>{{ i18n.ts.topbarCustom }}</template>
|
|
||||||
|
|
||||||
{{ i18n.ts._timelines.home }}
|
|
||||||
<MkSwitch v-model="showHomeTimeline">{{ i18n.ts.enable }}</MkSwitch>
|
|
||||||
<br>
|
|
||||||
{{ i18n.ts._timelines.local }}
|
|
||||||
<MkSwitch v-model="showLocalTimeline">{{ i18n.ts.enable }}</MkSwitch>
|
|
||||||
<br>
|
|
||||||
{{ i18n.ts._timelines.social }}
|
|
||||||
<MkSwitch v-model="showSocialTimeline">{{ i18n.ts.enable }}</MkSwitch>
|
|
||||||
<br>
|
|
||||||
{{ i18n.ts._timelines.media }}
|
|
||||||
<MkSwitch v-model="showMediaTimeline">{{ i18n.ts.enable }}</MkSwitch>
|
|
||||||
<br>
|
|
||||||
{{ i18n.ts._timelines.global }}
|
|
||||||
<MkSwitch v-model="showGlobalTimeline">{{ i18n.ts.enable }}</MkSwitch>
|
|
||||||
<br>
|
|
||||||
{{ i18n.ts.topBarNameShown }}
|
|
||||||
<MkSwitch v-model="topBarNameShown">{{ i18n.ts.enable }}</MkSwitch>
|
|
||||||
</MkFoldableSection>
|
|
||||||
</div>
|
</div>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
<MkFoldableSection :expanded="false" class="item">
|
<MkFoldableSection :expanded="false" class="item">
|
||||||
|
@ -273,93 +234,6 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</div>
|
</div>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection :expanded="false">
|
|
||||||
<template #header>他のサーバーのローカルタイムラインを覗けるようにする</template>
|
|
||||||
<div class="_gaps_m">
|
|
||||||
<div v-if="maxLocalTimeline >= 1">
|
|
||||||
<MkInput v-model="remoteLocalTimelineName1" placeholder="prismisskey">
|
|
||||||
<template #label>{{ i18n.ts.name }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineDomain1" placeholder="prismisskey.space">
|
|
||||||
<template #label>サーバーURL</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineToken1" placeholder="">
|
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
|
||||||
<template #label>{{ i18n.ts.accessToken }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkSwitch v-model="remoteLocalTimelineEnable1">
|
|
||||||
{{ i18n.ts.enable }}
|
|
||||||
</MkSwitch>
|
|
||||||
</div>
|
|
||||||
<div v-if="maxLocalTimeline >= 2">
|
|
||||||
<MkInput v-model="remoteLocalTimelineName2" placeholder="prismisskey">
|
|
||||||
<template #label>{{ i18n.ts.name }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineDomain2" placeholder="prismisskey.space">
|
|
||||||
<template #label>サーバーURL</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineToken2" placeholder="">
|
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
|
||||||
<template #label>{{ i18n.ts.accessToken }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkSwitch v-model="remoteLocalTimelineEnable2">
|
|
||||||
{{ i18n.ts.enable }}
|
|
||||||
</MkSwitch>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-if="maxLocalTimeline >= 3">
|
|
||||||
<MkInput v-model="remoteLocalTimelineName3" placeholder="prismisskey">
|
|
||||||
<template #label>{{ i18n.ts.name }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineDomain3" placeholder="prismisskey.space">
|
|
||||||
<template #label>サーバーURL</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineToken3" placeholder="">
|
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
|
||||||
<template #label>{{ i18n.ts.accessToken }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkSwitch v-model="remoteLocalTimelineEnable3">
|
|
||||||
{{ i18n.ts.enable }}
|
|
||||||
</MkSwitch>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-if="maxLocalTimeline >= 4">
|
|
||||||
<MkInput v-model="remoteLocalTimelineName4" placeholder="prismisskey">
|
|
||||||
<template #label>{{ i18n.ts.name }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineDomain4" placeholder="prismisskey.space">
|
|
||||||
<template #label>サーバーURL</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineToken4" placeholder="">
|
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
|
||||||
<template #label>{{ i18n.ts.accessToken }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkSwitch v-model="remoteLocalTimelineEnable4">
|
|
||||||
{{ i18n.ts.enable }}
|
|
||||||
</MkSwitch>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-if="maxLocalTimeline >= 5">
|
|
||||||
<MkInput v-model="remoteLocalTimelineName5" placeholder="prismisskey">
|
|
||||||
<template #label>{{ i18n.ts.name }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineDomain5" placeholder="prismisskey.space">
|
|
||||||
<template #label>サーバーURL</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkInput v-model="remoteLocalTimelineToken5" placeholder="">
|
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
|
||||||
<template #label>{{ i18n.ts.accessToken }}</template>
|
|
||||||
</MkInput>
|
|
||||||
<MkSwitch v-model="remoteLocalTimelineEnable5">
|
|
||||||
{{ i18n.ts.enable }}
|
|
||||||
</MkSwitch>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<MkButton @click="remoteLocaltimelineSave">
|
|
||||||
{{ i18n.ts.save }}
|
|
||||||
</MkButton>
|
|
||||||
</div>
|
|
||||||
</MkFoldableSection>
|
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<template #label>{{ i18n.ts.other }}</template>
|
<template #label>{{ i18n.ts.other }}</template>
|
||||||
|
|
||||||
|
|
|
@ -430,7 +430,7 @@ export const defaultStore = markRaw(new Storage('base', {
|
||||||
},
|
},
|
||||||
gamingMode: {
|
gamingMode: {
|
||||||
where: 'device',
|
where: 'device',
|
||||||
default: true,
|
default: false,
|
||||||
},
|
},
|
||||||
gamingType: {
|
gamingType: {
|
||||||
where: 'device',
|
where: 'device',
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
kind: 'dark',
|
kind: 'dark',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
accent: '#86b300',
|
accent: '#65B535',
|
||||||
accentDarken: ':darken<10<@accent',
|
accentDarken: ':darken<10<@accent',
|
||||||
accentLighten: ':lighten<10<@accent',
|
accentLighten: ':lighten<10<@accent',
|
||||||
accentedBg: ':alpha<0.15<@accent',
|
accentedBg: ':alpha<0.15<@accent',
|
||||||
|
|
|
@ -8,19 +8,20 @@
|
||||||
base: 'dark',
|
base: 'dark',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
bg: '#232323',
|
accent: '#2ECC71', // エメラルドグリーン
|
||||||
fg: 'rgb(199, 209, 216)',
|
bg: '#1B2B34', // ダーク背景色
|
||||||
fgHighlighted: '#fff',
|
buttonGradateA: '#2ECC71', // エメラルドグリーン
|
||||||
fgOnWhite: '@accent',
|
buttonGradateB: '#27AE60', // 濃いエメラルドグリーン
|
||||||
divider: 'rgba(255, 255, 255, 0.14)',
|
divider: '#e7fffb24', // 分割線の色をそのまま
|
||||||
panel: '#2d2d2d',
|
fg: '#C0C0C0', // 前景色を少し暗く
|
||||||
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
|
fgHighlighted: '#FFFFFF', // ハイライトされた前景色を白に
|
||||||
header: ':alpha<0.7<@panel',
|
fgOnAccent: '#FFFFFF', // アクセント上の前景色を白に
|
||||||
navBg: '#363636',
|
fgOnWhite: '#C0C0C0', // 白上の前景色を少し暗く
|
||||||
renote: '@accent',
|
link: '@accent', // リンク色をアクセントと同じ
|
||||||
mention: '#da6d35',
|
mentionMe: '#1ABC9C', // メンションの色を薄いエメラルドグリーンに
|
||||||
mentionMe: '#d44c4c',
|
panel: '#22313F', // パネル背景色を暗めに
|
||||||
hashtag: '#4cb8d4',
|
panelHeaderDivider: 'rgba(0, 0, 0, 0)', // パネルヘッダー分割線を透明に
|
||||||
link: '@accent',
|
popup: '#2C3E50', // ポップアップ背景色を暗く
|
||||||
|
renote: '@accent' // リノートの色をアクセントと同じ
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +1,26 @@
|
||||||
{
|
{
|
||||||
id: '02816013-8107-440f-877e-865083ffe194',
|
id: '02816013-8107-440f-877e-865083ffe194',
|
||||||
|
|
||||||
name: 'Mi Green+Lime Dark',
|
name: 'TypeEmerald',
|
||||||
author: 'syuilo',
|
author: 'mattyatea',
|
||||||
|
|
||||||
base: 'dark',
|
base: 'dark',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
accent: '#b4e900',
|
accent: '#2ECC71', // エメラルドグリーン
|
||||||
bg: '#0C1210',
|
bg: '#1B2B34', // ダーク背景色
|
||||||
fg: '#dee7e4',
|
buttonGradateA: '#2ECC71', // エメラルドグリーン
|
||||||
fgHighlighted: '#fff',
|
buttonGradateB: '#27AE60', // 濃いエメラルドグリーン
|
||||||
fgOnAccent: '#192320',
|
divider: '#e7fffb24', // 分割線の色をそのまま
|
||||||
fgOnWhite: '@accent',
|
fg: '#C0C0C0', // 前景色を少し暗く
|
||||||
divider: '#e7fffb24',
|
fgHighlighted: '#FFFFFF', // ハイライトされた前景色を白に
|
||||||
panel: '#192320',
|
fgOnAccent: '#FFFFFF', // アクセント上の前景色を白に
|
||||||
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
|
fgOnWhite: '#C0C0C0', // 白上の前景色を少し暗く
|
||||||
popup: '#293330',
|
link: '@accent', // リンク色をアクセントと同じ
|
||||||
renote: '@accent',
|
mentionMe: '#1ABC9C', // メンションの色を薄いエメラルドグリーンに
|
||||||
mentionMe: '#ffaa00',
|
panel: '#22313F', // パネル背景色を暗めに
|
||||||
link: '#24d7ce',
|
panelHeaderDivider: 'rgba(0, 0, 0, 0)', // パネルヘッダー分割線を透明に
|
||||||
|
popup: '#2C3E50', // ポップアップ背景色を暗く
|
||||||
|
renote: '@accent' // リノートの色をアクセントと同じ
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,14 +8,22 @@
|
||||||
base: 'light',
|
base: 'light',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
bg: '#f9f9f9',
|
accent: '#2ECC71', // エメラルドグリーン
|
||||||
fg: '#676767',
|
bg: '#f2f2f2', // 明るい背景色
|
||||||
fgOnWhite: '@accent',
|
buttonGradateA: '#2ECC71', // エメラルドグリーン
|
||||||
divider: '#e8e8e8',
|
buttonGradateB: '#27AE60', // 濃いエメラルドグリーン
|
||||||
header: ':alpha<0.7<@panel',
|
buttonHoverBg: '#27AE60', // 濃いエメラルドグリーン
|
||||||
navBg: '#fff',
|
divider: '#BDBDBD', // 分割線の色を薄いグレーに
|
||||||
panel: '#fff',
|
fg: '#37474F', // 前景色をダークグレーに
|
||||||
panelHeaderDivider: '@divider',
|
fgHighlighted: '#2C3E50', // ハイライトされた前景色を濃いダークグレーに
|
||||||
mentionMe: 'rgb(0, 179, 70)',
|
fgOnAccent: '#FFFFFF', // アクセント上の前景色を白に
|
||||||
|
fgOnWhite: '#37474F', // 白上の前景色をダークグレーに
|
||||||
|
link: '@accent', // リンク色をアクセントと同じ
|
||||||
|
mentionMe: '#1ABC9C', // メンションの色を薄いエメラルドグリーンに
|
||||||
|
panel: '#F6FFFB', // パネル背景色を薄いグレーに
|
||||||
|
panelHeaderDivider: 'rgba(0, 0, 0, 0)', // パネルヘッダー分割線を透明に
|
||||||
|
popup: '#FFFFFF', // ポップアップ背景色を白に
|
||||||
|
renote: '@accent' // リノートの色をアクセントと同じ
|
||||||
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -708,7 +708,7 @@ importers:
|
||||||
version: 0.1.0-alpha-3
|
version: 0.1.0-alpha-3
|
||||||
'@meersagor/wavesurfer-vue':
|
'@meersagor/wavesurfer-vue':
|
||||||
specifier: ^0.1.0
|
specifier: ^0.1.0
|
||||||
version: 0.1.0(typescript@5.4.5)
|
version: 0.1.0(typescript@5.5.2)
|
||||||
'@misskey-dev/browser-image-resizer':
|
'@misskey-dev/browser-image-resizer':
|
||||||
specifier: 2024.1.0
|
specifier: 2024.1.0
|
||||||
version: 2024.1.0
|
version: 2024.1.0
|
||||||
|
@ -11165,8 +11165,8 @@ packages:
|
||||||
vue-component-type-helpers@2.0.16:
|
vue-component-type-helpers@2.0.16:
|
||||||
resolution: {integrity: sha512-qisL/iAfdO++7w+SsfYQJVPj6QKvxp4i1MMxvsNO41z/8zu3KuAw9LkhKUfP/kcOWGDxESp+pQObWppXusejCA==}
|
resolution: {integrity: sha512-qisL/iAfdO++7w+SsfYQJVPj6QKvxp4i1MMxvsNO41z/8zu3KuAw9LkhKUfP/kcOWGDxESp+pQObWppXusejCA==}
|
||||||
|
|
||||||
vue-component-type-helpers@2.0.21:
|
vue-component-type-helpers@2.0.26:
|
||||||
resolution: {integrity: sha512-3NaicyZ7N4B6cft4bfb7dOnPbE9CjLcx+6wZWAg5zwszfO4qXRh+U52dN5r5ZZfc6iMaxKCEcoH9CmxxoFZHLg==}
|
resolution: {integrity: sha512-sO9qQ8oC520SW6kqlls0iqDak53gsTVSrYylajgjmkt1c0vcgjsGSy1KzlDrbEx8pm02IEYhlUkU5hCYf8rwtg==}
|
||||||
|
|
||||||
vue-demi@0.14.7:
|
vue-demi@0.14.7:
|
||||||
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
|
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
|
||||||
|
@ -13772,9 +13772,9 @@ snapshots:
|
||||||
'@types/react': 18.0.28
|
'@types/react': 18.0.28
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@meersagor/wavesurfer-vue@0.1.0(typescript@5.4.5)':
|
'@meersagor/wavesurfer-vue@0.1.0(typescript@5.5.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
vue: 3.4.26(typescript@5.4.5)
|
vue: 3.4.26(typescript@5.5.2)
|
||||||
wavesurfer.js: 7.7.14
|
wavesurfer.js: 7.7.14
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- typescript
|
- typescript
|
||||||
|
@ -15534,7 +15534,7 @@ snapshots:
|
||||||
ts-dedent: 2.2.0
|
ts-dedent: 2.2.0
|
||||||
type-fest: 2.19.0
|
type-fest: 2.19.0
|
||||||
vue: 3.4.26(typescript@5.5.2)
|
vue: 3.4.26(typescript@5.5.2)
|
||||||
vue-component-type-helpers: 2.0.21
|
vue-component-type-helpers: 2.0.26
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
- supports-color
|
- supports-color
|
||||||
|
@ -17380,7 +17380,7 @@ snapshots:
|
||||||
canvas@2.11.2(encoding@0.1.13):
|
canvas@2.11.2(encoding@0.1.13):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@mapbox/node-pre-gyp': 1.0.9(encoding@0.1.13)
|
'@mapbox/node-pre-gyp': 1.0.9(encoding@0.1.13)
|
||||||
nan: 2.18.0
|
nan: 2.20.0
|
||||||
simple-get: 3.1.1
|
simple-get: 3.1.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
|
@ -23926,7 +23926,7 @@ snapshots:
|
||||||
|
|
||||||
vue-component-type-helpers@2.0.16: {}
|
vue-component-type-helpers@2.0.16: {}
|
||||||
|
|
||||||
vue-component-type-helpers@2.0.21: {}
|
vue-component-type-helpers@2.0.26: {}
|
||||||
|
|
||||||
vue-demi@0.14.7(vue@3.4.26(typescript@5.5.2)):
|
vue-demi@0.14.7(vue@3.4.26(typescript@5.5.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
Loading…
Reference in New Issue