summaryrefslogtreecommitdiff
path: root/packages/frontend/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/ui')
-rw-r--r--packages/frontend/src/ui/_common_/common.ts25
-rw-r--r--packages/frontend/src/ui/classic.header.vue4
-rw-r--r--packages/frontend/src/ui/classic.vue2
-rw-r--r--packages/frontend/src/ui/deck.vue17
-rw-r--r--packages/frontend/src/ui/deck/antenna-column.vue21
-rw-r--r--packages/frontend/src/ui/deck/column.vue5
-rw-r--r--packages/frontend/src/ui/deck/deck-store.ts4
-rw-r--r--packages/frontend/src/ui/deck/list-column.vue21
-rw-r--r--packages/frontend/src/ui/deck/main-column.vue11
-rw-r--r--packages/frontend/src/ui/minimum.vue6
-rw-r--r--packages/frontend/src/ui/universal.vue3
-rw-r--r--packages/frontend/src/ui/zen.vue6
12 files changed, 80 insertions, 45 deletions
diff --git a/packages/frontend/src/ui/_common_/common.ts b/packages/frontend/src/ui/_common_/common.ts
index 53042a4ce7..aa2f7b9c55 100644
--- a/packages/frontend/src/ui/_common_/common.ts
+++ b/packages/frontend/src/ui/_common_/common.ts
@@ -33,7 +33,12 @@ export function openInstanceMenu(ev: MouseEvent) {
text: i18n.ts.ads,
icon: 'ti ti-ad',
to: '/ads',
- }, {
+ }, ($i && ($i.isAdmin || $i.policies.canInvite) && instance.disableRegistration) ? {
+ type: 'link',
+ to: '/invite',
+ text: i18n.ts.invite,
+ icon: 'ti ti-user-plus',
+ } : undefined, {
type: 'parent',
text: i18n.ts.tools,
icon: 'ti ti-tool',
@@ -52,23 +57,7 @@ export function openInstanceMenu(ev: MouseEvent) {
to: '/clicker',
text: '🍪👈',
icon: 'ti ti-cookie',
- }, ($i && ($i.isAdmin || $i.policies.canInvite) && instance.disableRegistration) ? {
- text: i18n.ts.invite,
- icon: 'ti ti-user-plus',
- action: () => {
- os.api('invite').then(x => {
- os.alert({
- type: 'info',
- text: x.code,
- });
- }).catch(err => {
- os.alert({
- type: 'error',
- text: err,
- });
- });
- },
- } : undefined, ($i && ($i.isAdmin || $i.policies.canManageCustomEmojis)) ? {
+ }, ($i && ($i.isAdmin || $i.policies.canManageCustomEmojis)) ? {
type: 'link',
to: '/custom-emojis-manager',
text: i18n.ts.manageCustomEmojis,
diff --git a/packages/frontend/src/ui/classic.header.vue b/packages/frontend/src/ui/classic.header.vue
index 747d4edcb4..2c41e7759b 100644
--- a/packages/frontend/src/ui/classic.header.vue
+++ b/packages/frontend/src/ui/classic.header.vue
@@ -82,7 +82,7 @@ function openAccountMenu(ev: MouseEvent) {
onMounted(() => {
window.addEventListener('resize', () => {
settingsWindowed = (window.innerWidth >= WINDOW_THRESHOLD);
- }, { passive: true });
+ }, { passive: true });
});
</script>
@@ -177,7 +177,7 @@ onMounted(() => {
> .post {
display: inline-block;
-
+
> .button {
width: 40px;
height: 40px;
diff --git a/packages/frontend/src/ui/classic.vue b/packages/frontend/src/ui/classic.vue
index d50f2b0454..2c58c29840 100644
--- a/packages/frontend/src/ui/classic.vue
+++ b/packages/frontend/src/ui/classic.vue
@@ -219,7 +219,7 @@ onMounted(() => {
&.fullView {
margin: 0;
-
+
> .sidebar {
display: none;
}
diff --git a/packages/frontend/src/ui/deck.vue b/packages/frontend/src/ui/deck.vue
index bd5d5beb84..988fda1c2f 100644
--- a/packages/frontend/src/ui/deck.vue
+++ b/packages/frontend/src/ui/deck.vue
@@ -4,12 +4,13 @@
<div :class="$style.main">
<XStatusBars/>
- <div ref="columnsEl" :class="[$style.sections, { [$style.center]: deckStore.reactiveState.columnAlign.value === 'center', [$style.snapScroll]: snapScroll }]" @contextmenu.self.prevent="onContextmenu">
+ <div ref="columnsEl" :class="[$style.sections, { [$style.center]: deckStore.reactiveState.columnAlign.value === 'center', [$style.snapScroll]: snapScroll }]" @contextmenu.self.prevent="onContextmenu" @wheel.self="onWheel">
<!-- sectionを利用しているのは、deck.vue側でcolumnに対してfirst-of-typeを効かせるため -->
<section
v-for="ids in layout"
:class="$style.section"
:style="columns.filter(c => ids.includes(c.id)).some(c => c.flexible) ? { flex: 1, minWidth: '350px' } : { width: Math.max(...columns.filter(c => ids.includes(c.id)).map(c => c.width)) + 'px' }"
+ @wheel.self="onWheel"
>
<component
:is="columnComponents[columns.find(c => c.id === id)!.type] ?? XTlColumn"
@@ -19,6 +20,7 @@
:class="$style.column"
:column="columns.find(c => c.id === id)"
:isStacked="ids.length > 1"
+ @headerWheel="onWheel"
/>
</section>
<div v-if="layout.length === 0" class="_panel" :class="$style.onboarding">
@@ -196,15 +198,14 @@ const onContextmenu = (ev) => {
}], ev);
};
-document.documentElement.style.overflowY = 'hidden';
-document.documentElement.style.scrollBehavior = 'auto';
-window.addEventListener('wheel', (ev) => {
- if (ev.target === columnsEl && ev.deltaX === 0) {
- columnsEl.scrollLeft += ev.deltaY;
- } else if (getScrollContainer(ev.target as HTMLElement) == null && ev.deltaX === 0) {
+function onWheel(ev: WheelEvent) {
+ if (ev.deltaX === 0) {
columnsEl.scrollLeft += ev.deltaY;
}
-});
+}
+
+document.documentElement.style.overflowY = 'hidden';
+document.documentElement.style.scrollBehavior = 'auto';
loadDeck();
diff --git a/packages/frontend/src/ui/deck/antenna-column.vue b/packages/frontend/src/ui/deck/antenna-column.vue
index d21a9cc580..a1ca32724f 100644
--- a/packages/frontend/src/ui/deck/antenna-column.vue
+++ b/packages/frontend/src/ui/deck/antenna-column.vue
@@ -44,11 +44,22 @@ async function setAntenna() {
});
}
-const menu = [{
- icon: 'ti ti-pencil',
- text: i18n.ts.selectAntenna,
- action: setAntenna,
-}];
+function editAntenna() {
+ os.pageWindow('my/antennas/' + props.column.antennaId);
+}
+
+const menu = [
+ {
+ icon: 'ti ti-pencil',
+ text: i18n.ts.selectAntenna,
+ action: setAntenna,
+ },
+ {
+ icon: 'ti ti-settings',
+ text: i18n.ts.editAntenna,
+ action: editAntenna,
+ },
+];
/*
function focus() {
diff --git a/packages/frontend/src/ui/deck/column.vue b/packages/frontend/src/ui/deck/column.vue
index c8d6744a37..f6c5c8de46 100644
--- a/packages/frontend/src/ui/deck/column.vue
+++ b/packages/frontend/src/ui/deck/column.vue
@@ -12,6 +12,7 @@
@dragstart="onDragstart"
@dragend="onDragend"
@contextmenu.prevent.stop="onContextmenu"
+ @wheel="emit('headerWheel', $event)"
>
<svg viewBox="0 0 256 128" :class="$style.tabShape">
<g transform="matrix(6.2431,0,0,6.2431,-677.417,-29.3839)">
@@ -56,6 +57,10 @@ const props = withDefaults(defineProps<{
naked: false,
});
+const emit = defineEmits<{
+ (ev: 'headerWheel', ctx: WheelEvent): void;
+}>();
+
let body = $shallowRef<HTMLDivElement | null>();
let dragging = $ref(false);
diff --git a/packages/frontend/src/ui/deck/deck-store.ts b/packages/frontend/src/ui/deck/deck-store.ts
index a6784e9849..4601207858 100644
--- a/packages/frontend/src/ui/deck/deck-store.ts
+++ b/packages/frontend/src/ui/deck/deck-store.ts
@@ -52,6 +52,10 @@ export const deckStore = markRaw(new Storage('deck', {
where: 'deviceAccount',
default: true,
},
+ useSimpleUiForNonRootPages: {
+ where: 'deviceAccount',
+ default: true,
+ },
}));
export const loadDeck = async () => {
diff --git a/packages/frontend/src/ui/deck/list-column.vue b/packages/frontend/src/ui/deck/list-column.vue
index f36dc6151c..3d6256c4fd 100644
--- a/packages/frontend/src/ui/deck/list-column.vue
+++ b/packages/frontend/src/ui/deck/list-column.vue
@@ -42,9 +42,20 @@ async function setList() {
});
}
-const menu = [{
- icon: 'ti ti-pencil',
- text: i18n.ts.selectList,
- action: setList,
-}];
+function editList() {
+ os.pageWindow('my/lists/' + props.column.listId);
+}
+
+const menu = [
+ {
+ icon: 'ti ti-pencil',
+ text: i18n.ts.selectList,
+ action: setList,
+ },
+ {
+ icon: 'ti ti-settings',
+ text: i18n.ts.editList,
+ action: editList,
+ },
+];
</script>
diff --git a/packages/frontend/src/ui/deck/main-column.vue b/packages/frontend/src/ui/deck/main-column.vue
index 169fac70a2..0413307955 100644
--- a/packages/frontend/src/ui/deck/main-column.vue
+++ b/packages/frontend/src/ui/deck/main-column.vue
@@ -7,24 +7,29 @@
</template>
</template>
- <RouterView @contextmenu.stop="onContextmenu"/>
+ <div ref="contents">
+ <RouterView @contextmenu.stop="onContextmenu"/>
+ </div>
</XColumn>
</template>
<script lang="ts" setup>
-import { ComputedRef, provide } from 'vue';
+import { ComputedRef, provide, shallowRef } from 'vue';
import XColumn from './column.vue';
import { deckStore, Column } from '@/ui/deck/deck-store';
import * as os from '@/os';
import { i18n } from '@/i18n';
import { mainRouter } from '@/router';
import { PageMetadata, provideMetadataReceiver } from '@/scripts/page-metadata';
+import { useScrollPositionManager } from '@/nirax';
+import { getScrollContainer } from '@/scripts/scroll';
defineProps<{
column: Column;
isStacked: boolean;
}>();
+const contents = shallowRef<HTMLElement>();
let pageMetadata = $ref<null | ComputedRef<PageMetadata>>();
provide('router', mainRouter);
@@ -61,4 +66,6 @@ function onContextmenu(ev: MouseEvent) {
},
}], ev);
}
+
+useScrollPositionManager(() => getScrollContainer(contents.value), mainRouter);
</script>
diff --git a/packages/frontend/src/ui/minimum.vue b/packages/frontend/src/ui/minimum.vue
index e656f00bb2..baba9e4da5 100644
--- a/packages/frontend/src/ui/minimum.vue
+++ b/packages/frontend/src/ui/minimum.vue
@@ -1,6 +1,8 @@
<template>
-<div :class="$style.root" style="container-type: inline-size;">
- <RouterView/>
+<div :class="$style.root">
+ <div style="container-type: inline-size;">
+ <RouterView/>
+ </div>
<XCommon/>
</div>
diff --git a/packages/frontend/src/ui/universal.vue b/packages/frontend/src/ui/universal.vue
index 8abb20300f..9ae43c39d3 100644
--- a/packages/frontend/src/ui/universal.vue
+++ b/packages/frontend/src/ui/universal.vue
@@ -95,6 +95,7 @@ import { PageMetadata, provideMetadataReceiver } from '@/scripts/page-metadata';
import { deviceKind } from '@/scripts/device-kind';
import { miLocalStorage } from '@/local-storage';
import { CURRENT_STICKY_BOTTOM } from '@/const';
+import { useScrollPositionManager } from '@/nirax';
const XWidgets = defineAsyncComponent(() => import('./universal.widgets.vue'));
const XSidebar = defineAsyncComponent(() => import('@/ui/_common_/navbar.vue'));
@@ -213,6 +214,8 @@ watch($$(navFooter), () => {
}, {
immediate: true,
});
+
+useScrollPositionManager(() => contents.value.rootEl, mainRouter);
</script>
<style>
diff --git a/packages/frontend/src/ui/zen.vue b/packages/frontend/src/ui/zen.vue
index d516a5df75..6c8a986411 100644
--- a/packages/frontend/src/ui/zen.vue
+++ b/packages/frontend/src/ui/zen.vue
@@ -1,6 +1,8 @@
<template>
-<div :class="showBottom ? $style.rootWithBottom : $style.root" style="container-type: inline-size;">
- <RouterView/>
+<div :class="showBottom ? $style.rootWithBottom : $style.root">
+ <div style="container-type: inline-size;">
+ <RouterView/>
+ </div>
<XCommon/>
</div>