Update general.vue

This commit is contained in:
syuilo 2025-03-03 11:13:45 +09:00
parent bb812ed07a
commit 4e1ca36862
1 changed files with 198 additions and 269 deletions

View File

@ -6,12 +6,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<SearchMarker path="/settings/general" :label="i18n.ts.general" :keywords="['general']" icon="ti ti-adjustments"> <SearchMarker path="/settings/general" :label="i18n.ts.general" :keywords="['general']" icon="ti ti-adjustments">
<div class="_gaps_m"> <div class="_gaps_m">
<SearchMarker <SearchMarker :keywords="['language']">
:label="i18n.ts.uiLanguage"
:keywords="['language']"
>
<MkSelect v-model="lang"> <MkSelect v-model="lang">
<template #label>{{ i18n.ts.uiLanguage }}</template> <template #label><SearchLabel>{{ i18n.ts.uiLanguage }}</SearchLabel></template>
<option v-for="x in langs" :key="x[0]" :value="x[0]">{{ x[1] }}</option> <option v-for="x in langs" :key="x[0]" :value="x[0]">{{ x[1] }}</option>
<template #caption> <template #caption>
<I18n :src="i18n.ts.i18nInfo" tag="span"> <I18n :src="i18n.ts.i18nInfo" tag="span">
@ -23,12 +20,9 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkSelect> </MkSelect>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['device', 'type', 'kind', 'smartphone', 'tablet', 'desktop']">
:label="i18n.ts.overridedDeviceKind"
:keywords="['device', 'type', 'kind', 'smartphone', 'tablet', 'desktop']"
>
<MkRadios v-model="overridedDeviceKind"> <MkRadios v-model="overridedDeviceKind">
<template #label>{{ i18n.ts.overridedDeviceKind }}</template> <template #label><SearchLabel>{{ i18n.ts.overridedDeviceKind }}</SearchLabel></template>
<option :value="null">{{ i18n.ts.auto }}</option> <option :value="null">{{ i18n.ts.auto }}</option>
<option value="smartphone"><i class="ti ti-device-mobile"/> {{ i18n.ts.smartphone }}</option> <option value="smartphone"><i class="ti ti-device-mobile"/> {{ i18n.ts.smartphone }}</option>
<option value="tablet"><i class="ti ti-device-tablet"/> {{ i18n.ts.tablet }}</option> <option value="tablet"><i class="ti ti-device-tablet"/> {{ i18n.ts.tablet }}</option>
@ -38,26 +32,21 @@ SPDX-License-Identifier: AGPL-3.0-only
<FormSection> <FormSection>
<div class="_gaps_s"> <div class="_gaps_s">
<SearchMarker <SearchMarker :keywords="['post', 'form', 'timeline']">
:label="i18n.ts.showFixedPostForm" <MkSwitch v-model="showFixedPostForm">
:keywords="['post', 'form', 'timeline']" <template #label><SearchLabel>{{ i18n.ts.showFixedPostForm }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="showFixedPostForm">{{ i18n.ts.showFixedPostForm }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['post', 'form', 'timeline', 'channel']">
:label="i18n.ts.showFixedPostFormInChannel" <MkSwitch v-model="showFixedPostFormInChannel">
:keywords="['post', 'form', 'timeline', 'channel']" <template #label><SearchLabel>{{ i18n.ts.showFixedPostFormInChannel }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="showFixedPostFormInChannel">{{ i18n.ts.showFixedPostFormInChannel }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['pinned', 'list']">
:label="i18n.ts.pinnedList"
:keywords="['pinned', 'list']"
>
<MkFolder> <MkFolder>
<template #label>{{ i18n.ts.pinnedList }}</template> <template #label><SearchLabel>{{ i18n.ts.pinnedList }}</SearchLabel></template>
<!-- 複数ピン止め管理できるようにしたいけどめんどいので一旦ひとつのみ --> <!-- 複数ピン止め管理できるようにしたいけどめんどいので一旦ひとつのみ -->
<MkButton v-if="defaultStore.reactiveState.pinnedUserLists.value.length === 0" @click="setPinnedList()">{{ i18n.ts.add }}</MkButton> <MkButton v-if="defaultStore.reactiveState.pinnedUserLists.value.length === 0" @click="setPinnedList()">{{ i18n.ts.add }}</MkButton>
<MkButton v-else danger @click="removePinnedList()"><i class="ti ti-trash"></i> {{ i18n.ts.remove }}</MkButton> <MkButton v-else danger @click="removePinnedList()"><i class="ti ti-trash"></i> {{ i18n.ts.remove }}</MkButton>
@ -66,127 +55,104 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
</FormSection> </FormSection>
<SearchMarker :label="i18n.ts.displayOfNote" :keywords="['note', 'display']"> <SearchMarker :keywords="['note', 'display']">
<FormSection> <FormSection>
<template #label>{{ i18n.ts.displayOfNote }}</template> <template #label><SearchLabel>{{ i18n.ts.displayOfNote }}</SearchLabel></template>
<div class="_gaps_m"> <div class="_gaps_m">
<div class="_gaps_s"> <div class="_gaps_s">
<SearchMarker <SearchMarker :keywords="['renote']">
:keywords="['renote']"
>
<MkSwitch v-model="collapseRenotes"> <MkSwitch v-model="collapseRenotes">
<template #label><SearchLabel>{{ i18n.ts.collapseRenotes }}</SearchLabel></template> <template #label><SearchLabel>{{ i18n.ts.collapseRenotes }}</SearchLabel></template>
<template #caption><SearchKeyword>{{ i18n.ts.collapseRenotesDescription }}</SearchKeyword></template> <template #caption><SearchKeyword>{{ i18n.ts.collapseRenotesDescription }}</SearchKeyword></template>
</MkSwitch> </MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['hover', 'show', 'footer', 'action']">
:label="i18n.ts.showNoteActionsOnlyHover" <MkSwitch v-model="showNoteActionsOnlyHover">
:keywords="['hover', 'show', 'footer', 'action']" <template #label><SearchLabel>{{ i18n.ts.showNoteActionsOnlyHover }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="showNoteActionsOnlyHover">{{ i18n.ts.showNoteActionsOnlyHover }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['footer', 'action', 'clip', 'show']">
:label="i18n.ts.showClipButtonInNoteFooter" <MkSwitch v-model="showClipButtonInNoteFooter">
:keywords="['footer', 'action', 'clip', 'show']" <template #label><SearchLabel>{{ i18n.ts.showClipButtonInNoteFooter }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="showClipButtonInNoteFooter">{{ i18n.ts.showClipButtonInNoteFooter }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['mfm', 'enable', 'show', 'advanced']">
:label="i18n.ts.enableAdvancedMfm" <MkSwitch v-model="advancedMfm">
:keywords="['mfm', 'enable', 'show', 'advanced']" <template #label><SearchLabel>{{ i18n.ts.enableAdvancedMfm }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="advancedMfm">{{ i18n.ts.enableAdvancedMfm }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['mfm', 'enable', 'show', 'animated']">
:label="i18n.ts.enableAnimatedMfm" <MkSwitch v-if="advancedMfm" v-model="animatedMfm">
:keywords="['mfm', 'enable', 'show', 'animated']" <template #label><SearchLabel>{{ i18n.ts.enableAnimatedMfm }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-if="advancedMfm" v-model="animatedMfm">{{ i18n.ts.enableAnimatedMfm }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['mfm', 'enable', 'show', 'advanced', 'picker', 'form', 'function', 'fn']">
:label="i18n.ts.enableQuickAddMfmFunction" <MkSwitch v-if="advancedMfm" v-model="enableQuickAddMfmFunction">
:keywords="['mfm', 'enable', 'show', 'advanced', 'picker', 'form', 'function', 'fn']" <template #label><SearchLabel>{{ i18n.ts.enableQuickAddMfmFunction }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-if="advancedMfm" v-model="enableQuickAddMfmFunction">{{ i18n.ts.enableQuickAddMfmFunction }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['reaction', 'count', 'show']">
:label="i18n.ts.showReactionsCount" <MkSwitch v-model="showReactionsCount">
:keywords="['reaction', 'count', 'show']" <template #label><SearchLabel>{{ i18n.ts.showReactionsCount }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="showReactionsCount">{{ i18n.ts.showReactionsCount }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['note', 'timeline', 'gap']">
:label="i18n.ts.showGapBetweenNotesInTimeline" <MkSwitch v-model="showGapBetweenNotesInTimeline">
:keywords="['note', 'timeline', 'gap']" <template #label><SearchLabel>{{ i18n.ts.showGapBetweenNotesInTimeline }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="showGapBetweenNotesInTimeline">{{ i18n.ts.showGapBetweenNotesInTimeline }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['image', 'photo', 'picture', 'media', 'thumbnail', 'quality', 'raw', 'attachment']">
:label="i18n.ts.loadRawImages" <MkSwitch v-model="loadRawImages">
:keywords="['image', 'photo', 'picture', 'media', 'thumbnail', 'quality', 'raw', 'attachment']" <template #label><SearchLabel>{{ i18n.ts.loadRawImages }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="loadRawImages">{{ i18n.ts.loadRawImages }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['reaction', 'size', 'scale', 'display']">
:label="i18n.ts.reactionsDisplaySize"
:keywords="['reaction', 'size', 'scale', 'display']"
>
<MkRadios v-model="reactionsDisplaySize"> <MkRadios v-model="reactionsDisplaySize">
<template #label>{{ i18n.ts.reactionsDisplaySize }}</template> <template #label><SearchLabel>{{ i18n.ts.reactionsDisplaySize }}</SearchLabel></template>
<option value="small">{{ i18n.ts.small }}</option> <option value="small">{{ i18n.ts.small }}</option>
<option value="medium">{{ i18n.ts.medium }}</option> <option value="medium">{{ i18n.ts.medium }}</option>
<option value="large">{{ i18n.ts.large }}</option> <option value="large">{{ i18n.ts.large }}</option>
</MkRadios> </MkRadios>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['reaction', 'size', 'scale', 'display', 'width', 'limit']">
:label="i18n.ts.limitWidthOfReaction" <MkSwitch v-model="limitWidthOfReaction">
:keywords="['reaction', 'size', 'scale', 'display', 'width', 'limit']" <template #label><SearchLabel>{{ i18n.ts.limitWidthOfReaction }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="limitWidthOfReaction">{{ i18n.ts.limitWidthOfReaction }}</MkSwitch>
</SearchMarker> </SearchMarker>
</div> </div>
<SearchMarker <SearchMarker :keywords="['ticker', 'information', 'label', 'instance', 'server', 'host', 'federation']">
:label="i18n.ts.instanceTicker"
:keywords="['ticker', 'information', 'label', 'instance', 'server', 'host', 'federation']"
>
<MkSelect v-if="instance.federation !== 'none'" v-model="instanceTicker"> <MkSelect v-if="instance.federation !== 'none'" v-model="instanceTicker">
<template #label>{{ i18n.ts.instanceTicker }}</template> <template #label><SearchLabel>{{ i18n.ts.instanceTicker }}</SearchLabel></template>
<option value="none">{{ i18n.ts._instanceTicker.none }}</option> <option value="none">{{ i18n.ts._instanceTicker.none }}</option>
<option value="remote">{{ i18n.ts._instanceTicker.remote }}</option> <option value="remote">{{ i18n.ts._instanceTicker.remote }}</option>
<option value="always">{{ i18n.ts._instanceTicker.always }}</option> <option value="always">{{ i18n.ts._instanceTicker.always }}</option>
</MkSelect> </MkSelect>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['attachment', 'image', 'photo', 'picture', 'media', 'thumbnail', 'nsfw', 'sensitive', 'display', 'show', 'hide', 'visibility']">
:label="i18n.ts.displayOfSensitiveMedia"
:keywords="['attachment', 'image', 'photo', 'picture', 'media', 'thumbnail', 'nsfw', 'sensitive', 'display', 'show', 'hide', 'visibility']"
>
<MkSelect v-model="nsfw"> <MkSelect v-model="nsfw">
<template #label>{{ i18n.ts.displayOfSensitiveMedia }}</template> <template #label><SearchLabel>{{ i18n.ts.displayOfSensitiveMedia }}</SearchLabel></template>
<option value="respect">{{ i18n.ts._displayOfSensitiveMedia.respect }}</option> <option value="respect">{{ i18n.ts._displayOfSensitiveMedia.respect }}</option>
<option value="ignore">{{ i18n.ts._displayOfSensitiveMedia.ignore }}</option> <option value="ignore">{{ i18n.ts._displayOfSensitiveMedia.ignore }}</option>
<option value="force">{{ i18n.ts._displayOfSensitiveMedia.force }}</option> <option value="force">{{ i18n.ts._displayOfSensitiveMedia.force }}</option>
</MkSelect> </MkSelect>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['attachment', 'image', 'photo', 'picture', 'media', 'thumbnail', 'list', 'size', 'height']">
:label="i18n.ts.mediaListWithOneImageAppearance"
:keywords="['attachment', 'image', 'photo', 'picture', 'media', 'thumbnail', 'list', 'size', 'height']"
>
<MkRadios v-model="mediaListWithOneImageAppearance"> <MkRadios v-model="mediaListWithOneImageAppearance">
<template #label>{{ i18n.ts.mediaListWithOneImageAppearance }}</template> <template #label><SearchLabel>{{ i18n.ts.mediaListWithOneImageAppearance }}</SearchLabel></template>
<option value="expand">{{ i18n.ts.default }}</option> <option value="expand">{{ i18n.ts.default }}</option>
<option value="16_9">{{ i18n.tsx.limitTo({ x: '16:9' }) }}</option> <option value="16_9">{{ i18n.tsx.limitTo({ x: '16:9' }) }}</option>
<option value="1_1">{{ i18n.tsx.limitTo({ x: '1:1' }) }}</option> <option value="1_1">{{ i18n.tsx.limitTo({ x: '1:1' }) }}</option>
@ -197,24 +163,20 @@ SPDX-License-Identifier: AGPL-3.0-only
</FormSection> </FormSection>
</SearchMarker> </SearchMarker>
<SearchMarker :label="i18n.ts.notificationDisplay" :keywords="['notification', 'display']"> <SearchMarker :keywords="['notification', 'display']">
<FormSection> <FormSection>
<template #label>{{ i18n.ts.notificationDisplay }}</template> <template #label><SearchLabel>{{ i18n.ts.notificationDisplay }}</SearchLabel></template>
<div class="_gaps_m"> <div class="_gaps_m">
<SearchMarker <SearchMarker :keywords="['group']">
:label="i18n.ts.useGroupedNotifications" <MkSwitch v-model="useGroupedNotifications">
:keywords="['group']" <template #label><SearchLabel>{{ i18n.ts.useGroupedNotifications }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="useGroupedNotifications">{{ i18n.ts.useGroupedNotifications }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['position']">
:label="i18n.ts.position"
:keywords="['position']"
>
<MkRadios v-model="notificationPosition"> <MkRadios v-model="notificationPosition">
<template #label>{{ i18n.ts.position }}</template> <template #label><SearchLabel>{{ i18n.ts.position }}</SearchLabel></template>
<option value="leftTop"><i class="ti ti-align-box-left-top"></i> {{ i18n.ts.leftTop }}</option> <option value="leftTop"><i class="ti ti-align-box-left-top"></i> {{ i18n.ts.leftTop }}</option>
<option value="rightTop"><i class="ti ti-align-box-right-top"></i> {{ i18n.ts.rightTop }}</option> <option value="rightTop"><i class="ti ti-align-box-right-top"></i> {{ i18n.ts.rightTop }}</option>
<option value="leftBottom"><i class="ti ti-align-box-left-bottom"></i> {{ i18n.ts.leftBottom }}</option> <option value="leftBottom"><i class="ti ti-align-box-left-bottom"></i> {{ i18n.ts.leftBottom }}</option>
@ -222,12 +184,9 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkRadios> </MkRadios>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['stack', 'axis', 'direction']">
:label="i18n.ts.stackAxis"
:keywords="['stack', 'axis', 'direction']"
>
<MkRadios v-model="notificationStackAxis"> <MkRadios v-model="notificationStackAxis">
<template #label>{{ i18n.ts.stackAxis }}</template> <template #label><SearchLabel>{{ i18n.ts.stackAxis }}</SearchLabel></template>
<option value="vertical"><i class="ti ti-carousel-vertical"></i> {{ i18n.ts.vertical }}</option> <option value="vertical"><i class="ti ti-carousel-vertical"></i> {{ i18n.ts.vertical }}</option>
<option value="horizontal"><i class="ti ti-carousel-horizontal"></i> {{ i18n.ts.horizontal }}</option> <option value="horizontal"><i class="ti ti-carousel-horizontal"></i> {{ i18n.ts.horizontal }}</option>
</MkRadios> </MkRadios>
@ -238,109 +197,92 @@ SPDX-License-Identifier: AGPL-3.0-only
</FormSection> </FormSection>
</SearchMarker> </SearchMarker>
<SearchMarker :label="i18n.ts.appearance" :keywords="['appearance']"> <SearchMarker :keywords="['appearance']">
<FormSection> <FormSection>
<template #label>{{ i18n.ts.appearance }}</template> <template #label><SearchLabel>{{ i18n.ts.appearance }}</SearchLabel></template>
<div class="_gaps_m"> <div class="_gaps_m">
<div class="_gaps_s"> <div class="_gaps_s">
<SearchMarker <SearchMarker :keywords="['animation', 'motion', 'reduce']">
:label="i18n.ts.reduceUiAnimation" <MkSwitch v-model="reduceAnimation">
:keywords="['animation', 'motion', 'reduce']" <template #label><SearchLabel>{{ i18n.ts.reduceUiAnimation }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="reduceAnimation">{{ i18n.ts.reduceUiAnimation }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['blur']">
:label="i18n.ts.useBlurEffect" <MkSwitch v-model="useBlurEffect">
:keywords="['blur']" <template #label><SearchLabel>{{ i18n.ts.useBlurEffect }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="useBlurEffect">{{ i18n.ts.useBlurEffect }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['blur', 'modal']">
:label="i18n.ts.useBlurEffectForModal" <MkSwitch v-model="useBlurEffectForModal">
:keywords="['blur', 'modal']" <template #label><SearchLabel>{{ i18n.ts.useBlurEffectForModal }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="useBlurEffectForModal">{{ i18n.ts.useBlurEffectForModal }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['disable', 'animation', 'image', 'photo', 'picture', 'media', 'thumbnail', 'gif']">
:label="i18n.ts.disableShowingAnimatedImages" <MkSwitch v-model="disableShowingAnimatedImages">
:keywords="['disable', 'animation', 'image', 'photo', 'picture', 'media', 'thumbnail', 'gif']" <template #label><SearchLabel>{{ i18n.ts.disableShowingAnimatedImages }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="disableShowingAnimatedImages">{{ i18n.ts.disableShowingAnimatedImages }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['highlight', 'sensitive', 'nsfw', 'image', 'photo', 'picture', 'media', 'thumbnail']">
:label="i18n.ts.highlightSensitiveMedia" <MkSwitch v-model="highlightSensitiveMedia">
:keywords="['highlight', 'sensitive', 'nsfw', 'image', 'photo', 'picture', 'media', 'thumbnail']" <template #label><SearchLabel>{{ i18n.ts.highlightSensitiveMedia }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="highlightSensitiveMedia">{{ i18n.ts.highlightSensitiveMedia }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['avatar', 'icon', 'square']">
:label="i18n.ts.squareAvatars" <MkSwitch v-model="squareAvatars">
:keywords="['avatar', 'icon', 'square']" <template #label><SearchLabel>{{ i18n.ts.squareAvatars }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="squareAvatars">{{ i18n.ts.squareAvatars }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['avatar', 'icon', 'decoration', 'show']">
:label="i18n.ts.showAvatarDecorations" <MkSwitch v-model="showAvatarDecorations">
:keywords="['avatar', 'icon', 'decoration', 'show']" <template #label><SearchLabel>{{ i18n.ts.showAvatarDecorations }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="showAvatarDecorations">{{ i18n.ts.showAvatarDecorations }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['font', 'system', 'native']">
:label="i18n.ts.useSystemFont" <MkSwitch v-model="useSystemFont">
:keywords="['font', 'system', 'native']" <template #label><SearchLabel>{{ i18n.ts.useSystemFont }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="useSystemFont">{{ i18n.ts.useSystemFont }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['ad', 'show']">
:label="i18n.ts.forceShowAds" <MkSwitch v-model="forceShowAds">
:keywords="['ad', 'show']" <template #label><SearchLabel>{{ i18n.ts.forceShowAds }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="forceShowAds">{{ i18n.ts.forceShowAds }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['effect', 'show']">
:label="i18n.ts.seasonalScreenEffect" <MkSwitch v-model="enableSeasonalScreenEffect">
:keywords="['effect', 'show']" <template #label><SearchLabel>{{ i18n.ts.seasonalScreenEffect }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="enableSeasonalScreenEffect">{{ i18n.ts.seasonalScreenEffect }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['native', 'system', 'video', 'audio', 'player', 'media']">
:label="i18n.ts.useNativeUIForVideoAudioPlayer" <MkSwitch v-model="useNativeUIForVideoAudioPlayer">
:keywords="['native', 'system', 'video', 'audio', 'player', 'media']" <template #label><SearchLabel>{{ i18n.ts.useNativeUIForVideoAudioPlayer }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="useNativeUIForVideoAudioPlayer">{{ i18n.ts.useNativeUIForVideoAudioPlayer }}</MkSwitch>
</SearchMarker> </SearchMarker>
</div> </div>
<SearchMarker <SearchMarker :keywords="['menu', 'style', 'popup', 'drawer']">
:label="i18n.ts.menuStyle"
:keywords="['menu', 'style', 'popup', 'drawer']"
>
<MkSelect v-model="menuStyle"> <MkSelect v-model="menuStyle">
<template #label>{{ i18n.ts.menuStyle }}</template> <template #label><SearchLabel>{{ i18n.ts.menuStyle }}</SearchLabel></template>
<option value="auto">{{ i18n.ts.auto }}</option> <option value="auto">{{ i18n.ts.auto }}</option>
<option value="popup">{{ i18n.ts.popup }}</option> <option value="popup">{{ i18n.ts.popup }}</option>
<option value="drawer">{{ i18n.ts.drawer }}</option> <option value="drawer">{{ i18n.ts.drawer }}</option>
</MkSelect> </MkSelect>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['emoji', 'style', 'native', 'system', 'fluent', 'twemoji']">
:label="i18n.ts.emojiStyle"
:keywords="['emoji', 'style', 'native', 'system', 'fluent', 'twemoji']"
>
<div> <div>
<MkRadios v-model="emojiStyle"> <MkRadios v-model="emojiStyle">
<template #label>{{ i18n.ts.emojiStyle }}</template> <template #label><SearchLabel>{{ i18n.ts.emojiStyle }}</SearchLabel></template>
<option value="native">{{ i18n.ts.native }}</option> <option value="native">{{ i18n.ts.native }}</option>
<option value="fluentEmoji">Fluent Emoji</option> <option value="fluentEmoji">Fluent Emoji</option>
<option value="twemoji">Twemoji</option> <option value="twemoji">Twemoji</option>
@ -349,12 +291,9 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['font', 'size']">
:label="i18n.ts.fontSize"
:keywords="['font', 'size']"
>
<MkRadios v-model="fontSize"> <MkRadios v-model="fontSize">
<template #label>{{ i18n.ts.fontSize }}</template> <template #label><SearchLabel>{{ i18n.ts.fontSize }}</SearchLabel></template>
<option :value="null"><span style="font-size: 14px;">Aa</span></option> <option :value="null"><span style="font-size: 14px;">Aa</span></option>
<option value="1"><span style="font-size: 15px;">Aa</span></option> <option value="1"><span style="font-size: 15px;">Aa</span></option>
<option value="2"><span style="font-size: 16px;">Aa</span></option> <option value="2"><span style="font-size: 16px;">Aa</span></option>
@ -365,113 +304,95 @@ SPDX-License-Identifier: AGPL-3.0-only
</FormSection> </FormSection>
</SearchMarker> </SearchMarker>
<SearchMarker :label="i18n.ts.behavior" :keywords="['behavior']"> <SearchMarker :keywords="['behavior']">
<FormSection> <FormSection>
<template #label>{{ i18n.ts.behavior }}</template> <template #label><SearchLabel>{{ i18n.ts.behavior }}</SearchLabel></template>
<div class="_gaps_m"> <div class="_gaps_m">
<div class="_gaps_s"> <div class="_gaps_s">
<SearchMarker <SearchMarker :keywords="['image', 'photo', 'picture', 'media', 'thumbnail', 'new', 'tab']">
:label="i18n.ts.openImageInNewTab" <MkSwitch v-model="imageNewTab">
:keywords="['image', 'photo', 'picture', 'media', 'thumbnail', 'new', 'tab']" <template #label><SearchLabel>{{ i18n.ts.openImageInNewTab }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="imageNewTab">{{ i18n.ts.openImageInNewTab }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['reaction', 'picker', 'contextmenu', 'open']">
:label="i18n.ts.useReactionPickerForContextMenu" <MkSwitch v-model="useReactionPickerForContextMenu">
:keywords="['reaction', 'picker', 'contextmenu', 'open']" <template #label><SearchLabel>{{ i18n.ts.useReactionPickerForContextMenu }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="useReactionPickerForContextMenu">{{ i18n.ts.useReactionPickerForContextMenu }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['load', 'auto', 'more']">
:label="i18n.ts.enableInfiniteScroll" <MkSwitch v-model="enableInfiniteScroll">
:keywords="['load', 'auto', 'more']" <template #label><SearchLabel>{{ i18n.ts.enableInfiniteScroll }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="enableInfiniteScroll">{{ i18n.ts.enableInfiniteScroll }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['keep', 'screen', 'display', 'on']">
:label="i18n.ts.keepScreenOn" <MkSwitch v-model="keepScreenOn">
:keywords="['keep', 'screen', 'display', 'on']" <template #label><SearchLabel>{{ i18n.ts.keepScreenOn }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="keepScreenOn">{{ i18n.ts.keepScreenOn }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['disable', 'streaming', 'timeline']">
:label="i18n.ts.disableStreamingTimeline" <MkSwitch v-model="disableStreamingTimeline">
:keywords="['disable', 'streaming', 'timeline']" <template #label><SearchLabel>{{ i18n.ts.disableStreamingTimeline }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="disableStreamingTimeline">{{ i18n.ts.disableStreamingTimeline }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['swipe', 'horizontal', 'tab']">
:label="i18n.ts.enableHorizontalSwipe" <MkSwitch v-model="enableHorizontalSwipe">
:keywords="['swipe', 'horizontal', 'tab']" <template #label><SearchLabel>{{ i18n.ts.enableHorizontalSwipe }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="enableHorizontalSwipe">{{ i18n.ts.enableHorizontalSwipe }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['follow', 'confirm', 'always']">
:label="i18n.ts.alwaysConfirmFollow" <MkSwitch v-model="alwaysConfirmFollow">
:keywords="['follow', 'confirm', 'always']" <template #label><SearchLabel>{{ i18n.ts.alwaysConfirmFollow }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="alwaysConfirmFollow">{{ i18n.ts.alwaysConfirmFollow }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['sensitive', 'nsfw', 'media', 'image', 'photo', 'picture', 'attachment', 'confirm']">
:label="i18n.ts.confirmWhenRevealingSensitiveMedia" <MkSwitch v-model="confirmWhenRevealingSensitiveMedia">
:keywords="['sensitive', 'nsfw', 'media', 'image', 'photo', 'picture', 'attachment', 'confirm']" <template #label><SearchLabel>{{ i18n.ts.confirmWhenRevealingSensitiveMedia }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="confirmWhenRevealingSensitiveMedia">{{ i18n.ts.confirmWhenRevealingSensitiveMedia }}</MkSwitch>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['reaction', 'confirm']">
:label="i18n.ts.confirmOnReact" <MkSwitch v-model="confirmOnReact">
:keywords="['reaction', 'confirm']" <template #label><SearchLabel>{{ i18n.ts.confirmOnReact }}</SearchLabel></template>
> </MkSwitch>
<MkSwitch v-model="confirmOnReact">{{ i18n.ts.confirmOnReact }}</MkSwitch>
</SearchMarker> </SearchMarker>
</div> </div>
<SearchMarker <SearchMarker :keywords="['server', 'disconnect', 'reconnect', 'reload', 'streaming']">
:label="i18n.ts.whenServerDisconnected"
:keywords="['server', 'disconnect', 'reconnect', 'reload', 'streaming']"
>
<MkSelect v-model="serverDisconnectedBehavior"> <MkSelect v-model="serverDisconnectedBehavior">
<template #label>{{ i18n.ts.whenServerDisconnected }}</template> <template #label><SearchLabel>{{ i18n.ts.whenServerDisconnected }}</SearchLabel></template>
<option value="reload">{{ i18n.ts._serverDisconnectedBehavior.reload }}</option> <option value="reload">{{ i18n.ts._serverDisconnectedBehavior.reload }}</option>
<option value="dialog">{{ i18n.ts._serverDisconnectedBehavior.dialog }}</option> <option value="dialog">{{ i18n.ts._serverDisconnectedBehavior.dialog }}</option>
<option value="quiet">{{ i18n.ts._serverDisconnectedBehavior.quiet }}</option> <option value="quiet">{{ i18n.ts._serverDisconnectedBehavior.quiet }}</option>
</MkSelect> </MkSelect>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['contextmenu', 'system', 'native']">
:label="i18n.ts._contextMenu.title"
:keywords="['contextmenu', 'system', 'native']"
>
<MkSelect v-model="contextMenu"> <MkSelect v-model="contextMenu">
<template #label>{{ i18n.ts._contextMenu.title }}</template> <template #label><SearchLabel>{{ i18n.ts._contextMenu.title }}</SearchLabel></template>
<option value="app">{{ i18n.ts._contextMenu.app }}</option> <option value="app">{{ i18n.ts._contextMenu.app }}</option>
<option value="appWithShift">{{ i18n.ts._contextMenu.appWithShift }}</option> <option value="appWithShift">{{ i18n.ts._contextMenu.appWithShift }}</option>
<option value="native">{{ i18n.ts._contextMenu.native }}</option> <option value="native">{{ i18n.ts._contextMenu.native }}</option>
</MkSelect> </MkSelect>
</SearchMarker> </SearchMarker>
<SearchMarker <SearchMarker :keywords="['cache', 'page']">
:label="i18n.ts.numberOfPageCache"
:keywords="['cache', 'page']"
>
<MkRange v-model="numberOfPageCache" :min="1" :max="10" :step="1" easing> <MkRange v-model="numberOfPageCache" :min="1" :max="10" :step="1" easing>
<template #label>{{ i18n.ts.numberOfPageCache }}</template> <template #label><SearchLabel>{{ i18n.ts.numberOfPageCache }}</SearchLabel></template>
<template #caption>{{ i18n.ts.numberOfPageCacheDescription }}</template> <template #caption>{{ i18n.ts.numberOfPageCacheDescription }}</template>
</MkRange> </MkRange>
</SearchMarker> </SearchMarker>
<SearchMarker :label="i18n.ts.dataSaver" :keywords="['datasaver']"> <SearchMarker :label="i18n.ts.dataSaver" :keywords="['datasaver']">
<MkFolder> <MkFolder>
<template #label>{{ i18n.ts.dataSaver }}</template> <template #label><SearchLabel>{{ i18n.ts.dataSaver }}</SearchLabel></template>
<div class="_gaps_m"> <div class="_gaps_m">
<MkInfo>{{ i18n.ts.reloadRequiredToApplySettings }}</MkInfo> <MkInfo>{{ i18n.ts.reloadRequiredToApplySettings }}</MkInfo>
@ -505,29 +426,37 @@ SPDX-License-Identifier: AGPL-3.0-only
</FormSection> </FormSection>
</SearchMarker> </SearchMarker>
<FormSection> <SearchMarker>
<template #label>{{ i18n.ts.other }}</template> <FormSection>
<template #label><SearchLabel>{{ i18n.ts.other }}</SearchLabel></template>
<div class="_gaps"> <div class="_gaps">
<MkRadios v-model="hemisphere"> <SearchMarker>
<template #label>{{ i18n.ts.hemisphere }}</template> <MkRadios v-model="hemisphere">
<option value="N">{{ i18n.ts._hemisphere.N }}</option> <template #label><SearchLabel>{{ i18n.ts.hemisphere }}</SearchLabel></template>
<option value="S">{{ i18n.ts._hemisphere.S }}</option> <option value="N">{{ i18n.ts._hemisphere.N }}</option>
<template #caption>{{ i18n.ts._hemisphere.caption }}</template> <option value="S">{{ i18n.ts._hemisphere.S }}</option>
</MkRadios> <template #caption>{{ i18n.ts._hemisphere.caption }}</template>
<MkFolder> </MkRadios>
<template #label>{{ i18n.ts.additionalEmojiDictionary }}</template> </SearchMarker>
<div class="_buttons">
<template v-for="lang in emojiIndexLangs" :key="lang"> <SearchMarker :keywords="['emoji', 'dictionary', 'additional', 'extra']">
<MkButton v-if="defaultStore.reactiveState.additionalUnicodeEmojiIndexes.value[lang]" danger @click="removeEmojiIndex(lang)"><i class="ti ti-trash"></i> {{ i18n.ts.remove }} ({{ getEmojiIndexLangName(lang) }})</MkButton> <MkFolder>
<MkButton v-else @click="downloadEmojiIndex(lang)"><i class="ti ti-download"></i> {{ getEmojiIndexLangName(lang) }}{{ defaultStore.reactiveState.additionalUnicodeEmojiIndexes.value[lang] ? ` (${ i18n.ts.installed })` : '' }}</MkButton> <template #label><SearchLabel>{{ i18n.ts.additionalEmojiDictionary }}</SearchLabel></template>
</template> <div class="_buttons">
</div> <template v-for="lang in emojiIndexLangs" :key="lang">
</MkFolder> <MkButton v-if="defaultStore.reactiveState.additionalUnicodeEmojiIndexes.value[lang]" danger @click="removeEmojiIndex(lang)"><i class="ti ti-trash"></i> {{ i18n.ts.remove }} ({{ getEmojiIndexLangName(lang) }})</MkButton>
<FormLink to="/settings/deck">{{ i18n.ts.deck }}</FormLink> <MkButton v-else @click="downloadEmojiIndex(lang)"><i class="ti ti-download"></i> {{ getEmojiIndexLangName(lang) }}{{ defaultStore.reactiveState.additionalUnicodeEmojiIndexes.value[lang] ? ` (${ i18n.ts.installed })` : '' }}</MkButton>
<FormLink to="/settings/custom-css"><template #icon><i class="ti ti-code"></i></template>{{ i18n.ts.customCss }}</FormLink> </template>
</div> </div>
</FormSection> </MkFolder>
</SearchMarker>
<FormLink to="/settings/deck">{{ i18n.ts.deck }}</FormLink>
<FormLink to="/settings/custom-css"><template #icon><i class="ti ti-code"></i></template>{{ i18n.ts.customCss }}</FormLink>
</div>
</FormSection>
</SearchMarker>
</div> </div>
</SearchMarker> </SearchMarker>
</template> </template>