From cfd23d54da3b69497242830366ef315051ea1283 Mon Sep 17 00:00:00 2001 From: Hooray <304327508@qq.com> Date: Mon, 6 Jan 2025 00:06:46 +0800 Subject: [PATCH] feat: v5.0 --- .npmrc | 1 + package.json | 7 +- pnpm-lock.yaml | 59 +-- src/App.vue | 5 - src/api/modules/user.ts | 2 +- src/assets/styles/globals.css | 43 +- src/assets/styles/nprogress.css | 2 +- .../AccountForm/EditPasswordForm.vue | 91 ++++ src/layouts/components/AppSetting/index.vue | 4 +- src/layouts/components/Header/index.vue | 16 +- src/layouts/components/HotkeysIntro/index.vue | 6 +- src/layouts/components/MainSidebar/index.vue | 8 +- src/layouts/components/Menu/sub.vue | 27 +- src/layouts/components/SubSidebar/index.vue | 8 +- .../components/Topbar/Tabbar/index.vue | 408 ++++++++---------- .../Topbar/Toolbar/NavSearch/index.vue | 2 +- .../Topbar/Toolbar/NavSearch/search.vue | 239 +++++----- .../components/Topbar/Toolbar/leftSide.vue | 4 +- .../components/Topbar/Toolbar/rightSide.vue | 6 +- src/layouts/components/Topbar/index.vue | 2 +- src/layouts/index.vue | 4 +- src/main.ts | 1 - src/settings.ts | 3 +- src/slots/FreePosition/index.vue | 3 - src/slots/ToolbarEnd/index.vue | 10 +- src/slots/ToolbarEnd/profile.vue | 36 ++ src/slots/ToolbarStart/index.vue | 3 - src/slots/index.ts | 29 ++ src/store/modules/settings.ts | 3 +- src/store/modules/user.ts | 2 +- src/types/components.d.ts | 4 +- src/types/global.d.ts | 2 +- src/types/shims.d.ts | 6 +- .../context-menu/ContextMenu.vue | 15 + .../context-menu/ContextMenuCheckboxItem.vue | 40 ++ .../context-menu/ContextMenuContent.vue | 36 ++ .../context-menu/ContextMenuGroup.vue | 11 + .../context-menu/ContextMenuItem.vue | 34 ++ .../context-menu/ContextMenuLabel.vue | 25 ++ .../context-menu/ContextMenuPortal.vue | 11 + .../context-menu/ContextMenuRadioGroup.vue | 19 + .../context-menu/ContextMenuRadioItem.vue | 40 ++ .../context-menu/ContextMenuSeparator.vue | 20 + .../context-menu/ContextMenuShortcut.vue | 14 + .../context-menu/ContextMenuSub.vue | 19 + .../context-menu/ContextMenuSubContent.vue | 35 ++ .../context-menu/ContextMenuSubTrigger.vue | 34 ++ .../context-menu/ContextMenuTrigger.vue | 13 + .../FaContextMenu/context-menu/index.ts | 14 + src/ui/components/FaContextMenu/index.vue | 71 +++ src/ui/components/FaDrawer/index.vue | 9 +- src/ui/components/FaDropdown/index.vue | 2 +- .../FaMaskScrollContainer/index.vue | 105 ----- .../FaModal/dialog/DialogContent.vue | 11 +- .../FaModal/dialog/DialogHeader.vue | 2 +- src/ui/components/FaModal/index.ts | 25 +- src/ui/components/FaModal/index.vue | 77 +++- src/ui/components/FaModal/use-draggable.ts | 110 +++++ src/ui/components/FaScrollArea/index.vue | 116 +++++ .../FaScrollArea/scroll-area/ScrollArea.vue | 45 ++ .../FaScrollArea/scroll-area/ScrollBar.vue | 30 ++ .../FaScrollArea/scroll-area/index.ts | 2 + src/ui/components/FaSmartFixedBlock/index.vue | 17 +- src/ui/components/FaSystemInfo/index.vue | 40 +- src/utils/composables/useTabbar.ts | 22 +- src/views/index.vue | 7 +- uno.config.ts | 4 + vite/plugins.ts | 1 + 68 files changed, 1420 insertions(+), 702 deletions(-) create mode 100644 src/components/AccountForm/EditPasswordForm.vue delete mode 100644 src/slots/FreePosition/index.vue create mode 100644 src/slots/ToolbarEnd/profile.vue delete mode 100644 src/slots/ToolbarStart/index.vue create mode 100644 src/slots/index.ts create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenu.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuCheckboxItem.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuContent.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuGroup.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuItem.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuLabel.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuPortal.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuRadioGroup.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuRadioItem.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuSeparator.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuShortcut.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuSub.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuSubContent.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuSubTrigger.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/ContextMenuTrigger.vue create mode 100644 src/ui/components/FaContextMenu/context-menu/index.ts create mode 100644 src/ui/components/FaContextMenu/index.vue delete mode 100755 src/ui/components/FaMaskScrollContainer/index.vue create mode 100644 src/ui/components/FaModal/use-draggable.ts create mode 100755 src/ui/components/FaScrollArea/index.vue create mode 100644 src/ui/components/FaScrollArea/scroll-area/ScrollArea.vue create mode 100644 src/ui/components/FaScrollArea/scroll-area/ScrollBar.vue create mode 100644 src/ui/components/FaScrollArea/scroll-area/index.ts diff --git a/.npmrc b/.npmrc index 330178cf7..aaac007ea 100755 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,4 @@ shamefully-hoist=true strict-peer-dependencies=false engine-strict=true +verify-deps-before-run=prompt diff --git a/package.json b/package.json index bac815b7d..8e560cece 100755 --- a/package.json +++ b/package.json @@ -17,14 +17,12 @@ "lint:tsc": "vue-tsc -b", "lint:eslint": "eslint . --cache --fix", "lint:stylelint": "stylelint \"src/**/*.{css,scss,vue}\" --cache --fix", - "postinstall": "simple-git-hooks", "preinstall": "npx only-allow pnpm", + "postinstall": "simple-git-hooks", "commit": "git cz", "release": "bumpp" }, "dependencies": { - "@headlessui/vue": "^1.7.23", - "@imengyu/vue3-context-menu": "^1.4.4", "@vee-validate/zod": "^4.15.0", "@vueuse/components": "^12.3.0", "@vueuse/core": "^12.3.0", @@ -42,8 +40,6 @@ "lucide-vue-next": "^0.469.0", "mitt": "^3.0.1", "nprogress": "^0.2.0", - "overlayscrollbars": "^2.10.1", - "overlayscrollbars-vue": "^0.5.9", "path-browserify": "^1.0.1", "path-to-regexp": "^8.2.0", "pinia": "^2.3.0", @@ -69,6 +65,7 @@ "@types/path-browserify": "^1.0.3", "@types/qs": "^6.9.17", "@unocss/eslint-plugin": "^0.65.3", + "@unocss/preset-legacy-compat": "^65.4.2", "@vitejs/plugin-legacy": "^6.0.0", "@vitejs/plugin-vue": "^5.2.1", "@vitejs/plugin-vue-jsx": "^4.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1322dab47..e1f576086 100755 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,12 +8,6 @@ importers: .: dependencies: - '@headlessui/vue': - specifier: ^1.7.23 - version: 1.7.23(vue@3.5.13(typescript@5.7.2)) - '@imengyu/vue3-context-menu': - specifier: ^1.4.4 - version: 1.4.4 '@vee-validate/zod': specifier: ^4.15.0 version: 4.15.0(vue@3.5.13(typescript@5.7.2))(zod@3.24.1) @@ -65,12 +59,6 @@ importers: nprogress: specifier: ^0.2.0 version: 0.2.0 - overlayscrollbars: - specifier: ^2.10.1 - version: 2.10.1 - overlayscrollbars-vue: - specifier: ^0.5.9 - version: 0.5.9(overlayscrollbars@2.10.1)(vue@3.5.13(typescript@5.7.2)) path-browserify: specifier: ^1.0.1 version: 1.0.1 @@ -141,6 +129,9 @@ importers: '@unocss/eslint-plugin': specifier: ^0.65.3 version: 0.65.3(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@unocss/preset-legacy-compat': + specifier: ^65.4.2 + version: 65.4.2 '@vitejs/plugin-legacy': specifier: ^6.0.0 version: 6.0.0(terser@5.33.0)(vite@6.0.7(@types/node@22.5.5)(jiti@2.4.2)(sass-embedded@1.83.1)(sass@1.79.2)(terser@5.33.0)(tsx@4.19.2)(yaml@2.7.0)) @@ -1290,12 +1281,6 @@ packages: '@floating-ui/vue@1.1.5': resolution: {integrity: sha512-ynL1p5Z+woPVSwgMGqeDrx6HrJfGIDzFyESFkyqJKilGW1+h/8yVY29Khn0LaU6wHBRwZ13ntG6reiHWK6jyzw==} - '@headlessui/vue@1.7.23': - resolution: {integrity: sha512-JzdCNqurrtuu0YW6QaDtR2PIYCKPUWq28csDyMvN4zmGccmE7lz40Is6hc3LA4HFeCI7sekZ/PQMTNmn9I/4Wg==} - engines: {node: '>=10'} - peerDependencies: - vue: ^3.2.0 - '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -1330,9 +1315,6 @@ packages: peerDependencies: vue: '>=3' - '@imengyu/vue3-context-menu@1.4.4': - resolution: {integrity: sha512-Zjh1BbrvcNbZvsWr9IJl9KQUomf50EeP2GT+mWk63sqatDZxG7ZFX1eltrwRyfSBr+SuFpMvdYv/yRxpBsyw6w==} - '@inquirer/checkbox@4.0.4': resolution: {integrity: sha512-fYAKCAcGNMdfjL6hZTRUwkIByQ8EIZCXKrIQZH7XjADnN/xvRUhj8UdBbpC4zoUzvChhkSC/zRKaP/tDs3dZpg==} engines: {node: '>=18'} @@ -1830,6 +1812,9 @@ packages: '@unocss/core@0.65.3': resolution: {integrity: sha512-xYkJ63lIadL6KqvGcaE2fFeLvo6rC1F+e+R9EFn0Aj0ArMRhiltZk8vvLFHP7iYjjdTdqDkAr/7IdrTosTo8Pg==} + '@unocss/core@65.4.2': + resolution: {integrity: sha512-VmXy5D25por+pt9LBlKZ3gk4rOE5ldm80MyVOEnLcpaFb9LqB0g/8qUU9/Dk3TSA+ZPeoGm53Juo0p8LMFIigA==} + '@unocss/eslint-plugin@0.65.3': resolution: {integrity: sha512-l/mIp+IOF4TukjcHtxzpYW8gVlYwBpDlOrPYMVMcD8gAmxydBb111RkJPmJKjeDgYcoXDcjP8wyumQuM1L1vWA==} engines: {node: '>=14'} @@ -1855,6 +1840,9 @@ packages: '@unocss/preset-icons@0.65.3': resolution: {integrity: sha512-3V4d5M+a2mTGnLjSsXyNL+/+nzjasdsJEJdXarLnj9Ez0KaBCvi32OjyoYrZUSMC5GCSreVNUOVBZKcxfdtitA==} + '@unocss/preset-legacy-compat@65.4.2': + resolution: {integrity: sha512-oo0XgPnToBe1zEm71blvNFKkhQ224diOlOU3wdRgEGYN//jrwD+8Dd/ZymHAefxEcBQsDaVCsmUlj9HWovhHcg==} + '@unocss/preset-mini@0.56.5': resolution: {integrity: sha512-/KhlThhs1ilauM7MwRSpahLbIPZ5VGeGvaUsU8+ZlNT3sis4yoVYkPtR14tL2IT6jhOU05N/uu3aBj+1bP8GjQ==} @@ -4590,15 +4578,6 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - overlayscrollbars-vue@0.5.9: - resolution: {integrity: sha512-zZEcsb6llnKaRwXTP44E4RrmwuH+eAi70mgCdiiPwcPBE2H99Vs2V0q7sWnEanqU3462ch38e4SmIMnuH906DQ==} - peerDependencies: - overlayscrollbars: ^2.0.0 - vue: ^3.2.25 - - overlayscrollbars@2.10.1: - resolution: {integrity: sha512-BQoUAaw533ZbqBIE8LzKtsIiOKzB3pkhA6oS2ol+8THB5b2VO91myEXPlKrQqXQRYHG53f/169fFBNrGZ9tzag==} - oxc-parser@0.40.1: resolution: {integrity: sha512-uN+yvg3rJX6SDtWq4unomdlhafjj0X82yT3DS64XGSG8+bNEBe4ktA95K/WRFH/0l7/pB2xcvo40tFfEqDx+hQ==} @@ -7272,11 +7251,6 @@ snapshots: - '@vue/composition-api' - vue - '@headlessui/vue@1.7.23(vue@3.5.13(typescript@5.7.2))': - dependencies: - '@tanstack/vue-virtual': 3.10.8(vue@3.5.13(typescript@5.7.2)) - vue: 3.5.13(typescript@5.7.2) - '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -7315,8 +7289,6 @@ snapshots: '@iconify/types': 2.0.0 vue: 3.5.13(typescript@5.7.2) - '@imengyu/vue3-context-menu@1.4.4': {} - '@inquirer/checkbox@4.0.4(@types/node@22.5.5)': dependencies: '@inquirer/core': 10.1.2(@types/node@22.5.5) @@ -7822,6 +7794,8 @@ snapshots: '@unocss/core@0.65.3': {} + '@unocss/core@65.4.2': {} + '@unocss/eslint-plugin@0.65.3(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@typescript-eslint/utils': 8.19.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) @@ -7875,6 +7849,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/preset-legacy-compat@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/preset-mini@0.56.5': dependencies: '@unocss/core': 0.56.5 @@ -11087,13 +11065,6 @@ snapshots: os-tmpdir@1.0.2: {} - overlayscrollbars-vue@0.5.9(overlayscrollbars@2.10.1)(vue@3.5.13(typescript@5.7.2)): - dependencies: - overlayscrollbars: 2.10.1 - vue: 3.5.13(typescript@5.7.2) - - overlayscrollbars@2.10.1: {} - oxc-parser@0.40.1: dependencies: '@oxc-project/types': 0.40.1 diff --git a/src/App.vue b/src/App.vue index b64ca507d..7b411b49f 100755 --- a/src/App.vue +++ b/src/App.vue @@ -1,9 +1,7 @@ diff --git a/src/api/modules/user.ts b/src/api/modules/user.ts index b9fd2b25a..b9e032cc0 100755 --- a/src/api/modules/user.ts +++ b/src/api/modules/user.ts @@ -17,7 +17,7 @@ export default { // 修改密码 passwordEdit: (data: { password: string - newpassword: string + newPassword: string }) => api.post('user/password/edit', data, { baseURL: '/mock/', }), diff --git a/src/assets/styles/globals.css b/src/assets/styles/globals.css index 65e33b2b0..c301d982c 100755 --- a/src/assets/styles/globals.css +++ b/src/assets/styles/globals.css @@ -21,7 +21,7 @@ /* 明暗模式 CSS 变量 */ /* stylelint-disable-next-line no-duplicate-selectors */ :root { - --g-box-shadow-color: rgb(0 0 0 / 12%); + color-scheme: light; &::view-transition-old(root), &::view-transition-new(root) { @@ -38,7 +38,7 @@ } &.dark { - --g-box-shadow-color: rgb(0 0 0 / 72%); + color-scheme: dark; &::view-transition-old(root) { z-index: 9999; @@ -50,29 +50,9 @@ } } -body:not([data-os="macOS"]) { - ::-webkit-scrollbar { - width: 12px; - height: 12px; - } - - ::-webkit-scrollbar-thumb { - background-color: hsl(var(--primary) / 30%); - background-clip: padding-box; - border: 3px solid transparent; - border-radius: 6px; - } - - ::-webkit-scrollbar-thumb:hover { - background-color: hsl(var(--primary) / 50%); - } - - ::-webkit-scrollbar-track { - background-color: transparent; - } -} - * { + scrollbar-color: hsl(var(--border)) transparent; + scrollbar-width: thin; border-color: hsl(var(--border)); } @@ -88,10 +68,6 @@ body { color: hsl(var(--foreground)); background: hsl(var(--background)); -webkit-tap-highlight-color: transparent; - - &.overflow-hidden { - overflow: hidden; - } } #app { @@ -102,14 +78,3 @@ body { textarea { font-family: inherit; } - -/* Overrides OverlayScrollbars */ -[data-overlayscrollbars-contents] { - overscroll-behavior: contain; -} - -.os-scrollbar { - --os-handle-bg: hsl(var(--primary) / 30%); - --os-handle-bg-hover: hsl(var(--primary) / 40%); - --os-handle-bg-active: hsl(var(--primary) / 50%); -} diff --git a/src/assets/styles/nprogress.css b/src/assets/styles/nprogress.css index 7b33ea124..ffa5571c7 100755 --- a/src/assets/styles/nprogress.css +++ b/src/assets/styles/nprogress.css @@ -5,7 +5,7 @@ position: fixed; top: 0; left: 0; - z-index: 2000; + z-index: 3000; width: 100%; height: 2px; background: hsl(var(--primary)); diff --git a/src/components/AccountForm/EditPasswordForm.vue b/src/components/AccountForm/EditPasswordForm.vue new file mode 100644 index 000000000..d6dfa1dc1 --- /dev/null +++ b/src/components/AccountForm/EditPasswordForm.vue @@ -0,0 +1,91 @@ + + + diff --git a/src/layouts/components/AppSetting/index.vue b/src/layouts/components/AppSetting/index.vue index 7f50582f0..18c637829 100755 --- a/src/layouts/components/AppSetting/index.vue +++ b/src/layouts/components/AppSetting/index.vue @@ -49,7 +49,7 @@ function handleCopy() {