mirror of
https://git.joinsharkey.org/Sharkey/Sharkey.git
synced 2024-11-27 07:53:08 +02:00
refactor
This commit is contained in:
parent
49a0b6c48b
commit
58bfb4dca4
83 changed files with 353 additions and 353 deletions
|
@ -28,7 +28,7 @@
|
||||||
import { ref, shallowRef } from 'vue';
|
import { ref, shallowRef } from 'vue';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import MkWindow from '@/components/MkWindow.vue';
|
import MkWindow from '@/components/MkWindow.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
|
@ -51,10 +51,10 @@
|
||||||
import { computed, defineAsyncComponent, onMounted, onUnmounted, Ref } from 'vue';
|
import { computed, defineAsyncComponent, onMounted, onUnmounted, Ref } from 'vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import { AsUiComponent } from '@/scripts/aiscript/ui';
|
import { AsUiComponent } from '@/scripts/aiscript/ui';
|
||||||
import FormFolder from '@/components/form/folder.vue';
|
import FormFolder from '@/components/form/folder.vue';
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,8 @@
|
||||||
import { onBeforeUnmount, onMounted, ref, shallowRef } from 'vue';
|
import { onBeforeUnmount, onMounted, ref, shallowRef } from 'vue';
|
||||||
import MkModal from '@/components/MkModal.vue';
|
import MkModal from '@/components/MkModal.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
||||||
type Input = {
|
type Input = {
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import MkModalWindow from '@/components/MkModalWindow.vue';
|
import MkModalWindow from '@/components/MkModalWindow.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkDriveFileThumbnail from '@/components/MkDriveFileThumbnail.vue';
|
import MkDriveFileThumbnail from '@/components/MkDriveFileThumbnail.vue';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import MkModalWindow from '@/components/MkModalWindow.vue';
|
import MkModalWindow from '@/components/MkModalWindow.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { instance } from '@/instance';
|
import { instance } from '@/instance';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
|
@ -17,34 +17,34 @@
|
||||||
<MkSpacer :margin-min="20" :margin-max="32">
|
<MkSpacer :margin-min="20" :margin-max="32">
|
||||||
<div class="xkpnjxcv _gaps_m">
|
<div class="xkpnjxcv _gaps_m">
|
||||||
<template v-for="item in Object.keys(form).filter(item => !form[item].hidden)">
|
<template v-for="item in Object.keys(form).filter(item => !form[item].hidden)">
|
||||||
<FormInput v-if="form[item].type === 'number'" v-model="values[item]" type="number" :step="form[item].step || 1">
|
<MkInput v-if="form[item].type === 'number'" v-model="values[item]" type="number" :step="form[item].step || 1">
|
||||||
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
||||||
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormInput v-else-if="form[item].type === 'string' && !form[item].multiline" v-model="values[item]" type="text">
|
<MkInput v-else-if="form[item].type === 'string' && !form[item].multiline" v-model="values[item]" type="text">
|
||||||
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
||||||
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormTextarea v-else-if="form[item].type === 'string' && form[item].multiline" v-model="values[item]">
|
<MkTextarea v-else-if="form[item].type === 'string' && form[item].multiline" v-model="values[item]">
|
||||||
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
||||||
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
<MkSwitch v-else-if="form[item].type === 'boolean'" v-model="values[item]">
|
<MkSwitch v-else-if="form[item].type === 'boolean'" v-model="values[item]">
|
||||||
<span v-text="form[item].label || item"></span>
|
<span v-text="form[item].label || item"></span>
|
||||||
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<FormSelect v-else-if="form[item].type === 'enum'" v-model="values[item]">
|
<MkSelect v-else-if="form[item].type === 'enum'" v-model="values[item]">
|
||||||
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
||||||
<option v-for="item in form[item].enum" :key="item.value" :value="item.value">{{ item.label }}</option>
|
<option v-for="item in form[item].enum" :key="item.value" :value="item.value">{{ item.label }}</option>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
<FormRadios v-else-if="form[item].type === 'radio'" v-model="values[item]">
|
<MkRadios v-else-if="form[item].type === 'radio'" v-model="values[item]">
|
||||||
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
||||||
<option v-for="item in form[item].options" :key="item.value" :value="item.value">{{ item.label }}</option>
|
<option v-for="item in form[item].options" :key="item.value" :value="item.value">{{ item.label }}</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
<FormRange v-else-if="form[item].type === 'range'" v-model="values[item]" :min="form[item].min" :max="form[item].max" :step="form[item].step" :text-converter="form[item].textConverter">
|
<MkRange v-else-if="form[item].type === 'range'" v-model="values[item]" :min="form[item].min" :max="form[item].max" :step="form[item].step" :text-converter="form[item].textConverter">
|
||||||
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
<template #label><span v-text="form[item].label || item"></span><span v-if="form[item].required === false"> ({{ $ts.optional }})</span></template>
|
||||||
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
<template v-if="form[item].description" #caption>{{ form[item].description }}</template>
|
||||||
</FormRange>
|
</MkRange>
|
||||||
<MkButton v-else-if="form[item].type === 'button'" @click="form[item].action($event, values)">
|
<MkButton v-else-if="form[item].type === 'button'" @click="form[item].action($event, values)">
|
||||||
<span v-text="form[item].content || item"></span>
|
<span v-text="form[item].content || item"></span>
|
||||||
</MkButton>
|
</MkButton>
|
||||||
|
@ -56,25 +56,25 @@
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import FormInput from './form/input.vue';
|
import MkInput from './MkInput.vue';
|
||||||
import FormTextarea from './form/textarea.vue';
|
import MkTextarea from './MkTextarea.vue';
|
||||||
import MkSwitch from './MkSwitch.vue';
|
import MkSwitch from './MkSwitch.vue';
|
||||||
import FormSelect from './form/select.vue';
|
import MkSelect from './MkSelect.vue';
|
||||||
import FormRange from './form/range.vue';
|
import MkRange from './MkRange.vue';
|
||||||
import MkButton from './MkButton.vue';
|
import MkButton from './MkButton.vue';
|
||||||
import FormRadios from './form/radios.vue';
|
import MkRadios from './MkRadios.vue';
|
||||||
import MkModalWindow from '@/components/MkModalWindow.vue';
|
import MkModalWindow from '@/components/MkModalWindow.vue';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
||||||
MkModalWindow,
|
MkModalWindow,
|
||||||
FormInput,
|
MkInput,
|
||||||
FormTextarea,
|
MkTextarea,
|
||||||
MkSwitch,
|
MkSwitch,
|
||||||
FormSelect,
|
MkSelect,
|
||||||
FormRange,
|
MkRange,
|
||||||
MkButton,
|
MkButton,
|
||||||
FormRadios,
|
MkRadios,
|
||||||
},
|
},
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
|
|
|
@ -78,7 +78,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted } from 'vue';
|
import { onMounted } from 'vue';
|
||||||
import { Chart } from 'chart.js';
|
import { Chart } from 'chart.js';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkChart from '@/components/MkChart.vue';
|
import MkChart from '@/components/MkChart.vue';
|
||||||
import { useChartTooltip } from '@/scripts/use-chart-tooltip';
|
import { useChartTooltip } from '@/scripts/use-chart-tooltip';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -49,8 +49,8 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
import MkInput from './form/input.vue';
|
import MkInput from './MkInput.vue';
|
||||||
import MkSelect from './form/select.vue';
|
import MkSelect from './MkSelect.vue';
|
||||||
import MkSwitch from './MkSwitch.vue';
|
import MkSwitch from './MkSwitch.vue';
|
||||||
import MkButton from './MkButton.vue';
|
import MkButton from './MkButton.vue';
|
||||||
import { formatDateTimeString } from '@/scripts/format-time-string';
|
import { formatDateTimeString } from '@/scripts/format-time-string';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, h } from 'vue';
|
import { defineComponent, h } from 'vue';
|
||||||
import MkRadio from './radio.vue';
|
import MkRadio from './MkRadio.vue';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
|
@ -30,10 +30,10 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkRadio from '@/components/form/radio.vue';
|
import MkRadio from '@/components/MkRadio.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import * as config from '@/config';
|
import * as config from '@/config';
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ import { defineAsyncComponent } from 'vue';
|
||||||
import { toUnicode } from 'punycode/';
|
import { toUnicode } from 'punycode/';
|
||||||
import { showSuspendedDialog } from '../scripts/show-suspended-dialog';
|
import { showSuspendedDialog } from '../scripts/show-suspended-dialog';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkInfo from '@/components/MkInfo.vue';
|
import MkInfo from '@/components/MkInfo.vue';
|
||||||
import { apiUrl, host as configHost } from '@/config';
|
import { apiUrl, host as configHost } from '@/config';
|
||||||
import { byteify, hexify } from '@/scripts/2fa';
|
import { byteify, hexify } from '@/scripts/2fa';
|
||||||
|
|
|
@ -69,7 +69,7 @@ import { } from 'vue';
|
||||||
import getPasswordStrength from 'syuilo-password-strength';
|
import getPasswordStrength from 'syuilo-password-strength';
|
||||||
import { toUnicode } from 'punycode/';
|
import { toUnicode } from 'punycode/';
|
||||||
import MkButton from './MkButton.vue';
|
import MkButton from './MkButton.vue';
|
||||||
import MkInput from './form/input.vue';
|
import MkInput from './MkInput.vue';
|
||||||
import MkSwitch from './MkSwitch.vue';
|
import MkSwitch from './MkSwitch.vue';
|
||||||
import MkCaptcha from '@/components/MkCaptcha.vue';
|
import MkCaptcha from '@/components/MkCaptcha.vue';
|
||||||
import * as config from '@/config';
|
import * as config from '@/config';
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import { permissions as kinds } from 'misskey-js';
|
import { permissions as kinds } from 'misskey-js';
|
||||||
import MkInput from './form/input.vue';
|
import MkInput from './MkInput.vue';
|
||||||
import MkSwitch from './MkSwitch.vue';
|
import MkSwitch from './MkSwitch.vue';
|
||||||
import MkButton from './MkButton.vue';
|
import MkButton from './MkButton.vue';
|
||||||
import MkInfo from './MkInfo.vue';
|
import MkInfo from './MkInfo.vue';
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { nextTick, onMounted } from 'vue';
|
import { nextTick, onMounted } from 'vue';
|
||||||
import * as misskey from 'misskey-js';
|
import * as misskey from 'misskey-js';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
import MkModalWindow from '@/components/MkModalWindow.vue';
|
import MkModalWindow from '@/components/MkModalWindow.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -45,7 +45,7 @@ export type DefaultStoredWidget = {
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineAsyncComponent, reactive, ref, computed } from 'vue';
|
import { defineAsyncComponent, reactive, ref, computed } from 'vue';
|
||||||
import { v4 as uuid } from 'uuid';
|
import { v4 as uuid } from 'uuid';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import { widgets as widgetDefs } from '@/widgets';
|
import { widgets as widgetDefs } from '@/widgets';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
import { computed, defineComponent, PropType } from 'vue';
|
||||||
import MkInput from '../form/input.vue';
|
import MkInput from '../MkInput.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
import { Hpml } from '@/scripts/hpml/evaluator';
|
||||||
import { NumberInputVarBlock } from '@/scripts/hpml/block';
|
import { NumberInputVarBlock } from '@/scripts/hpml/block';
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, PropType } from 'vue';
|
import { defineComponent, PropType } from 'vue';
|
||||||
import MkTextarea from '../form/textarea.vue';
|
import MkTextarea from '../MkTextarea.vue';
|
||||||
import MkButton from '../MkButton.vue';
|
import MkButton from '../MkButton.vue';
|
||||||
import { apiUrl } from '@/config';
|
import { apiUrl } from '@/config';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
import { computed, defineComponent, PropType } from 'vue';
|
||||||
import MkRadio from '../form/radio.vue';
|
import MkRadio from '../MkRadio.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
import { Hpml } from '@/scripts/hpml/evaluator';
|
||||||
import { RadioButtonVarBlock } from '@/scripts/hpml/block';
|
import { RadioButtonVarBlock } from '@/scripts/hpml/block';
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
import { computed, defineComponent, PropType } from 'vue';
|
||||||
import MkInput from '../form/input.vue';
|
import MkInput from '../MkInput.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
import { Hpml } from '@/scripts/hpml/evaluator';
|
||||||
import { TextInputVarBlock } from '@/scripts/hpml/block';
|
import { TextInputVarBlock } from '@/scripts/hpml/block';
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
import { computed, defineComponent, PropType } from 'vue';
|
||||||
import MkTextarea from '../form/textarea.vue';
|
import MkTextarea from '../MkTextarea.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
import { Hpml } from '@/scripts/hpml/evaluator';
|
||||||
import { HpmlTextInput } from '@/scripts/hpml';
|
import { HpmlTextInput } from '@/scripts/hpml';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import { TextBlock } from '@/scripts/hpml/block';
|
import { TextBlock } from '@/scripts/hpml/block';
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
import { Hpml } from '@/scripts/hpml/evaluator';
|
||||||
import { defineComponent, PropType } from 'vue';
|
import { defineComponent, PropType } from 'vue';
|
||||||
import MkTextarea from '../form/textarea.vue';
|
import MkTextarea from '../MkTextarea.vue';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
||||||
|
|
|
@ -32,8 +32,8 @@
|
||||||
import { defineComponent, computed } from 'vue';
|
import { defineComponent, computed } from 'vue';
|
||||||
import XEmoji from './emojis.emoji.vue';
|
import XEmoji from './emojis.emoji.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkFolder from '@/components/MkFolder.vue';
|
import MkFolder from '@/components/MkFolder.vue';
|
||||||
import MkTab from '@/components/MkTab.vue';
|
import MkTab from '@/components/MkTab.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -47,8 +47,8 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkPagination from '@/components/MkPagination.vue';
|
import MkPagination from '@/components/MkPagination.vue';
|
||||||
import MkInstanceCardMini from '@/components/MkInstanceCardMini.vue';
|
import MkInstanceCardMini from '@/components/MkInstanceCardMini.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
|
|
|
@ -50,8 +50,8 @@
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
|
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkPagination from '@/components/MkPagination.vue';
|
import MkPagination from '@/components/MkPagination.vue';
|
||||||
import XAbuseReport from '@/components/MkAbuseReport.vue';
|
import XAbuseReport from '@/components/MkAbuseReport.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -11,12 +11,12 @@
|
||||||
<MkInput v-model="ad.imageUrl">
|
<MkInput v-model="ad.imageUrl">
|
||||||
<template #label>{{ i18n.ts.imageUrl }}</template>
|
<template #label>{{ i18n.ts.imageUrl }}</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<FormRadios v-model="ad.place">
|
<MkRadios v-model="ad.place">
|
||||||
<template #label>Form</template>
|
<template #label>Form</template>
|
||||||
<option value="square">square</option>
|
<option value="square">square</option>
|
||||||
<option value="horizontal">horizontal</option>
|
<option value="horizontal">horizontal</option>
|
||||||
<option value="horizontal-big">horizontal-big</option>
|
<option value="horizontal-big">horizontal-big</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
<!--
|
<!--
|
||||||
<div style="margin: 32px 0;">
|
<div style="margin: 32px 0;">
|
||||||
{{ i18n.ts.priority }}
|
{{ i18n.ts.priority }}
|
||||||
|
@ -50,9 +50,9 @@
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import FormRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
|
@ -30,8 +30,8 @@
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
import { definePageMetadata } from '@/scripts/page-metadata';
|
import { definePageMetadata } from '@/scripts/page-metadata';
|
||||||
|
|
|
@ -2,50 +2,50 @@
|
||||||
<div>
|
<div>
|
||||||
<FormSuspense :p="init">
|
<FormSuspense :p="init">
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormRadios v-model="provider">
|
<MkRadios v-model="provider">
|
||||||
<option :value="null">{{ i18n.ts.none }} ({{ i18n.ts.notRecommended }})</option>
|
<option :value="null">{{ i18n.ts.none }} ({{ i18n.ts.notRecommended }})</option>
|
||||||
<option value="hcaptcha">hCaptcha</option>
|
<option value="hcaptcha">hCaptcha</option>
|
||||||
<option value="recaptcha">reCAPTCHA</option>
|
<option value="recaptcha">reCAPTCHA</option>
|
||||||
<option value="turnstile">Turnstile</option>
|
<option value="turnstile">Turnstile</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
|
|
||||||
<template v-if="provider === 'hcaptcha'">
|
<template v-if="provider === 'hcaptcha'">
|
||||||
<FormInput v-model="hcaptchaSiteKey">
|
<MkInput v-model="hcaptchaSiteKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>{{ i18n.ts.hcaptchaSiteKey }}</template>
|
<template #label>{{ i18n.ts.hcaptchaSiteKey }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormInput v-model="hcaptchaSecretKey">
|
<MkInput v-model="hcaptchaSecretKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>{{ i18n.ts.hcaptchaSecretKey }}</template>
|
<template #label>{{ i18n.ts.hcaptchaSecretKey }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormSlot>
|
<FormSlot>
|
||||||
<template #label>{{ i18n.ts.preview }}</template>
|
<template #label>{{ i18n.ts.preview }}</template>
|
||||||
<MkCaptcha provider="hcaptcha" :sitekey="hcaptchaSiteKey || '10000000-ffff-ffff-ffff-000000000001'"/>
|
<MkCaptcha provider="hcaptcha" :sitekey="hcaptchaSiteKey || '10000000-ffff-ffff-ffff-000000000001'"/>
|
||||||
</FormSlot>
|
</FormSlot>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="provider === 'recaptcha'">
|
<template v-else-if="provider === 'recaptcha'">
|
||||||
<FormInput v-model="recaptchaSiteKey">
|
<MkInput v-model="recaptchaSiteKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>{{ i18n.ts.recaptchaSiteKey }}</template>
|
<template #label>{{ i18n.ts.recaptchaSiteKey }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormInput v-model="recaptchaSecretKey">
|
<MkInput v-model="recaptchaSecretKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>{{ i18n.ts.recaptchaSecretKey }}</template>
|
<template #label>{{ i18n.ts.recaptchaSecretKey }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormSlot v-if="recaptchaSiteKey">
|
<FormSlot v-if="recaptchaSiteKey">
|
||||||
<template #label>{{ i18n.ts.preview }}</template>
|
<template #label>{{ i18n.ts.preview }}</template>
|
||||||
<MkCaptcha provider="recaptcha" :sitekey="recaptchaSiteKey"/>
|
<MkCaptcha provider="recaptcha" :sitekey="recaptchaSiteKey"/>
|
||||||
</FormSlot>
|
</FormSlot>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="provider === 'turnstile'">
|
<template v-else-if="provider === 'turnstile'">
|
||||||
<FormInput v-model="turnstileSiteKey">
|
<MkInput v-model="turnstileSiteKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>{{ i18n.ts.turnstileSiteKey }}</template>
|
<template #label>{{ i18n.ts.turnstileSiteKey }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormInput v-model="turnstileSecretKey">
|
<MkInput v-model="turnstileSecretKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>{{ i18n.ts.turnstileSecretKey }}</template>
|
<template #label>{{ i18n.ts.turnstileSecretKey }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormSlot>
|
<FormSlot>
|
||||||
<template #label>{{ i18n.ts.preview }}</template>
|
<template #label>{{ i18n.ts.preview }}</template>
|
||||||
<MkCaptcha provider="turnstile" :sitekey="turnstileSiteKey || '1x00000000000000000000AA'"/>
|
<MkCaptcha provider="turnstile" :sitekey="turnstileSiteKey || '1x00000000000000000000AA'"/>
|
||||||
|
@ -60,8 +60,8 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineAsyncComponent } from 'vue';
|
import { defineAsyncComponent } from 'vue';
|
||||||
import FormRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
import FormSlot from '@/components/form/slot.vue';
|
import FormSlot from '@/components/form/slot.vue';
|
||||||
|
|
|
@ -10,29 +10,29 @@
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
|
||||||
<template v-if="enableEmail">
|
<template v-if="enableEmail">
|
||||||
<FormInput v-model="email" type="email">
|
<MkInput v-model="email" type="email">
|
||||||
<template #label>{{ i18n.ts.emailAddress }}</template>
|
<template #label>{{ i18n.ts.emailAddress }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<template #label>{{ i18n.ts.smtpConfig }}</template>
|
<template #label>{{ i18n.ts.smtpConfig }}</template>
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormSplit :min-width="280">
|
<FormSplit :min-width="280">
|
||||||
<FormInput v-model="smtpHost">
|
<MkInput v-model="smtpHost">
|
||||||
<template #label>{{ i18n.ts.smtpHost }}</template>
|
<template #label>{{ i18n.ts.smtpHost }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormInput v-model="smtpPort" type="number">
|
<MkInput v-model="smtpPort" type="number">
|
||||||
<template #label>{{ i18n.ts.smtpPort }}</template>
|
<template #label>{{ i18n.ts.smtpPort }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</FormSplit>
|
</FormSplit>
|
||||||
<FormSplit :min-width="280">
|
<FormSplit :min-width="280">
|
||||||
<FormInput v-model="smtpUser">
|
<MkInput v-model="smtpUser">
|
||||||
<template #label>{{ i18n.ts.smtpUser }}</template>
|
<template #label>{{ i18n.ts.smtpUser }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormInput v-model="smtpPass" type="password">
|
<MkInput v-model="smtpPass" type="password">
|
||||||
<template #label>{{ i18n.ts.smtpPass }}</template>
|
<template #label>{{ i18n.ts.smtpPass }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</FormSplit>
|
</FormSplit>
|
||||||
<FormInfo>{{ i18n.ts.emptyToDisableSmtpAuth }}</FormInfo>
|
<FormInfo>{{ i18n.ts.emptyToDisableSmtpAuth }}</FormInfo>
|
||||||
<MkSwitch v-model="smtpSecure">
|
<MkSwitch v-model="smtpSecure">
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormInfo from '@/components/MkInfo.vue';
|
import FormInfo from '@/components/MkInfo.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import MkModalWindow from '@/components/MkModalWindow.vue';
|
import MkModalWindow from '@/components/MkModalWindow.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { unique } from '@/scripts/array';
|
import { unique } from '@/scripts/array';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
|
@ -71,7 +71,7 @@
|
||||||
import { computed, defineAsyncComponent, defineComponent, ref, shallowRef } from 'vue';
|
import { computed, defineAsyncComponent, defineComponent, ref, shallowRef } from 'vue';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkPagination from '@/components/MkPagination.vue';
|
import MkPagination from '@/components/MkPagination.vue';
|
||||||
import MkTab from '@/components/MkTab.vue';
|
import MkTab from '@/components/MkTab.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
|
|
|
@ -37,8 +37,8 @@ import { computed, defineAsyncComponent } from 'vue';
|
||||||
import * as Acct from 'misskey-js/built/acct';
|
import * as Acct from 'misskey-js/built/acct';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkFileListForAdmin from '@/components/MkFileListForAdmin.vue';
|
import MkFileListForAdmin from '@/components/MkFileListForAdmin.vue';
|
||||||
import bytes from '@/filters/bytes';
|
import bytes from '@/filters/bytes';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
<template #header><XHeader :actions="headerActions" :tabs="headerTabs"/></template>
|
<template #header><XHeader :actions="headerActions" :tabs="headerTabs"/></template>
|
||||||
<MkSpacer :content-max="700" :margin-min="16" :margin-max="32">
|
<MkSpacer :content-max="700" :margin-min="16" :margin-max="32">
|
||||||
<FormSuspense :p="init">
|
<FormSuspense :p="init">
|
||||||
<FormTextarea v-model="blockedHosts">
|
<MkTextarea v-model="blockedHosts">
|
||||||
<span>{{ i18n.ts.blockedInstances }}</span>
|
<span>{{ i18n.ts.blockedInstances }}</span>
|
||||||
<template #caption>{{ i18n.ts.blockedInstancesDescription }}</template>
|
<template #caption>{{ i18n.ts.blockedInstancesDescription }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
||||||
</FormSuspense>
|
</FormSuspense>
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { fetchInstance } from '@/instance';
|
import { fetchInstance } from '@/instance';
|
||||||
|
|
|
@ -8,15 +8,15 @@
|
||||||
<template v-if="enableDiscordIntegration">
|
<template v-if="enableDiscordIntegration">
|
||||||
<FormInfo>Callback URL: {{ `${uri}/api/dc/cb` }}</FormInfo>
|
<FormInfo>Callback URL: {{ `${uri}/api/dc/cb` }}</FormInfo>
|
||||||
|
|
||||||
<FormInput v-model="discordClientId">
|
<MkInput v-model="discordClientId">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Client ID</template>
|
<template #label>Client ID</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="discordClientSecret">
|
<MkInput v-model="discordClientSecret">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Client Secret</template>
|
<template #label>Client Secret</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormInfo from '@/components/MkInfo.vue';
|
import FormInfo from '@/components/MkInfo.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
|
|
|
@ -8,15 +8,15 @@
|
||||||
<template v-if="enableGithubIntegration">
|
<template v-if="enableGithubIntegration">
|
||||||
<FormInfo>Callback URL: {{ `${uri}/api/gh/cb` }}</FormInfo>
|
<FormInfo>Callback URL: {{ `${uri}/api/gh/cb` }}</FormInfo>
|
||||||
|
|
||||||
<FormInput v-model="githubClientId">
|
<MkInput v-model="githubClientId">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Client ID</template>
|
<template #label>Client ID</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="githubClientSecret">
|
<MkInput v-model="githubClientSecret">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Client Secret</template>
|
<template #label>Client Secret</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormInfo from '@/components/MkInfo.vue';
|
import FormInfo from '@/components/MkInfo.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
|
|
|
@ -8,15 +8,15 @@
|
||||||
<template v-if="enableTwitterIntegration">
|
<template v-if="enableTwitterIntegration">
|
||||||
<FormInfo>Callback URL: {{ `${uri}/api/tw/cb` }}</FormInfo>
|
<FormInfo>Callback URL: {{ `${uri}/api/tw/cb` }}</FormInfo>
|
||||||
|
|
||||||
<FormInput v-model="twitterConsumerKey">
|
<MkInput v-model="twitterConsumerKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Consumer Key</template>
|
<template #label>Consumer Key</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="twitterConsumerSecret">
|
<MkInput v-model="twitterConsumerSecret">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Consumer Secret</template>
|
<template #label>Consumer Secret</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormInfo from '@/components/MkInfo.vue';
|
import FormInfo from '@/components/MkInfo.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
|
|
|
@ -7,41 +7,41 @@
|
||||||
<MkSwitch v-model="useObjectStorage">{{ i18n.ts.useObjectStorage }}</MkSwitch>
|
<MkSwitch v-model="useObjectStorage">{{ i18n.ts.useObjectStorage }}</MkSwitch>
|
||||||
|
|
||||||
<template v-if="useObjectStorage">
|
<template v-if="useObjectStorage">
|
||||||
<FormInput v-model="objectStorageBaseUrl">
|
<MkInput v-model="objectStorageBaseUrl">
|
||||||
<template #label>{{ i18n.ts.objectStorageBaseUrl }}</template>
|
<template #label>{{ i18n.ts.objectStorageBaseUrl }}</template>
|
||||||
<template #caption>{{ i18n.ts.objectStorageBaseUrlDesc }}</template>
|
<template #caption>{{ i18n.ts.objectStorageBaseUrlDesc }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="objectStorageBucket">
|
<MkInput v-model="objectStorageBucket">
|
||||||
<template #label>{{ i18n.ts.objectStorageBucket }}</template>
|
<template #label>{{ i18n.ts.objectStorageBucket }}</template>
|
||||||
<template #caption>{{ i18n.ts.objectStorageBucketDesc }}</template>
|
<template #caption>{{ i18n.ts.objectStorageBucketDesc }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="objectStoragePrefix">
|
<MkInput v-model="objectStoragePrefix">
|
||||||
<template #label>{{ i18n.ts.objectStoragePrefix }}</template>
|
<template #label>{{ i18n.ts.objectStoragePrefix }}</template>
|
||||||
<template #caption>{{ i18n.ts.objectStoragePrefixDesc }}</template>
|
<template #caption>{{ i18n.ts.objectStoragePrefixDesc }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="objectStorageEndpoint">
|
<MkInput v-model="objectStorageEndpoint">
|
||||||
<template #label>{{ i18n.ts.objectStorageEndpoint }}</template>
|
<template #label>{{ i18n.ts.objectStorageEndpoint }}</template>
|
||||||
<template #caption>{{ i18n.ts.objectStorageEndpointDesc }}</template>
|
<template #caption>{{ i18n.ts.objectStorageEndpointDesc }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="objectStorageRegion">
|
<MkInput v-model="objectStorageRegion">
|
||||||
<template #label>{{ i18n.ts.objectStorageRegion }}</template>
|
<template #label>{{ i18n.ts.objectStorageRegion }}</template>
|
||||||
<template #caption>{{ i18n.ts.objectStorageRegionDesc }}</template>
|
<template #caption>{{ i18n.ts.objectStorageRegionDesc }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormSplit :min-width="280">
|
<FormSplit :min-width="280">
|
||||||
<FormInput v-model="objectStorageAccessKey">
|
<MkInput v-model="objectStorageAccessKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Access key</template>
|
<template #label>Access key</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="objectStorageSecretKey">
|
<MkInput v-model="objectStorageSecretKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Secret key</template>
|
<template #label>Secret key</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</FormSplit>
|
</FormSplit>
|
||||||
|
|
||||||
<MkSwitch v-model="objectStorageUseSSL">
|
<MkSwitch v-model="objectStorageUseSSL">
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import MkHeatmap from '@/components/MkHeatmap.vue';
|
import MkHeatmap from '@/components/MkHeatmap.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
|
|
||||||
let src = $ref('active-users');
|
let src = $ref('active-users');
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -26,17 +26,17 @@
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<span>{{ i18n.ts._sensitiveMediaDetection.description }}</span>
|
<span>{{ i18n.ts._sensitiveMediaDetection.description }}</span>
|
||||||
|
|
||||||
<FormRadios v-model="sensitiveMediaDetection">
|
<MkRadios v-model="sensitiveMediaDetection">
|
||||||
<option value="none">{{ i18n.ts.none }}</option>
|
<option value="none">{{ i18n.ts.none }}</option>
|
||||||
<option value="all">{{ i18n.ts.all }}</option>
|
<option value="all">{{ i18n.ts.all }}</option>
|
||||||
<option value="local">{{ i18n.ts.localOnly }}</option>
|
<option value="local">{{ i18n.ts.localOnly }}</option>
|
||||||
<option value="remote">{{ i18n.ts.remoteOnly }}</option>
|
<option value="remote">{{ i18n.ts.remoteOnly }}</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
|
|
||||||
<FormRange v-model="sensitiveMediaDetectionSensitivity" :min="0" :max="4" :step="1" :text-converter="(v) => `${v + 1}`">
|
<MkRange v-model="sensitiveMediaDetectionSensitivity" :min="0" :max="4" :step="1" :text-converter="(v) => `${v + 1}`">
|
||||||
<template #label>{{ i18n.ts._sensitiveMediaDetection.sensitivity }}</template>
|
<template #label>{{ i18n.ts._sensitiveMediaDetection.sensitivity }}</template>
|
||||||
<template #caption>{{ i18n.ts._sensitiveMediaDetection.sensitivityDescription }}</template>
|
<template #caption>{{ i18n.ts._sensitiveMediaDetection.sensitivityDescription }}</template>
|
||||||
</FormRange>
|
</MkRange>
|
||||||
|
|
||||||
<MkSwitch v-model="enableSensitiveMediaDetectionForVideos">
|
<MkSwitch v-model="enableSensitiveMediaDetectionForVideos">
|
||||||
<template #label>{{ i18n.ts._sensitiveMediaDetection.analyzeVideos }}<span class="_beta">{{ i18n.ts.beta }}</span></template>
|
<template #label>{{ i18n.ts._sensitiveMediaDetection.analyzeVideos }}<span class="_beta">{{ i18n.ts.beta }}</span></template>
|
||||||
|
@ -87,10 +87,10 @@
|
||||||
<template #label>Summaly Proxy</template>
|
<template #label>Summaly Proxy</template>
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormInput v-model="summalyProxy">
|
<MkInput v-model="summalyProxy">
|
||||||
<template #prefix><i class="ti ti-link"></i></template>
|
<template #prefix><i class="ti ti-link"></i></template>
|
||||||
<template #label>Summaly Proxy URL</template>
|
<template #label>Summaly Proxy URL</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
|
@ -106,12 +106,12 @@ import { } from 'vue';
|
||||||
import XBotProtection from './bot-protection.vue';
|
import XBotProtection from './bot-protection.vue';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import FormFolder from '@/components/form/folder.vue';
|
import FormFolder from '@/components/form/folder.vue';
|
||||||
import FormRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormInfo from '@/components/MkInfo.vue';
|
import FormInfo from '@/components/MkInfo.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
import FormRange from '@/components/form/range.vue';
|
import MkRange from '@/components/MkRange.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { fetchInstance } from '@/instance';
|
import { fetchInstance } from '@/instance';
|
||||||
|
|
|
@ -5,34 +5,34 @@
|
||||||
<MkSpacer :content-max="700" :margin-min="16" :margin-max="32">
|
<MkSpacer :content-max="700" :margin-min="16" :margin-max="32">
|
||||||
<FormSuspense :p="init">
|
<FormSuspense :p="init">
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormInput v-model="name">
|
<MkInput v-model="name">
|
||||||
<template #label>{{ i18n.ts.instanceName }}</template>
|
<template #label>{{ i18n.ts.instanceName }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormTextarea v-model="description">
|
<MkTextarea v-model="description">
|
||||||
<template #label>{{ i18n.ts.instanceDescription }}</template>
|
<template #label>{{ i18n.ts.instanceDescription }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<FormInput v-model="tosUrl">
|
<MkInput v-model="tosUrl">
|
||||||
<template #prefix><i class="ti ti-link"></i></template>
|
<template #prefix><i class="ti ti-link"></i></template>
|
||||||
<template #label>{{ i18n.ts.tosUrl }}</template>
|
<template #label>{{ i18n.ts.tosUrl }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormSplit :min-width="300">
|
<FormSplit :min-width="300">
|
||||||
<FormInput v-model="maintainerName">
|
<MkInput v-model="maintainerName">
|
||||||
<template #label>{{ i18n.ts.maintainerName }}</template>
|
<template #label>{{ i18n.ts.maintainerName }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="maintainerEmail" type="email">
|
<MkInput v-model="maintainerEmail" type="email">
|
||||||
<template #prefix><i class="ti ti-mail"></i></template>
|
<template #prefix><i class="ti ti-mail"></i></template>
|
||||||
<template #label>{{ i18n.ts.maintainerEmail }}</template>
|
<template #label>{{ i18n.ts.maintainerEmail }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</FormSplit>
|
</FormSplit>
|
||||||
|
|
||||||
<FormTextarea v-model="pinnedUsers">
|
<MkTextarea v-model="pinnedUsers">
|
||||||
<template #label>{{ i18n.ts.pinnedUsers }}</template>
|
<template #label>{{ i18n.ts.pinnedUsers }}</template>
|
||||||
<template #caption>{{ i18n.ts.pinnedUsersDescription }}</template>
|
<template #caption>{{ i18n.ts.pinnedUsersDescription }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<div class="_gaps_s">
|
<div class="_gaps_s">
|
||||||
|
@ -58,36 +58,36 @@
|
||||||
<template #label>{{ i18n.ts.theme }}</template>
|
<template #label>{{ i18n.ts.theme }}</template>
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormInput v-model="iconUrl">
|
<MkInput v-model="iconUrl">
|
||||||
<template #prefix><i class="ti ti-link"></i></template>
|
<template #prefix><i class="ti ti-link"></i></template>
|
||||||
<template #label>{{ i18n.ts.iconUrl }}</template>
|
<template #label>{{ i18n.ts.iconUrl }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="bannerUrl">
|
<MkInput v-model="bannerUrl">
|
||||||
<template #prefix><i class="ti ti-link"></i></template>
|
<template #prefix><i class="ti ti-link"></i></template>
|
||||||
<template #label>{{ i18n.ts.bannerUrl }}</template>
|
<template #label>{{ i18n.ts.bannerUrl }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="backgroundImageUrl">
|
<MkInput v-model="backgroundImageUrl">
|
||||||
<template #prefix><i class="ti ti-link"></i></template>
|
<template #prefix><i class="ti ti-link"></i></template>
|
||||||
<template #label>{{ i18n.ts.backgroundImageUrl }}</template>
|
<template #label>{{ i18n.ts.backgroundImageUrl }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="themeColor">
|
<MkInput v-model="themeColor">
|
||||||
<template #prefix><i class="ti ti-palette"></i></template>
|
<template #prefix><i class="ti ti-palette"></i></template>
|
||||||
<template #label>{{ i18n.ts.themeColor }}</template>
|
<template #label>{{ i18n.ts.themeColor }}</template>
|
||||||
<template #caption>#RRGGBB</template>
|
<template #caption>#RRGGBB</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormTextarea v-model="defaultLightTheme">
|
<MkTextarea v-model="defaultLightTheme">
|
||||||
<template #label>{{ i18n.ts.instanceDefaultLightTheme }}</template>
|
<template #label>{{ i18n.ts.instanceDefaultLightTheme }}</template>
|
||||||
<template #caption>{{ i18n.ts.instanceDefaultThemeDescription }}</template>
|
<template #caption>{{ i18n.ts.instanceDefaultThemeDescription }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<FormTextarea v-model="defaultDarkTheme">
|
<MkTextarea v-model="defaultDarkTheme">
|
||||||
<template #label>{{ i18n.ts.instanceDefaultDarkTheme }}</template>
|
<template #label>{{ i18n.ts.instanceDefaultDarkTheme }}</template>
|
||||||
<template #caption>{{ i18n.ts.instanceDefaultThemeDescription }}</template>
|
<template #caption>{{ i18n.ts.instanceDefaultThemeDescription }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
</div>
|
</div>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
|
|
||||||
|
@ -101,17 +101,17 @@
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
|
||||||
<FormSplit :min-width="280">
|
<FormSplit :min-width="280">
|
||||||
<FormInput v-model="localDriveCapacityMb" type="number">
|
<MkInput v-model="localDriveCapacityMb" type="number">
|
||||||
<template #label>{{ i18n.ts.driveCapacityPerLocalAccount }}</template>
|
<template #label>{{ i18n.ts.driveCapacityPerLocalAccount }}</template>
|
||||||
<template #suffix>MB</template>
|
<template #suffix>MB</template>
|
||||||
<template #caption>{{ i18n.ts.inMb }}</template>
|
<template #caption>{{ i18n.ts.inMb }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">
|
<MkInput v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">
|
||||||
<template #label>{{ i18n.ts.driveCapacityPerRemoteAccount }}</template>
|
<template #label>{{ i18n.ts.driveCapacityPerRemoteAccount }}</template>
|
||||||
<template #suffix>MB</template>
|
<template #suffix>MB</template>
|
||||||
<template #caption>{{ i18n.ts.inMb }}</template>
|
<template #caption>{{ i18n.ts.inMb }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</FormSplit>
|
</FormSplit>
|
||||||
</div>
|
</div>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
|
@ -126,15 +126,15 @@
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
|
||||||
<template v-if="enableServiceWorker">
|
<template v-if="enableServiceWorker">
|
||||||
<FormInput v-model="swPublicKey">
|
<MkInput v-model="swPublicKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Public key</template>
|
<template #label>Public key</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="swPrivateKey">
|
<MkInput v-model="swPrivateKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Private key</template>
|
<template #label>Private key</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
|
@ -143,10 +143,10 @@
|
||||||
<template #label>DeepL Translation</template>
|
<template #label>DeepL Translation</template>
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormInput v-model="deeplAuthKey">
|
<MkInput v-model="deeplAuthKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>DeepL Auth Key</template>
|
<template #label>DeepL Auth Key</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<MkSwitch v-model="deeplIsPro">
|
<MkSwitch v-model="deeplIsPro">
|
||||||
<template #label>Pro account</template>
|
<template #label>Pro account</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
@ -163,8 +163,8 @@
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import FormInfo from '@/components/MkInfo.vue';
|
import FormInfo from '@/components/MkInfo.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
|
|
|
@ -55,8 +55,8 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
import XHeader from './_header_.vue';
|
import XHeader from './_header_.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkPagination from '@/components/MkPagination.vue';
|
import MkPagination from '@/components/MkPagination.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { lookupUser } from '@/scripts/lookup-user';
|
import { lookupUser } from '@/scripts/lookup-user';
|
||||||
|
|
|
@ -33,8 +33,8 @@ import { ref } from 'vue';
|
||||||
import JSON5 from 'json5';
|
import JSON5 from 'json5';
|
||||||
import { Endpoints } from 'misskey-js';
|
import { Endpoints } from 'misskey-js';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { definePageMetadata } from '@/scripts/page-metadata';
|
import { definePageMetadata } from '@/scripts/page-metadata';
|
||||||
|
|
|
@ -28,9 +28,9 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, inject, watch } from 'vue';
|
import { computed, inject, watch } from 'vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import { selectFile } from '@/scripts/select-file';
|
import { selectFile } from '@/scripts/select-file';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { useRouter } from '@/router';
|
import { useRouter } from '@/router';
|
||||||
|
|
|
@ -34,8 +34,8 @@ import { computed, watch } from 'vue';
|
||||||
import XFeatured from './explore.featured.vue';
|
import XFeatured from './explore.featured.vue';
|
||||||
import XUsers from './explore.users.vue';
|
import XUsers from './explore.users.vue';
|
||||||
import MkFolder from '@/components/MkFolder.vue';
|
import MkFolder from '@/components/MkFolder.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import number from '@/filters/number';
|
import number from '@/filters/number';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { definePageMetadata } from '@/scripts/page-metadata';
|
import { definePageMetadata } from '@/scripts/page-metadata';
|
||||||
|
|
|
@ -28,8 +28,8 @@ import * as os from '@/os';
|
||||||
import { url } from '@/config';
|
import { url } from '@/config';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
import { definePageMetadata } from '@/scripts/page-metadata';
|
import { definePageMetadata } from '@/scripts/page-metadata';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import { useRouter } from '@/router';
|
import { useRouter } from '@/router';
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
|
@ -66,7 +66,7 @@ import MkAsUi from '@/components/MkAsUi.vue';
|
||||||
import { AsUiComponent, AsUiRoot, patch, registerAsUiLib, render } from '@/scripts/aiscript/ui';
|
import { AsUiComponent, AsUiRoot, patch, registerAsUiLib, render } from '@/scripts/aiscript/ui';
|
||||||
import { createAiScriptEnv } from '@/scripts/aiscript/api';
|
import { createAiScriptEnv } from '@/scripts/aiscript/api';
|
||||||
import FormFolder from '@/components/form/folder.vue';
|
import FormFolder from '@/components/form/folder.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
id: string;
|
id: string;
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
<template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template>
|
<template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template>
|
||||||
<MkSpacer :content-max="800" :margin-min="16" :margin-max="32">
|
<MkSpacer :content-max="800" :margin-min="16" :margin-max="32">
|
||||||
<FormSuspense :p="init">
|
<FormSuspense :p="init">
|
||||||
<FormInput v-model="title">
|
<MkInput v-model="title">
|
||||||
<template #label>{{ i18n.ts.title }}</template>
|
<template #label>{{ i18n.ts.title }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormTextarea v-model="description" :max="500">
|
<MkTextarea v-model="description" :max="500">
|
||||||
<template #label>{{ i18n.ts.description }}</template>
|
<template #label>{{ i18n.ts.description }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<div class="">
|
<div class="">
|
||||||
<div v-for="file in files" :key="file.id" class="wqugxsfx" :style="{ backgroundImage: file ? `url(${ file.thumbnailUrl })` : null }">
|
<div v-for="file in files" :key="file.id" class="wqugxsfx" :style="{ backgroundImage: file ? `url(${ file.thumbnailUrl })` : null }">
|
||||||
|
@ -33,8 +33,8 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, inject, watch } from 'vue';
|
import { computed, inject, watch } from 'vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
import { selectFiles } from '@/scripts/select-file';
|
import { selectFiles } from '@/scripts/select-file';
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
import { computed, defineComponent, watch } from 'vue';
|
import { computed, defineComponent, watch } from 'vue';
|
||||||
import XUserList from '@/components/MkUserList.vue';
|
import XUserList from '@/components/MkUserList.vue';
|
||||||
import MkFolder from '@/components/MkFolder.vue';
|
import MkFolder from '@/components/MkFolder.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkTab from '@/components/MkTab.vue';
|
import MkTab from '@/components/MkTab.vue';
|
||||||
import MkPagination from '@/components/MkPagination.vue';
|
import MkPagination from '@/components/MkPagination.vue';
|
||||||
|
|
|
@ -120,7 +120,7 @@ import MkLink from '@/components/MkLink.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import MkKeyValue from '@/components/MkKeyValue.vue';
|
import MkKeyValue from '@/components/MkKeyValue.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import number from '@/filters/number';
|
import number from '@/filters/number';
|
||||||
|
|
|
@ -313,7 +313,7 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import { definePageMetadata } from '@/scripts/page-metadata';
|
import { definePageMetadata } from '@/scripts/page-metadata';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
import { instance } from '@/instance';
|
import { instance } from '@/instance';
|
||||||
|
|
|
@ -50,9 +50,9 @@
|
||||||
import { watch } from 'vue';
|
import { watch } from 'vue';
|
||||||
import * as Acct from 'misskey-js/built/acct';
|
import * as Acct from 'misskey-js/built/acct';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
/* eslint-disable vue/no-mutating-props */
|
/* eslint-disable vue/no-mutating-props */
|
||||||
import { watch } from 'vue';
|
import { watch } from 'vue';
|
||||||
import XContainer from '../page-editor.container.vue';
|
import XContainer from '../page-editor.container.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import XNote from '@/components/MkNote.vue';
|
import XNote from '@/components/MkNote.vue';
|
||||||
import XNoteDetailed from '@/components/MkNoteDetailed.vue';
|
import XNoteDetailed from '@/components/MkNoteDetailed.vue';
|
||||||
|
|
|
@ -59,11 +59,11 @@
|
||||||
import { defineAsyncComponent, computed, provide, watch } from 'vue';
|
import { defineAsyncComponent, computed, provide, watch } from 'vue';
|
||||||
import { v4 as uuid } from 'uuid';
|
import { v4 as uuid } from 'uuid';
|
||||||
import XBlocks from './page-editor.blocks.vue';
|
import XBlocks from './page-editor.blocks.vue';
|
||||||
import MkTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import { url } from '@/config';
|
import { url } from '@/config';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { selectFile } from '@/scripts/select-file';
|
import { selectFile } from '@/scripts/select-file';
|
||||||
|
|
|
@ -21,9 +21,9 @@
|
||||||
</MkKeyValue>
|
</MkKeyValue>
|
||||||
</FormSplit>
|
</FormSplit>
|
||||||
|
|
||||||
<FormTextarea v-model="valueForEditor" tall class="_monospace">
|
<MkTextarea v-model="valueForEditor" tall class="_monospace">
|
||||||
<template #label>{{ i18n.ts.value }} (JSON)</template>
|
<template #label>{{ i18n.ts.value }} (JSON)</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ import FormLink from '@/components/form/link.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkKeyValue from '@/components/MkKeyValue.vue';
|
import MkKeyValue from '@/components/MkKeyValue.vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
import FormInfo from '@/components/MkInfo.vue';
|
import FormInfo from '@/components/MkInfo.vue';
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
<template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template>
|
<template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template>
|
||||||
<MkSpacer v-if="token" :content-max="700" :margin-min="16" :margin-max="32">
|
<MkSpacer v-if="token" :content-max="700" :margin-min="16" :margin-max="32">
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormInput v-model="password" type="password">
|
<MkInput v-model="password" type="password">
|
||||||
<template #prefix><i class="ti ti-lock"></i></template>
|
<template #prefix><i class="ti ti-lock"></i></template>
|
||||||
<template #label>{{ i18n.ts.newPassword }}</template>
|
<template #label>{{ i18n.ts.newPassword }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<MkButton primary @click="save">{{ i18n.ts.save }}</MkButton>
|
<MkButton primary @click="save">{{ i18n.ts.save }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineAsyncComponent, onMounted } from 'vue';
|
import { defineAsyncComponent, onMounted } from 'vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
|
@ -70,7 +70,7 @@ import { hostname } from '@/config';
|
||||||
import { byteify, hexify, stringify } from '@/scripts/2fa';
|
import { byteify, hexify, stringify } from '@/scripts/2fa';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInfo from '@/components/MkInfo.vue';
|
import MkInfo from '@/components/MkInfo.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { $i } from '@/account';
|
import { $i } from '@/account';
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormInfo warn>{{ i18n.ts.customCssWarn }}</FormInfo>
|
<FormInfo warn>{{ i18n.ts.customCssWarn }}</FormInfo>
|
||||||
|
|
||||||
<FormTextarea v-model="localCustomCss" manual-save tall class="_monospace" style="tab-size: 2;">
|
<MkTextarea v-model="localCustomCss" manual-save tall class="_monospace" style="tab-size: 2;">
|
||||||
<template #label>CSS</template>
|
<template #label>CSS</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import FormInfo from '@/components/MkInfo.vue';
|
import FormInfo from '@/components/MkInfo.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { unisonReload } from '@/scripts/unison-reload';
|
import { unisonReload } from '@/scripts/unison-reload';
|
||||||
|
|
|
@ -4,11 +4,11 @@
|
||||||
|
|
||||||
<MkSwitch v-model="alwaysShowMainColumn">{{ i18n.ts._deck.alwaysShowMainColumn }}</MkSwitch>
|
<MkSwitch v-model="alwaysShowMainColumn">{{ i18n.ts._deck.alwaysShowMainColumn }}</MkSwitch>
|
||||||
|
|
||||||
<FormRadios v-model="columnAlign">
|
<MkRadios v-model="columnAlign">
|
||||||
<template #label>{{ i18n.ts._deck.columnAlign }}</template>
|
<template #label>{{ i18n.ts._deck.columnAlign }}</template>
|
||||||
<option value="left">{{ i18n.ts.left }}</option>
|
<option value="left">{{ i18n.ts.left }}</option>
|
||||||
<option value="center">{{ i18n.ts.center }}</option>
|
<option value="center">{{ i18n.ts.center }}</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -16,8 +16,8 @@
|
||||||
import { computed, watch } from 'vue';
|
import { computed, watch } from 'vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormLink from '@/components/form/link.vue';
|
import FormLink from '@/components/form/link.vue';
|
||||||
import FormRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import { deckStore } from '@/ui/deck/deck-store';
|
import { deckStore } from '@/ui/deck/deck-store';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { unisonReload } from '@/scripts/unison-reload';
|
import { unisonReload } from '@/scripts/unison-reload';
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormSection first>
|
<FormSection first>
|
||||||
<template #label>{{ i18n.ts.emailAddress }}</template>
|
<template #label>{{ i18n.ts.emailAddress }}</template>
|
||||||
<FormInput v-model="emailAddress" type="email" manual-save>
|
<MkInput v-model="emailAddress" type="email" manual-save>
|
||||||
<template #prefix><i class="ti ti-mail"></i></template>
|
<template #prefix><i class="ti ti-mail"></i></template>
|
||||||
<template v-if="$i.email && !$i.emailVerified" #caption>{{ i18n.ts.verificationEmailSent }}</template>
|
<template v-if="$i.email && !$i.emailVerified" #caption>{{ i18n.ts.verificationEmailSent }}</template>
|
||||||
<template v-else-if="emailAddress === $i.email && $i.emailVerified" #caption><i class="ti ti-check" style="color: var(--success);"></i> {{ i18n.ts.emailVerified }}</template>
|
<template v-else-if="emailAddress === $i.email && $i.emailVerified" #caption><i class="ti ti-check" style="color: var(--success);"></i> {{ i18n.ts.emailVerified }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
|
|
||||||
<FormSection>
|
<FormSection>
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref, watch } from 'vue';
|
import { onMounted, ref, watch } from 'vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { $i } from '@/account';
|
import { $i } from '@/account';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormSelect v-model="lang">
|
<MkSelect v-model="lang">
|
||||||
<template #label>{{ i18n.ts.uiLanguage }}</template>
|
<template #label>{{ i18n.ts.uiLanguage }}</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>
|
||||||
|
@ -10,15 +10,15 @@
|
||||||
</template>
|
</template>
|
||||||
</I18n>
|
</I18n>
|
||||||
</template>
|
</template>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
|
|
||||||
<FormRadios v-model="overridedDeviceKind">
|
<MkRadios v-model="overridedDeviceKind">
|
||||||
<template #label>{{ i18n.ts.overridedDeviceKind }}</template>
|
<template #label>{{ i18n.ts.overridedDeviceKind }}</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>
|
||||||
<option value="desktop"><i class="ti ti-device-desktop"/> {{ i18n.ts.desktop }}</option>
|
<option value="desktop"><i class="ti ti-device-desktop"/> {{ i18n.ts.desktop }}</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
|
|
||||||
<MkSwitch v-model="showFixedPostForm">{{ i18n.ts.showFixedPostForm }}</MkSwitch>
|
<MkSwitch v-model="showFixedPostForm">{{ i18n.ts.showFixedPostForm }}</MkSwitch>
|
||||||
|
|
||||||
|
@ -31,12 +31,12 @@
|
||||||
<MkSwitch v-model="enableInfiniteScroll">{{ i18n.ts.enableInfiniteScroll }}</MkSwitch>
|
<MkSwitch v-model="enableInfiniteScroll">{{ i18n.ts.enableInfiniteScroll }}</MkSwitch>
|
||||||
<MkSwitch v-model="useReactionPickerForContextMenu">{{ i18n.ts.useReactionPickerForContextMenu }}</MkSwitch>
|
<MkSwitch v-model="useReactionPickerForContextMenu">{{ i18n.ts.useReactionPickerForContextMenu }}</MkSwitch>
|
||||||
</div>
|
</div>
|
||||||
<FormSelect v-model="serverDisconnectedBehavior">
|
<MkSelect v-model="serverDisconnectedBehavior">
|
||||||
<template #label>{{ i18n.ts.whenServerDisconnected }}</template>
|
<template #label>{{ i18n.ts.whenServerDisconnected }}</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>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
</div>
|
</div>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
|
|
||||||
|
@ -57,22 +57,22 @@
|
||||||
<MkSwitch v-model="disableDrawer">{{ i18n.ts.disableDrawer }}</MkSwitch>
|
<MkSwitch v-model="disableDrawer">{{ i18n.ts.disableDrawer }}</MkSwitch>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<FormRadios v-model="emojiStyle">
|
<MkRadios v-model="emojiStyle">
|
||||||
<template #label>{{ i18n.ts.emojiStyle }}</template>
|
<template #label>{{ i18n.ts.emojiStyle }}</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>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
<div style="margin: 8px 0 0 0; font-size: 1.5em;"><Mfm :key="emojiStyle" text="🍮🍦🍭🍩🍰🍫🍬🥞🍪"/></div>
|
<div style="margin: 8px 0 0 0; font-size: 1.5em;"><Mfm :key="emojiStyle" text="🍮🍦🍭🍩🍰🍫🍬🥞🍪"/></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<FormRadios v-model="fontSize">
|
<MkRadios v-model="fontSize">
|
||||||
<template #label>{{ i18n.ts.fontSize }}</template>
|
<template #label>{{ i18n.ts.fontSize }}</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>
|
||||||
<option value="3"><span style="font-size: 17px;">Aa</span></option>
|
<option value="3"><span style="font-size: 17px;">Aa</span></option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
</div>
|
</div>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
|
|
||||||
|
@ -80,24 +80,24 @@
|
||||||
<MkSwitch v-model="aiChanMode">{{ i18n.ts.aiChanMode }}</MkSwitch>
|
<MkSwitch v-model="aiChanMode">{{ i18n.ts.aiChanMode }}</MkSwitch>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
|
|
||||||
<FormSelect v-model="instanceTicker">
|
<MkSelect v-model="instanceTicker">
|
||||||
<template #label>{{ i18n.ts.instanceTicker }}</template>
|
<template #label>{{ i18n.ts.instanceTicker }}</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>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
|
|
||||||
<FormSelect v-model="nsfw">
|
<MkSelect v-model="nsfw">
|
||||||
<template #label>{{ i18n.ts.nsfw }}</template>
|
<template #label>{{ i18n.ts.nsfw }}</template>
|
||||||
<option value="respect">{{ i18n.ts._nsfw.respect }}</option>
|
<option value="respect">{{ i18n.ts._nsfw.respect }}</option>
|
||||||
<option value="ignore">{{ i18n.ts._nsfw.ignore }}</option>
|
<option value="ignore">{{ i18n.ts._nsfw.ignore }}</option>
|
||||||
<option value="force">{{ i18n.ts._nsfw.force }}</option>
|
<option value="force">{{ i18n.ts._nsfw.force }}</option>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
|
|
||||||
<FormRange 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>{{ i18n.ts.numberOfPageCache }}</template>
|
||||||
<template #caption>{{ i18n.ts.numberOfPageCacheDescription }}</template>
|
<template #caption>{{ i18n.ts.numberOfPageCacheDescription }}</template>
|
||||||
</FormRange>
|
</MkRange>
|
||||||
|
|
||||||
<FormLink to="/settings/deck">{{ i18n.ts.deck }}</FormLink>
|
<FormLink to="/settings/deck">{{ i18n.ts.deck }}</FormLink>
|
||||||
|
|
||||||
|
@ -108,9 +108,9 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, ref, watch } from 'vue';
|
import { computed, ref, watch } from 'vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import FormRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import FormRange from '@/components/form/range.vue';
|
import MkRange from '@/components/MkRange.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import FormLink from '@/components/form/link.vue';
|
import FormLink from '@/components/form/link.vue';
|
||||||
import MkLink from '@/components/MkLink.vue';
|
import MkLink from '@/components/MkLink.vue';
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<MkInfo>{{ i18n.ts._instanceMute.title }}</MkInfo>
|
<MkInfo>{{ i18n.ts._instanceMute.title }}</MkInfo>
|
||||||
<FormTextarea v-model="instanceMutes">
|
<MkTextarea v-model="instanceMutes">
|
||||||
<template #label>{{ i18n.ts._instanceMute.heading }}</template>
|
<template #label>{{ i18n.ts._instanceMute.heading }}</template>
|
||||||
<template #caption>{{ i18n.ts._instanceMute.instanceMuteDescription }}<br>{{ i18n.ts._instanceMute.instanceMuteDescription2 }}</template>
|
<template #caption>{{ i18n.ts._instanceMute.instanceMuteDescription }}<br>{{ i18n.ts._instanceMute.instanceMuteDescription2 }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
<MkButton primary :disabled="!changed" @click="save()"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
<MkButton primary :disabled="!changed" @click="save()"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkInfo from '@/components/MkInfo.vue';
|
import MkInfo from '@/components/MkInfo.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormTextarea v-model="items" tall manual-save>
|
<MkTextarea v-model="items" tall manual-save>
|
||||||
<template #label>{{ i18n.ts.navbar }}</template>
|
<template #label>{{ i18n.ts.navbar }}</template>
|
||||||
<template #caption><button class="_textButton" @click="addItem">{{ i18n.ts.addItem }}</button></template>
|
<template #caption><button class="_textButton" @click="addItem">{{ i18n.ts.addItem }}</button></template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<FormRadios v-model="menuDisplay">
|
<MkRadios v-model="menuDisplay">
|
||||||
<template #label>{{ i18n.ts.display }}</template>
|
<template #label>{{ i18n.ts.display }}</template>
|
||||||
<option value="sideFull">{{ i18n.ts._menuDisplay.sideFull }}</option>
|
<option value="sideFull">{{ i18n.ts._menuDisplay.sideFull }}</option>
|
||||||
<option value="sideIcon">{{ i18n.ts._menuDisplay.sideIcon }}</option>
|
<option value="sideIcon">{{ i18n.ts._menuDisplay.sideIcon }}</option>
|
||||||
<option value="top">{{ i18n.ts._menuDisplay.top }}</option>
|
<option value="top">{{ i18n.ts._menuDisplay.top }}</option>
|
||||||
<!-- <MkRadio v-model="menuDisplay" value="hide" disabled>{{ i18n.ts._menuDisplay.hide }}</MkRadio>--> <!-- TODO: サイドバーを完全に隠せるようにすると、別途ハンバーガーボタンのようなものをUIに表示する必要があり面倒 -->
|
<!-- <MkRadio v-model="menuDisplay" value="hide" disabled>{{ i18n.ts._menuDisplay.hide }}</MkRadio>--> <!-- TODO: サイドバーを完全に隠せるようにすると、別途ハンバーガーボタンのようなものをUIに表示する必要があり面倒 -->
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
|
|
||||||
<MkButton danger @click="reset()"><i class="ti ti-reload"></i> {{ i18n.ts.default }}</MkButton>
|
<MkButton danger @click="reset()"><i class="ti ti-reload"></i> {{ i18n.ts.default }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,8 +19,8 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, ref, watch } from 'vue';
|
import { computed, ref, watch } from 'vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import FormRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { navbarItemDef } from '@/navbar';
|
import { navbarItemDef } from '@/navbar';
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormInfo warn>{{ i18n.ts._plugin.installWarn }}</FormInfo>
|
<FormInfo warn>{{ i18n.ts._plugin.installWarn }}</FormInfo>
|
||||||
|
|
||||||
<FormTextarea v-model="code" tall>
|
<MkTextarea v-model="code" tall>
|
||||||
<template #label>{{ i18n.ts.code }}</template>
|
<template #label>{{ i18n.ts.code }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<MkButton :disabled="code == null" primary inline @click="install"><i class="ti ti-check"></i> {{ i18n.ts.install }}</MkButton>
|
<MkButton :disabled="code == null" primary inline @click="install"><i class="ti ti-check"></i> {{ i18n.ts.install }}</MkButton>
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
import { defineAsyncComponent, nextTick, ref } from 'vue';
|
import { defineAsyncComponent, nextTick, ref } from 'vue';
|
||||||
import { Interpreter, Parser, utils } from '@syuilo/aiscript';
|
import { Interpreter, Parser, utils } from '@syuilo/aiscript';
|
||||||
import { v4 as uuid } from 'uuid';
|
import { v4 as uuid } from 'uuid';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormInfo from '@/components/MkInfo.vue';
|
import FormInfo from '@/components/MkInfo.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
<template #caption>{{ i18n.ts.makeReactionsPublicDescription }}</template>
|
<template #caption>{{ i18n.ts.makeReactionsPublicDescription }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
|
||||||
<FormSelect v-model="ffVisibility" @update:model-value="save()">
|
<MkSelect v-model="ffVisibility" @update:model-value="save()">
|
||||||
<template #label>{{ i18n.ts.ffVisibility }}</template>
|
<template #label>{{ i18n.ts.ffVisibility }}</template>
|
||||||
<option value="public">{{ i18n.ts._ffVisibility.public }}</option>
|
<option value="public">{{ i18n.ts._ffVisibility.public }}</option>
|
||||||
<option value="followers">{{ i18n.ts._ffVisibility.followers }}</option>
|
<option value="followers">{{ i18n.ts._ffVisibility.followers }}</option>
|
||||||
<option value="private">{{ i18n.ts._ffVisibility.private }}</option>
|
<option value="private">{{ i18n.ts._ffVisibility.private }}</option>
|
||||||
<template #caption>{{ i18n.ts.ffVisibilityDescription }}</template>
|
<template #caption>{{ i18n.ts.ffVisibilityDescription }}</template>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
|
|
||||||
<MkSwitch v-model="hideOnlineStatus" @update:model-value="save()">
|
<MkSwitch v-model="hideOnlineStatus" @update:model-value="save()">
|
||||||
{{ i18n.ts.hideOnlineStatus }}
|
{{ i18n.ts.hideOnlineStatus }}
|
||||||
|
@ -40,12 +40,12 @@
|
||||||
<template v-else-if="defaultNoteVisibility === 'specified'" #suffix>{{ i18n.ts._visibility.specified }}</template>
|
<template v-else-if="defaultNoteVisibility === 'specified'" #suffix>{{ i18n.ts._visibility.specified }}</template>
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormSelect v-model="defaultNoteVisibility">
|
<MkSelect v-model="defaultNoteVisibility">
|
||||||
<option value="public">{{ i18n.ts._visibility.public }}</option>
|
<option value="public">{{ i18n.ts._visibility.public }}</option>
|
||||||
<option value="home">{{ i18n.ts._visibility.home }}</option>
|
<option value="home">{{ i18n.ts._visibility.home }}</option>
|
||||||
<option value="followers">{{ i18n.ts._visibility.followers }}</option>
|
<option value="followers">{{ i18n.ts._visibility.followers }}</option>
|
||||||
<option value="specified">{{ i18n.ts._visibility.specified }}</option>
|
<option value="specified">{{ i18n.ts._visibility.specified }}</option>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
<MkSwitch v-model="defaultNoteLocalOnly">{{ i18n.ts._visibility.localOnly }}</MkSwitch>
|
<MkSwitch v-model="defaultNoteLocalOnly">{{ i18n.ts._visibility.localOnly }}</MkSwitch>
|
||||||
</div>
|
</div>
|
||||||
</FormFolder>
|
</FormFolder>
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import FormFolder from '@/components/form/folder.vue';
|
import FormFolder from '@/components/form/folder.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -8,29 +8,29 @@
|
||||||
<MkButton primary rounded class="bannerEdit" @click="changeBanner">{{ i18n.ts._profile.changeBanner }}</MkButton>
|
<MkButton primary rounded class="bannerEdit" @click="changeBanner">{{ i18n.ts._profile.changeBanner }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<FormInput v-model="profile.name" :max="30" manual-save>
|
<MkInput v-model="profile.name" :max="30" manual-save>
|
||||||
<template #label>{{ i18n.ts._profile.name }}</template>
|
<template #label>{{ i18n.ts._profile.name }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormTextarea v-model="profile.description" :max="500" tall manual-save>
|
<MkTextarea v-model="profile.description" :max="500" tall manual-save>
|
||||||
<template #label>{{ i18n.ts._profile.description }}</template>
|
<template #label>{{ i18n.ts._profile.description }}</template>
|
||||||
<template #caption>{{ i18n.ts._profile.youCanIncludeHashtags }}</template>
|
<template #caption>{{ i18n.ts._profile.youCanIncludeHashtags }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<FormInput v-model="profile.location" manual-save>
|
<MkInput v-model="profile.location" manual-save>
|
||||||
<template #label>{{ i18n.ts.location }}</template>
|
<template #label>{{ i18n.ts.location }}</template>
|
||||||
<template #prefix><i class="ti ti-map-pin"></i></template>
|
<template #prefix><i class="ti ti-map-pin"></i></template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="profile.birthday" type="date" manual-save>
|
<MkInput v-model="profile.birthday" type="date" manual-save>
|
||||||
<template #label>{{ i18n.ts.birthday }}</template>
|
<template #label>{{ i18n.ts.birthday }}</template>
|
||||||
<template #prefix><i class="ti ti-cake"></i></template>
|
<template #prefix><i class="ti ti-cake"></i></template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormSelect v-model="profile.lang">
|
<MkSelect v-model="profile.lang">
|
||||||
<template #label>{{ i18n.ts.language }}</template>
|
<template #label>{{ i18n.ts.language }}</template>
|
||||||
<option v-for="x in Object.keys(langmap)" :key="x" :value="x">{{ langmap[x].nativeName }}</option>
|
<option v-for="x in Object.keys(langmap)" :key="x" :value="x">{{ langmap[x].nativeName }}</option>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
|
|
||||||
<FormSlot>
|
<FormSlot>
|
||||||
<FormFolder>
|
<FormFolder>
|
||||||
|
@ -39,12 +39,12 @@
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormSplit v-for="(record, i) in fields" :min-width="250">
|
<FormSplit v-for="(record, i) in fields" :min-width="250">
|
||||||
<FormInput v-model="record.name" small>
|
<MkInput v-model="record.name" small>
|
||||||
<template #label>{{ i18n.ts._profile.metadataLabel }} #{{ i + 1 }}</template>
|
<template #label>{{ i18n.ts._profile.metadataLabel }} #{{ i + 1 }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormInput v-model="record.value" small>
|
<MkInput v-model="record.value" small>
|
||||||
<template #label>{{ i18n.ts._profile.metadataContent }} #{{ i + 1 }}</template>
|
<template #label>{{ i18n.ts._profile.metadataContent }} #{{ i + 1 }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</FormSplit>
|
</FormSplit>
|
||||||
<div>
|
<div>
|
||||||
<MkButton :disabled="fields.length >= 16" inline style="margin-right: 8px;" @click="addField"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton>
|
<MkButton :disabled="fields.length >= 16" inline style="margin-right: 8px;" @click="addField"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton>
|
||||||
|
@ -71,10 +71,10 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { reactive, watch } from 'vue';
|
import { reactive, watch } from 'vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
import FormFolder from '@/components/form/folder.vue';
|
import FormFolder from '@/components/form/folder.vue';
|
||||||
import FormSlot from '@/components/form/slot.vue';
|
import FormSlot from '@/components/form/slot.vue';
|
||||||
|
|
|
@ -17,27 +17,27 @@
|
||||||
<template #caption>{{ i18n.ts.reactionSettingDescription2 }} <button class="_textButton" @click="preview">{{ i18n.ts.preview }}</button></template>
|
<template #caption>{{ i18n.ts.reactionSettingDescription2 }} <button class="_textButton" @click="preview">{{ i18n.ts.preview }}</button></template>
|
||||||
</FromSlot>
|
</FromSlot>
|
||||||
|
|
||||||
<FormRadios v-model="reactionPickerSize">
|
<MkRadios v-model="reactionPickerSize">
|
||||||
<template #label>{{ i18n.ts.size }}</template>
|
<template #label>{{ i18n.ts.size }}</template>
|
||||||
<option :value="1">{{ i18n.ts.small }}</option>
|
<option :value="1">{{ i18n.ts.small }}</option>
|
||||||
<option :value="2">{{ i18n.ts.medium }}</option>
|
<option :value="2">{{ i18n.ts.medium }}</option>
|
||||||
<option :value="3">{{ i18n.ts.large }}</option>
|
<option :value="3">{{ i18n.ts.large }}</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
<FormRadios v-model="reactionPickerWidth">
|
<MkRadios v-model="reactionPickerWidth">
|
||||||
<template #label>{{ i18n.ts.numberOfColumn }}</template>
|
<template #label>{{ i18n.ts.numberOfColumn }}</template>
|
||||||
<option :value="1">5</option>
|
<option :value="1">5</option>
|
||||||
<option :value="2">6</option>
|
<option :value="2">6</option>
|
||||||
<option :value="3">7</option>
|
<option :value="3">7</option>
|
||||||
<option :value="4">8</option>
|
<option :value="4">8</option>
|
||||||
<option :value="5">9</option>
|
<option :value="5">9</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
<FormRadios v-model="reactionPickerHeight">
|
<MkRadios v-model="reactionPickerHeight">
|
||||||
<template #label>{{ i18n.ts.height }}</template>
|
<template #label>{{ i18n.ts.height }}</template>
|
||||||
<option :value="1">{{ i18n.ts.small }}</option>
|
<option :value="1">{{ i18n.ts.small }}</option>
|
||||||
<option :value="2">{{ i18n.ts.medium }}</option>
|
<option :value="2">{{ i18n.ts.medium }}</option>
|
||||||
<option :value="3">{{ i18n.ts.large }}</option>
|
<option :value="3">{{ i18n.ts.large }}</option>
|
||||||
<option :value="4">{{ i18n.ts.large }}+</option>
|
<option :value="4">{{ i18n.ts.large }}+</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
|
|
||||||
<MkSwitch v-model="reactionPickerUseDrawerForMobile">
|
<MkSwitch v-model="reactionPickerUseDrawerForMobile">
|
||||||
{{ i18n.ts.useDrawerReactionPickerForMobile }}
|
{{ i18n.ts.useDrawerReactionPickerForMobile }}
|
||||||
|
@ -56,8 +56,8 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineAsyncComponent, watch } from 'vue';
|
import { defineAsyncComponent, watch } from 'vue';
|
||||||
import Sortable from 'vuedraggable';
|
import Sortable from 'vuedraggable';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import FromSlot from '@/components/form/slot.vue';
|
import FromSlot from '@/components/form/slot.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormSelect v-model="type">
|
<MkSelect v-model="type">
|
||||||
<template #label>{{ i18n.ts.sound }}</template>
|
<template #label>{{ i18n.ts.sound }}</template>
|
||||||
<option v-for="x in soundsTypes" :key="x" :value="x">{{ x == null ? i18n.ts.none : x }}</option>
|
<option v-for="x in soundsTypes" :key="x" :value="x">{{ x == null ? i18n.ts.none : x }}</option>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
<FormRange v-model="volume" :min="0" :max="1" :step="0.05" :text-converter="(v) => `${Math.floor(v * 100)}%`">
|
<MkRange v-model="volume" :min="0" :max="1" :step="0.05" :text-converter="(v) => `${Math.floor(v * 100)}%`">
|
||||||
<template #label>{{ i18n.ts.volume }}</template>
|
<template #label>{{ i18n.ts.volume }}</template>
|
||||||
</FormRange>
|
</MkRange>
|
||||||
|
|
||||||
<div class="_buttons">
|
<div class="_buttons">
|
||||||
<MkButton inline @click="listen"><i class="ti ti-player-play"></i> {{ i18n.ts.listen }}</MkButton>
|
<MkButton inline @click="listen"><i class="ti ti-player-play"></i> {{ i18n.ts.listen }}</MkButton>
|
||||||
|
@ -17,9 +17,9 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import FormSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormRange from '@/components/form/range.vue';
|
import MkRange from '@/components/MkRange.vue';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
import { playFile, soundsTypes } from '@/scripts/sound';
|
import { playFile, soundsTypes } from '@/scripts/sound';
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormRange v-model="masterVolume" :min="0" :max="1" :step="0.05" :text-converter="(v) => `${Math.floor(v * 100)}%`">
|
<MkRange v-model="masterVolume" :min="0" :max="1" :step="0.05" :text-converter="(v) => `${Math.floor(v * 100)}%`">
|
||||||
<template #label>{{ i18n.ts.masterVolume }}</template>
|
<template #label>{{ i18n.ts.masterVolume }}</template>
|
||||||
</FormRange>
|
</MkRange>
|
||||||
|
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<template #label>{{ i18n.ts.sounds }}</template>
|
<template #label>{{ i18n.ts.sounds }}</template>
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref } from 'vue';
|
||||||
import XSound from './sounds.sound.vue';
|
import XSound from './sounds.sound.vue';
|
||||||
import FormRange from '@/components/form/range.vue';
|
import MkRange from '@/components/MkRange.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormLink from '@/components/form/link.vue';
|
import FormLink from '@/components/form/link.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormSelect v-model="statusbar.type" placeholder="Please select">
|
<MkSelect v-model="statusbar.type" placeholder="Please select">
|
||||||
<template #label>{{ i18n.ts.type }}</template>
|
<template #label>{{ i18n.ts.type }}</template>
|
||||||
<option value="rss">RSS</option>
|
<option value="rss">RSS</option>
|
||||||
<option value="federation">Federation</option>
|
<option value="federation">Federation</option>
|
||||||
<option value="userList">User list timeline</option>
|
<option value="userList">User list timeline</option>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
|
|
||||||
<MkInput v-model="statusbar.name" manual-save>
|
<MkInput v-model="statusbar.name" manual-save>
|
||||||
<template #label>{{ i18n.ts.label }}</template>
|
<template #label>{{ i18n.ts.label }}</template>
|
||||||
|
@ -15,14 +15,14 @@
|
||||||
<template #label>Black</template>
|
<template #label>Black</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
|
||||||
<FormRadios v-model="statusbar.size">
|
<MkRadios v-model="statusbar.size">
|
||||||
<template #label>{{ i18n.ts.size }}</template>
|
<template #label>{{ i18n.ts.size }}</template>
|
||||||
<option value="verySmall">{{ i18n.ts.small }}+</option>
|
<option value="verySmall">{{ i18n.ts.small }}+</option>
|
||||||
<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>
|
||||||
<option value="veryLarge">{{ i18n.ts.large }}+</option>
|
<option value="veryLarge">{{ i18n.ts.large }}+</option>
|
||||||
</FormRadios>
|
</MkRadios>
|
||||||
|
|
||||||
<template v-if="statusbar.type === 'rss'">
|
<template v-if="statusbar.type === 'rss'">
|
||||||
<MkInput v-model="statusbar.props.url" manual-save type="url">
|
<MkInput v-model="statusbar.props.url" manual-save type="url">
|
||||||
|
@ -34,10 +34,10 @@
|
||||||
<MkInput v-model="statusbar.props.refreshIntervalSec" manual-save type="number">
|
<MkInput v-model="statusbar.props.refreshIntervalSec" manual-save type="number">
|
||||||
<template #label>{{ i18n.ts.refreshInterval }}</template>
|
<template #label>{{ i18n.ts.refreshInterval }}</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<FormRange v-model="statusbar.props.marqueeDuration" :min="5" :max="150" :step="1">
|
<MkRange v-model="statusbar.props.marqueeDuration" :min="5" :max="150" :step="1">
|
||||||
<template #label>{{ i18n.ts.speed }}</template>
|
<template #label>{{ i18n.ts.speed }}</template>
|
||||||
<template #caption>{{ i18n.ts.fast }} <-> {{ i18n.ts.slow }}</template>
|
<template #caption>{{ i18n.ts.fast }} <-> {{ i18n.ts.slow }}</template>
|
||||||
</FormRange>
|
</MkRange>
|
||||||
<MkSwitch v-model="statusbar.props.marqueeReverse">
|
<MkSwitch v-model="statusbar.props.marqueeReverse">
|
||||||
<template #label>{{ i18n.ts.reverse }}</template>
|
<template #label>{{ i18n.ts.reverse }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
@ -46,10 +46,10 @@
|
||||||
<MkInput v-model="statusbar.props.refreshIntervalSec" manual-save type="number">
|
<MkInput v-model="statusbar.props.refreshIntervalSec" manual-save type="number">
|
||||||
<template #label>{{ i18n.ts.refreshInterval }}</template>
|
<template #label>{{ i18n.ts.refreshInterval }}</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<FormRange v-model="statusbar.props.marqueeDuration" :min="5" :max="150" :step="1">
|
<MkRange v-model="statusbar.props.marqueeDuration" :min="5" :max="150" :step="1">
|
||||||
<template #label>{{ i18n.ts.speed }}</template>
|
<template #label>{{ i18n.ts.speed }}</template>
|
||||||
<template #caption>{{ i18n.ts.fast }} <-> {{ i18n.ts.slow }}</template>
|
<template #caption>{{ i18n.ts.fast }} <-> {{ i18n.ts.slow }}</template>
|
||||||
</FormRange>
|
</MkRange>
|
||||||
<MkSwitch v-model="statusbar.props.marqueeReverse">
|
<MkSwitch v-model="statusbar.props.marqueeReverse">
|
||||||
<template #label>{{ i18n.ts.reverse }}</template>
|
<template #label>{{ i18n.ts.reverse }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
@ -58,17 +58,17 @@
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="statusbar.type === 'userList' && userLists != null">
|
<template v-else-if="statusbar.type === 'userList' && userLists != null">
|
||||||
<FormSelect v-model="statusbar.props.userListId">
|
<MkSelect v-model="statusbar.props.userListId">
|
||||||
<template #label>{{ i18n.ts.userList }}</template>
|
<template #label>{{ i18n.ts.userList }}</template>
|
||||||
<option v-for="list in userLists" :value="list.id">{{ list.name }}</option>
|
<option v-for="list in userLists" :value="list.id">{{ list.name }}</option>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
<MkInput v-model="statusbar.props.refreshIntervalSec" manual-save type="number">
|
<MkInput v-model="statusbar.props.refreshIntervalSec" manual-save type="number">
|
||||||
<template #label>{{ i18n.ts.refreshInterval }}</template>
|
<template #label>{{ i18n.ts.refreshInterval }}</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<FormRange v-model="statusbar.props.marqueeDuration" :min="5" :max="150" :step="1">
|
<MkRange v-model="statusbar.props.marqueeDuration" :min="5" :max="150" :step="1">
|
||||||
<template #label>{{ i18n.ts.speed }}</template>
|
<template #label>{{ i18n.ts.speed }}</template>
|
||||||
<template #caption>{{ i18n.ts.fast }} <-> {{ i18n.ts.slow }}</template>
|
<template #caption>{{ i18n.ts.fast }} <-> {{ i18n.ts.slow }}</template>
|
||||||
</FormRange>
|
</MkRange>
|
||||||
<MkSwitch v-model="statusbar.props.marqueeReverse">
|
<MkSwitch v-model="statusbar.props.marqueeReverse">
|
||||||
<template #label>{{ i18n.ts.reverse }}</template>
|
<template #label>{{ i18n.ts.reverse }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
@ -82,12 +82,12 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, reactive, ref, watch } from 'vue';
|
import { computed, reactive, ref, watch } from 'vue';
|
||||||
import FormSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormRange from '@/components/form/range.vue';
|
import MkRange from '@/components/MkRange.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { defaultStore } from '@/store';
|
import { defaultStore } from '@/store';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
import { computed, onMounted, ref, watch } from 'vue';
|
import { computed, onMounted, ref, watch } from 'vue';
|
||||||
import { v4 as uuid } from 'uuid';
|
import { v4 as uuid } from 'uuid';
|
||||||
import XStatusbar from './statusbar.statusbar.vue';
|
import XStatusbar from './statusbar.statusbar.vue';
|
||||||
import FormRadios from '@/components/form/radios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
import FormFolder from '@/components/form/folder.vue';
|
import FormFolder from '@/components/form/folder.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormTextarea v-model="installThemeCode">
|
<MkTextarea v-model="installThemeCode">
|
||||||
<template #label>{{ i18n.ts._theme.code }}</template>
|
<template #label>{{ i18n.ts._theme.code }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
|
|
||||||
<div class="_buttons">
|
<div class="_buttons">
|
||||||
<MkButton :disabled="installThemeCode == null" inline @click="() => preview(installThemeCode)"><i class="ti ti-eye"></i> {{ i18n.ts.preview }}</MkButton>
|
<MkButton :disabled="installThemeCode == null" inline @click="() => preview(installThemeCode)"><i class="ti ti-eye"></i> {{ i18n.ts.preview }}</MkButton>
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import JSON5 from 'json5';
|
import JSON5 from 'json5';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import { applyTheme, validateTheme } from '@/scripts/theme';
|
import { applyTheme, validateTheme } from '@/scripts/theme';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormSelect v-model="selectedThemeId">
|
<MkSelect v-model="selectedThemeId">
|
||||||
<template #label>{{ i18n.ts.theme }}</template>
|
<template #label>{{ i18n.ts.theme }}</template>
|
||||||
<optgroup :label="i18n.ts._theme.installedThemes">
|
<optgroup :label="i18n.ts._theme.installedThemes">
|
||||||
<option v-for="x in installedThemes" :key="x.id" :value="x.id">{{ x.name }}</option>
|
<option v-for="x in installedThemes" :key="x.id" :value="x.id">{{ x.name }}</option>
|
||||||
|
@ -8,18 +8,18 @@
|
||||||
<optgroup :label="i18n.ts._theme.builtinThemes">
|
<optgroup :label="i18n.ts._theme.builtinThemes">
|
||||||
<option v-for="x in builtinThemes" :key="x.id" :value="x.id">{{ x.name }}</option>
|
<option v-for="x in builtinThemes" :key="x.id" :value="x.id">{{ x.name }}</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
<template v-if="selectedTheme">
|
<template v-if="selectedTheme">
|
||||||
<FormInput readonly :model-value="selectedTheme.author">
|
<MkInput readonly :model-value="selectedTheme.author">
|
||||||
<template #label>{{ i18n.ts.author }}</template>
|
<template #label>{{ i18n.ts.author }}</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
<FormTextarea v-if="selectedTheme.desc" readonly :model-value="selectedTheme.desc">
|
<MkTextarea v-if="selectedTheme.desc" readonly :model-value="selectedTheme.desc">
|
||||||
<template #label>{{ i18n.ts._theme.description }}</template>
|
<template #label>{{ i18n.ts._theme.description }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
<FormTextarea readonly tall :model-value="selectedThemeCode">
|
<MkTextarea readonly tall :model-value="selectedThemeCode">
|
||||||
<template #label>{{ i18n.ts._theme.code }}</template>
|
<template #label>{{ i18n.ts._theme.code }}</template>
|
||||||
<template #caption><button class="_textButton" @click="copyThemeCode()">{{ i18n.ts.copy }}</button></template>
|
<template #caption><button class="_textButton" @click="copyThemeCode()">{{ i18n.ts.copy }}</button></template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
<MkButton v-if="!builtinThemes.some(t => t.id == selectedTheme.id)" danger @click="uninstall()"><i class="ti ti-trash"></i> {{ i18n.ts.uninstall }}</MkButton>
|
<MkButton v-if="!builtinThemes.some(t => t.id == selectedTheme.id)" danger @click="uninstall()"><i class="ti ti-trash"></i> {{ i18n.ts.uninstall }}</MkButton>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
@ -28,9 +28,9 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref } from 'vue';
|
||||||
import JSON5 from 'json5';
|
import JSON5 from 'json5';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import FormSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import { Theme, getBuiltinThemesRef } from '@/scripts/theme';
|
import { Theme, getBuiltinThemesRef } from '@/scripts/theme';
|
||||||
import copyToClipboard from '@/scripts/copy-to-clipboard';
|
import copyToClipboard from '@/scripts/copy-to-clipboard';
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="selects">
|
<div class="selects">
|
||||||
<FormSelect v-model="lightThemeId" large class="select">
|
<MkSelect v-model="lightThemeId" large class="select">
|
||||||
<template #label>{{ i18n.ts.themeForLightMode }}</template>
|
<template #label>{{ i18n.ts.themeForLightMode }}</template>
|
||||||
<template #prefix><i class="ti ti-sun"></i></template>
|
<template #prefix><i class="ti ti-sun"></i></template>
|
||||||
<option v-if="instanceLightTheme" :key="'instance:' + instanceLightTheme.id" :value="instanceLightTheme.id">{{ instanceLightTheme.name }}</option>
|
<option v-if="instanceLightTheme" :key="'instance:' + instanceLightTheme.id" :value="instanceLightTheme.id">{{ instanceLightTheme.name }}</option>
|
||||||
|
@ -37,8 +37,8 @@
|
||||||
<optgroup :label="i18n.ts._theme.builtinThemes">
|
<optgroup :label="i18n.ts._theme.builtinThemes">
|
||||||
<option v-for="x in builtinLightThemes" :key="'builtin:' + x.id" :value="x.id">{{ x.name }}</option>
|
<option v-for="x in builtinLightThemes" :key="'builtin:' + x.id" :value="x.id">{{ x.name }}</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
<FormSelect v-model="darkThemeId" large class="select">
|
<MkSelect v-model="darkThemeId" large class="select">
|
||||||
<template #label>{{ i18n.ts.themeForDarkMode }}</template>
|
<template #label>{{ i18n.ts.themeForDarkMode }}</template>
|
||||||
<template #prefix><i class="ti ti-moon"></i></template>
|
<template #prefix><i class="ti ti-moon"></i></template>
|
||||||
<option v-if="instanceDarkTheme" :key="'instance:' + instanceDarkTheme.id" :value="instanceDarkTheme.id">{{ instanceDarkTheme.name }}</option>
|
<option v-if="instanceDarkTheme" :key="'instance:' + instanceDarkTheme.id" :value="instanceDarkTheme.id">{{ instanceDarkTheme.name }}</option>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<optgroup :label="i18n.ts._theme.builtinThemes">
|
<optgroup :label="i18n.ts._theme.builtinThemes">
|
||||||
<option v-for="x in builtinDarkThemes" :key="'builtin:' + x.id" :value="x.id">{{ x.name }}</option>
|
<option v-for="x in builtinDarkThemes" :key="'builtin:' + x.id" :value="x.id">{{ x.name }}</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
</FormSelect>
|
</MkSelect>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<FormSection>
|
<FormSection>
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
import { computed, onActivated, ref, watch } from 'vue';
|
import { computed, onActivated, ref, watch } from 'vue';
|
||||||
import JSON5 from 'json5';
|
import JSON5 from 'json5';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import FormLink from '@/components/form/link.vue';
|
import FormLink from '@/components/form/link.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormInput v-model="name">
|
<MkInput v-model="name">
|
||||||
<template #label>Name</template>
|
<template #label>Name</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="url" type="url">
|
<MkInput v-model="url" type="url">
|
||||||
<template #label>URL</template>
|
<template #label>URL</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="secret">
|
<MkInput v-model="secret">
|
||||||
<template #prefix><i class="ti ti-lock"></i></template>
|
<template #prefix><i class="ti ti-lock"></i></template>
|
||||||
<template #label>Secret</template>
|
<template #label>Secret</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<template #label>Events</template>
|
<template #label>Events</template>
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormInput v-model="name">
|
<MkInput v-model="name">
|
||||||
<template #label>Name</template>
|
<template #label>Name</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="url" type="url">
|
<MkInput v-model="url" type="url">
|
||||||
<template #label>URL</template>
|
<template #label>URL</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormInput v-model="secret">
|
<MkInput v-model="secret">
|
||||||
<template #prefix><i class="ti ti-lock"></i></template>
|
<template #prefix><i class="ti ti-lock"></i></template>
|
||||||
<template #label>Secret</template>
|
<template #label>Secret</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
|
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<template #label>Events</template>
|
<template #label>Events</template>
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
|
|
|
@ -7,17 +7,17 @@
|
||||||
<div>
|
<div>
|
||||||
<div v-show="tab === 'soft'" class="_gaps_m">
|
<div v-show="tab === 'soft'" class="_gaps_m">
|
||||||
<MkInfo>{{ i18n.ts._wordMute.softDescription }}</MkInfo>
|
<MkInfo>{{ i18n.ts._wordMute.softDescription }}</MkInfo>
|
||||||
<FormTextarea v-model="softMutedWords">
|
<MkTextarea v-model="softMutedWords">
|
||||||
<span>{{ i18n.ts._wordMute.muteWords }}</span>
|
<span>{{ i18n.ts._wordMute.muteWords }}</span>
|
||||||
<template #caption>{{ i18n.ts._wordMute.muteWordsDescription }}<br>{{ i18n.ts._wordMute.muteWordsDescription2 }}</template>
|
<template #caption>{{ i18n.ts._wordMute.muteWordsDescription }}<br>{{ i18n.ts._wordMute.muteWordsDescription2 }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
</div>
|
</div>
|
||||||
<div v-show="tab === 'hard'" class="_gaps_m">
|
<div v-show="tab === 'hard'" class="_gaps_m">
|
||||||
<MkInfo>{{ i18n.ts._wordMute.hardDescription }} {{ i18n.ts.reflectMayTakeTime }}</MkInfo>
|
<MkInfo>{{ i18n.ts._wordMute.hardDescription }} {{ i18n.ts.reflectMayTakeTime }}</MkInfo>
|
||||||
<FormTextarea v-model="hardMutedWords">
|
<MkTextarea v-model="hardMutedWords">
|
||||||
<span>{{ i18n.ts._wordMute.muteWords }}</span>
|
<span>{{ i18n.ts._wordMute.muteWords }}</span>
|
||||||
<template #caption>{{ i18n.ts._wordMute.muteWordsDescription }}<br>{{ i18n.ts._wordMute.muteWordsDescription2 }}</template>
|
<template #caption>{{ i18n.ts._wordMute.muteWordsDescription }}<br>{{ i18n.ts._wordMute.muteWordsDescription2 }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
<MkKeyValue v-if="hardWordMutedNotesCount != null">
|
<MkKeyValue v-if="hardWordMutedNotesCount != null">
|
||||||
<template #key>{{ i18n.ts._wordMute.mutedNotes }}</template>
|
<template #key>{{ i18n.ts._wordMute.mutedNotes }}</template>
|
||||||
<template #value>{{ number(hardWordMutedNotesCount) }}</template>
|
<template #value>{{ number(hardWordMutedNotesCount) }}</template>
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkKeyValue from '@/components/MkKeyValue.vue';
|
import MkKeyValue from '@/components/MkKeyValue.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInfo from '@/components/MkInfo.vue';
|
import MkInfo from '@/components/MkInfo.vue';
|
||||||
|
|
|
@ -46,9 +46,9 @@
|
||||||
<template #label>{{ i18n.ts.editCode }}</template>
|
<template #label>{{ i18n.ts.editCode }}</template>
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormTextarea v-model="themeCode" tall>
|
<MkTextarea v-model="themeCode" tall>
|
||||||
<template #label>{{ i18n.ts._theme.code }}</template>
|
<template #label>{{ i18n.ts._theme.code }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
<MkButton primary @click="applyThemeCode">{{ i18n.ts.apply }}</MkButton>
|
<MkButton primary @click="applyThemeCode">{{ i18n.ts.apply }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
</FormFolder>
|
</FormFolder>
|
||||||
|
@ -57,9 +57,9 @@
|
||||||
<template #label>{{ i18n.ts.addDescription }}</template>
|
<template #label>{{ i18n.ts.addDescription }}</template>
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<FormTextarea v-model="description">
|
<MkTextarea v-model="description">
|
||||||
<template #label>{{ i18n.ts._theme.description }}</template>
|
<template #label>{{ i18n.ts._theme.description }}</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
</div>
|
</div>
|
||||||
</FormFolder>
|
</FormFolder>
|
||||||
</div>
|
</div>
|
||||||
|
@ -75,7 +75,7 @@ import { v4 as uuid } from 'uuid';
|
||||||
import JSON5 from 'json5';
|
import JSON5 from 'json5';
|
||||||
|
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import FormFolder from '@/components/form/folder.vue';
|
import FormFolder from '@/components/form/folder.vue';
|
||||||
|
|
||||||
import { $i } from '@/account';
|
import { $i } from '@/account';
|
||||||
|
|
|
@ -95,9 +95,9 @@
|
||||||
<MkButton v-if="user.host == null && iAmModerator" inline style="margin-right: 8px;" @click="resetPassword"><i class="ti ti-key"></i> {{ i18n.ts.resetPassword }}</MkButton>
|
<MkButton v-if="user.host == null && iAmModerator" inline style="margin-right: 8px;" @click="resetPassword"><i class="ti ti-key"></i> {{ i18n.ts.resetPassword }}</MkButton>
|
||||||
<MkButton v-if="$i.isAdmin" inline danger @click="deleteAccount">{{ i18n.ts.deleteAccount }}</MkButton>
|
<MkButton v-if="$i.isAdmin" inline danger @click="deleteAccount">{{ i18n.ts.deleteAccount }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
<FormTextarea v-model="moderationNote" manual-save>
|
<MkTextarea v-model="moderationNote" manual-save>
|
||||||
<template #label>Moderation note</template>
|
<template #label>Moderation note</template>
|
||||||
</FormTextarea>
|
</MkTextarea>
|
||||||
<FormFolder>
|
<FormFolder>
|
||||||
<template #label>IP</template>
|
<template #label>IP</template>
|
||||||
<MkInfo v-if="!iAmAdmin" warn>{{ i18n.ts.requireAdminForView }}</MkInfo>
|
<MkInfo v-if="!iAmAdmin" warn>{{ i18n.ts.requireAdminForView }}</MkInfo>
|
||||||
|
@ -117,13 +117,13 @@
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<template #label>Drive Capacity Override</template>
|
<template #label>Drive Capacity Override</template>
|
||||||
|
|
||||||
<FormInput v-if="user.host == null" v-model="driveCapacityOverrideMb" inline :manual-save="true" type="number" :placeholder="i18n.t('defaultValueIs', { value: instance.driveCapacityPerLocalUserMb })" @update:model-value="applyDriveCapacityOverride">
|
<MkInput v-if="user.host == null" v-model="driveCapacityOverrideMb" inline :manual-save="true" type="number" :placeholder="i18n.t('defaultValueIs', { value: instance.driveCapacityPerLocalUserMb })" @update:model-value="applyDriveCapacityOverride">
|
||||||
<template #label>{{ i18n.ts.driveCapOverrideLabel }}</template>
|
<template #label>{{ i18n.ts.driveCapOverrideLabel }}</template>
|
||||||
<template #suffix>MB</template>
|
<template #suffix>MB</template>
|
||||||
<template #caption>
|
<template #caption>
|
||||||
{{ i18n.ts.driveCapOverrideCaption }}
|
{{ i18n.ts.driveCapOverrideCaption }}
|
||||||
</template>
|
</template>
|
||||||
</FormInput>
|
</MkInput>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="tab === 'chart'" class="_gaps_m">
|
<div v-else-if="tab === 'chart'" class="_gaps_m">
|
||||||
|
@ -158,16 +158,16 @@ import { computed, watch } from 'vue';
|
||||||
import * as misskey from 'misskey-js';
|
import * as misskey from 'misskey-js';
|
||||||
import MkChart from '@/components/MkChart.vue';
|
import MkChart from '@/components/MkChart.vue';
|
||||||
import MkObjectView from '@/components/MkObjectView.vue';
|
import MkObjectView from '@/components/MkObjectView.vue';
|
||||||
import FormTextarea from '@/components/form/textarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import FormLink from '@/components/form/link.vue';
|
import FormLink from '@/components/form/link.vue';
|
||||||
import FormSection from '@/components/form/section.vue';
|
import FormSection from '@/components/form/section.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import FormInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
import FormFolder from '@/components/form/folder.vue';
|
import FormFolder from '@/components/form/folder.vue';
|
||||||
import MkKeyValue from '@/components/MkKeyValue.vue';
|
import MkKeyValue from '@/components/MkKeyValue.vue';
|
||||||
import MkSelect from '@/components/form/select.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import FormSuspense from '@/components/form/suspense.vue';
|
import FormSuspense from '@/components/form/suspense.vue';
|
||||||
import MkFileListForAdmin from '@/components/MkFileListForAdmin.vue';
|
import MkFileListForAdmin from '@/components/MkFileListForAdmin.vue';
|
||||||
import MkInfo from '@/components/MkInfo.vue';
|
import MkInfo from '@/components/MkInfo.vue';
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/form/input.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import { host } from '@/config';
|
import { host } from '@/config';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { login } from '@/account';
|
import { login } from '@/account';
|
||||||
|
|
Loading…
Reference in a new issue