Merge branch 'admin-tabs-2' into shigusegubu-themes3
This commit is contained in:
commit
c12a7fcf7b
65 changed files with 570 additions and 783 deletions
|
|
@ -704,6 +704,7 @@ option {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
min-height: 2em;
|
||||||
|
|
||||||
.Select select {
|
.Select select {
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="font-control">
|
<div class="font-control">
|
||||||
|
<div class="setting-item">
|
||||||
<Checkbox
|
<Checkbox
|
||||||
v-if="typeof fallback !== 'undefined'"
|
v-if="typeof fallback !== 'undefined'"
|
||||||
:id="name + '-o'"
|
:id="name + '-o'"
|
||||||
class="font-checkbox"
|
class="font-checkbox setting-control setting-label"
|
||||||
:model-value="present"
|
:model-value="present"
|
||||||
@change="$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)"
|
@change="$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)"
|
||||||
>
|
>
|
||||||
|
|
@ -12,13 +13,16 @@
|
||||||
keypath="settings.style.fonts.override"
|
keypath="settings.style.fonts.override"
|
||||||
tag="span"
|
tag="span"
|
||||||
>
|
>
|
||||||
|
<span>
|
||||||
{{ label }}
|
{{ label }}
|
||||||
|
</span>
|
||||||
</i18n-t>
|
</i18n-t>
|
||||||
</Checkbox>
|
</Checkbox>
|
||||||
|
</div>
|
||||||
{{ ' ' }}
|
{{ ' ' }}
|
||||||
<div
|
<div
|
||||||
v-if="modelValue?.family"
|
v-if="modelValue?.family"
|
||||||
class="font-input"
|
class="font-input setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
v-if="manualEntry"
|
v-if="manualEntry"
|
||||||
|
|
@ -69,7 +73,7 @@
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-else
|
v-else
|
||||||
class="btn-group"
|
class="font-selector btn-group"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="btn button-default"
|
class="btn button-default"
|
||||||
|
|
@ -132,16 +136,38 @@
|
||||||
<script src="./font_control.js"></script>
|
<script src="./font_control.js"></script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
// Copy-paste of BooleanSetting
|
||||||
.font-control {
|
.font-control {
|
||||||
.custom-font {
|
display: grid;
|
||||||
min-width: 20em;
|
grid-template-columns: subgrid;
|
||||||
max-width: 20em;
|
|
||||||
|
.checkbox {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: subgrid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
grid-area: label;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.-mobile & {
|
||||||
.font-input {
|
.font-input {
|
||||||
margin-left: 2em;
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font-selector {
|
||||||
margin-top: 0.5em;
|
margin-top: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-indicator {
|
||||||
|
grid-area: control;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.invalid-tooltip {
|
.invalid-tooltip {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ import localeService from '../../services/locale/locale.service.js'
|
||||||
import Select from '../select/select.vue'
|
import Select from '../select/select.vue'
|
||||||
import ProfileSettingIndicator from 'src/components/settings_modal/helpers/profile_setting_indicator.vue'
|
import ProfileSettingIndicator from 'src/components/settings_modal/helpers/profile_setting_indicator.vue'
|
||||||
|
|
||||||
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Select,
|
Select,
|
||||||
|
|
@ -26,7 +28,9 @@ export default {
|
||||||
languages () {
|
languages () {
|
||||||
return localeService.languages
|
return localeService.languages
|
||||||
},
|
},
|
||||||
|
uniqueId () {
|
||||||
|
return uuidv4()
|
||||||
|
},
|
||||||
controlledLanguage: {
|
controlledLanguage: {
|
||||||
get: function () {
|
get: function () {
|
||||||
return Array.isArray(this.modelValue) ? this.modelValue : [this.modelValue]
|
return Array.isArray(this.modelValue) ? this.modelValue : [this.modelValue]
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,20 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="interface-language-switcher">
|
<ul class="interface-language-switcher setting-list">
|
||||||
<label>
|
|
||||||
<slot />
|
|
||||||
<ProfileSettingIndicator :is-profile="profile" />
|
|
||||||
</label>
|
|
||||||
<ul class="setting-list">
|
|
||||||
<li
|
<li
|
||||||
v-for="index of controlledLanguage.keys()"
|
v-for="index of controlledLanguage.keys()"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
class="setting-item"
|
||||||
|
>
|
||||||
|
<label
|
||||||
|
class="setting-label"
|
||||||
|
:for="uniqueId+index"
|
||||||
>
|
>
|
||||||
<label>
|
|
||||||
{{ index === 0 ? $t('settings.primary_language') : $t('settings.fallback_language', { index }, index) }}
|
{{ index === 0 ? $t('settings.primary_language') : $t('settings.fallback_language', { index }, index) }}
|
||||||
|
</label>
|
||||||
|
<span class="setting-control btn-group">
|
||||||
<Select
|
<Select
|
||||||
|
:name="uniqueId+index"
|
||||||
|
:id="uniqueId+index"
|
||||||
class="language-select"
|
class="language-select"
|
||||||
:model-value="controlledLanguage[index]"
|
:model-value="controlledLanguage[index]"
|
||||||
@update:model-value="val => setLanguageAt(index, val)"
|
@update:model-value="val => setLanguageAt(index, val)"
|
||||||
|
|
@ -24,7 +27,6 @@
|
||||||
{{ lang.name }}
|
{{ lang.name }}
|
||||||
</option>
|
</option>
|
||||||
</Select>
|
</Select>
|
||||||
</label>
|
|
||||||
<button
|
<button
|
||||||
v-if="controlledLanguage.length > 1 && index !== 0"
|
v-if="controlledLanguage.length > 1 && index !== 0"
|
||||||
class="button-default btn"
|
class="button-default btn"
|
||||||
|
|
@ -32,8 +34,9 @@
|
||||||
>
|
>
|
||||||
{{ $t('settings.remove_language') }}
|
{{ $t('settings.remove_language') }}
|
||||||
</button>
|
</button>
|
||||||
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li class="add-button">
|
||||||
<button
|
<button
|
||||||
class="button-default btn"
|
class="button-default btn"
|
||||||
@click="addLanguage"
|
@click="addLanguage"
|
||||||
|
|
@ -42,15 +45,42 @@
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./interface_language_switcher.js"></script>
|
<script src="./interface_language_switcher.js"></script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.interface-language-switcher {
|
.interface-language-switcher {
|
||||||
.language-select {
|
.setting-list {
|
||||||
margin-right: 1em;
|
.setting-item {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: subgrid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-button {
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
padding-bottom: 1em;
|
||||||
|
|
||||||
|
.default-button {
|
||||||
|
display: block;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.-mobile & {
|
||||||
|
li.setting-item {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.5em;
|
||||||
|
align-items: stretch;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-button {
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.job_queues')">
|
<div :label="$t('admin_dash.tabs.job_queues')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.auth.MFA') }}</h3>
|
<h3>{{ $t('admin_dash.auth.MFA') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
class="EmojiTab"
|
class="EmojiTab"
|
||||||
:label="$t('admin_dash.tabs.emoji')"
|
:label="$t('admin_dash.tabs.emoji')"
|
||||||
>
|
>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3 class="toolbar">
|
<h3 class="toolbar">
|
||||||
<span class="header-text">
|
<span class="header-text">
|
||||||
{{ $t('admin_dash.emoji.emoji_packs') }}
|
{{ $t('admin_dash.emoji.emoji_packs') }}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.federation')">
|
<div :label="$t('admin_dash.tabs.federation')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.federation.global') }}</h3>
|
<h3>{{ $t('admin_dash.federation.global') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
class="FrontendsTab"
|
class="FrontendsTab"
|
||||||
:label="$t('admin_dash.tabs.frontends')"
|
:label="$t('admin_dash.tabs.frontends')"
|
||||||
>
|
>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.frontend.title') }}</h3>
|
<h3>{{ $t('admin_dash.frontend.title') }}</h3>
|
||||||
<p>{{ $t('admin_dash.frontend.wip_notice') }}</p>
|
<p>{{ $t('admin_dash.frontend.wip_notice') }}</p>
|
||||||
<ul
|
<ul
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
class="LinksTab"
|
class="LinksTab"
|
||||||
:label="$t('admin_dash.tabs.http')"
|
:label="$t('admin_dash.tabs.http')"
|
||||||
>
|
>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.http.outbound') }}</h3>
|
<h3>{{ $t('admin_dash.http.outbound') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -30,40 +30,9 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.http.incoming') }}</h3>
|
<h3>{{ $t('admin_dash.http.incoming') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<h4>{{ $t('admin_dash.http.cors') }}</h4>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting
|
|
||||||
:description-path-override="[':cors_plug', '<ROOT>', ':max_age']"
|
|
||||||
path=":cors_plug.:max_age"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<BooleanSetting
|
|
||||||
:description-path-override="[':cors_plug', '<ROOT>', ':credentials']"
|
|
||||||
path=":cors_plug.:credentials"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting
|
|
||||||
path=":cors_plug.:methods"
|
|
||||||
:description-path-override="[':cors_plug', '<ROOT>', ':methods']"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting
|
|
||||||
:description-path-override="[':cors_plug', '<ROOT>', ':expose']"
|
|
||||||
path=":cors_plug.:expose"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting
|
|
||||||
:description-path-override="[':cors_plug', '<ROOT>', ':headers']"
|
|
||||||
path=":cors_plug.:headers"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<h4>{{ $t('admin_dash.http.security') }}</h4>
|
<h4>{{ $t('admin_dash.http.security') }}</h4>
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting path=":pleroma.:http_security.:enabled" />
|
<BooleanSetting path=":pleroma.:http_security.:enabled" />
|
||||||
|
|
@ -86,14 +55,6 @@
|
||||||
<li>
|
<li>
|
||||||
<StringSetting path=":pleroma.:http_security.:report_url" />
|
<StringSetting path=":pleroma.:http_security.:report_url" />
|
||||||
</li>
|
</li>
|
||||||
<h4>{{ $t('admin_dash.http.web_cache_ttl') }}</h4>
|
|
||||||
<p>{{ $t('admin_dash.http.web_cache_ttl_description') }}</p>
|
|
||||||
<li>
|
|
||||||
<StringSetting path=":pleroma.:web_cache_ttl.:activity_pub" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<StringSetting path=":pleroma.:web_cache_ttl.:activity_pub_question" />
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<h3>{{ $t('admin_dash.http.web_push') }}</h3>
|
<h3>{{ $t('admin_dash.http.web_push') }}</h3>
|
||||||
<p>{{ $t('admin_dash.http.web_push_description') }}</p>
|
<p>{{ $t('admin_dash.http.web_push_description') }}</p>
|
||||||
|
|
@ -116,7 +77,6 @@
|
||||||
</ul>
|
</ul>
|
||||||
<!-- CONFIRM admin_token should go there but something is wrong with both data and description. -->
|
<!-- CONFIRM admin_token should go there but something is wrong with both data and description. -->
|
||||||
<!-- given the nature of the setting it's probably better to not expose it and deprecate it on backend side -->
|
<!-- given the nature of the setting it's probably better to not expose it and deprecate it on backend side -->
|
||||||
<!-- CONFIRM :pleroma.:streamer should also PROBABLY? go here but it's completely MIA from backend besides references to config description -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.instance')">
|
<div :label="$t('admin_dash.tabs.instance')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.instance.instance') }}</h3>
|
<h3>{{ $t('admin_dash.instance.instance') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -73,7 +73,7 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.instance.access') }}</h3>
|
<h3>{{ $t('admin_dash.instance.access') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,48 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.job_queues')">
|
<div :label="$t('admin_dash.tabs.job_queues')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.job_queues.Oban') }}</h3>
|
|
||||||
<ul class="setting-list">
|
|
||||||
<li>
|
|
||||||
<ChoiceSetting path=":pleroma.Oban.:log" />
|
|
||||||
<h4>{{ $t('admin_dash.job_queues.queues') }}</h4>
|
|
||||||
<ul class="setting-list">
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:federator_incoming" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:federator_outgoing" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:attachments_cleanup" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:mailer" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:activity_expiration" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:scheduled_activities" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:transmogrifier" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:web_push" />
|
|
||||||
</li>
|
|
||||||
<!-- CONFIRM what is this queue -->
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:slow" />
|
|
||||||
</li>
|
|
||||||
<!-- CONFIRM what is this queue -->
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.Oban.:queues.:background" />
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<GroupSetting path=":pleroma.Oban.:queues" />
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h3>{{ $t('admin_dash.job_queues.Gun.title') }}</h3>
|
<h3>{{ $t('admin_dash.job_queues.Gun.title') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.limits')">
|
<div :label="$t('admin_dash.tabs.limits')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.limits.arbitrary_limits') }}</h3>
|
<h3>{{ $t('admin_dash.limits.arbitrary_limits') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
.LinksTab {
|
|
||||||
// awkward "disable = false" backend options
|
|
||||||
.weird-options {
|
|
||||||
.checkbox {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.setting-list.suboptions.weird-suboptions {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 0.5em;
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
li {
|
|
||||||
margin: 0;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.GroupSetting {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
class="LinksTab"
|
class="LinksTab"
|
||||||
:label="$t('admin_dash.tabs.media_proxy')"
|
:label="$t('admin_dash.tabs.media_proxy')"
|
||||||
>
|
>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.links.link_previews') }}</h3>
|
<h3>{{ $t('admin_dash.links.link_previews') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -38,109 +38,8 @@
|
||||||
<ListSetting path=":pleroma.:rich_media.:ignore_hosts" />
|
<ListSetting path=":pleroma.:rich_media.:ignore_hosts" />
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>{{ $t('admin_dash.links.link_formatter') }}</h3>
|
|
||||||
<ul class="setting-list weird-options">
|
|
||||||
<li>
|
|
||||||
<Checkbox
|
|
||||||
:model-value="classIsPresent"
|
|
||||||
@update:model-value="checkClass"
|
|
||||||
>
|
|
||||||
<i18n-t
|
|
||||||
keypath="admin_dash.temp_overrides.:pleroma.Pleroma_DOT_Formatter.:attribute_toggle.label"
|
|
||||||
tag="span"
|
|
||||||
scope="global"
|
|
||||||
>
|
|
||||||
<template #attr>
|
|
||||||
<code>class</code>
|
|
||||||
</template>
|
|
||||||
</i18n-t>
|
|
||||||
</Checkbox>
|
|
||||||
<div class="setting-list suboptions weird-suboptions">
|
|
||||||
<StringSetting
|
|
||||||
v-if="classIsPresent"
|
|
||||||
:path="[':pleroma', 'Pleroma.Formatter', ':class']"
|
|
||||||
hide-label
|
|
||||||
hide-draft-buttons
|
|
||||||
/>
|
|
||||||
<GroupSetting :path="[':pleroma', 'Pleroma.Formatter', ':class']" />
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<Checkbox
|
|
||||||
:model-value="relIsPresent"
|
|
||||||
@update:model-value="checkRel"
|
|
||||||
>
|
|
||||||
<i18n-t
|
|
||||||
keypath="admin_dash.temp_overrides.:pleroma.Pleroma_DOT_Formatter.:attribute_toggle.label"
|
|
||||||
tag="span"
|
|
||||||
scope="global"
|
|
||||||
>
|
|
||||||
<template #attr>
|
|
||||||
<code>rel</code>
|
|
||||||
</template>
|
|
||||||
</i18n-t>
|
|
||||||
</Checkbox>
|
|
||||||
<div class="setting-list suboptions weird-suboptions">
|
|
||||||
<StringSetting
|
|
||||||
v-if="relIsPresent"
|
|
||||||
:path="[':pleroma', 'Pleroma.Formatter', ':rel']"
|
|
||||||
hide-label
|
|
||||||
hide-draft-buttons
|
|
||||||
/>
|
|
||||||
<GroupSetting
|
|
||||||
:path="[':pleroma', 'Pleroma.Formatter', ':rel']"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<BooleanSetting :path="[':pleroma', 'Pleroma.Formatter', ':new_window']" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<BooleanSetting :path="[':pleroma', 'Pleroma.Formatter', ':strip_prefix']" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<BooleanSetting :path="[':pleroma', 'Pleroma.Formatter', ':extra']" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ChoiceSetting
|
|
||||||
:path="[':pleroma', 'Pleroma.Formatter', ':validate_tld']"
|
|
||||||
:options="validateTLDOptions"
|
|
||||||
override-options
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<Checkbox
|
|
||||||
:model-value="truncateIsPresent"
|
|
||||||
@update:model-value="checkTruncate"
|
|
||||||
>
|
|
||||||
{{ truncateDescription.label }}
|
|
||||||
</Checkbox>
|
|
||||||
<div class="setting-list suboptions weird-suboptions">
|
|
||||||
<li>
|
|
||||||
<IntegerSetting
|
|
||||||
v-if="truncateIsPresent"
|
|
||||||
:path="[':pleroma', 'Pleroma.Formatter', ':truncate']"
|
|
||||||
hide-label
|
|
||||||
hide-draft-buttons
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<GroupSetting :path="[':pleroma', 'Pleroma.Formatter', ':truncate']" />
|
|
||||||
</li>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<!-- CONFIRM backend what's difference between here and :extra -->
|
|
||||||
<ListSetting
|
|
||||||
ignore-suggestions
|
|
||||||
path=":pleroma.:uri_schemes.:valid_schemes"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./links_tab.js"></script>
|
<script src="./links_tab.js"></script>
|
||||||
|
|
||||||
<style lang="scss" src="./links_tab.scss"></style>
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.mailer')">
|
<div :label="$t('admin_dash.tabs.mailer')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.mailer.adapter') }}</h3>
|
<h3>{{ $t('admin_dash.mailer.adapter') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.media_proxy')">
|
<div :label="$t('admin_dash.tabs.media_proxy')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.media_proxy.basic') }}</h3>
|
<h3>{{ $t('admin_dash.media_proxy.basic') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.monitoring')">
|
<div :label="$t('admin_dash.tabs.monitoring')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.monitoring.builtins') }}</h3>
|
<h3>{{ $t('admin_dash.monitoring.builtins') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,14 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.other')">
|
<div :label="$t('admin_dash.tabs.other')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.other.uncategorized') }}</h3>
|
<h3>{{ $t('admin_dash.other.uncategorized') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
<StringSetting path=":pleroma.:instance.:static_dir" />
|
<StringSetting path=":pleroma.:instance.:static_dir" />
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<StringSetting path=":pleroma.:modules.:runtime_dir" />
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting path=":pleroma.:instance.:profile_directory" />
|
<BooleanSetting path=":pleroma.:instance.:profile_directory" />
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<BooleanSetting :path="[':pleroma','Pleroma.Web.ApiSpec.CastAndValidate',':strict']" />
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<h3>{{ $t('admin_dash.other.reports') }}</h3>
|
<h3>{{ $t('admin_dash.other.reports') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
|
|
@ -42,82 +36,6 @@
|
||||||
<IntegerSetting :path="[':pleroma','Pleroma.User.Backup',':timeout']" />
|
<IntegerSetting :path="[':pleroma','Pleroma.User.Backup',':timeout']" />
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>{{ $t('admin_dash.other.feed') }}</h3>
|
|
||||||
<ul class="setting-list">
|
|
||||||
<h4>{{ $t('admin_dash.other.feed_title') }}</h4>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.:feed.:post_title.:max_length" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<StringSetting path=":pleroma.:feed.:post_title.:omission" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<GroupSetting path=":pleroma.:feed.:post_title" />
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h3>{{ $t('admin_dash.other.remote_ip') }}</h3>
|
|
||||||
<p>{{ $t('admin_dash.other.remote_ip_description') }}</p>
|
|
||||||
<ul class="setting-list">
|
|
||||||
<li>
|
|
||||||
<BooleanSetting :path="[':pleroma','Pleroma.Web.Plugs.RemoteIp',':enabled']" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting :path="[':pleroma','Pleroma.Web.Plugs.RemoteIp',':headers']" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting :path="[':pleroma','Pleroma.Web.Plugs.RemoteIp',':proxies']" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting :path="[':pleroma','Pleroma.Web.Plugs.RemoteIp',':reserved']" />
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h3>{{ $t('admin_dash.other.mime') }}</h3>
|
|
||||||
<ul class="setting-list">
|
|
||||||
<li>
|
|
||||||
<ListSetting
|
|
||||||
override-backend-description-label="application/activity+json"
|
|
||||||
hide-description
|
|
||||||
:path="[':mime',':types', 'application/activity+json']"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting
|
|
||||||
override-backend-description-label="application/jrd+json"
|
|
||||||
hide-description
|
|
||||||
:path="[':mime',':types', 'application/jrd+json']"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting
|
|
||||||
override-backend-description-label="application/ld+json"
|
|
||||||
hide-description
|
|
||||||
:path="[':mime',':types', 'application/ld+json']"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting
|
|
||||||
override-backend-description-label="application/xml"
|
|
||||||
hide-description
|
|
||||||
:path="[':mime',':types', 'application/xml']"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<ListSetting
|
|
||||||
override-backend-description-label="application/xrd+xml"
|
|
||||||
hide-description
|
|
||||||
:path="[':mime',':types', 'application/xrd+xml']"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h3>{{ $t('admin_dash.other.streamer') }}</h3>
|
|
||||||
<ul class="setting-list">
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.:streamer.:workers" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting path=":pleroma.:streamer.:overflow_workers" />
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h3>{{ $t('admin_dash.other.privileges') }}</h3>
|
<h3>{{ $t('admin_dash.other.privileges') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.posts')">
|
<div :label="$t('admin_dash.tabs.posts')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.posts.global') }}</h3>
|
<h3>{{ $t('admin_dash.posts.global') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -12,20 +12,6 @@
|
||||||
<li>
|
<li>
|
||||||
<ListSetting path=":pleroma.:instance.:allowed_post_formats" />
|
<ListSetting path=":pleroma.:instance.:allowed_post_formats" />
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<h4>{{ $t('admin_dash.posts.scheduled_activites') }}</h4>
|
|
||||||
<ul class="setting-list">
|
|
||||||
<li>
|
|
||||||
<BooleanSetting :path="[':pleroma', 'Pleroma.ScheduledActivity', ':enabled']" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting :path="[':pleroma', 'Pleroma.ScheduledActivity', ':daily_user_limit']" />
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<IntegerSetting :path="[':pleroma', 'Pleroma.ScheduledActivity', ':total_user_limit']" />
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<h3>{{ $t('admin_dash.posts.remote') }}</h3>
|
<h3>{{ $t('admin_dash.posts.remote') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.instance')">
|
<div :label="$t('admin_dash.tabs.instance')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.rate_limit.account_confirmation_resend') }}</h3>
|
<h3>{{ $t('admin_dash.rate_limit.account_confirmation_resend') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.instance')">
|
<div :label="$t('admin_dash.tabs.instance')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.instance.registrations') }}</h3>
|
<h3>{{ $t('admin_dash.instance.registrations') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -168,12 +168,6 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h3>{{ $t('admin_dash.registrations.restrictions') }}</h3>
|
<h3>{{ $t('admin_dash.registrations.restrictions') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
|
||||||
<ListSetting
|
|
||||||
ignore-suggestions
|
|
||||||
:path="[':pleroma', 'Pleroma.User', ':restricted_nicknames']"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<ListSetting
|
<ListSetting
|
||||||
ignore-suggestions
|
ignore-suggestions
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.uploads')">
|
<div :label="$t('admin_dash.tabs.uploads')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.uploads.upload') }}</h3>
|
<h3>{{ $t('admin_dash.uploads.upload') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<span
|
<span
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="AttachmentSetting"
|
class="AttachmentSetting setting-item"
|
||||||
:class="{ '-compact': compact }"
|
:class="{ '-compact': compact }"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
|
class="setting-label"
|
||||||
:for="path"
|
:for="path"
|
||||||
:class="{ 'faint': shouldBeDisabled }"
|
:class="{ 'faint': shouldBeDisabled }"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<label
|
<label
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="BooleanSetting"
|
class="BooleanSetting setting-item"
|
||||||
>
|
>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
|
class="setting-control setting-label"
|
||||||
:model-value="visibleState"
|
:model-value="visibleState"
|
||||||
:disabled="shouldBeDisabled"
|
:disabled="shouldBeDisabled"
|
||||||
:indeterminate="isIndeterminate"
|
:indeterminate="isIndeterminate"
|
||||||
|
|
@ -13,6 +14,12 @@
|
||||||
class="label"
|
class="label"
|
||||||
:class="{ 'faint': shouldBeDisabled }"
|
:class="{ 'faint': shouldBeDisabled }"
|
||||||
>
|
>
|
||||||
|
<ModifiedIndicator
|
||||||
|
:changed="isChanged"
|
||||||
|
:onclick="reset"
|
||||||
|
/>
|
||||||
|
<ProfileSettingIndicator :is-profile="isProfileSetting" />
|
||||||
|
{{ ' ' }}
|
||||||
<template v-if="backendDescriptionLabel">
|
<template v-if="backendDescriptionLabel">
|
||||||
{{ backendDescriptionLabel }}
|
{{ backendDescriptionLabel }}
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -22,21 +29,44 @@
|
||||||
<slot v-else />
|
<slot v-else />
|
||||||
</span>
|
</span>
|
||||||
</Checkbox>
|
</Checkbox>
|
||||||
{{ ' ' }}
|
|
||||||
<ModifiedIndicator
|
|
||||||
:changed="isChanged"
|
|
||||||
:onclick="reset"
|
|
||||||
/>
|
|
||||||
<ProfileSettingIndicator :is-profile="isProfileSetting" />
|
|
||||||
<DraftButtons />
|
|
||||||
<p
|
<p
|
||||||
v-if="backendDescriptionDescription"
|
v-if="backendDescriptionDescription || showDescription"
|
||||||
class="setting-description"
|
class="setting-description"
|
||||||
:class="{ 'faint': shouldBeDisabled }"
|
:class="{ 'faint': shouldBeDisabled }"
|
||||||
>
|
>
|
||||||
|
<slot name="description">
|
||||||
{{ backendDescriptionDescription + ' ' }}
|
{{ backendDescriptionDescription + ' ' }}
|
||||||
|
</slot>
|
||||||
</p>
|
</p>
|
||||||
|
<DraftButtons />
|
||||||
</label>
|
</label>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./boolean_setting.js"></script>
|
<script src="./boolean_setting.js"></script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.BooleanSetting {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: subgrid;
|
||||||
|
|
||||||
|
.checkbox {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: subgrid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
grid-area: label;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.-mobile & {
|
||||||
|
.label {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-indicator {
|
||||||
|
grid-area: control;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,25 @@
|
||||||
<template>
|
<template>
|
||||||
<label
|
<label
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="ChoiceSetting"
|
class="ChoiceSetting setting-item"
|
||||||
:class="{ 'faint': shouldBeDisabled }"
|
:class="{ 'faint': shouldBeDisabled }"
|
||||||
>
|
>
|
||||||
|
<span class="setting-label">
|
||||||
|
<ModifiedIndicator
|
||||||
|
:changed="isChanged"
|
||||||
|
:onclick="reset"
|
||||||
|
/>
|
||||||
|
<ProfileSettingIndicator :is-profile="isProfileSetting" />
|
||||||
|
{{ ' ' }}
|
||||||
<template v-if="backendDescriptionLabel">
|
<template v-if="backendDescriptionLabel">
|
||||||
{{ backendDescriptionLabel }}
|
{{ backendDescriptionLabel }}
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<slot />
|
<slot />
|
||||||
</template>
|
</template>
|
||||||
{{ ' ' }}
|
</span>
|
||||||
<Select
|
<Select
|
||||||
|
class="setting-control"
|
||||||
:model-value="realDraftMode ? draft : state"
|
:model-value="realDraftMode ? draft : state"
|
||||||
:disabled="shouldBeDisabled"
|
:disabled="shouldBeDisabled"
|
||||||
@update:model-value="update"
|
@update:model-value="update"
|
||||||
|
|
@ -25,11 +33,6 @@
|
||||||
{{ option.value === defaultState ? $t('settings.instance_default_simple') : '' }}
|
{{ option.value === defaultState ? $t('settings.instance_default_simple') : '' }}
|
||||||
</option>
|
</option>
|
||||||
</Select>
|
</Select>
|
||||||
<ModifiedIndicator
|
|
||||||
:changed="isChanged"
|
|
||||||
:onclick="reset"
|
|
||||||
/>
|
|
||||||
<ProfileSettingIndicator :is-profile="isProfileSetting" />
|
|
||||||
<DraftButtons />
|
<DraftButtons />
|
||||||
<p
|
<p
|
||||||
v-if="backendDescriptionDescription"
|
v-if="backendDescriptionDescription"
|
||||||
|
|
@ -41,3 +44,16 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./choice_setting.js"></script>
|
<script src="./choice_setting.js"></script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.ChoiceSetting.setting-item {
|
||||||
|
.-mobile & {
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
.setting-label {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 0.5em
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<label
|
<label
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="ColorSetting"
|
class="ColorSetting setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
v-if="!hideLabel"
|
v-if="!hideLabel"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<span
|
<span
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="GroupSetting"
|
class="GroupSetting setting-item"
|
||||||
>
|
>
|
||||||
<ModifiedIndicator
|
<ModifiedIndicator
|
||||||
:changed="isChanged"
|
:changed="isChanged"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="ListSetting"
|
class="ListSetting setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
class="setting-label"
|
class="setting-label"
|
||||||
|
|
@ -83,8 +83,10 @@
|
||||||
<script src="./list_setting.js"></script>
|
<script src="./list_setting.js"></script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.ListSetting {
|
.ListSetting {
|
||||||
.btn-group {
|
.setting-list {
|
||||||
display: flex
|
.checkbox {
|
||||||
|
padding: 0.5em 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="MapSetting"
|
class="MapSetting setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
class="setting-label"
|
class="setting-label"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<span
|
<span
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="NumberSetting"
|
class="NumberSetting setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
v-if="!hideLabel"
|
v-if="!hideLabel"
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
{{ ' ' }}
|
{{ ' ' }}
|
||||||
<input
|
<input
|
||||||
:id="path"
|
:id="path"
|
||||||
class="input number-input"
|
class="input number-input setting-control"
|
||||||
type="number"
|
type="number"
|
||||||
:step="step || 1"
|
:step="step || 1"
|
||||||
:disabled="shouldBeDisabled"
|
:disabled="shouldBeDisabled"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<label
|
<label
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="ProxySetting"
|
class="ProxySetting setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
v-if="!hideLabel"
|
v-if="!hideLabel"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="PWAManifestIconsSetting"
|
class="PWAManifestIconsSetting setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
class="setting-label"
|
class="setting-label"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="RateSetting"
|
class="RateSetting setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
class="setting-label"
|
class="setting-label"
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,10 @@ export default {
|
||||||
type: [String, Array],
|
type: [String, Array],
|
||||||
required: false
|
required: false
|
||||||
},
|
},
|
||||||
|
showDescription: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
descriptionPathOverride: {
|
descriptionPathOverride: {
|
||||||
type: [String, Array],
|
type: [String, Array],
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -69,7 +73,7 @@ export default {
|
||||||
type: Boolean
|
type: Boolean
|
||||||
},
|
},
|
||||||
overrideBackendDescriptionLabel: {
|
overrideBackendDescriptionLabel: {
|
||||||
type: Boolean
|
type: [Boolean, String]
|
||||||
},
|
},
|
||||||
draftMode: {
|
draftMode: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
|
@ -157,6 +161,8 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
backendDescriptionDescription () {
|
backendDescriptionDescription () {
|
||||||
|
console.log('LOL', this.description)
|
||||||
|
if (this.description) return this.description
|
||||||
if (this.realSource !== 'admin') return ''
|
if (this.realSource !== 'admin') return ''
|
||||||
if (this.hideDescription) return null
|
if (this.hideDescription) return null
|
||||||
if (!this.backendDescription || this.overrideBackendDescription) {
|
if (!this.backendDescription || this.overrideBackendDescription) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<label
|
<span
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="StringSetting"
|
class="StringSetting setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
v-if="!hideLabel"
|
v-if="!hideLabel"
|
||||||
|
|
@ -9,6 +9,12 @@
|
||||||
class="setting-label"
|
class="setting-label"
|
||||||
:class="{ 'faint': shouldBeDisabled }"
|
:class="{ 'faint': shouldBeDisabled }"
|
||||||
>
|
>
|
||||||
|
<ModifiedIndicator
|
||||||
|
:changed="isChanged"
|
||||||
|
:onclick="reset"
|
||||||
|
/>
|
||||||
|
<ProfileSettingIndicator :is-profile="isProfileSetting" />
|
||||||
|
{{ ' ' }}
|
||||||
<template v-if="backendDescriptionLabel">
|
<template v-if="backendDescriptionLabel">
|
||||||
{{ backendDescriptionLabel + ' ' }}
|
{{ backendDescriptionLabel + ' ' }}
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -17,10 +23,9 @@
|
||||||
</template>
|
</template>
|
||||||
<slot v-else />
|
<slot v-else />
|
||||||
</label>
|
</label>
|
||||||
{{ ' ' }}
|
|
||||||
<input
|
<input
|
||||||
:id="path"
|
:id="path"
|
||||||
class="input string-input"
|
class="setting-control input string-input"
|
||||||
:class="{ disabled: shouldBeDisabled }"
|
:class="{ disabled: shouldBeDisabled }"
|
||||||
:disabled="shouldBeDisabled"
|
:disabled="shouldBeDisabled"
|
||||||
:placeholder="backendDescriptionSuggestions"
|
:placeholder="backendDescriptionSuggestions"
|
||||||
|
|
@ -28,11 +33,6 @@
|
||||||
@change="update"
|
@change="update"
|
||||||
>
|
>
|
||||||
{{ ' ' }}
|
{{ ' ' }}
|
||||||
<ModifiedIndicator
|
|
||||||
:changed="isChanged"
|
|
||||||
:onclick="reset"
|
|
||||||
/>
|
|
||||||
<ProfileSettingIndicator :is-profile="isProfileSetting" />
|
|
||||||
<DraftButtons v-if="!hideDraftButtons" />
|
<DraftButtons v-if="!hideDraftButtons" />
|
||||||
<p
|
<p
|
||||||
v-if="backendDescriptionDescription"
|
v-if="backendDescriptionDescription"
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
>
|
>
|
||||||
{{ backendDescriptionDescription + ' ' }}
|
{{ backendDescriptionDescription + ' ' }}
|
||||||
</p>
|
</p>
|
||||||
</label>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./string_setting.js"></script>
|
<script src="./string_setting.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<label
|
<span
|
||||||
|
class="setting-item"
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="TupleSetting"
|
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
v-if="!hideLabel"
|
v-if="!hideLabel"
|
||||||
|
|
@ -9,6 +9,12 @@
|
||||||
class="setting-label"
|
class="setting-label"
|
||||||
:class="{ 'faint': shouldBeDisabled }"
|
:class="{ 'faint': shouldBeDisabled }"
|
||||||
>
|
>
|
||||||
|
<ModifiedIndicator
|
||||||
|
:changed="isChanged"
|
||||||
|
:onclick="reset"
|
||||||
|
/>
|
||||||
|
<ProfileSettingIndicator :is-profile="isProfileSetting" />
|
||||||
|
{{ ' ' }}
|
||||||
<template v-if="backendDescriptionLabel">
|
<template v-if="backendDescriptionLabel">
|
||||||
{{ backendDescriptionLabel + ' ' }}
|
{{ backendDescriptionLabel + ' ' }}
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -17,7 +23,7 @@
|
||||||
</template>
|
</template>
|
||||||
<slot v-else />
|
<slot v-else />
|
||||||
</label>
|
</label>
|
||||||
{{ ' ' }}
|
<span class="setting-control">
|
||||||
<input
|
<input
|
||||||
:id="path"
|
:id="path"
|
||||||
class="input string-input"
|
class="input string-input"
|
||||||
|
|
@ -37,22 +43,7 @@
|
||||||
:value="visibleState?.tuple?.[1]"
|
:value="visibleState?.tuple?.[1]"
|
||||||
@change="e => update({ e, side: 1 })"
|
@change="e => update({ e, side: 1 })"
|
||||||
>
|
>
|
||||||
{{ ' ' }}
|
</span>
|
||||||
<input
|
|
||||||
:id="path"
|
|
||||||
class="input string-input"
|
|
||||||
:class="{ disabled: shouldBeDisabled }"
|
|
||||||
:disabled="shouldBeDisabled"
|
|
||||||
:placeholder="backendDescriptionSuggestions?.[0]?.[1]"
|
|
||||||
:value="visibleState?.tuple?.[2]"
|
|
||||||
@change="e => update({ e, side: 2 })"
|
|
||||||
>
|
|
||||||
{{ ' ' }}
|
|
||||||
<ModifiedIndicator
|
|
||||||
:changed="isChanged"
|
|
||||||
:onclick="reset"
|
|
||||||
/>
|
|
||||||
<ProfileSettingIndicator :is-profile="isProfileSetting" />
|
|
||||||
<DraftButtons v-if="!hideDraftButtons" />
|
<DraftButtons v-if="!hideDraftButtons" />
|
||||||
<p
|
<p
|
||||||
v-if="backendDescriptionDescription"
|
v-if="backendDescriptionDescription"
|
||||||
|
|
@ -61,7 +52,7 @@
|
||||||
>
|
>
|
||||||
{{ backendDescriptionDescription + ' ' }}
|
{{ backendDescriptionDescription + ' ' }}
|
||||||
</p>
|
</p>
|
||||||
</label>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./tuple_setting.js"></script>
|
<script src="./tuple_setting.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,20 @@
|
||||||
<template>
|
<template>
|
||||||
<span
|
<span
|
||||||
v-if="matchesExpertLevel"
|
v-if="matchesExpertLevel"
|
||||||
class="UnitSetting"
|
class="UnitSetting setting-item"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
:for="path"
|
:for="path"
|
||||||
class="size-label"
|
class="setting-label size-label"
|
||||||
>
|
>
|
||||||
|
<ModifiedIndicator
|
||||||
|
:changed="isChanged"
|
||||||
|
:onclick="reset"
|
||||||
|
/>
|
||||||
|
{{ ' ' }}
|
||||||
<slot />
|
<slot />
|
||||||
</label>
|
</label>
|
||||||
{{ ' ' }}
|
<span class="no-break setting-control">
|
||||||
<span class="no-break">
|
|
||||||
<input
|
<input
|
||||||
:id="path"
|
:id="path"
|
||||||
class="input number-input"
|
class="input number-input"
|
||||||
|
|
@ -38,10 +42,6 @@
|
||||||
</Select>
|
</Select>
|
||||||
</span>
|
</span>
|
||||||
{{ ' ' }}
|
{{ ' ' }}
|
||||||
<ModifiedIndicator
|
|
||||||
:changed="isChanged"
|
|
||||||
:onclick="reset"
|
|
||||||
/>
|
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -50,7 +50,7 @@
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.UnitSetting {
|
.UnitSetting {
|
||||||
.no-break {
|
.no-break {
|
||||||
display: inline-block;
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.number-input {
|
.number-input {
|
||||||
|
|
|
||||||
|
|
@ -161,9 +161,11 @@ export default {
|
||||||
const contentClasses = ['tab-content']
|
const contentClasses = ['tab-content']
|
||||||
if (props['full-width'] || props['full-width'] === '') {
|
if (props['full-width'] || props['full-width'] === '') {
|
||||||
contentClasses.push('-full-width')
|
contentClasses.push('-full-width')
|
||||||
|
wrapperClasses.push('-full-width')
|
||||||
}
|
}
|
||||||
if (props['full-height'] || props['full-width'] === '') {
|
if (props['full-height'] || props['full-width'] === '') {
|
||||||
contentClasses.push('-full-height')
|
contentClasses.push('-full-height')
|
||||||
|
wrapperClasses.push('-full-height')
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<div class={wrapperClasses} >
|
<div class={wrapperClasses} >
|
||||||
|
|
|
||||||
|
|
@ -26,24 +26,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
> .contents {
|
> .contents {
|
||||||
flex: 1 0 35em;
|
|
||||||
|
|
||||||
.tab-content {
|
|
||||||
align-self: center;
|
|
||||||
|
|
||||||
&:not(.-full-width) {
|
|
||||||
max-width: 40em;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.-full-width {
|
|
||||||
align-self: stretch;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.-full-height {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-content-label {
|
.tab-content-label {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
@ -60,8 +42,24 @@
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
display: flex;
|
display: grid;
|
||||||
|
grid-template-columns: minmax(1em, 1fr) minmax(min-content, 45em) minmax(1em, 1fr);
|
||||||
|
grid-template-areas: ". content .";
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
|
.tab-content {
|
||||||
|
grid-area: content;
|
||||||
|
|
||||||
|
&.-full-width {
|
||||||
|
grid-column: 1 / 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.-full-height {
|
||||||
|
> * {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-content-wrapper {
|
.tab-content-wrapper {
|
||||||
|
|
@ -109,6 +107,10 @@
|
||||||
flex-shrink: 1;
|
flex-shrink: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tab-slot-wrapper {
|
||||||
|
grid-template-columns: 0 minmax(min-content, 45em) 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@supports (container-type: inline-size) {
|
@supports (container-type: inline-size) {
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
|
|
@ -13,6 +14,7 @@
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
|
margin-right: 1em;
|
||||||
border-bottom: 1px solid var(--border);
|
border-bottom: 1px solid var(--border);
|
||||||
padding-bottom: 0.25em;
|
padding-bottom: 0.25em;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
@ -22,27 +24,85 @@
|
||||||
h4 {
|
h4 {
|
||||||
font-size: 1.1rem;
|
font-size: 1.1rem;
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
|
margin-left: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
h5 {
|
h5 {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
margin-bottom: 0.5em;
|
margin-right: 1em;
|
||||||
margin-top: 0;
|
margin-bottom: 0.25em;
|
||||||
|
margin-top: 0.75em;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.setting-item > p {
|
.suboptions {
|
||||||
margin-left: 1em;
|
margin-left: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sidenote {
|
||||||
|
margin-left: 5em;
|
||||||
|
padding: 0.25em 1em;
|
||||||
|
margin-top: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-description {
|
||||||
|
margin-top: 0.2em;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-item {
|
||||||
|
display: grid;
|
||||||
|
grid-template-areas:
|
||||||
|
"label control"
|
||||||
|
". desc"
|
||||||
|
". draft";
|
||||||
|
grid-template-columns: 4fr 5fr;
|
||||||
|
column-gap: 0.5em;
|
||||||
|
align-items: baseline;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
|
||||||
|
.setting-label {
|
||||||
|
grid-area: label;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ModifiedIndicator,
|
||||||
|
.ProfileSettingIndicator {
|
||||||
|
grid-area: indicator;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-control {
|
||||||
|
grid-area: control;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-control.setting-label {
|
||||||
|
grid-column: 1 / 3;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-description {
|
||||||
|
grid-area: desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.DraftButtons {
|
||||||
|
grid-area: draft;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical-tab-switcher {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.setting-list,
|
.setting-list,
|
||||||
.option-list {
|
.option-list {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
padding-left: 2em;
|
padding-left: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
.btn:not(.dropdown-button) {
|
.btn:not(.dropdown-button) {
|
||||||
|
|
@ -55,24 +115,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
li {
|
|
||||||
display: block;
|
|
||||||
margin: 0.75em 0;
|
|
||||||
|
|
||||||
> label {
|
|
||||||
display: block;
|
|
||||||
margin: 0.75em 0;
|
|
||||||
padding: 0.5em 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.suboptions {
|
|
||||||
margin-top: 0.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.two-column {
|
&.two-column {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
|
margin-left: 2em;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
|
||||||
|
.setting-item {
|
||||||
|
grid-template-columns: 3fr 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
> li {
|
> li {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
@ -81,12 +134,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.setting-description {
|
|
||||||
margin-top: 0.2em;
|
|
||||||
margin-bottom: 0;
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.settings-modal-panel {
|
.settings-modal-panel {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
transition: transform;
|
transition: transform;
|
||||||
|
|
@ -135,20 +182,29 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.setting-item {
|
||||||
|
grid-template-columns: 1fr min-content;
|
||||||
|
column-gap: 0.5em;
|
||||||
|
padding: 1em 1em;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.setting-label {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li:not(:first-child) {
|
||||||
|
.setting-item {
|
||||||
|
border-top: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.setting-list:not(.suboptions),
|
.setting-list:not(.suboptions),
|
||||||
.option-list {
|
.option-list {
|
||||||
padding-left: 0.25em;
|
|
||||||
|
|
||||||
|
|
||||||
/* stylelint-disable no-descending-specificity */
|
|
||||||
// it makes no sense
|
|
||||||
> li {
|
|
||||||
margin: 1em 0;
|
|
||||||
line-height: 1.5em;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
/* stylelint-enable no-descending-specificity */
|
|
||||||
|
|
||||||
&.two-column {
|
&.two-column {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
.settings_tab-switcher {
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
.setting-item {
|
|
||||||
border-bottom: 2px solid var(--border);
|
|
||||||
margin: 1em 1em 1.4em;
|
|
||||||
padding-bottom: 1.4em;
|
|
||||||
|
|
||||||
> div,
|
|
||||||
> label {
|
|
||||||
display: block;
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.select-multiple {
|
|
||||||
margin-top: 0.5em;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.option-list {
|
|
||||||
margin: 0;
|
|
||||||
margin-top: 0.5em;
|
|
||||||
padding-left: 0.5em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
border-bottom: none;
|
|
||||||
padding-bottom: 0;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
height: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.unavailable,
|
|
||||||
.unavailable svg {
|
|
||||||
color: var(--cRed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<vertical-tab-switcher
|
<vertical-tab-switcher
|
||||||
v-if="adminDescriptionsLoaded && (noDb || adminDbLoaded)"
|
v-if="adminDescriptionsLoaded && (noDb || adminDbLoaded)"
|
||||||
ref="tabSwitcher"
|
ref="tabSwitcher"
|
||||||
class="settings_tab-switcher"
|
class="settings-admin-content settings_tab-switcher"
|
||||||
:side-tab-bar="true"
|
:side-tab-bar="true"
|
||||||
:scrollable-tabs="true"
|
:scrollable-tabs="true"
|
||||||
:render-only-focused="true"
|
:render-only-focused="true"
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
data-tab-name="nodb-notice"
|
data-tab-name="nodb-notice"
|
||||||
>
|
>
|
||||||
<div :label="$t('admin_dash.tabs.nodb')">
|
<div :label="$t('admin_dash.tabs.nodb')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h2>{{ $t('admin_dash.nodb.heading') }}</h2>
|
<h2>{{ $t('admin_dash.nodb.heading') }}</h2>
|
||||||
<i18n-t
|
<i18n-t
|
||||||
scope="global"
|
scope="global"
|
||||||
|
|
@ -185,4 +185,10 @@
|
||||||
|
|
||||||
<script src="./settings_modal_admin_content.js"></script>
|
<script src="./settings_modal_admin_content.js"></script>
|
||||||
|
|
||||||
<style src="./settings_modal_admin_content.scss" lang="scss"></style>
|
<style lang="scss">
|
||||||
|
.settings-admin-content {
|
||||||
|
.setting-item {
|
||||||
|
grid-template-columns: 1fr 3fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
.settings_tab-switcher {
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
[full-height="true"] {
|
|
||||||
height: 100%
|
|
||||||
}
|
|
||||||
|
|
||||||
.setting-item {
|
|
||||||
margin: 1em 1em 1.4em;
|
|
||||||
padding-bottom: 1.4em;
|
|
||||||
|
|
||||||
> div,
|
|
||||||
> label {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.select-multiple {
|
|
||||||
margin-top: 1em;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.option-list {
|
|
||||||
margin: 0;
|
|
||||||
margin-top: 0.5em;
|
|
||||||
padding-left: 0.5em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
border-bottom: none;
|
|
||||||
padding-bottom: 0;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
height: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.unavailable,
|
|
||||||
.unavailable svg {
|
|
||||||
color: var(--cRed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -49,7 +49,6 @@
|
||||||
<AppearanceTab />
|
<AppearanceTab />
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
:full-width="true"
|
|
||||||
:label="$t('settings.layout')"
|
:label="$t('settings.layout')"
|
||||||
icon="table-columns"
|
icon="table-columns"
|
||||||
data-tab-name="layout"
|
data-tab-name="layout"
|
||||||
|
|
@ -68,7 +67,6 @@
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
:label="$t('settings.filtering')"
|
:label="$t('settings.filtering')"
|
||||||
:full-width="true"
|
|
||||||
icon="filter"
|
icon="filter"
|
||||||
data-tab-name="filtering"
|
data-tab-name="filtering"
|
||||||
>
|
>
|
||||||
|
|
@ -139,5 +137,3 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./settings_modal_user_content.js"></script>
|
<script src="./settings_modal_user_content.js"></script>
|
||||||
|
|
||||||
<style src="./settings_modal_user_content.scss" lang="scss"></style>
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
.appearance-tab {
|
.appearance-tab {
|
||||||
|
margin: 1em;
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
border: none
|
border: none
|
||||||
}
|
}
|
||||||
|
|
@ -138,6 +140,7 @@
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.palettes {
|
.palettes {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
icon="table-columns"
|
icon="table-columns"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="setting-item"
|
class="setting-section"
|
||||||
:label="$t('settings.theme')"
|
:label="$t('settings.theme')"
|
||||||
icon="paintbrush"
|
icon="paintbrush"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="clutter-tab">
|
<div class="clutter-tab">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.interface') }}</h3>
|
<h3>{{ $t('settings.interface') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,16 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('settings.posts')">
|
<div :label="$t('settings.posts')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.general') }}</h3>
|
<h3>{{ $t('settings.general') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
<label for="default-vis">
|
<label class="setting-item " for="default-vis">
|
||||||
|
<span class="setting-label">
|
||||||
|
<ProfileSettingIndicator :is-profile="true" />
|
||||||
{{ $t('settings.default_vis') }}
|
{{ $t('settings.default_vis') }}
|
||||||
{{ ' ' }}
|
</span>
|
||||||
<ScopeSelector
|
<ScopeSelector
|
||||||
class="scope-selector"
|
class="scope-selector setting-control"
|
||||||
:show-all="true"
|
:show-all="true"
|
||||||
:user-default="$store.state.profileConfig.defaultScope"
|
:user-default="$store.state.profileConfig.defaultScope"
|
||||||
:initial-scope="$store.state.profileConfig.defaultScope"
|
:initial-scope="$store.state.profileConfig.defaultScope"
|
||||||
|
|
@ -16,7 +18,6 @@
|
||||||
:unstyled="false"
|
:unstyled="false"
|
||||||
uns
|
uns
|
||||||
/>
|
/>
|
||||||
<ProfileSettingIndicator :is-profile="true" />
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
class="data-import-export-tab"
|
class="data-import-export-tab"
|
||||||
:label="$t('settings.data_import_export_tab')"
|
:label="$t('settings.data_import_export_tab')"
|
||||||
>
|
>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.import_export.title') }}</h3>
|
<h3>{{ $t('settings.import_export.title') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
:label="$t('settings.developer')"
|
:label="$t('settings.developer')"
|
||||||
class="developer-tab"
|
class="developer-tab"
|
||||||
>
|
>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.version.title') }}</h3>
|
<h3>{{ $t('settings.version.title') }}</h3>
|
||||||
<dl class="setting-list">
|
<dl class="setting-list">
|
||||||
<dt>{{ $t('settings.version.backend_version') }}</dt>
|
<dt>{{ $t('settings.version.backend_version') }}</dt>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="filtering-tab">
|
<div class="filtering-tab">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.filter.mute_filter') }}</h3>
|
<h3>{{ $t('settings.filter.mute_filter') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -14,7 +14,10 @@
|
||||||
</ChoiceSetting>
|
</ChoiceSetting>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
<span class="setting-item">
|
||||||
|
<span class="setting-label">
|
||||||
{{ $t('user_card.default_mute_expiration') }}
|
{{ $t('user_card.default_mute_expiration') }}
|
||||||
|
</span>
|
||||||
<Select
|
<Select
|
||||||
id="onMuteDefaultActionLv1"
|
id="onMuteDefaultActionLv1"
|
||||||
v-model="onMuteDefaultActionLv1"
|
v-model="onMuteDefaultActionLv1"
|
||||||
|
|
@ -27,6 +30,7 @@
|
||||||
{{ option.label }}
|
{{ option.label }}
|
||||||
</option>
|
</option>
|
||||||
</Select>
|
</Select>
|
||||||
|
</span>
|
||||||
<ul
|
<ul
|
||||||
v-if="onMuteDefaultActionLv1 === 'temporarily'"
|
v-if="onMuteDefaultActionLv1 === 'temporarily'"
|
||||||
class="setting-list suboptions"
|
class="setting-list suboptions"
|
||||||
|
|
@ -44,9 +48,13 @@
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="blockExpirationSupported">
|
<li v-if="blockExpirationSupported">
|
||||||
|
<span class="setting-item">
|
||||||
|
<span class="setting-label">
|
||||||
{{ $t('user_card.default_block_expiration') }}
|
{{ $t('user_card.default_block_expiration') }}
|
||||||
|
</span>
|
||||||
<Select
|
<Select
|
||||||
id="onBlockDefaultActionLv1"
|
id="onBlockDefaultActionLv1"
|
||||||
|
class="setting-control"
|
||||||
v-model="onBlockDefaultActionLv1"
|
v-model="onBlockDefaultActionLv1"
|
||||||
>
|
>
|
||||||
<option
|
<option
|
||||||
|
|
@ -57,6 +65,7 @@
|
||||||
{{ option.label }}
|
{{ option.label }}
|
||||||
</option>
|
</option>
|
||||||
</Select>
|
</Select>
|
||||||
|
</span>
|
||||||
<ul
|
<ul
|
||||||
v-if="onBlockDefaultActionLv1 === 'temporarily'"
|
v-if="onBlockDefaultActionLv1 === 'temporarily'"
|
||||||
class="setting-list suboptions"
|
class="setting-list suboptions"
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,25 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.format_and_language') }}</h3>
|
<h3>{{ $t('settings.format_and_language') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<h4>{{ $t('settings.interfaceLanguage') }}</h4>
|
||||||
<interface-language-switcher
|
<interface-language-switcher
|
||||||
v-model="language"
|
v-model="language"
|
||||||
|
class="lang-selector"
|
||||||
@update="val => language = val"
|
@update="val => language = val"
|
||||||
>
|
/>
|
||||||
{{ $t('settings.interfaceLanguage') }}
|
<h4>
|
||||||
</interface-language-switcher>
|
{{ $t('settings.email_language') }}
|
||||||
</li>
|
{{ ' ' }}
|
||||||
<li>
|
<ProfileSettingIndicator :is-profile="true" />
|
||||||
|
</h4>
|
||||||
<interface-language-switcher
|
<interface-language-switcher
|
||||||
v-model="emailLanguage"
|
v-model="emailLanguage"
|
||||||
|
class="lang-selector"
|
||||||
:profile="true"
|
:profile="true"
|
||||||
@update:model-value="updateProfile()"
|
@update:model-value="updateProfile()"
|
||||||
>
|
/>
|
||||||
{{ $t('settings.email_language') }}
|
|
||||||
</interface-language-switcher>
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting path="useAbsoluteTimeFormat">
|
<BooleanSetting path="useAbsoluteTimeFormat">
|
||||||
{{ $t('settings.absolute_time_format') }}
|
{{ $t('settings.absolute_time_format') }}
|
||||||
|
|
@ -47,8 +47,7 @@
|
||||||
>
|
>
|
||||||
{{ $t('settings.text_size') }}
|
{{ $t('settings.text_size') }}
|
||||||
</UnitSetting>
|
</UnitSetting>
|
||||||
<div>
|
<p class="sidenote">
|
||||||
<small>
|
|
||||||
<i18n-t
|
<i18n-t
|
||||||
scope="global"
|
scope="global"
|
||||||
keypath="settings.text_size_tip"
|
keypath="settings.text_size_tip"
|
||||||
|
|
@ -65,8 +64,7 @@
|
||||||
>
|
>
|
||||||
<code>14px</code>
|
<code>14px</code>
|
||||||
</i18n-t>
|
</i18n-t>
|
||||||
</small>
|
</p>
|
||||||
</div>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<FontControl
|
<FontControl
|
||||||
|
|
@ -144,7 +142,7 @@
|
||||||
class="setting-list"
|
class="setting-list"
|
||||||
>
|
>
|
||||||
<li class="select-multiple">
|
<li class="select-multiple">
|
||||||
<span class="label">{{ $t('settings.confirm_dialogs') }}</span>
|
<h4 class="label">{{ $t('settings.confirm_dialogs') }}</h4>
|
||||||
<ul class="option-list">
|
<ul class="option-list">
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting path="modalOnRepeat">
|
<BooleanSetting path="modalOnRepeat">
|
||||||
|
|
@ -156,9 +154,10 @@
|
||||||
{{ $t('settings.confirm_dialogs_unfollow') }}
|
{{ $t('settings.confirm_dialogs_unfollow') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li
|
||||||
<BooleanSetting
|
|
||||||
v-if="!blockExpirationSupported"
|
v-if="!blockExpirationSupported"
|
||||||
|
>
|
||||||
|
<BooleanSetting
|
||||||
path="modalOnBlock"
|
path="modalOnBlock"
|
||||||
>
|
>
|
||||||
{{ $t('settings.confirm_dialogs_block') }}
|
{{ $t('settings.confirm_dialogs_block') }}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('settings.layout')">
|
<div :label="$t('settings.layout')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.general') }}</h3>
|
<h3>{{ $t('settings.general') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('settings.notifications')">
|
<div :label="$t('settings.notifications')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.notification_setting_annoyance') }}</h3>
|
<h3>{{ $t('settings.notification_setting_annoyance') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -12,11 +12,9 @@
|
||||||
<BooleanSetting path="ignoreInactionableSeen">
|
<BooleanSetting path="ignoreInactionableSeen">
|
||||||
{{ $t('settings.notification_setting_ignore_inactionable_seen') }}
|
{{ $t('settings.notification_setting_ignore_inactionable_seen') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
<div>
|
<p class="sidenote">
|
||||||
<small>
|
|
||||||
{{ $t('settings.notification_setting_ignore_inactionable_seen_tip') }}
|
{{ $t('settings.notification_setting_ignore_inactionable_seen_tip') }}
|
||||||
</small>
|
</p>
|
||||||
</div>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting
|
<BooleanSetting
|
||||||
|
|
@ -28,7 +26,7 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.notification_setting_filters') }}</h3>
|
<h3>{{ $t('settings.notification_setting_filters') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -41,7 +39,10 @@
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<h4> {{ $t('settings.notification_visibility') }}</h4>
|
<h4> {{ $t('settings.notification_visibility') }}</h4>
|
||||||
<p v-if="expertLevel > 0">
|
<p
|
||||||
|
class="sidenote"
|
||||||
|
v-if="expertLevel > 0"
|
||||||
|
>
|
||||||
{{ $t('settings.notification_setting_filters_chrome_push') }}
|
{{ $t('settings.notification_setting_filters_chrome_push') }}
|
||||||
</p>
|
</p>
|
||||||
<ul class="setting-list two-column">
|
<ul class="setting-list two-column">
|
||||||
|
|
@ -241,7 +242,7 @@
|
||||||
|
|
||||||
<div
|
<div
|
||||||
v-if="expertLevel > 0"
|
v-if="expertLevel > 0"
|
||||||
class="setting-item"
|
class="setting-section"
|
||||||
>
|
>
|
||||||
<h3>{{ $t('settings.notification_setting_privacy') }}</h3>
|
<h3>{{ $t('settings.notification_setting_privacy') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
|
|
@ -260,11 +261,12 @@
|
||||||
>
|
>
|
||||||
{{ $t('settings.enable_web_push_always_show') }}
|
{{ $t('settings.enable_web_push_always_show') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
<div :class="{ faint: !mergedConfig.webPushNotifications }">
|
<p
|
||||||
<small>
|
:class="{ faint: !mergedConfig.webPushNotifications }"
|
||||||
|
class="sidenote"
|
||||||
|
>
|
||||||
{{ $t('settings.enable_web_push_always_show_tip') }}
|
{{ $t('settings.enable_web_push_always_show_tip') }}
|
||||||
</small>
|
</p>
|
||||||
</div>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -279,10 +281,12 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-item">
|
<p class="sidenote">
|
||||||
<p>{{ $t('settings.notification_mutes') }}</p>
|
<ul>
|
||||||
<p>{{ $t('settings.notification_blocks') }}</p>
|
<li>{{ $t('settings.notification_mutes') }}</li>
|
||||||
</div>
|
<li>{{ $t('settings.notification_blocks') }}</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
.old-theme-tab {
|
.old-theme-tab {
|
||||||
min-width: var(--themeEditorMinWidth, fit-content);
|
min-width: var(--themeEditorMinWidth, fit-content);
|
||||||
|
margin: 1em;
|
||||||
|
|
||||||
.deprecation-warning {
|
.deprecation-warning {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="posts-tab">
|
<div class="posts-tab">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.posts_appearance') }}</h3>
|
<h3>{{ $t('settings.posts_appearance') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
.profile-tab {
|
.profile-tab {
|
||||||
// overriding global for better look
|
// overriding global for better look
|
||||||
.setting-item.profile-edit {
|
.setting-section.profile-edit {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
|
|
@ -11,5 +11,28 @@
|
||||||
padding: 1.2em;
|
padding: 1.2em;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-item {
|
||||||
|
.custom-boolean-setting {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: subgrid;
|
||||||
|
|
||||||
|
.label {
|
||||||
|
grid-area: label;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.-mobile & {
|
||||||
|
.label {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-indicator {
|
||||||
|
grid-area: control;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,25 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="profile-tab">
|
<div class="profile-tab">
|
||||||
<div class="setting-item profile-edit">
|
<div class="setting-section profile-edit">
|
||||||
<UserCard
|
<UserCard
|
||||||
:user-id="user.id"
|
:user-id="user.id"
|
||||||
:editable="true"
|
:editable="true"
|
||||||
:switcher="false"
|
:switcher="false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.account_privacy') }}</h3>
|
<h3>{{ $t('settings.account_privacy') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
<Checkbox v-model="locked">
|
<div class="setting-item">
|
||||||
|
<Checkbox
|
||||||
|
class="setting-label setting-control custom-boolean-setting"
|
||||||
|
v-model="locked"
|
||||||
|
>
|
||||||
|
<ProfileSettingIndicator :is-profile="true" />
|
||||||
{{ $t('settings.lock_account_description') }}
|
{{ $t('settings.lock_account_description') }}
|
||||||
</Checkbox>
|
</Checkbox>
|
||||||
<ProfileSettingIndicator :is-profile="true" />
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting
|
<BooleanSetting
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
v-if="readyInit && settings.available"
|
v-if="readyInit && settings.available"
|
||||||
class="setting-item mfa-settings"
|
class="setting-section mfa-settings"
|
||||||
>
|
>
|
||||||
<div class="mfa-heading">
|
<div class="mfa-heading">
|
||||||
<h2>{{ $t('settings.mfa.title') }}</h2>
|
<h2>{{ $t('settings.mfa.title') }}</h2>
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<div>
|
<div>
|
||||||
<div
|
<div
|
||||||
v-if="!setupInProgress"
|
v-if="!setupInProgress"
|
||||||
class="setting-item"
|
class="setting-section"
|
||||||
>
|
>
|
||||||
<!-- Enabled methods -->
|
<!-- Enabled methods -->
|
||||||
<h3>{{ $t('settings.mfa.authentication_methods') }}</h3>
|
<h3>{{ $t('settings.mfa.authentication_methods') }}</h3>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('settings.security_tab')">
|
<div :label="$t('settings.security_tab')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.change_email') }}</h3>
|
<h3>{{ $t('settings.change_email') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.change_password') }}</h3>
|
<h3>{{ $t('settings.change_password') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -90,7 +90,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.account_alias') }}</h3>
|
<h3>{{ $t('settings.account_alias') }}</h3>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -160,7 +160,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.oauth_tokens') }}</h3>
|
<h3>{{ $t('settings.oauth_tokens') }}</h3>
|
||||||
<table class="oauth-tokens">
|
<table class="oauth-tokens">
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -191,7 +191,7 @@
|
||||||
</div>
|
</div>
|
||||||
<mfa />
|
<mfa />
|
||||||
|
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.move_account') }}</h3>
|
<h3>{{ $t('settings.move_account') }}</h3>
|
||||||
<p>{{ $t('settings.move_account_notes') }}</p>
|
<p>{{ $t('settings.move_account_notes') }}</p>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -234,7 +234,7 @@
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('settings.delete_account') }}</h3>
|
<h3>{{ $t('settings.delete_account') }}</h3>
|
||||||
<p v-if="!deletingAccount">
|
<p v-if="!deletingAccount">
|
||||||
{{ $t('settings.delete_account_description') }}
|
{{ $t('settings.delete_account_description') }}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
.StyleTab {
|
.StyleTab {
|
||||||
min-width: var(--themeEditorMinWidth, fit-content);
|
min-width: var(--themeEditorMinWidth, fit-content);
|
||||||
|
margin: 1em;
|
||||||
|
|
||||||
.style-control {
|
.style-control {
|
||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
|
|
@ -45,7 +46,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.setting-item.heading {
|
.setting-section.heading {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -84,7 +85,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.setting-item {
|
.setting-section {
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="StyleTab">
|
<div class="StyleTab">
|
||||||
<div class="setting-item heading">
|
<div class="setting-section heading">
|
||||||
<div class="meta-preview">
|
<div class="meta-preview">
|
||||||
<Preview id="edited-style-preview" />
|
<Preview id="edited-style-preview" />
|
||||||
<teleport
|
<teleport
|
||||||
|
|
@ -82,7 +82,7 @@
|
||||||
<tab-switcher>
|
<tab-switcher>
|
||||||
<div
|
<div
|
||||||
key="component"
|
key="component"
|
||||||
class="setting-item component-editor"
|
class="setting-section component-editor"
|
||||||
:label="$t('settings.style.themes3.editor.component_tab')"
|
:label="$t('settings.style.themes3.editor.component_tab')"
|
||||||
:full-width="true"
|
:full-width="true"
|
||||||
>
|
>
|
||||||
|
|
@ -331,7 +331,7 @@
|
||||||
<div
|
<div
|
||||||
key="palette"
|
key="palette"
|
||||||
:label="$t('settings.style.themes3.editor.palette_tab')"
|
:label="$t('settings.style.themes3.editor.palette_tab')"
|
||||||
class="setting-item list-editor palette-editor"
|
class="setting-section list-editor palette-editor"
|
||||||
:full-width="true"
|
:full-width="true"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<script src="./virtual_directives_tab.js"></script>
|
<script src="./virtual_directives_tab.js"></script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="setting-item list-editor variables-editor">
|
<div class="setting-section list-editor variables-editor">
|
||||||
<label
|
<label
|
||||||
class="list-select-label"
|
class="list-select-label"
|
||||||
for="variables-selector"
|
for="variables-selector"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :label="$t('admin_dash.tabs.uploads')">
|
<div :label="$t('admin_dash.tabs.uploads')">
|
||||||
<div class="setting-item">
|
<div class="setting-section">
|
||||||
<h3>{{ $t('admin_dash.uploads.general') }}</h3>
|
<h3>{{ $t('admin_dash.uploads.general') }}</h3>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -1179,10 +1179,6 @@
|
||||||
"reports": "Reports",
|
"reports": "Reports",
|
||||||
"feed": "RSS Feed",
|
"feed": "RSS Feed",
|
||||||
"feed_title": "Article Title",
|
"feed_title": "Article Title",
|
||||||
"mime": "MIME Types",
|
|
||||||
"remote_ip": "Reverse Proxy / Remote IP",
|
|
||||||
"remote_ip_description": "This should be disabled only if your instance is NOT behind a reverse proxy",
|
|
||||||
"streamer": "Notifications Streamer",
|
|
||||||
"privileges": "Privileges"
|
"privileges": "Privileges"
|
||||||
},
|
},
|
||||||
"monitoring": {
|
"monitoring": {
|
||||||
|
|
@ -1250,9 +1246,6 @@
|
||||||
"outbound": "Outgoing connections",
|
"outbound": "Outgoing connections",
|
||||||
"incoming": "Incoming connections",
|
"incoming": "Incoming connections",
|
||||||
"security": "HTTP Security",
|
"security": "HTTP Security",
|
||||||
"cors": "Cross-origin Resource Sharing (CORS)",
|
|
||||||
"web_cache_ttl": "Web Cache TTL",
|
|
||||||
"web_cache_ttl_description": "Amount of milliseconds until web response cache is cleared. Use `nil` to disable expiration entirely.",
|
|
||||||
"web_push": "Web Push",
|
"web_push": "Web Push",
|
||||||
"web_push_description": "Web Push VAPID settings. You can use the mix task web_push.gen.keypair to generate it."
|
"web_push_description": "Web Push VAPID settings. You can use the mix task web_push.gen.keypair to generate it."
|
||||||
},
|
},
|
||||||
|
|
@ -1402,18 +1395,6 @@
|
||||||
},
|
},
|
||||||
"temp_overrides": {
|
"temp_overrides": {
|
||||||
":pleroma": {
|
":pleroma": {
|
||||||
"Oban": {
|
|
||||||
":queues": {
|
|
||||||
":scheduled_activites": {
|
|
||||||
"label": "Scheduled activities",
|
|
||||||
"description": "Scheduled activites queue"
|
|
||||||
},
|
|
||||||
":slow": {
|
|
||||||
"label": "Slow",
|
|
||||||
"description": "idk"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
":connections_pool": {
|
":connections_pool": {
|
||||||
":max_idle_time": {
|
":max_idle_time": {
|
||||||
"label": "Maximum idle time",
|
"label": "Maximum idle time",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue