Improve UI
This commit is contained in:
parent
45e5d89353
commit
fb8ed718ce
6 changed files with 57 additions and 21 deletions
|
@ -56,6 +56,7 @@ export default defineComponent({
|
||||||
includeLocalRenotes: this.$store.state.showLocalRenotes
|
includeLocalRenotes: this.$store.state.showLocalRenotes
|
||||||
},
|
},
|
||||||
query: {},
|
query: {},
|
||||||
|
date: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -157,7 +158,7 @@ export default defineComponent({
|
||||||
endpoint: endpoint,
|
endpoint: endpoint,
|
||||||
limit: 10,
|
limit: 10,
|
||||||
params: init => ({
|
params: init => ({
|
||||||
untilDate: init ? undefined : (this.date ? this.date.getTime() : undefined),
|
untilDate: this.date?.getTime(),
|
||||||
...this.baseQuery, ...this.query
|
...this.baseQuery, ...this.query
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
@ -171,6 +172,11 @@ export default defineComponent({
|
||||||
methods: {
|
methods: {
|
||||||
focus() {
|
focus() {
|
||||||
this.$refs.tl.focus();
|
this.$refs.tl.focus();
|
||||||
|
},
|
||||||
|
|
||||||
|
timetravel(date?: Date) {
|
||||||
|
this.date = date;
|
||||||
|
this.$refs.tl.reload();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -45,6 +45,7 @@ import MkRemoteCaution from '@client/components/remote-caution.vue';
|
||||||
import MkButton from '@client/components/ui/button.vue';
|
import MkButton from '@client/components/ui/button.vue';
|
||||||
import * as os from '@client/os';
|
import * as os from '@client/os';
|
||||||
import * as symbols from '@client/symbols';
|
import * as symbols from '@client/symbols';
|
||||||
|
import { url } from '@client/config';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
||||||
|
@ -65,6 +66,11 @@ export default defineComponent({
|
||||||
[symbols.PAGE_INFO]: computed(() => this.note ? {
|
[symbols.PAGE_INFO]: computed(() => this.note ? {
|
||||||
title: this.$ts.note,
|
title: this.$ts.note,
|
||||||
avatar: this.note.user,
|
avatar: this.note.user,
|
||||||
|
share: {
|
||||||
|
title: this.$t('noteOf', { user: this.note.user.name }),
|
||||||
|
text: this.note.text,
|
||||||
|
url: `${url}/notes/${this.note.id}`
|
||||||
|
},
|
||||||
} : null),
|
} : null),
|
||||||
note: null,
|
note: null,
|
||||||
clips: null,
|
clips: null,
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { faBell } from '@fortawesome/free-solid-svg-icons';
|
import { faBell, faCheck } from '@fortawesome/free-solid-svg-icons';
|
||||||
import Progress from '@client/scripts/loading';
|
import Progress from '@client/scripts/loading';
|
||||||
import XNotifications from '@client/components/notifications.vue';
|
import XNotifications from '@client/components/notifications.vue';
|
||||||
import * as os from '@client/os';
|
import * as os from '@client/os';
|
||||||
|
@ -21,7 +21,14 @@ export default defineComponent({
|
||||||
return {
|
return {
|
||||||
[symbols.PAGE_INFO]: {
|
[symbols.PAGE_INFO]: {
|
||||||
title: this.$ts.notifications,
|
title: this.$ts.notifications,
|
||||||
icon: faBell
|
icon: faBell,
|
||||||
|
actions: [{
|
||||||
|
text: this.$ts.markAllAsRead,
|
||||||
|
icon: faCheck,
|
||||||
|
handler: () => {
|
||||||
|
os.apiWithDialog('notifications/mark-all-as-read');
|
||||||
|
}
|
||||||
|
}]
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, defineAsyncComponent, computed } from 'vue';
|
import { defineComponent, defineAsyncComponent, computed } from 'vue';
|
||||||
import { faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faListUl, faSatellite, faSatelliteDish, faCircle, faEllipsisH, faPencilAlt, faAt } from '@fortawesome/free-solid-svg-icons';
|
import { faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faListUl, faSatellite, faSatelliteDish, faCircle, faEllipsisH, faPencilAlt, faAt } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { faComments, faEnvelope } from '@fortawesome/free-regular-svg-icons';
|
import { faComments, faEnvelope, faCalendarAlt } from '@fortawesome/free-regular-svg-icons';
|
||||||
import Progress from '@client/scripts/loading';
|
import Progress from '@client/scripts/loading';
|
||||||
import XTimeline from '@client/components/timeline.vue';
|
import XTimeline from '@client/components/timeline.vue';
|
||||||
import XPostForm from '@client/components/post-form.vue';
|
import XPostForm from '@client/components/post-form.vue';
|
||||||
|
@ -67,10 +67,11 @@ export default defineComponent({
|
||||||
[symbols.PAGE_INFO]: computed(() => ({
|
[symbols.PAGE_INFO]: computed(() => ({
|
||||||
title: this.$ts.timeline,
|
title: this.$ts.timeline,
|
||||||
icon: this.src === 'local' ? faComments : this.src === 'social' ? faShareAlt : this.src === 'global' ? faGlobe : faHome,
|
icon: this.src === 'local' ? faComments : this.src === 'social' ? faShareAlt : this.src === 'global' ? faGlobe : faHome,
|
||||||
action: {
|
actions: [{
|
||||||
icon: faPencilAlt,
|
icon: faCalendarAlt,
|
||||||
handler: () => os.post()
|
text: this.$ts.jumpToSpecifiedDate,
|
||||||
}
|
handler: this.timetravel
|
||||||
|
}]
|
||||||
})),
|
})),
|
||||||
faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faComments, faListUl, faSatellite, faSatelliteDish, faCircle, faEllipsisH, faAt, faEnvelope,
|
faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faComments, faListUl, faSatellite, faSatelliteDish, faCircle, faEllipsisH, faAt, faEnvelope,
|
||||||
};
|
};
|
||||||
|
|
|
@ -276,10 +276,6 @@ export default defineComponent({
|
||||||
title: this.user.name,
|
title: this.user.name,
|
||||||
url: `${url}/@${this.user.username}`
|
url: `${url}/@${this.user.username}`
|
||||||
},
|
},
|
||||||
action: {
|
|
||||||
icon: faEllipsisH,
|
|
||||||
handler: this.menu
|
|
||||||
}
|
|
||||||
} : null),
|
} : null),
|
||||||
user: null,
|
user: null,
|
||||||
error: null,
|
error: null,
|
||||||
|
|
|
@ -12,8 +12,12 @@
|
||||||
<MkUserName v-else-if="info.userName" :user="info.userName" :nowrap="false" class="text"/>
|
<MkUserName v-else-if="info.userName" :user="info.userName" :nowrap="false" class="text"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="_button menu" @click.stop="menu"><Fa :icon="faEllipsisH"/></button>
|
<div class="buttons">
|
||||||
<!--<button class="_button action" v-if="info.action" @click.stop="info.action.handler"><Fa :icon="info.action.icon" :key="info.action.icon"/></button>-->
|
<template v-if="info.actions && showActions">
|
||||||
|
<button v-for="action in info.actions" class="_button button" @click.stop="action.handler" v-tooltip="action.text"><Fa :icon="action.icon"/></button>
|
||||||
|
</template>
|
||||||
|
<button v-if="showMenu" class="_button button" @click.stop="menu"><Fa :icon="faEllipsisH"/></button>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -43,11 +47,21 @@ export default defineComponent({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
canBack: false,
|
canBack: false,
|
||||||
|
showActions: false,
|
||||||
height: 0,
|
height: 0,
|
||||||
faChevronLeft, faCircle, faShareAlt, faEllipsisH,
|
faChevronLeft, faCircle, faShareAlt, faEllipsisH,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
showMenu() {
|
||||||
|
if (this.info.actions != null && !this.showActions) return true;
|
||||||
|
if (this.info.menu != null) return true;
|
||||||
|
if (this.info.share != null) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
$route: {
|
$route: {
|
||||||
handler(to, from) {
|
handler(to, from) {
|
||||||
|
@ -59,8 +73,10 @@ export default defineComponent({
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.height = this.$el.parentElement.offsetHeight + 'px';
|
this.height = this.$el.parentElement.offsetHeight + 'px';
|
||||||
|
this.showActions = this.$el.parentElement.offsetWidth >= 500;
|
||||||
new ResizeObserver((entries, observer) => {
|
new ResizeObserver((entries, observer) => {
|
||||||
this.height = this.$el.parentElement.offsetHeight + 'px';
|
this.height = this.$el.parentElement.offsetHeight + 'px';
|
||||||
|
this.showActions = this.$el.parentElement.offsetWidth >= 500;
|
||||||
}).observe(this.$el);
|
}).observe(this.$el);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -99,21 +115,25 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
> .back,
|
> .back {
|
||||||
> .menu {
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
left: 0;
|
||||||
height: var(--height);
|
height: var(--height);
|
||||||
width: var(--height);
|
width: var(--height);
|
||||||
}
|
}
|
||||||
|
|
||||||
> .back {
|
> .buttons {
|
||||||
left: 0;
|
position: absolute;
|
||||||
}
|
z-index: 1;
|
||||||
|
top: 0;
|
||||||
> .menu {
|
|
||||||
right: 0;
|
right: 0;
|
||||||
|
|
||||||
|
> .button {
|
||||||
|
height: var(--height);
|
||||||
|
width: var(--height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
> .titleContainer {
|
> .titleContainer {
|
||||||
|
|
Loading…
Reference in a new issue