summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyu jongheon <lapy@lapy.link>2023-04-06 08:35:14 +0900
committerGitHub <noreply@github.com>2023-04-06 08:35:14 +0900
commite76d3e72dba5913c4f0ab5d00c9eb5b9451fabac (patch)
treefd94bcfbe0669b2c1295194714ef6a56c239702b
parent:art: (diff)
downloadmisskey-e76d3e72dba5913c4f0ab5d00c9eb5b9451fabac.tar.gz
misskey-e76d3e72dba5913c4f0ab5d00c9eb5b9451fabac.tar.bz2
misskey-e76d3e72dba5913c4f0ab5d00c9eb5b9451fabac.zip
refactor(fronted): setup syntax to menubar of Classic UI (#10474)
-rw-r--r--packages/frontend/src/ui/classic.header.vue107
-rw-r--r--packages/frontend/src/ui/classic.sidebar.vue128
2 files changed, 71 insertions, 164 deletions
diff --git a/packages/frontend/src/ui/classic.header.vue b/packages/frontend/src/ui/classic.header.vue
index 5e632c16d0..daea775552 100644
--- a/packages/frontend/src/ui/classic.header.vue
+++ b/packages/frontend/src/ui/classic.header.vue
@@ -31,7 +31,7 @@
<button v-click-anime class="item _button account" @click="openAccountMenu">
<MkAvatar :user="$i" class="avatar"/><MkAcct class="acct" :user="$i"/>
</button>
- <div class="post" @click="post">
+ <div class="post" @click="os.post()">
<MkButton class="button" gradate full rounded>
<i class="ti ti-pencil ti-fw"></i>
</MkButton>
@@ -41,93 +41,50 @@
</div>
</template>
-<script lang="ts">
-import { defineAsyncComponent, defineComponent } from 'vue';
+<script lang="ts" setup>
+import { computed, defineAsyncComponent, onMounted } from 'vue';
import { openInstanceMenu } from './_common_/common';
-import { host } from '@/config';
import * as os from '@/os';
import { navbarItemDef } from '@/navbar';
-import { openAccountMenu, $i } from '@/account';
+import { openAccountMenu as openAccountMenu_, $i } from '@/account';
import MkButton from '@/components/MkButton.vue';
-import { mainRouter } from '@/router';
import { defaultStore } from '@/store';
import { instance } from '@/instance';
import { i18n } from '@/i18n';
-export default defineComponent({
- components: {
- MkButton,
- },
+const WINDOW_THRESHOLD = 1400;
- data() {
- return {
- host: host,
- accounts: [],
- connection: null,
- navbarItemDef: navbarItemDef,
- settingsWindowed: false,
- defaultStore,
- instance,
- $i,
- i18n,
- };
- },
-
- computed: {
- menu(): string[] {
- return defaultStore.state.menu;
- },
-
- otherNavItemIndicated(): boolean {
- for (const def in this.navbarItemDef) {
- if (this.menu.includes(def)) continue;
- if (this.navbarItemDef[def].indicated) return true;
- }
- return false;
- },
- },
-
- watch: {
- 'defaultStore.reactiveState.menuDisplay.value'() {
- this.calcViewState();
- },
- },
-
- created() {
- window.addEventListener('resize', this.calcViewState);
- this.calcViewState();
- },
-
- methods: {
- openInstanceMenu,
-
- calcViewState() {
- this.settingsWindowed = (window.innerWidth > 1400);
- },
-
- post() {
- os.post();
- },
+let settingsWindowed = $ref(window.innerWidth > WINDOW_THRESHOLD);
+let menu = $ref(defaultStore.state.menu);
+// const menuDisplay = computed(defaultStore.makeGetterSetter('menuDisplay'));
+let otherNavItemIndicated = computed<boolean>(() => {
+ for (const def in navbarItemDef) {
+ if (menu.includes(def)) continue;
+ if (navbarItemDef[def].indicated) return true;
+ }
+ return false;
+});
- search() {
- mainRouter.push('/search');
- },
+function more(ev: MouseEvent) {
+ os.popup(defineAsyncComponent(() => import('@/components/MkLaunchPad.vue')), {
+ src: ev.currentTarget ?? ev.target,
+ anchor: { x: 'center', y: 'bottom' },
+ }, {
+ }, 'closed');
+}
- more(ev) {
- os.popup(defineAsyncComponent(() => import('@/components/MkLaunchPad.vue')), {
- src: ev.currentTarget ?? ev.target,
- anchor: { x: 'center', y: 'bottom' },
- }, {
- }, 'closed');
- },
+function openAccountMenu(ev: MouseEvent) {
+ openAccountMenu_({
+ withExtraOperation: true,
+ }, ev);
+}
- openAccountMenu: (ev) => {
- openAccountMenu({
- withExtraOperation: true,
- }, ev);
- },
- },
+onMounted(() => {
+ window.addEventListener('resize', () => {
+ settingsWindowed = (window.innerWidth >= WINDOW_THRESHOLD);
+ }, { passive: true });
});
+
</script>
<style lang="scss" scoped>
diff --git a/packages/frontend/src/ui/classic.sidebar.vue b/packages/frontend/src/ui/classic.sidebar.vue
index 42ea5cd785..73db14c65e 100644
--- a/packages/frontend/src/ui/classic.sidebar.vue
+++ b/packages/frontend/src/ui/classic.sidebar.vue
@@ -3,7 +3,7 @@
<button v-click-anime class="item _button account" @click="openAccountMenu">
<MkAvatar :user="$i" class="avatar"/><MkAcct class="text" :user="$i"/>
</button>
- <div class="post" data-cy-open-post-form @click="post">
+ <div class="post" data-cy-open-post-form @click="os.post">
<MkButton class="button" gradate full rounded>
<i class="ti ti-pencil ti-fw"></i><span v-if="!iconOnly" class="text">{{ i18n.ts.note }}</span>
</MkButton>
@@ -40,109 +40,59 @@
</div>
</template>
-<script lang="ts">
-import { defineAsyncComponent, defineComponent } from 'vue';
+<script lang="ts" setup>
+import { defineAsyncComponent, onMounted, computed, watch, nextTick } from 'vue';
import { openInstanceMenu } from './_common_/common';
-import { host } from '@/config';
+// import { host } from '@/config';
import * as os from '@/os';
import { navbarItemDef } from '@/navbar';
-import { openAccountMenu, $i } from '@/account';
+import { openAccountMenu as openAccountMenu_, $i } from '@/account';
import MkButton from '@/components/MkButton.vue';
-import { StickySidebar } from '@/scripts/sticky-sidebar';
-import { mainRouter } from '@/router';
+// import { StickySidebar } from '@/scripts/sticky-sidebar';
+// import { mainRouter } from '@/router';
//import MisskeyLogo from '@assets/client/misskey.svg';
import { defaultStore } from '@/store';
import { instance } from '@/instance';
import { i18n } from '@/i18n';
-export default defineComponent({
- components: {
- MkButton,
- //MisskeyLogo,
- },
+const WINDOW_THRESHOLD = 1400;
- data() {
- return {
- host: host,
- accounts: [],
- connection: null,
- navbarItemDef: navbarItemDef,
- iconOnly: false,
- settingsWindowed: false,
- defaultStore,
- instance,
- $i,
- i18n,
- };
- },
-
- computed: {
- menu(): string[] {
- return this.defaultStore.state.menu;
- },
-
- otherNavItemIndicated(): boolean {
- for (const def in this.navbarItemDef) {
- if (this.menu.includes(def)) continue;
- if (this.navbarItemDef[def].indicated) return true;
- }
- return false;
- },
- },
-
- watch: {
- 'defaultStore.reactiveState.menuDisplay.value'() {
- this.calcViewState();
- },
-
- iconOnly() {
- this.$nextTick(() => {
- this.$emit('change-view-mode');
- });
- },
- },
-
- created() {
- window.addEventListener('resize', this.calcViewState);
- this.calcViewState();
- },
-
- mounted() {
- const sticky = new StickySidebar(this.$el.parentElement, 16);
- window.addEventListener('scroll', () => {
- sticky.calc(window.scrollY);
- }, { passive: true });
- },
-
- methods: {
- openInstanceMenu,
-
- calcViewState() {
- this.iconOnly = (window.innerWidth <= 1400) || (this.defaultStore.state.menuDisplay === 'sideIcon');
- this.settingsWindowed = (window.innerWidth > 1400);
- },
+const menu = $ref(defaultStore.state.menu);
+const menuDisplay = computed(defaultStore.makeGetterSetter('menuDisplay'));
+const otherNavItemIndicated = computed<boolean>(() => {
+ for (const def in navbarItemDef) {
+ if (menu.includes(def)) continue;
+ if (navbarItemDef[def].indicated) return true;
+ }
+ return false;
+});
+let el = $shallowRef<HTMLElement>();
+// let accounts = $ref([]);
+// let connection = $ref(null);
+let iconOnly = $ref(false);
+let settingsWindowed = $ref(false);
- post() {
- os.post();
- },
+function calcViewState() {
+ iconOnly = (window.innerWidth <= WINDOW_THRESHOLD) || (menuDisplay.value === 'sideIcon');
+ settingsWindowed = (window.innerWidth > WINDOW_THRESHOLD);
+}
- search() {
- mainRouter.push('/search');
- },
+function more(ev: MouseEvent) {
+ os.popup(defineAsyncComponent(() => import('@/components/MkLaunchPad.vue')), {
+ src: ev.currentTarget ?? ev.target,
+ }, {}, 'closed');
+}
- more(ev) {
- os.popup(defineAsyncComponent(() => import('@/components/MkLaunchPad.vue')), {
- src: ev.currentTarget ?? ev.target,
- }, {}, 'closed');
- },
+function openAccountMenu(ev: MouseEvent) {
+ openAccountMenu_({
+ withExtraOperation: true,
+ }, ev);
+}
- openAccountMenu: (ev) => {
- openAccountMenu({
- withExtraOperation: true,
- }, ev);
- },
- },
+watch(defaultStore.reactiveState.menuDisplay, () => {
+ calcViewState();
});
+
</script>
<style lang="scss" scoped>