|
|
|
@ -99,25 +99,11 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
</MkRange>
|
|
|
|
|
</div>
|
|
|
|
|
</MkFolder>
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.mentionMax, 'mentionLimit'])">
|
|
|
|
|
<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.gtlAvailable, 'gtlAvailable'])">
|
|
|
|
|
|
|
|
|
|
<MkFoldableSection>
|
|
|
|
|
<template #header>{{ i18n.ts.timeline}}</template>
|
|
|
|
|
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.gtlAvailable, 'gtlAvailable'])" class="_margin">
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.gtlAvailable }}</template>
|
|
|
|
|
<template #suffix>
|
|
|
|
|
<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>
|
|
|
|
|
</div>
|
|
|
|
|
</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 #suffix>
|
|
|
|
|
<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>
|
|
|
|
|
</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 #suffix>
|
|
|
|
|
<span v-if="role.policies.canInvite.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
@ -197,7 +271,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
</div>
|
|
|
|
|
</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 #suffix>
|
|
|
|
|
<span v-if="role.policies.inviteLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
@ -216,7 +290,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
</div>
|
|
|
|
|
</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 #suffix>
|
|
|
|
|
<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>
|
|
|
|
|
</div>
|
|
|
|
|
</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 #suffix>
|
|
|
|
|
<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>
|
|
|
|
|
</div>
|
|
|
|
|
</MkFolder>
|
|
|
|
|
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canManageAvatarDecorations, 'canManageAvatarDecorations'])">
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.canManageAvatarDecorations }}</template>
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canRequestCustomEmojis, 'canRequestCustomEmojis'])">
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.canRequestCustomEmojis }}</template>
|
|
|
|
|
<template #suffix>
|
|
|
|
|
<span v-if="role.policies.canManageAvatarDecorations.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
|
<span v-else>{{ role.policies.canManageAvatarDecorations.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
|
|
|
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canManageAvatarDecorations)"></i></span>
|
|
|
|
|
<span v-if="role.policies.canRequestCustomEmojis.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
|
<span v-else>{{ role.policies.canRequestCustomEmojis.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
|
|
|
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canRequestCustomEmojis)"></i></span>
|
|
|
|
|
</template>
|
|
|
|
|
<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>
|
|
|
|
|
</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>
|
|
|
|
|
</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>
|
|
|
|
|
</MkRange>
|
|
|
|
|
</div>
|
|
|
|
|
</MkFolder>
|
|
|
|
|
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canSearchNotes, 'canSearchNotes'])">
|
|
|
|
|
<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>
|
|
|
|
|
</MkFoldableSection>
|
|
|
|
|
<MkFoldableSection>
|
|
|
|
|
<template #header>{{ i18n.ts.drive }}, {{ i18n.ts.files }}</template>
|
|
|
|
|
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.canUseTranslator, 'canUseTranslator'])">
|
|
|
|
|
<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'])">
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.driveCapacity, 'driveCapacityMb'])" class="_margin">
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.driveCapacity }}</template>
|
|
|
|
|
<template #suffix>
|
|
|
|
|
<span v-if="role.policies.driveCapacityMb.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
@ -375,85 +472,52 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
</MkRange>
|
|
|
|
|
</div>
|
|
|
|
|
</MkFolder>
|
|
|
|
|
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.pinMax, 'pinLimit'])">
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.pinMax }}</template>
|
|
|
|
|
</MkFoldableSection>
|
|
|
|
|
<MkFoldableSection>
|
|
|
|
|
<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>
|
|
|
|
|
<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>
|
|
|
|
|
<span v-if="role.policies.canManageAvatarDecorations.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
|
<span v-else>{{ role.policies.canManageAvatarDecorations.value ? i18n.ts.yes : i18n.ts.no }}</span>
|
|
|
|
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.canManageAvatarDecorations)"></i></span>
|
|
|
|
|
</template>
|
|
|
|
|
<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>
|
|
|
|
|
</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">
|
|
|
|
|
<template #label>{{ i18n.ts.enable }}</template>
|
|
|
|
|
</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 : ''">
|
|
|
|
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
|
|
|
|
</MkRange>
|
|
|
|
|
</div>
|
|
|
|
|
</MkFolder>
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.avatarDecorationLimit, 'avatarDecorationLimit'])">
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.avatarDecorationLimit }}</template>
|
|
|
|
|
<template #suffix>
|
|
|
|
|
<span v-if="role.policies.avatarDecorationLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
|
<span v-else>{{ role.policies.avatarDecorationLimit.value }}</span>
|
|
|
|
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.avatarDecorationLimit)"></i></span>
|
|
|
|
|
</template>
|
|
|
|
|
<div class="_gaps">
|
|
|
|
|
<MkSwitch v-model="role.policies.avatarDecorationLimit.useDefault" :readonly="readonly">
|
|
|
|
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
|
|
|
</MkSwitch>
|
|
|
|
|
<MkInput v-model="role.policies.avatarDecorationLimit.value" type="number" :min="0">
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.avatarDecorationLimit }}</template>
|
|
|
|
|
</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 : ''">
|
|
|
|
|
<MkRange v-model="role.policies.avatarDecorationLimit.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'])">
|
|
|
|
|
</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>
|
|
|
|
|
<span v-if="role.policies.clipLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
@ -471,8 +535,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
</MkRange>
|
|
|
|
|
</div>
|
|
|
|
|
</MkFolder>
|
|
|
|
|
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.noteEachClipsMax, 'noteEachClipsLimit'])">
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.noteEachClipsMax, 'noteEachClipsLimit'])" class="_margin">
|
|
|
|
|
<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>
|
|
|
|
@ -491,7 +554,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
</div>
|
|
|
|
|
</MkFolder>
|
|
|
|
|
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.userListMax, 'userListLimit'])">
|
|
|
|
|
</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>
|
|
|
|
|
<span v-if="role.policies.userListLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
@ -528,6 +594,127 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
</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>
|
|
|
|
@ -548,83 +735,11 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
</MkRange>
|
|
|
|
|
</div>
|
|
|
|
|
</MkFolder>
|
|
|
|
|
</MkFoldableSection>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<MkFolder v-if="matchQuery([i18n.ts._role._options.avatarDecorationLimit, 'avatarDecorationLimit'])">
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.avatarDecorationLimit }}</template>
|
|
|
|
|
<template #suffix>
|
|
|
|
|
<span v-if="role.policies.avatarDecorationLimit.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
|
|
|
|
|
<span v-else>{{ role.policies.avatarDecorationLimit.value }}</span>
|
|
|
|
|
<span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.avatarDecorationLimit)"></i></span>
|
|
|
|
|
</template>
|
|
|
|
|
<div class="_gaps">
|
|
|
|
|
<MkSwitch v-model="role.policies.avatarDecorationLimit.useDefault" :readonly="readonly">
|
|
|
|
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
|
|
|
|
</MkSwitch>
|
|
|
|
|
<MkInput v-model="role.policies.avatarDecorationLimit.value" type="number" :min="0">
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.avatarDecorationLimit }}</template>
|
|
|
|
|
</MkInput>
|
|
|
|
|
<MkRange v-model="role.policies.avatarDecorationLimit.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.emojiPickerProfileLimit, 'emojiPickerProfileLimit'])">
|
|
|
|
|
<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" type="number" :min="0" :disabled="role.policies.emojiPickerProfileLimit.useDefault" >
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.emojiPickerProfileLimit }}</template>
|
|
|
|
|
</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'])">
|
|
|
|
|
<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" type="number" :min="0" :disabled="role.policies.listPinnedLimit.useDefault" >
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.listPinnedLimit }}</template>
|
|
|
|
|
</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'])">
|
|
|
|
|
<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.localTimelineAnyLimit.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" type="number" :min="0" :disabled="role.policies.localTimelineAnyLimit.useDefault" >
|
|
|
|
|
<template #label>{{ i18n.ts._role._options.localTimelineAnyLimit }}</template>
|
|
|
|
|
</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>
|
|
|
|
|
</MkRange>
|
|
|
|
|
</div>
|
|
|
|
|
</MkFolder>
|
|
|
|
|
</div>
|
|
|
|
|
</FormSlot>
|
|
|
|
|
</div>
|
|
|
|
@ -646,6 +761,7 @@ import { i18n } from '@/i18n.js';
|
|
|
|
|
import { ROLE_POLICIES } from '@/const.js';
|
|
|
|
|
import { instance } from '@/instance.js';
|
|
|
|
|
import { deepClone } from '@/scripts/clone.js';
|
|
|
|
|
import MkFoldableSection from "@/components/MkFoldableSection.vue";
|
|
|
|
|
|
|
|
|
|
const emit = defineEmits<{
|
|
|
|
|
(ev: 'update:modelValue', v: any): void;
|
|
|
|
|