🎨
This commit is contained in:
parent
9109ae02a7
commit
3e81ebf8e9
11 changed files with 227 additions and 75 deletions
|
@ -116,7 +116,8 @@ export default defineComponent({
|
||||||
return {
|
return {
|
||||||
[symbols.PAGE_INFO]: {
|
[symbols.PAGE_INFO]: {
|
||||||
title: this.$ts.federation,
|
title: this.$ts.federation,
|
||||||
icon: 'fas fa-globe'
|
icon: 'fas fa-globe',
|
||||||
|
bg: 'var(--bg)',
|
||||||
},
|
},
|
||||||
host: '',
|
host: '',
|
||||||
state: 'federating',
|
state: 'federating',
|
||||||
|
|
|
@ -86,7 +86,8 @@ export default defineComponent({
|
||||||
return {
|
return {
|
||||||
[symbols.PAGE_INFO]: {
|
[symbols.PAGE_INFO]: {
|
||||||
title: this.$ts.abuseReports,
|
title: this.$ts.abuseReports,
|
||||||
icon: 'fas fa-exclamation-circle'
|
icon: 'fas fa-exclamation-circle',
|
||||||
|
bg: 'var(--bg)',
|
||||||
},
|
},
|
||||||
searchUsername: '',
|
searchUsername: '',
|
||||||
searchHost: '',
|
searchHost: '',
|
||||||
|
|
|
@ -64,7 +64,8 @@ export default defineComponent({
|
||||||
return {
|
return {
|
||||||
[symbols.PAGE_INFO]: {
|
[symbols.PAGE_INFO]: {
|
||||||
title: this.$ts.ads,
|
title: this.$ts.ads,
|
||||||
icon: 'fas fa-audio-description'
|
icon: 'fas fa-audio-description',
|
||||||
|
bg: 'var(--bg)',
|
||||||
},
|
},
|
||||||
ads: [],
|
ads: [],
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,8 @@ export default defineComponent({
|
||||||
return {
|
return {
|
||||||
[symbols.PAGE_INFO]: {
|
[symbols.PAGE_INFO]: {
|
||||||
title: this.$ts.announcements,
|
title: this.$ts.announcements,
|
||||||
icon: 'fas fa-broadcast-tower'
|
icon: 'fas fa-broadcast-tower',
|
||||||
|
bg: 'var(--bg)',
|
||||||
},
|
},
|
||||||
announcements: [],
|
announcements: [],
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,6 +78,7 @@ export default defineComponent({
|
||||||
[symbols.PAGE_INFO]: {
|
[symbols.PAGE_INFO]: {
|
||||||
title: this.$ts.customEmojis,
|
title: this.$ts.customEmojis,
|
||||||
icon: 'fas fa-laugh',
|
icon: 'fas fa-laugh',
|
||||||
|
bg: 'var(--bg)',
|
||||||
action: {
|
action: {
|
||||||
icon: 'fas fa-plus',
|
icon: 'fas fa-plus',
|
||||||
handler: this.add
|
handler: this.add
|
||||||
|
|
|
@ -1,20 +1,14 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="xrmjdkdw">
|
<div class="xrmjdkdw">
|
||||||
<div class="_section">
|
<MkContainer :foldable="true" class="lookup">
|
||||||
<div class="_content">
|
<template #header><i class="fas fa-search"></i> {{ $ts.lookup }}</template>
|
||||||
<MkButton primary @click="clear()"><i class="fas fa-trash-alt"></i> {{ $ts.clearCachedFiles }}</MkButton>
|
<div class="xrmjdkdw-lookup">
|
||||||
</div>
|
<MkInput class="item" v-model="q" type="text" @enter="find()">
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="_section lookup">
|
|
||||||
<div class="_title"><i class="fas fa-search"></i> {{ $ts.lookup }}</div>
|
|
||||||
<div class="_content">
|
|
||||||
<MkInput class="target" v-model="q" type="text" @enter="find()">
|
|
||||||
<template #label>{{ $ts.fileIdOrUrl }}</template>
|
<template #label>{{ $ts.fileIdOrUrl }}</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<MkButton @click="find()" primary><i class="fas fa-search"></i> {{ $ts.lookup }}</MkButton>
|
<MkButton @click="find()" primary><i class="fas fa-search"></i> {{ $ts.lookup }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</MkContainer>
|
||||||
|
|
||||||
<div class="_section">
|
<div class="_section">
|
||||||
<div class="_content">
|
<div class="_content">
|
||||||
|
@ -31,7 +25,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="inputs" style="display: flex; padding-top: 1.2em;">
|
<div class="inputs" style="display: flex; padding-top: 1.2em;">
|
||||||
<MkInput v-model="type" :debounce="true" type="search" style="margin: 0; flex: 1;">
|
<MkInput v-model="type" :debounce="true" type="search" style="margin: 0; flex: 1;">
|
||||||
<template #label>{{ $ts.type }}</template>
|
<template #label>MIME type</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</div>
|
</div>
|
||||||
<MkPagination :pagination="pagination" #default="{items}" class="urempief" ref="files">
|
<MkPagination :pagination="pagination" #default="{items}" class="urempief" ref="files">
|
||||||
|
@ -66,6 +60,7 @@ import MkButton from '@client/components/ui/button.vue';
|
||||||
import MkInput from '@client/components/form/input.vue';
|
import MkInput from '@client/components/form/input.vue';
|
||||||
import MkSelect from '@client/components/form/select.vue';
|
import MkSelect from '@client/components/form/select.vue';
|
||||||
import MkPagination from '@client/components/ui/pagination.vue';
|
import MkPagination from '@client/components/ui/pagination.vue';
|
||||||
|
import MkContainer from '@client/components/ui/container.vue';
|
||||||
import MkDriveFileThumbnail from '@client/components/drive-file-thumbnail.vue';
|
import MkDriveFileThumbnail from '@client/components/drive-file-thumbnail.vue';
|
||||||
import bytes from '@client/filters/bytes';
|
import bytes from '@client/filters/bytes';
|
||||||
import * as os from '@client/os';
|
import * as os from '@client/os';
|
||||||
|
@ -77,6 +72,7 @@ export default defineComponent({
|
||||||
MkInput,
|
MkInput,
|
||||||
MkSelect,
|
MkSelect,
|
||||||
MkPagination,
|
MkPagination,
|
||||||
|
MkContainer,
|
||||||
MkDriveFileThumbnail,
|
MkDriveFileThumbnail,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -86,7 +82,13 @@ export default defineComponent({
|
||||||
return {
|
return {
|
||||||
[symbols.PAGE_INFO]: {
|
[symbols.PAGE_INFO]: {
|
||||||
title: this.$ts.files,
|
title: this.$ts.files,
|
||||||
icon: 'fas fa-cloud'
|
icon: 'fas fa-cloud',
|
||||||
|
bg: 'var(--bg)',
|
||||||
|
actions: [{
|
||||||
|
text: this.$ts.clearCachedFiles,
|
||||||
|
icon: 'fas fa-trash-alt',
|
||||||
|
handler: this.clear
|
||||||
|
}]
|
||||||
},
|
},
|
||||||
q: null,
|
q: null,
|
||||||
origin: 'local',
|
origin: 'local',
|
||||||
|
@ -161,6 +163,10 @@ export default defineComponent({
|
||||||
.xrmjdkdw {
|
.xrmjdkdw {
|
||||||
margin: var(--margin);
|
margin: var(--margin);
|
||||||
|
|
||||||
|
> .lookup {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
.urempief {
|
.urempief {
|
||||||
margin-top: var(--margin);
|
margin-top: var(--margin);
|
||||||
|
|
||||||
|
@ -192,4 +198,12 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.xrmjdkdw-lookup {
|
||||||
|
padding: 16px;
|
||||||
|
|
||||||
|
> .item {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
97
src/client/pages/instance/index.link.vue
Normal file
97
src/client/pages/instance/index.link.vue
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
<template>
|
||||||
|
<div class="qmfkfnzh">
|
||||||
|
<a class="main _button" :href="to" target="_blank" v-if="external">
|
||||||
|
<span class="icon"><slot name="icon"></slot></span>
|
||||||
|
<span class="text"><slot></slot></span>
|
||||||
|
</a>
|
||||||
|
<MkA class="main _button" :class="{ active }" :to="to" :behavior="behavior" v-else>
|
||||||
|
<span class="icon"><slot name="icon"></slot></span>
|
||||||
|
<span class="text"><slot></slot></span>
|
||||||
|
</MkA>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { defineComponent } from 'vue';
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
props: {
|
||||||
|
to: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
active: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
external: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
behavior: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.qmfkfnzh {
|
||||||
|
> .main {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10px 16px 10px 14px;
|
||||||
|
border-radius: 999px;
|
||||||
|
font-size: 0.9em;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background: var(--panelHighlight);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: var(--accent);
|
||||||
|
background: var(--accentedBg);
|
||||||
|
}
|
||||||
|
|
||||||
|
> .icon {
|
||||||
|
width: 32px;
|
||||||
|
margin-right: 2px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
text-align: center;
|
||||||
|
opacity: 0.8;
|
||||||
|
|
||||||
|
&:empty {
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
& + .text {
|
||||||
|
padding-left: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .text {
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-right: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .right {
|
||||||
|
margin-left: auto;
|
||||||
|
opacity: 0.7;
|
||||||
|
|
||||||
|
> .text:not(:empty) {
|
||||||
|
margin-right: 0.75em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,51 +1,49 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="hiyeyicy" :class="{ wide: !narrow }" ref="el">
|
<div class="hiyeyicy" :class="{ wide: !narrow }" ref="el">
|
||||||
<div class="nav" v-if="!narrow || page == null">
|
<div class="nav" v-if="!narrow || page == null">
|
||||||
<FormBase>
|
<div class="group">
|
||||||
<FormGroup>
|
|
||||||
<div class="_debobigegoItem">
|
<div class="_debobigegoItem">
|
||||||
<div class="_debobigegoPanel lxpfedzu">
|
<div class="_debobigegoPanel lxpfedzu">
|
||||||
<img :src="$instance.iconUrl || '/favicon.ico'" alt="" class="icon"/>
|
<img :src="$instance.iconUrl || '/favicon.ico'" alt="" class="icon"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<FormLink :active="page === 'overview'" replace to="/instance/overview"><template #icon><i class="fas fa-tachometer-alt"></i></template>{{ $ts.overview }}</FormLink>
|
<XLink :active="page === 'overview'" replace to="/instance/overview"><template #icon><i class="fas fa-tachometer-alt"></i></template>{{ $ts.overview }}</XLink>
|
||||||
</FormGroup>
|
</div>
|
||||||
<FormGroup>
|
<div class="group">
|
||||||
<template #label>{{ $ts.quickAction }}</template>
|
<div class="label">{{ $ts.quickAction }}</div>
|
||||||
<FormButton @click="lookup"><i class="fas fa-search"></i> {{ $ts.lookup }}</FormButton>
|
<FormButton @click="lookup"><i class="fas fa-search"></i> {{ $ts.lookup }}</FormButton>
|
||||||
<FormButton v-if="$instance.disableRegistration" @click="invite"><i class="fas fa-user"></i> {{ $ts.invite }}</FormButton>
|
<FormButton v-if="$instance.disableRegistration" @click="invite"><i class="fas fa-user"></i> {{ $ts.invite }}</FormButton>
|
||||||
</FormGroup>
|
</div>
|
||||||
<FormGroup>
|
<div class="group">
|
||||||
<template #label>{{ $ts.administration }}</template>
|
<div class="label">{{ $ts.administration }}</div>
|
||||||
<FormLink :active="page === 'users'" replace to="/instance/users"><template #icon><i class="fas fa-users"></i></template>{{ $ts.users }}</FormLink>
|
<XLink :active="page === 'users'" replace to="/instance/users"><template #icon><i class="fas fa-users"></i></template>{{ $ts.users }}</XLink>
|
||||||
<FormLink :active="page === 'emojis'" replace to="/instance/emojis"><template #icon><i class="fas fa-laugh"></i></template>{{ $ts.customEmojis }}</FormLink>
|
<XLink :active="page === 'emojis'" replace to="/instance/emojis"><template #icon><i class="fas fa-laugh"></i></template>{{ $ts.customEmojis }}</XLink>
|
||||||
<FormLink :active="page === 'federation'" replace to="/instance/federation"><template #icon><i class="fas fa-globe"></i></template>{{ $ts.federation }}</FormLink>
|
<XLink :active="page === 'federation'" replace to="/instance/federation"><template #icon><i class="fas fa-globe"></i></template>{{ $ts.federation }}</XLink>
|
||||||
<FormLink :active="page === 'queue'" replace to="/instance/queue"><template #icon><i class="fas fa-clipboard-list"></i></template>{{ $ts.jobQueue }}</FormLink>
|
<XLink :active="page === 'queue'" replace to="/instance/queue"><template #icon><i class="fas fa-clipboard-list"></i></template>{{ $ts.jobQueue }}</XLink>
|
||||||
<FormLink :active="page === 'files'" replace to="/instance/files"><template #icon><i class="fas fa-cloud"></i></template>{{ $ts.files }}</FormLink>
|
<XLink :active="page === 'files'" replace to="/instance/files"><template #icon><i class="fas fa-cloud"></i></template>{{ $ts.files }}</XLink>
|
||||||
<FormLink :active="page === 'announcements'" replace to="/instance/announcements"><template #icon><i class="fas fa-broadcast-tower"></i></template>{{ $ts.announcements }}</FormLink>
|
<XLink :active="page === 'announcements'" replace to="/instance/announcements"><template #icon><i class="fas fa-broadcast-tower"></i></template>{{ $ts.announcements }}</XLink>
|
||||||
<FormLink :active="page === 'ads'" replace to="/instance/ads"><template #icon><i class="fas fa-audio-description"></i></template>{{ $ts.ads }}</FormLink>
|
<XLink :active="page === 'ads'" replace to="/instance/ads"><template #icon><i class="fas fa-audio-description"></i></template>{{ $ts.ads }}</XLink>
|
||||||
<FormLink :active="page === 'abuses'" replace to="/instance/abuses"><template #icon><i class="fas fa-exclamation-circle"></i></template>{{ $ts.abuseReports }}</FormLink>
|
<XLink :active="page === 'abuses'" replace to="/instance/abuses"><template #icon><i class="fas fa-exclamation-circle"></i></template>{{ $ts.abuseReports }}</XLink>
|
||||||
</FormGroup>
|
</div>
|
||||||
<FormGroup>
|
<div class="group">
|
||||||
<template #label>{{ $ts.settings }}</template>
|
<div class="label">{{ $ts.settings }}</div>
|
||||||
<FormLink :active="page === 'settings'" replace to="/instance/settings"><template #icon><i class="fas fa-cog"></i></template>{{ $ts.general }}</FormLink>
|
<XLink :active="page === 'settings'" replace to="/instance/settings"><template #icon><i class="fas fa-cog"></i></template>{{ $ts.general }}</XLink>
|
||||||
<FormLink :active="page === 'files-settings'" replace to="/instance/files-settings"><template #icon><i class="fas fa-cloud"></i></template>{{ $ts.files }}</FormLink>
|
<XLink :active="page === 'files-settings'" replace to="/instance/files-settings"><template #icon><i class="fas fa-cloud"></i></template>{{ $ts.files }}</XLink>
|
||||||
<FormLink :active="page === 'email-settings'" replace to="/instance/email-settings"><template #icon><i class="fas fa-envelope"></i></template>{{ $ts.emailServer }}</FormLink>
|
<XLink :active="page === 'email-settings'" replace to="/instance/email-settings"><template #icon><i class="fas fa-envelope"></i></template>{{ $ts.emailServer }}</XLink>
|
||||||
<FormLink :active="page === 'object-storage'" replace to="/instance/object-storage"><template #icon><i class="fas fa-cloud"></i></template>{{ $ts.objectStorage }}</FormLink>
|
<XLink :active="page === 'object-storage'" replace to="/instance/object-storage"><template #icon><i class="fas fa-cloud"></i></template>{{ $ts.objectStorage }}</XLink>
|
||||||
<FormLink :active="page === 'security'" replace to="/instance/security"><template #icon><i class="fas fa-lock"></i></template>{{ $ts.security }}</FormLink>
|
<XLink :active="page === 'security'" replace to="/instance/security"><template #icon><i class="fas fa-lock"></i></template>{{ $ts.security }}</XLink>
|
||||||
<FormLink :active="page === 'service-worker'" replace to="/instance/service-worker"><template #icon><i class="fas fa-bolt"></i></template>ServiceWorker</FormLink>
|
<XLink :active="page === 'service-worker'" replace to="/instance/service-worker"><template #icon><i class="fas fa-bolt"></i></template>ServiceWorker</XLink>
|
||||||
<FormLink :active="page === 'relays'" replace to="/instance/relays"><template #icon><i class="fas fa-globe"></i></template>{{ $ts.relays }}</FormLink>
|
<XLink :active="page === 'relays'" replace to="/instance/relays"><template #icon><i class="fas fa-globe"></i></template>{{ $ts.relays }}</XLink>
|
||||||
<FormLink :active="page === 'integrations'" replace to="/instance/integrations"><template #icon><i class="fas fa-share-alt"></i></template>{{ $ts.integration }}</FormLink>
|
<XLink :active="page === 'integrations'" replace to="/instance/integrations"><template #icon><i class="fas fa-share-alt"></i></template>{{ $ts.integration }}</XLink>
|
||||||
<FormLink :active="page === 'instance-block'" replace to="/instance/instance-block"><template #icon><i class="fas fa-ban"></i></template>{{ $ts.instanceBlocking }}</FormLink>
|
<XLink :active="page === 'instance-block'" replace to="/instance/instance-block"><template #icon><i class="fas fa-ban"></i></template>{{ $ts.instanceBlocking }}</XLink>
|
||||||
<FormLink :active="page === 'proxy-account'" replace to="/instance/proxy-account"><template #icon><i class="fas fa-ghost"></i></template>{{ $ts.proxyAccount }}</FormLink>
|
<XLink :active="page === 'proxy-account'" replace to="/instance/proxy-account"><template #icon><i class="fas fa-ghost"></i></template>{{ $ts.proxyAccount }}</XLink>
|
||||||
<FormLink :active="page === 'other-settings'" replace to="/instance/other-settings"><template #icon><i class="fas fa-cogs"></i></template>{{ $ts.other }}</FormLink>
|
<XLink :active="page === 'other-settings'" replace to="/instance/other-settings"><template #icon><i class="fas fa-cogs"></i></template>{{ $ts.other }}</XLink>
|
||||||
</FormGroup>
|
</div>
|
||||||
<FormGroup>
|
<div class="group">
|
||||||
<template #label>{{ $ts.info }}</template>
|
<div class="label">{{ $ts.info }}</div>
|
||||||
<FormLink :active="page === 'database'" replace to="/instance/database"><template #icon><i class="fas fa-database"></i></template>{{ $ts.database }}</FormLink>
|
<XLink :active="page === 'database'" replace to="/instance/database"><template #icon><i class="fas fa-database"></i></template>{{ $ts.database }}</XLink>
|
||||||
<FormLink :active="page === 'logs'" replace to="/instance/logs"><template #icon><i class="fas fa-stream"></i></template>{{ $ts.logs }}</FormLink>
|
<XLink :active="page === 'logs'" replace to="/instance/logs"><template #icon><i class="fas fa-stream"></i></template>{{ $ts.logs }}</XLink>
|
||||||
</FormGroup>
|
</div>
|
||||||
</FormBase>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<component :is="component" :key="page" @info="onInfo" v-bind="pageProps"/>
|
<component :is="component" :key="page" @info="onInfo" v-bind="pageProps"/>
|
||||||
|
@ -56,7 +54,7 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { computed, defineAsyncComponent, defineComponent, nextTick, onMounted, reactive, ref, watch } from 'vue';
|
import { computed, defineAsyncComponent, defineComponent, nextTick, onMounted, reactive, ref, watch } from 'vue';
|
||||||
import { i18n } from '@client/i18n';
|
import { i18n } from '@client/i18n';
|
||||||
import FormLink from '@client/components/debobigego/link.vue';
|
import XLink from './index.link.vue';
|
||||||
import FormGroup from '@client/components/debobigego/group.vue';
|
import FormGroup from '@client/components/debobigego/group.vue';
|
||||||
import FormBase from '@client/components/debobigego/base.vue';
|
import FormBase from '@client/components/debobigego/base.vue';
|
||||||
import FormButton from '@client/components/debobigego/button.vue';
|
import FormButton from '@client/components/debobigego/button.vue';
|
||||||
|
@ -68,7 +66,7 @@ import { lookupUser } from '@client/scripts/lookup-user';
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
||||||
FormBase,
|
FormBase,
|
||||||
FormLink,
|
XLink,
|
||||||
FormGroup,
|
FormGroup,
|
||||||
FormButton,
|
FormButton,
|
||||||
},
|
},
|
||||||
|
@ -214,15 +212,25 @@ export default defineComponent({
|
||||||
.hiyeyicy {
|
.hiyeyicy {
|
||||||
&.wide {
|
&.wide {
|
||||||
display: flex;
|
display: flex;
|
||||||
max-width: 1100px;
|
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
> .nav {
|
> .nav {
|
||||||
width: 32%;
|
width: 32%;
|
||||||
|
max-width: 320px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border-right: solid 0.5px var(--divider);
|
border-right: solid 0.5px var(--divider);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
|
||||||
|
> .group {
|
||||||
|
padding: 16px;
|
||||||
|
|
||||||
|
> .label {
|
||||||
|
font-size: 0.9em;
|
||||||
|
opacity: 0.7;
|
||||||
|
margin: 0 0 8px 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
> .main {
|
> .main {
|
||||||
|
|
|
@ -86,7 +86,8 @@ export default defineComponent({
|
||||||
return {
|
return {
|
||||||
[symbols.PAGE_INFO]: {
|
[symbols.PAGE_INFO]: {
|
||||||
title: this.$ts.overview,
|
title: this.$ts.overview,
|
||||||
icon: 'fas fa-tachometer-alt'
|
icon: 'fas fa-tachometer-alt',
|
||||||
|
bg: 'var(--bg)',
|
||||||
},
|
},
|
||||||
page: 'index',
|
page: 'index',
|
||||||
version,
|
version,
|
||||||
|
|
|
@ -6,15 +6,15 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="users">
|
<div class="users">
|
||||||
<div class="inputs" style="display: flex;">
|
<div class="inputs">
|
||||||
<MkSelect v-model="sort" style="margin: 0; flex: 1;">
|
<MkSelect v-model="sort" style="flex: 1;">
|
||||||
<template #label>{{ $ts.sort }}</template>
|
<template #label>{{ $ts.sort }}</template>
|
||||||
<option value="-createdAt">{{ $ts.registeredDate }} ({{ $ts.ascendingOrder }})</option>
|
<option value="-createdAt">{{ $ts.registeredDate }} ({{ $ts.ascendingOrder }})</option>
|
||||||
<option value="+createdAt">{{ $ts.registeredDate }} ({{ $ts.descendingOrder }})</option>
|
<option value="+createdAt">{{ $ts.registeredDate }} ({{ $ts.descendingOrder }})</option>
|
||||||
<option value="-updatedAt">{{ $ts.lastUsed }} ({{ $ts.ascendingOrder }})</option>
|
<option value="-updatedAt">{{ $ts.lastUsed }} ({{ $ts.ascendingOrder }})</option>
|
||||||
<option value="+updatedAt">{{ $ts.lastUsed }} ({{ $ts.descendingOrder }})</option>
|
<option value="+updatedAt">{{ $ts.lastUsed }} ({{ $ts.descendingOrder }})</option>
|
||||||
</MkSelect>
|
</MkSelect>
|
||||||
<MkSelect v-model="state" style="margin: 0; flex: 1;">
|
<MkSelect v-model="state" style="flex: 1;">
|
||||||
<template #label>{{ $ts.state }}</template>
|
<template #label>{{ $ts.state }}</template>
|
||||||
<option value="all">{{ $ts.all }}</option>
|
<option value="all">{{ $ts.all }}</option>
|
||||||
<option value="available">{{ $ts.normal }}</option>
|
<option value="available">{{ $ts.normal }}</option>
|
||||||
|
@ -23,18 +23,18 @@
|
||||||
<option value="silenced">{{ $ts.silence }}</option>
|
<option value="silenced">{{ $ts.silence }}</option>
|
||||||
<option value="suspended">{{ $ts.suspend }}</option>
|
<option value="suspended">{{ $ts.suspend }}</option>
|
||||||
</MkSelect>
|
</MkSelect>
|
||||||
<MkSelect v-model="origin" style="margin: 0; flex: 1;">
|
<MkSelect v-model="origin" style="flex: 1;">
|
||||||
<template #label>{{ $ts.instance }}</template>
|
<template #label>{{ $ts.instance }}</template>
|
||||||
<option value="combined">{{ $ts.all }}</option>
|
<option value="combined">{{ $ts.all }}</option>
|
||||||
<option value="local">{{ $ts.local }}</option>
|
<option value="local">{{ $ts.local }}</option>
|
||||||
<option value="remote">{{ $ts.remote }}</option>
|
<option value="remote">{{ $ts.remote }}</option>
|
||||||
</MkSelect>
|
</MkSelect>
|
||||||
</div>
|
</div>
|
||||||
<div class="inputs" style="display: flex; padding-top: 1.2em;">
|
<div class="inputs">
|
||||||
<MkInput v-model="searchUsername" style="margin: 0; flex: 1;" type="text" spellcheck="false" @update:modelValue="$refs.users.reload()">
|
<MkInput v-model="searchUsername" style="flex: 1;" type="text" spellcheck="false" @update:modelValue="$refs.users.reload()">
|
||||||
<template #label>{{ $ts.username }}</template>
|
<template #label>{{ $ts.username }}</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<MkInput v-model="searchHost" style="margin: 0; flex: 1;" type="text" spellcheck="false" @update:modelValue="$refs.users.reload()" :disabled="pagination.params().origin === 'local'">
|
<MkInput v-model="searchHost" style="flex: 1;" type="text" spellcheck="false" @update:modelValue="$refs.users.reload()" :disabled="pagination.params().origin === 'local'">
|
||||||
<template #label>{{ $ts.host }}</template>
|
<template #label>{{ $ts.host }}</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
</div>
|
</div>
|
||||||
|
@ -90,6 +90,7 @@ export default defineComponent({
|
||||||
[symbols.PAGE_INFO]: {
|
[symbols.PAGE_INFO]: {
|
||||||
title: this.$ts.users,
|
title: this.$ts.users,
|
||||||
icon: 'fas fa-users',
|
icon: 'fas fa-users',
|
||||||
|
bg: 'var(--bg)',
|
||||||
action: {
|
action: {
|
||||||
icon: 'fas fa-search',
|
icon: 'fas fa-search',
|
||||||
handler: this.searchUser
|
handler: this.searchUser
|
||||||
|
@ -179,6 +180,19 @@ export default defineComponent({
|
||||||
> .users {
|
> .users {
|
||||||
margin: var(--margin);
|
margin: var(--margin);
|
||||||
|
|
||||||
|
> .inputs {
|
||||||
|
display: flex;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
|
||||||
|
> * {
|
||||||
|
margin-right: 16px;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
> .users {
|
> .users {
|
||||||
margin-top: var(--margin);
|
margin-top: var(--margin);
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="vvcocwet" :class="{ wide: !narrow }" ref="el">
|
<div class="vvcocwet" :class="{ wide: !narrow }" ref="el">
|
||||||
<div class="nav" v-if="!narrow || page == null">
|
<div class="nav" v-if="!narrow || page == null">
|
||||||
<div class="group">
|
<div class="group accounts">
|
||||||
<MkAvatar :user="$i" class="avatar"/>
|
<MkAvatar :user="$i" class="avatar"/>
|
||||||
<XLink :active="page === 'accounts'" replace to="/settings/accounts"><template #icon><i class="fas fa-users"></i></template>{{ $ts.accounts }}</XLink>
|
<XLink :active="page === 'accounts'" replace to="/settings/accounts"><template #icon><i class="fas fa-users"></i></template>{{ $ts.accounts }}</XLink>
|
||||||
</div>
|
</div>
|
||||||
<MkInfo v-if="emailNotConfigured || true" warn>{{ $ts.emailNotConfiguredWarning }} <MkA to="/settings/email" class="_link">{{ $ts.configure }}</MkA></MkInfo>
|
<MkInfo v-if="emailNotConfigured || true" warn class="info">{{ $ts.emailNotConfiguredWarning }} <MkA to="/settings/email" class="_link">{{ $ts.configure }}</MkA></MkInfo>
|
||||||
<div class="group">
|
<div class="group">
|
||||||
<div class="label">{{ $ts.basicSettings }}</div>
|
<div class="label">{{ $ts.basicSettings }}</div>
|
||||||
<XLink :active="page === 'profile'" replace to="/settings/profile"><template #icon><i class="fas fa-user"></i></template>{{ $ts.profile }}</XLink>
|
<XLink :active="page === 'profile'" replace to="/settings/profile"><template #icon><i class="fas fa-user"></i></template>{{ $ts.profile }}</XLink>
|
||||||
|
@ -207,7 +207,20 @@ export default defineComponent({
|
||||||
> .label {
|
> .label {
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
margin: 0 0 8px 8px;
|
margin: 0 0 8px 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .info {
|
||||||
|
margin: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .accounts {
|
||||||
|
> .avatar {
|
||||||
|
display: block;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
margin: 0 auto 8px auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue