Compare commits

...

14 Commits

Author SHA1 Message Date
Soybean
1c3b4734fa chore(projects): release v1.0.6 2024-04-25 22:09:59 +08:00
Soybean
93c7ff7122 fix(projects): fix mix-menu blank. fixed #389 & cache mixMenuFixed 2024-04-25 22:07:23 +08:00
Soybean
1e14293d67 refactor(projects): useMixMenuContext replace useMixMenu 2024-04-25 21:49:14 +08:00
Soybean
19e65c1a9f chore(projects): update pnpm version requirement 2024-04-25 21:27:59 +08:00
Soybean
e57bf0b076 chore(deps): update deps 2024-04-25 15:01:23 +08:00
Soybean
5d45cef1f0 perf(hooks): perf useSignal 2024-04-25 15:00:47 +08:00
Soybean
d460e5cc6d perf(projects): add tsconfig.json for @sa/color-palette 2024-04-25 13:09:26 +08:00
Soybean
3b5e4b3405 refactor(hooks): refactor useSignal, useComputed 2024-04-25 13:08:38 +08:00
Soybean
dcd51f4cda chore(projects): use engines replace packageManager 2024-04-25 10:24:48 +08:00
Soybean
09f6464678 feat(hooks): add state hooks: useRef, useState, useSignal 2024-04-25 01:39:59 +08:00
Soybean
fdde679c70 perf(projects): remove useless prop title of NDrawer 2024-04-25 00:23:07 +08:00
Soybean
b266035800 fix(projects): supply $t import statement 2024-04-25 00:20:26 +08:00
Soybean
a1e432f81e Merge pull request #399 from alleycharming/main
fix(projects): added responseType judgment. #396
2024-04-24 18:41:24 +08:00
alleycharming
82eabab753 fix(projects): added responseType judgment. #396 2024-04-24 17:58:46 +08:00
25 changed files with 429 additions and 210 deletions

View File

@@ -1,6 +1,45 @@
# Changelog # Changelog
## [v1.0.6](https://github.com/soybeanjs/soybean-admin/compare/v1.0.5...v1.0.6) (2024-04-25)
###    🚀 Features
- **hooks**: add state hooks: useRef, useState, useSignal &nbsp;-&nbsp; by @honghuangdc [<samp>(09f64)</samp>](https://github.com/soybeanjs/soybean-admin/commit/09f6464)
### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes
- **projects**:
- added responseType judgment. #396 &nbsp;-&nbsp; by **alleycharming** in https://github.com/soybeanjs/soybean-admin/issues/396 [<samp>(82eab)</samp>](https://github.com/soybeanjs/soybean-admin/commit/82eabab)
- supply $t import statement &nbsp;-&nbsp; by @honghuangdc [<samp>(b2660)</samp>](https://github.com/soybeanjs/soybean-admin/commit/b266035)
- fix mix-menu blank. fixed #389 & cache mixMenuFixed &nbsp;-&nbsp; by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/389 [<samp>(93c7f)</samp>](https://github.com/soybeanjs/soybean-admin/commit/93c7ff7)
### &nbsp;&nbsp;&nbsp;🔥 Performance
- **hooks**:
- perf useSignal &nbsp;-&nbsp; by @honghuangdc [<samp>(5d45c)</samp>](https://github.com/soybeanjs/soybean-admin/commit/5d45cef)
- **projects**:
- remove useless prop `title` of `NDrawer` &nbsp;-&nbsp; by @honghuangdc [<samp>(fdde6)</samp>](https://github.com/soybeanjs/soybean-admin/commit/fdde679)
- add tsconfig.json for @sa/color-palette &nbsp;-&nbsp; by @honghuangdc [<samp>(d460e)</samp>](https://github.com/soybeanjs/soybean-admin/commit/d460e5c)
### &nbsp;&nbsp;&nbsp;💅 Refactors
- **hooks**: refactor useSignal, useComputed &nbsp;-&nbsp; by @honghuangdc [<samp>(3b5e4)</samp>](https://github.com/soybeanjs/soybean-admin/commit/3b5e4b3)
- **projects**: useMixMenuContext replace useMixMenu &nbsp;-&nbsp; by @honghuangdc [<samp>(1e142)</samp>](https://github.com/soybeanjs/soybean-admin/commit/1e14293)
### &nbsp;&nbsp;&nbsp;🏡 Chore
- **deps**:
- update deps &nbsp;-&nbsp; by @honghuangdc [<samp>(e57bf)</samp>](https://github.com/soybeanjs/soybean-admin/commit/e57bf0b)
- **projects**:
- use `engines` replace `packageManager` &nbsp;-&nbsp; by @honghuangdc [<samp>(dcd51)</samp>](https://github.com/soybeanjs/soybean-admin/commit/dcd51f4)
- update pnpm version requirement &nbsp;-&nbsp; by @honghuangdc [<samp>(19e65)</samp>](https://github.com/soybeanjs/soybean-admin/commit/19e65c1)
### &nbsp;&nbsp;&nbsp;❤️ Contributors
[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)&nbsp;&nbsp;
[alleycharming](mailto:alleycharming@gmail.com)
## [v1.0.5](https://github.com/honghuangdc/soybean-admin/compare/v1.0.4...v1.0.5) (2024-04-24) ## [v1.0.5](https://github.com/honghuangdc/soybean-admin/compare/v1.0.4...v1.0.5) (2024-04-24)
### &nbsp;&nbsp;&nbsp;📖 Documentation ### &nbsp;&nbsp;&nbsp;📖 Documentation

View File

@@ -1,8 +1,7 @@
{ {
"name": "soybean-admin", "name": "soybean-admin",
"type": "module", "type": "module",
"version": "1.0.5", "version": "1.0.6",
"packageManager": "pnpm@9.0.5",
"description": "A fresh and elegant admin template, based on Vue3、Vite3、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite3、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。", "description": "A fresh and elegant admin template, based on Vue3、Vite3、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite3、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。",
"author": { "author": {
"name": "Soybean", "name": "Soybean",
@@ -27,6 +26,10 @@
"ant-design-vue v4", "ant-design-vue v4",
"UnoCSS" "UnoCSS"
], ],
"engines": {
"node": ">=18.12.0",
"pnpm": ">=8.7.0"
},
"scripts": { "scripts": {
"build": "vite build --mode prod", "build": "vite build --mode prod",
"build:test": "vite build --mode test", "build:test": "vite build --mode test",
@@ -58,14 +61,14 @@
"naive-ui": "2.38.1", "naive-ui": "2.38.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"pinia": "2.1.7", "pinia": "2.1.7",
"vue": "3.4.23", "vue": "3.4.25",
"vue-draggable-plus": "0.4.0", "vue-draggable-plus": "0.4.0",
"vue-i18n": "9.13.1", "vue-i18n": "9.13.1",
"vue-router": "4.3.2" "vue-router": "4.3.2"
}, },
"devDependencies": { "devDependencies": {
"@elegant-router/vue": "0.3.6", "@elegant-router/vue": "0.3.6",
"@iconify/json": "2.2.203", "@iconify/json": "2.2.204",
"@sa/scripts": "workspace:*", "@sa/scripts": "workspace:*",
"@sa/uno-preset": "workspace:*", "@sa/uno-preset": "workspace:*",
"@soybeanjs/eslint-config": "1.3.2", "@soybeanjs/eslint-config": "1.3.2",

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/axios", "name": "@sa/axios",
"version": "1.0.5", "version": "1.0.6",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -48,7 +48,9 @@ function createCommonRequest<ResponseData = any>(
instance.interceptors.response.use( instance.interceptors.response.use(
async response => { async response => {
if (opts.isBackendSuccess(response)) { const responseType: ResponseType = (response.config?.responseType as ResponseType) || 'json';
if (responseType !== 'json' || opts.isBackendSuccess(response)) {
return Promise.resolve(response); return Promise.resolve(response);
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/color-palette", "name": "@sa/color-palette",
"version": "1.0.5", "version": "1.0.6",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -0,0 +1,20 @@
{
"compilerOptions": {
"target": "ESNext",
"jsx": "preserve",
"lib": ["DOM", "ESNext"],
"baseUrl": ".",
"module": "ESNext",
"moduleResolution": "node",
"resolveJsonModule": true,
"types": ["node"],
"strict": true,
"strictNullChecks": true,
"noUnusedLocals": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/hooks", "name": "@sa/hooks",
"version": "1.0.5", "version": "1.0.6",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -7,4 +7,5 @@ import useHookTable from './use-table';
export { useBoolean, useLoading, useCountDown, useContext, useSvgIconRender, useHookTable }; export { useBoolean, useLoading, useCountDown, useContext, useSvgIconRender, useHookTable };
export * from './use-signal';
export * from './use-table'; export * from './use-table';

View File

@@ -0,0 +1,144 @@
import { computed, ref, shallowRef, triggerRef } from 'vue';
import type {
ComputedGetter,
DebuggerOptions,
Ref,
ShallowRef,
WritableComputedOptions,
WritableComputedRef
} from 'vue';
type Updater<T> = (value: T) => T;
type Mutator<T> = (value: T) => void;
/**
* Signal is a reactive value that can be set, updated or mutated
*
* @example
* ```ts
* const count = useSignal(0);
*
* // `watchEffect`
* watchEffect(() => {
* console.log(count());
* });
*
* // watch
* watch(count, value => {
* console.log(value);
* });
*
* // useComputed
* const double = useComputed(() => count() * 2);
* const writeableDouble = useComputed({
* get: () => count() * 2,
* set: value => count.set(value / 2)
* });
* ```
*/
export interface Signal<T> {
(): Readonly<T>;
/**
* Set the value of the signal
*
* It recommend use `set` for primitive values
*
* @param value
*/
set(value: T): void;
/**
* Update the value of the signal using an updater function
*
* It recommend use `update` for non-primitive values, only the first level of the object will be reactive.
*
* @param updater
*/
update(updater: Updater<T>): void;
/**
* Mutate the value of the signal using a mutator function
*
* this action will call `triggerRef`, so the value will be tracked on `watchEffect`.
*
* It recommend use `mutate` for non-primitive values, all levels of the object will be reactive.
*
* @param mutator
*/
mutate(mutator: Mutator<T>): void;
/**
* Get the reference of the signal
*
* Sometimes it can be useful to make `v-model` work with the signal
*
* ```vue
* <template>
* <input v-model="model.count" />
* </template>;
*
* <script setup lang="ts">
* const state = useSignal({ count: 0 }, { useRef: true });
*
* const model = state.getRef();
* </script>
* ```
*/
getRef(): Readonly<ShallowRef<Readonly<T>>>;
}
export interface ReadonlySignal<T> {
(): Readonly<T>;
}
export interface SignalOptions {
/**
* Whether to use `ref` to store the value
*
* @default false use `sharedRef` to store the value
*/
useRef?: boolean;
}
export function useSignal<T>(initialValue: T, options?: SignalOptions): Signal<T> {
const { useRef } = options || {};
const state = useRef ? (ref(initialValue) as Ref<T>) : shallowRef(initialValue);
return createSignal(state);
}
export function useComputed<T>(getter: ComputedGetter<T>, debugOptions?: DebuggerOptions): ReadonlySignal<T>;
export function useComputed<T>(options: WritableComputedOptions<T>, debugOptions?: DebuggerOptions): Signal<T>;
export function useComputed<T>(
getterOrOptions: ComputedGetter<T> | WritableComputedOptions<T>,
debugOptions?: DebuggerOptions
) {
const isGetter = typeof getterOrOptions === 'function';
const computedValue = computed(getterOrOptions as any, debugOptions);
if (isGetter) {
return () => computedValue.value as ReadonlySignal<T>;
}
return createSignal(computedValue);
}
function createSignal<T>(state: ShallowRef<T> | WritableComputedRef<T>): Signal<T> {
const signal = () => state.value;
signal.set = (value: T) => {
state.value = value;
};
signal.update = (updater: Updater<T>) => {
state.value = updater(state.value);
};
signal.mutate = (mutator: Mutator<T>) => {
mutator(state.value);
triggerRef(state);
};
signal.getRef = () => state as Readonly<ShallowRef<Readonly<T>>>;
return signal;
}

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/materials", "name": "@sa/materials",
"version": "1.0.5", "version": "1.0.6",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/fetch", "name": "@sa/fetch",
"version": "1.0.5", "version": "1.0.6",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/scripts", "name": "@sa/scripts",
"version": "1.0.5", "version": "1.0.6",
"bin": { "bin": {
"sa": "./bin.ts" "sa": "./bin.ts"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/uno-preset", "name": "@sa/uno-preset",
"version": "1.0.5", "version": "1.0.6",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "@sa/utils", "name": "@sa/utils",
"version": "1.0.5", "version": "1.0.6",
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"
}, },

272
pnpm-lock.yaml generated
View File

@@ -13,7 +13,7 @@ importers:
version: 2.5.1 version: 2.5.1
'@iconify/vue': '@iconify/vue':
specifier: 4.1.2 specifier: 4.1.2
version: 4.1.2(vue@3.4.23(typescript@5.4.5)) version: 4.1.2(vue@3.4.25(typescript@5.4.5))
'@sa/axios': '@sa/axios':
specifier: workspace:* specifier: workspace:*
version: link:packages/axios version: link:packages/axios
@@ -31,7 +31,7 @@ importers:
version: link:packages/utils version: link:packages/utils
'@vueuse/core': '@vueuse/core':
specifier: 10.9.0 specifier: 10.9.0
version: 10.9.0(vue@3.4.23(typescript@5.4.5)) version: 10.9.0(vue@3.4.25(typescript@5.4.5))
clipboard: clipboard:
specifier: 2.0.11 specifier: 2.0.11
version: 2.0.11 version: 2.0.11
@@ -46,32 +46,32 @@ importers:
version: 4.17.21 version: 4.17.21
naive-ui: naive-ui:
specifier: 2.38.1 specifier: 2.38.1
version: 2.38.1(vue@3.4.23(typescript@5.4.5)) version: 2.38.1(vue@3.4.25(typescript@5.4.5))
nprogress: nprogress:
specifier: 0.2.0 specifier: 0.2.0
version: 0.2.0 version: 0.2.0
pinia: pinia:
specifier: 2.1.7 specifier: 2.1.7
version: 2.1.7(typescript@5.4.5)(vue@3.4.23(typescript@5.4.5)) version: 2.1.7(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5))
vue: vue:
specifier: 3.4.23 specifier: 3.4.25
version: 3.4.23(typescript@5.4.5) version: 3.4.25(typescript@5.4.5)
vue-draggable-plus: vue-draggable-plus:
specifier: 0.4.0 specifier: 0.4.0
version: 0.4.0(@types/sortablejs@1.15.8) version: 0.4.0(@types/sortablejs@1.15.8)
vue-i18n: vue-i18n:
specifier: 9.13.1 specifier: 9.13.1
version: 9.13.1(vue@3.4.23(typescript@5.4.5)) version: 9.13.1(vue@3.4.25(typescript@5.4.5))
vue-router: vue-router:
specifier: 4.3.2 specifier: 4.3.2
version: 4.3.2(vue@3.4.23(typescript@5.4.5)) version: 4.3.2(vue@3.4.25(typescript@5.4.5))
devDependencies: devDependencies:
'@elegant-router/vue': '@elegant-router/vue':
specifier: 0.3.6 specifier: 0.3.6
version: 0.3.6 version: 0.3.6
'@iconify/json': '@iconify/json':
specifier: 2.2.203 specifier: 2.2.204
version: 2.2.203 version: 2.2.204
'@sa/scripts': '@sa/scripts':
specifier: workspace:* specifier: workspace:*
version: link:packages/scripts version: link:packages/scripts
@@ -110,10 +110,10 @@ importers:
version: 0.59.4(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)) version: 0.59.4(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))
'@vitejs/plugin-vue': '@vitejs/plugin-vue':
specifier: 5.0.4 specifier: 5.0.4
version: 5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)) version: 5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))
'@vitejs/plugin-vue-jsx': '@vitejs/plugin-vue-jsx':
specifier: 3.1.0 specifier: 3.1.0
version: 3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)) version: 3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))
eslint: eslint:
specifier: 9.1.1 specifier: 9.1.1
version: 9.1.1 version: 9.1.1
@@ -140,7 +140,7 @@ importers:
version: 0.18.5(@vue/compiler-sfc@3.4.24)(vue-template-compiler@2.7.16) version: 0.18.5(@vue/compiler-sfc@3.4.24)(vue-template-compiler@2.7.16)
unplugin-vue-components: unplugin-vue-components:
specifier: 0.26.0 specifier: 0.26.0
version: 0.26.0(@babel/parser@7.24.4)(rollup@4.16.4)(vue@3.4.23(typescript@5.4.5)) version: 0.26.0(@babel/parser@7.24.4)(rollup@4.16.4)(vue@3.4.25(typescript@5.4.5))
vite: vite:
specifier: 5.2.10 specifier: 5.2.10
version: 5.2.10(@types/node@20.12.7)(sass@1.75.0) version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)
@@ -152,7 +152,7 @@ importers:
version: 2.0.1(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)) version: 2.0.1(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))
vite-plugin-vue-devtools: vite-plugin-vue-devtools:
specifier: 7.1.2 specifier: 7.1.2
version: 7.1.2(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)) version: 7.1.2(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))
vue-eslint-parser: vue-eslint-parser:
specifier: 9.4.2 specifier: 9.4.2
version: 9.4.2(eslint@9.1.1) version: 9.4.2(eslint@9.1.1)
@@ -198,7 +198,7 @@ importers:
version: link:../utils version: link:../utils
simplebar-vue: simplebar-vue:
specifier: 2.3.3 specifier: 2.3.3
version: 2.3.3(vue@3.4.23(typescript@5.4.5)) version: 2.3.3(vue@3.4.25(typescript@5.4.5))
devDependencies: devDependencies:
typed-css-modules: typed-css-modules:
specifier: 0.9.1 specifier: 0.9.1
@@ -800,8 +800,8 @@ packages:
resolution: {integrity: sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==} resolution: {integrity: sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==}
engines: {node: '>=18.18'} engines: {node: '>=18.18'}
'@iconify/json@2.2.203': '@iconify/json@2.2.204':
resolution: {integrity: sha512-SjtZP6JGbklux1Nf8nQYDZTYRxdKvXLsRQIRvSgMc2z8z9UHpoRakpe8JGT7w1RjK6MMVIfal7Nrf9w8yjKDcA==} resolution: {integrity: sha512-sFlh+TIF54DZoEzsF5YVWY7XEzjN2ZSmCjtzvajk5EdNjvPAKr9Tvvptoyj6hcuylJsDxiU12FRDSdygW1c8bg==}
'@iconify/types@2.0.0': '@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
@@ -1353,30 +1353,30 @@ packages:
peerDependencies: peerDependencies:
'@babel/core': ^7.0.0-0 '@babel/core': ^7.0.0-0
'@vue/compiler-core@3.4.23':
resolution: {integrity: sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ==}
'@vue/compiler-core@3.4.24': '@vue/compiler-core@3.4.24':
resolution: {integrity: sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==} resolution: {integrity: sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==}
'@vue/compiler-dom@3.4.23': '@vue/compiler-core@3.4.25':
resolution: {integrity: sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw==} resolution: {integrity: sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg==}
'@vue/compiler-dom@3.4.24': '@vue/compiler-dom@3.4.24':
resolution: {integrity: sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==} resolution: {integrity: sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==}
'@vue/compiler-sfc@3.4.23': '@vue/compiler-dom@3.4.25':
resolution: {integrity: sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==} resolution: {integrity: sha512-Ugz5DusW57+HjllAugLci19NsDK+VyjGvmbB2TXaTcSlQxwL++2PETHx/+Qv6qFwNLzSt7HKepPe4DcTE3pBWg==}
'@vue/compiler-sfc@3.4.24': '@vue/compiler-sfc@3.4.24':
resolution: {integrity: sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==} resolution: {integrity: sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==}
'@vue/compiler-ssr@3.4.23': '@vue/compiler-sfc@3.4.25':
resolution: {integrity: sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==} resolution: {integrity: sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ==}
'@vue/compiler-ssr@3.4.24': '@vue/compiler-ssr@3.4.24':
resolution: {integrity: sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==} resolution: {integrity: sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==}
'@vue/compiler-ssr@3.4.25':
resolution: {integrity: sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ==}
'@vue/devtools-api@6.6.1': '@vue/devtools-api@6.6.1':
resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
@@ -1399,26 +1399,26 @@ packages:
typescript: typescript:
optional: true optional: true
'@vue/reactivity@3.4.23': '@vue/reactivity@3.4.25':
resolution: {integrity: sha512-GlXR9PL+23fQ3IqnbSQ8OQKLodjqCyoCrmdLKZk3BP7jN6prWheAfU7a3mrltewTkoBm+N7qMEb372VHIkQRMQ==} resolution: {integrity: sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ==}
'@vue/runtime-core@3.4.23': '@vue/runtime-core@3.4.25':
resolution: {integrity: sha512-FeQ9MZEXoFzFkFiw9MQQ/FWs3srvrP+SjDKSeRIiQHIhtkzoj0X4rWQlRNHbGuSwLra6pMyjAttwixNMjc/xLw==} resolution: {integrity: sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q==}
'@vue/runtime-dom@3.4.23': '@vue/runtime-dom@3.4.25':
resolution: {integrity: sha512-RXJFwwykZWBkMiTPSLEWU3kgVLNAfActBfWFlZd0y79FTUxexogd0PLG4HH2LfOktjRxV47Nulygh0JFXe5f9A==} resolution: {integrity: sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA==}
'@vue/server-renderer@3.4.23': '@vue/server-renderer@3.4.25':
resolution: {integrity: sha512-LDwGHtnIzvKFNS8dPJ1SSU5Gvm36p2ck8wCZc52fc3k/IfjKcwCyrWEf0Yag/2wTFUBXrqizfhK9c/mC367dXQ==} resolution: {integrity: sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ==}
peerDependencies: peerDependencies:
vue: 3.4.23 vue: 3.4.25
'@vue/shared@3.4.23':
resolution: {integrity: sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg==}
'@vue/shared@3.4.24': '@vue/shared@3.4.24':
resolution: {integrity: sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw==} resolution: {integrity: sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw==}
'@vue/shared@3.4.25':
resolution: {integrity: sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA==}
'@vueuse/core@10.9.0': '@vueuse/core@10.9.0':
resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==}
@@ -4722,8 +4722,8 @@ packages:
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
vue@3.4.23: vue@3.4.25:
resolution: {integrity: sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==} resolution: {integrity: sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg==}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
peerDependenciesMeta: peerDependenciesMeta:
@@ -5068,9 +5068,9 @@ snapshots:
dependencies: dependencies:
css-render: 0.15.12 css-render: 0.15.12
'@css-render/vue3-ssr@0.15.12(vue@3.4.23(typescript@5.4.5))': '@css-render/vue3-ssr@0.15.12(vue@3.4.25(typescript@5.4.5))':
dependencies: dependencies:
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
'@elegant-router/core@0.3.6': '@elegant-router/core@0.3.6':
dependencies: dependencies:
@@ -5284,7 +5284,7 @@ snapshots:
'@humanwhocodes/retry@0.2.3': {} '@humanwhocodes/retry@0.2.3': {}
'@iconify/json@2.2.203': '@iconify/json@2.2.204':
dependencies: dependencies:
'@iconify/types': 2.0.0 '@iconify/types': 2.0.0
pathe: 1.1.2 pathe: 1.1.2
@@ -5303,10 +5303,10 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@iconify/vue@4.1.2(vue@3.4.23(typescript@5.4.5))': '@iconify/vue@4.1.2(vue@3.4.25(typescript@5.4.5))':
dependencies: dependencies:
'@iconify/types': 2.0.0 '@iconify/types': 2.0.0
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
'@intlify/core-base@9.13.1': '@intlify/core-base@9.13.1':
dependencies: dependencies:
@@ -5865,20 +5865,20 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
'@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5))': '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))':
dependencies: dependencies:
'@babel/core': 7.24.4 '@babel/core': 7.24.4
'@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4)
'@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.4) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.4)
vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0) vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5))': '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))':
dependencies: dependencies:
vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0) vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
'@volar/language-core@2.2.0-alpha.10': '@volar/language-core@2.2.0-alpha.10':
dependencies: dependencies:
@@ -5922,14 +5922,6 @@ snapshots:
'@babel/parser': 7.24.4 '@babel/parser': 7.24.4
'@vue/compiler-sfc': 3.4.24 '@vue/compiler-sfc': 3.4.24
'@vue/compiler-core@3.4.23':
dependencies:
'@babel/parser': 7.24.4
'@vue/shared': 3.4.23
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.0
'@vue/compiler-core@3.4.24': '@vue/compiler-core@3.4.24':
dependencies: dependencies:
'@babel/parser': 7.24.4 '@babel/parser': 7.24.4
@@ -5938,27 +5930,23 @@ snapshots:
estree-walker: 2.0.2 estree-walker: 2.0.2
source-map-js: 1.2.0 source-map-js: 1.2.0
'@vue/compiler-dom@3.4.23': '@vue/compiler-core@3.4.25':
dependencies: dependencies:
'@vue/compiler-core': 3.4.23 '@babel/parser': 7.24.4
'@vue/shared': 3.4.23 '@vue/shared': 3.4.25
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.0
'@vue/compiler-dom@3.4.24': '@vue/compiler-dom@3.4.24':
dependencies: dependencies:
'@vue/compiler-core': 3.4.24 '@vue/compiler-core': 3.4.24
'@vue/shared': 3.4.24 '@vue/shared': 3.4.24
'@vue/compiler-sfc@3.4.23': '@vue/compiler-dom@3.4.25':
dependencies: dependencies:
'@babel/parser': 7.24.4 '@vue/compiler-core': 3.4.25
'@vue/compiler-core': 3.4.23 '@vue/shared': 3.4.25
'@vue/compiler-dom': 3.4.23
'@vue/compiler-ssr': 3.4.23
'@vue/shared': 3.4.23
estree-walker: 2.0.2
magic-string: 0.30.10
postcss: 8.4.38
source-map-js: 1.2.0
'@vue/compiler-sfc@3.4.24': '@vue/compiler-sfc@3.4.24':
dependencies: dependencies:
@@ -5972,21 +5960,33 @@ snapshots:
postcss: 8.4.38 postcss: 8.4.38
source-map-js: 1.2.0 source-map-js: 1.2.0
'@vue/compiler-ssr@3.4.23': '@vue/compiler-sfc@3.4.25':
dependencies: dependencies:
'@vue/compiler-dom': 3.4.23 '@babel/parser': 7.24.4
'@vue/shared': 3.4.23 '@vue/compiler-core': 3.4.25
'@vue/compiler-dom': 3.4.25
'@vue/compiler-ssr': 3.4.25
'@vue/shared': 3.4.25
estree-walker: 2.0.2
magic-string: 0.30.10
postcss: 8.4.38
source-map-js: 1.2.0
'@vue/compiler-ssr@3.4.24': '@vue/compiler-ssr@3.4.24':
dependencies: dependencies:
'@vue/compiler-dom': 3.4.24 '@vue/compiler-dom': 3.4.24
'@vue/shared': 3.4.24 '@vue/shared': 3.4.24
'@vue/compiler-ssr@3.4.25':
dependencies:
'@vue/compiler-dom': 3.4.25
'@vue/shared': 3.4.25
'@vue/devtools-api@6.6.1': {} '@vue/devtools-api@6.6.1': {}
'@vue/devtools-core@7.1.2(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5))': '@vue/devtools-core@7.1.2(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))':
dependencies: dependencies:
'@vue/devtools-kit': 7.1.2(vue@3.4.23(typescript@5.4.5)) '@vue/devtools-kit': 7.1.2(vue@3.4.25(typescript@5.4.5))
'@vue/devtools-shared': 7.1.2 '@vue/devtools-shared': 7.1.2
mitt: 3.0.1 mitt: 3.0.1
nanoid: 3.3.7 nanoid: 3.3.7
@@ -5996,14 +5996,14 @@ snapshots:
- vite - vite
- vue - vue
'@vue/devtools-kit@7.1.2(vue@3.4.23(typescript@5.4.5))': '@vue/devtools-kit@7.1.2(vue@3.4.25(typescript@5.4.5))':
dependencies: dependencies:
'@vue/devtools-shared': 7.1.2 '@vue/devtools-shared': 7.1.2
hookable: 5.5.3 hookable: 5.5.3
mitt: 3.0.1 mitt: 3.0.1
perfect-debounce: 1.0.0 perfect-debounce: 1.0.0
speakingurl: 14.0.1 speakingurl: 14.0.1
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
'@vue/devtools-shared@7.1.2': '@vue/devtools-shared@7.1.2':
dependencies: dependencies:
@@ -6021,46 +6021,46 @@ snapshots:
optionalDependencies: optionalDependencies:
typescript: 5.4.5 typescript: 5.4.5
'@vue/reactivity@3.4.23': '@vue/reactivity@3.4.25':
dependencies: dependencies:
'@vue/shared': 3.4.23 '@vue/shared': 3.4.25
'@vue/runtime-core@3.4.23': '@vue/runtime-core@3.4.25':
dependencies: dependencies:
'@vue/reactivity': 3.4.23 '@vue/reactivity': 3.4.25
'@vue/shared': 3.4.23 '@vue/shared': 3.4.25
'@vue/runtime-dom@3.4.23': '@vue/runtime-dom@3.4.25':
dependencies: dependencies:
'@vue/runtime-core': 3.4.23 '@vue/runtime-core': 3.4.25
'@vue/shared': 3.4.23 '@vue/shared': 3.4.25
csstype: 3.1.3 csstype: 3.1.3
'@vue/server-renderer@3.4.23(vue@3.4.23(typescript@5.4.5))': '@vue/server-renderer@3.4.25(vue@3.4.25(typescript@5.4.5))':
dependencies: dependencies:
'@vue/compiler-ssr': 3.4.23 '@vue/compiler-ssr': 3.4.25
'@vue/shared': 3.4.23 '@vue/shared': 3.4.25
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
'@vue/shared@3.4.23': {}
'@vue/shared@3.4.24': {} '@vue/shared@3.4.24': {}
'@vueuse/core@10.9.0(vue@3.4.23(typescript@5.4.5))': '@vue/shared@3.4.25': {}
'@vueuse/core@10.9.0(vue@3.4.25(typescript@5.4.5))':
dependencies: dependencies:
'@types/web-bluetooth': 0.0.20 '@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.9.0 '@vueuse/metadata': 10.9.0
'@vueuse/shared': 10.9.0(vue@3.4.23(typescript@5.4.5)) '@vueuse/shared': 10.9.0(vue@3.4.25(typescript@5.4.5))
vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.5)) vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
'@vueuse/metadata@10.9.0': {} '@vueuse/metadata@10.9.0': {}
'@vueuse/shared@10.9.0(vue@3.4.23(typescript@5.4.5))': '@vueuse/shared@10.9.0(vue@3.4.25(typescript@5.4.5))':
dependencies: dependencies:
vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.5)) vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
@@ -8347,10 +8347,10 @@ snapshots:
muggle-string@0.4.1: {} muggle-string@0.4.1: {}
naive-ui@2.38.1(vue@3.4.23(typescript@5.4.5)): naive-ui@2.38.1(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
'@css-render/plugin-bem': 0.15.12(css-render@0.15.12) '@css-render/plugin-bem': 0.15.12(css-render@0.15.12)
'@css-render/vue3-ssr': 0.15.12(vue@3.4.23(typescript@5.4.5)) '@css-render/vue3-ssr': 0.15.12(vue@3.4.25(typescript@5.4.5))
'@types/katex': 0.16.7 '@types/katex': 0.16.7
'@types/lodash': 4.17.0 '@types/lodash': 4.17.0
'@types/lodash-es': 4.17.12 '@types/lodash-es': 4.17.12
@@ -8365,10 +8365,10 @@ snapshots:
lodash-es: 4.17.21 lodash-es: 4.17.21
seemly: 0.3.8 seemly: 0.3.8
treemate: 0.3.11 treemate: 0.3.11
vdirs: 0.1.8(vue@3.4.23(typescript@5.4.5)) vdirs: 0.1.8(vue@3.4.25(typescript@5.4.5))
vooks: 0.2.12(vue@3.4.23(typescript@5.4.5)) vooks: 0.2.12(vue@3.4.25(typescript@5.4.5))
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
vueuc: 0.4.58(vue@3.4.23(typescript@5.4.5)) vueuc: 0.4.58(vue@3.4.25(typescript@5.4.5))
nanoid@3.3.7: {} nanoid@3.3.7: {}
@@ -8714,11 +8714,11 @@ snapshots:
pidtree@0.6.0: {} pidtree@0.6.0: {}
pinia@2.1.7(typescript@5.4.5)(vue@3.4.23(typescript@5.4.5)): pinia@2.1.7(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
'@vue/devtools-api': 6.6.1 '@vue/devtools-api': 6.6.1
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.5)) vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5))
optionalDependencies: optionalDependencies:
typescript: 5.4.5 typescript: 5.4.5
@@ -9149,11 +9149,11 @@ snapshots:
lodash: 4.17.21 lodash: 4.17.21
lodash-es: 4.17.21 lodash-es: 4.17.21
simplebar-vue@2.3.3(vue@3.4.23(typescript@5.4.5)): simplebar-vue@2.3.3(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
simplebar-core: 1.2.4 simplebar-core: 1.2.4
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
vue-demi: 0.13.11(vue@3.4.23(typescript@5.4.5)) vue-demi: 0.13.11(vue@3.4.25(typescript@5.4.5))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
@@ -9618,7 +9618,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
unplugin-vue-components@0.26.0(@babel/parser@7.24.4)(rollup@4.16.4)(vue@3.4.23(typescript@5.4.5)): unplugin-vue-components@0.26.0(@babel/parser@7.24.4)(rollup@4.16.4)(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
'@antfu/utils': 0.7.7 '@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@4.16.4) '@rollup/pluginutils': 5.1.0(rollup@4.16.4)
@@ -9630,7 +9630,7 @@ snapshots:
minimatch: 9.0.4 minimatch: 9.0.4
resolve: 1.22.8 resolve: 1.22.8
unplugin: 1.10.1 unplugin: 1.10.1
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
optionalDependencies: optionalDependencies:
'@babel/parser': 7.24.4 '@babel/parser': 7.24.4
transitivePeerDependencies: transitivePeerDependencies:
@@ -9710,10 +9710,10 @@ snapshots:
vary@1.1.2: {} vary@1.1.2: {}
vdirs@0.1.8(vue@3.4.23(typescript@5.4.5)): vdirs@0.1.8(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
evtd: 0.2.4 evtd: 0.2.4
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
vite-hot-client@0.2.3(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)): vite-hot-client@0.2.3(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)):
dependencies: dependencies:
@@ -9756,10 +9756,10 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
vite-plugin-vue-devtools@7.1.2(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)): vite-plugin-vue-devtools@7.1.2(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
'@vue/devtools-core': 7.1.2(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)) '@vue/devtools-core': 7.1.2(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))
'@vue/devtools-kit': 7.1.2(vue@3.4.23(typescript@5.4.5)) '@vue/devtools-kit': 7.1.2(vue@3.4.25(typescript@5.4.5))
'@vue/devtools-shared': 7.1.2 '@vue/devtools-shared': 7.1.2
execa: 8.0.1 execa: 8.0.1
sirv: 2.0.4 sirv: 2.0.4
@@ -9797,18 +9797,18 @@ snapshots:
fsevents: 2.3.3 fsevents: 2.3.3
sass: 1.75.0 sass: 1.75.0
vooks@0.2.12(vue@3.4.23(typescript@5.4.5)): vooks@0.2.12(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
evtd: 0.2.4 evtd: 0.2.4
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
vue-demi@0.13.11(vue@3.4.23(typescript@5.4.5)): vue-demi@0.13.11(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
vue-demi@0.14.7(vue@3.4.23(typescript@5.4.5)): vue-demi@0.14.7(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
vue-draggable-plus@0.4.0(@types/sortablejs@1.15.8): vue-draggable-plus@0.4.0(@types/sortablejs@1.15.8):
dependencies: dependencies:
@@ -9827,17 +9827,17 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
vue-i18n@9.13.1(vue@3.4.23(typescript@5.4.5)): vue-i18n@9.13.1(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
'@intlify/core-base': 9.13.1 '@intlify/core-base': 9.13.1
'@intlify/shared': 9.13.1 '@intlify/shared': 9.13.1
'@vue/devtools-api': 6.6.1 '@vue/devtools-api': 6.6.1
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
vue-router@4.3.2(vue@3.4.23(typescript@5.4.5)): vue-router@4.3.2(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
'@vue/devtools-api': 6.6.1 '@vue/devtools-api': 6.6.1
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
vue-template-compiler@2.7.16: vue-template-compiler@2.7.16:
dependencies: dependencies:
@@ -9851,26 +9851,26 @@ snapshots:
semver: 7.6.0 semver: 7.6.0
typescript: 5.4.5 typescript: 5.4.5
vue@3.4.23(typescript@5.4.5): vue@3.4.25(typescript@5.4.5):
dependencies: dependencies:
'@vue/compiler-dom': 3.4.23 '@vue/compiler-dom': 3.4.25
'@vue/compiler-sfc': 3.4.23 '@vue/compiler-sfc': 3.4.25
'@vue/runtime-dom': 3.4.23 '@vue/runtime-dom': 3.4.25
'@vue/server-renderer': 3.4.23(vue@3.4.23(typescript@5.4.5)) '@vue/server-renderer': 3.4.25(vue@3.4.25(typescript@5.4.5))
'@vue/shared': 3.4.23 '@vue/shared': 3.4.25
optionalDependencies: optionalDependencies:
typescript: 5.4.5 typescript: 5.4.5
vueuc@0.4.58(vue@3.4.23(typescript@5.4.5)): vueuc@0.4.58(vue@3.4.25(typescript@5.4.5)):
dependencies: dependencies:
'@css-render/vue3-ssr': 0.15.12(vue@3.4.23(typescript@5.4.5)) '@css-render/vue3-ssr': 0.15.12(vue@3.4.25(typescript@5.4.5))
'@juggle/resize-observer': 3.4.0 '@juggle/resize-observer': 3.4.0
css-render: 0.15.12 css-render: 0.15.12
evtd: 0.2.4 evtd: 0.2.4
seemly: 0.3.8 seemly: 0.3.8
vdirs: 0.1.8(vue@3.4.23(typescript@5.4.5)) vdirs: 0.1.8(vue@3.4.25(typescript@5.4.5))
vooks: 0.2.12(vue@3.4.23(typescript@5.4.5)) vooks: 0.2.12(vue@3.4.25(typescript@5.4.5))
vue: 3.4.23(typescript@5.4.5) vue: 3.4.25(typescript@5.4.5)
webpack-sources@3.2.3: {} webpack-sources@3.2.3: {}

View File

@@ -1,4 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { $t } from '@/locales';
defineOptions({ defineOptions({
name: 'TableHeaderOperation' name: 'TableHeaderOperation'
}); });

View File

@@ -18,6 +18,7 @@ defineOptions({
const appStore = useAppStore(); const appStore = useAppStore();
const themeStore = useThemeStore(); const themeStore = useThemeStore();
const { menus } = setupMixMenuContext();
const layoutMode = computed(() => { const layoutMode = computed(() => {
const vertical: LayoutMode = 'vertical'; const vertical: LayoutMode = 'vertical';
@@ -65,7 +66,7 @@ function getSiderWidth() {
let w = isVerticalMix.value || isHorizontalMix.value ? mixWidth : width; let w = isVerticalMix.value || isHorizontalMix.value ? mixWidth : width;
if (isVerticalMix.value && appStore.mixSiderFixed) { if (isVerticalMix.value && appStore.mixSiderFixed && menus.value.length) {
w += mixChildMenuWidth; w += mixChildMenuWidth;
} }
@@ -77,14 +78,12 @@ function getSiderCollapsedWidth() {
let w = isVerticalMix.value || isHorizontalMix.value ? mixCollapsedWidth : collapsedWidth; let w = isVerticalMix.value || isHorizontalMix.value ? mixCollapsedWidth : collapsedWidth;
if (isVerticalMix.value && appStore.mixSiderFixed) { if (isVerticalMix.value && appStore.mixSiderFixed && menus.value.length) {
w += mixChildMenuWidth; w += mixChildMenuWidth;
} }
return w; return w;
} }
setupMixMenuContext();
</script> </script>
<template> <template>

View File

@@ -1,4 +1,47 @@
import { computed, ref, watch } from 'vue';
import { useRoute } from 'vue-router';
import { useContext } from '@sa/hooks'; import { useContext } from '@sa/hooks';
import { useMixMenu } from '../hooks'; import { useRouteStore } from '@/store/modules/route';
export const { setupStore: setupMixMenuContext, useStore: useMixMenuContext } = useContext('mix-menu', useMixMenu); export const { setupStore: setupMixMenuContext, useStore: useMixMenuContext } = useContext('mix-menu', useMixMenu);
function useMixMenu() {
const route = useRoute();
const routeStore = useRouteStore();
const activeFirstLevelMenuKey = ref('');
function setActiveFirstLevelMenuKey(key: string) {
activeFirstLevelMenuKey.value = key;
}
function getActiveFirstLevelMenuKey() {
const { hideInMenu, activeMenu } = route.meta;
const name = route.name as string;
const routeName = (hideInMenu ? activeMenu : name) || name;
const [firstLevelRouteName] = routeName.split('_');
setActiveFirstLevelMenuKey(firstLevelRouteName);
}
const menus = computed(
() => routeStore.menus.find(menu => menu.key === activeFirstLevelMenuKey.value)?.children || []
);
watch(
() => route.name,
() => {
getActiveFirstLevelMenuKey();
},
{ immediate: true }
);
return {
activeFirstLevelMenuKey,
setActiveFirstLevelMenuKey,
getActiveFirstLevelMenuKey,
menus
};
}

View File

@@ -1,44 +0,0 @@
import { computed, ref, watch } from 'vue';
import { useRoute } from 'vue-router';
import { useRouteStore } from '@/store/modules/route';
export function useMixMenu() {
const route = useRoute();
const routeStore = useRouteStore();
const activeFirstLevelMenuKey = ref('');
function setActiveFirstLevelMenuKey(key: string) {
activeFirstLevelMenuKey.value = key;
}
function getActiveFirstLevelMenuKey() {
const { hideInMenu, activeMenu } = route.meta;
const name = route.name as string;
const routeName = (hideInMenu ? activeMenu : name) || name;
const [firstLevelRouteName] = routeName.split('_');
setActiveFirstLevelMenuKey(firstLevelRouteName);
}
const menus = computed(
() => routeStore.menus.find(menu => menu.key === activeFirstLevelMenuKey.value)?.children || []
);
watch(
() => route.name,
() => {
getActiveFirstLevelMenuKey();
},
{ immediate: true }
);
return {
activeFirstLevelMenuKey,
setActiveFirstLevelMenuKey,
getActiveFirstLevelMenuKey,
menus
};
}

View File

@@ -2,10 +2,10 @@
import { computed } from 'vue'; import { computed } from 'vue';
import { useBoolean } from '@sa/hooks'; import { useBoolean } from '@sa/hooks';
import { useAppStore } from '@/store/modules/app'; import { useAppStore } from '@/store/modules/app';
import { useRouteStore } from '@/store/modules/route';
import { useThemeStore } from '@/store/modules/theme'; import { useThemeStore } from '@/store/modules/theme';
import { useRouterPush } from '@/hooks/common/router'; import { useRouterPush } from '@/hooks/common/router';
import { useMixMenu } from '../../hooks'; import { $t } from '@/locales';
import { useMixMenuContext } from '../../context';
import FirstLevelMenu from './first-level-menu.vue'; import FirstLevelMenu from './first-level-menu.vue';
import BaseMenu from './base-menu.vue'; import BaseMenu from './base-menu.vue';
@@ -15,16 +15,15 @@ defineOptions({
const appStore = useAppStore(); const appStore = useAppStore();
const themeStore = useThemeStore(); const themeStore = useThemeStore();
const routeStore = useRouteStore();
const { routerPushByKey } = useRouterPush(); const { routerPushByKey } = useRouterPush();
const { bool: drawerVisible, setBool: setDrawerVisible } = useBoolean(); const { bool: drawerVisible, setBool: setDrawerVisible } = useBoolean();
const { activeFirstLevelMenuKey, setActiveFirstLevelMenuKey, getActiveFirstLevelMenuKey } = useMixMenu(); const { menus, activeFirstLevelMenuKey, setActiveFirstLevelMenuKey, getActiveFirstLevelMenuKey } = useMixMenuContext();
const siderInverted = computed(() => !themeStore.darkMode && themeStore.sider.inverted); const siderInverted = computed(() => !themeStore.darkMode && themeStore.sider.inverted);
const menus = computed(() => routeStore.menus.find(menu => menu.key === activeFirstLevelMenuKey.value)?.children || []); const hasMenus = computed(() => menus.value.length > 0);
const showDrawer = computed(() => (drawerVisible.value && menus.value.length) || appStore.mixSiderFixed); const showDrawer = computed(() => hasMenus.value && (drawerVisible.value || appStore.mixSiderFixed));
function handleSelectMixMenu(menu: App.Global.Menu) { function handleSelectMixMenu(menu: App.Global.Menu) {
setActiveFirstLevelMenuKey(menu.key); setActiveFirstLevelMenuKey(menu.key);
@@ -49,7 +48,7 @@ function handleResetActiveMenu() {
</FirstLevelMenu> </FirstLevelMenu>
<div <div
class="relative h-full transition-width-300" class="relative h-full transition-width-300"
:style="{ width: appStore.mixSiderFixed ? themeStore.sider.mixChildMenuWidth + 'px' : '0px' }" :style="{ width: appStore.mixSiderFixed && hasMenus ? themeStore.sider.mixChildMenuWidth + 'px' : '0px' }"
> >
<DarkModeContainer <DarkModeContainer
class="absolute-lt h-full flex-col-stretch nowrap-hidden shadow-sm transition-all-300" class="absolute-lt h-full flex-col-stretch nowrap-hidden shadow-sm transition-all-300"

View File

@@ -1,6 +1,6 @@
import { effectScope, onScopeDispose, ref, watch } from 'vue'; import { effectScope, onScopeDispose, ref, watch } from 'vue';
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { breakpointsTailwind, useBreakpoints, useTitle } from '@vueuse/core'; import { breakpointsTailwind, useBreakpoints, useEventListener, useTitle } from '@vueuse/core';
import { useBoolean } from '@sa/hooks'; import { useBoolean } from '@sa/hooks';
import { SetupStoreId } from '@/enum'; import { SetupStoreId } from '@/enum';
import { router } from '@/router'; import { router } from '@/router';
@@ -22,7 +22,11 @@ export const useAppStore = defineStore(SetupStoreId.App, () => {
const { bool: fullContent, toggle: toggleFullContent } = useBoolean(); const { bool: fullContent, toggle: toggleFullContent } = useBoolean();
const { bool: contentXScrollable, setBool: setContentXScrollable } = useBoolean(); const { bool: contentXScrollable, setBool: setContentXScrollable } = useBoolean();
const { bool: siderCollapse, setBool: setSiderCollapse, toggle: toggleSiderCollapse } = useBoolean(); const { bool: siderCollapse, setBool: setSiderCollapse, toggle: toggleSiderCollapse } = useBoolean();
const { bool: mixSiderFixed, setBool: setMixSiderFixed, toggle: toggleMixSiderFixed } = useBoolean(); const {
bool: mixSiderFixed,
setBool: setMixSiderFixed,
toggle: toggleMixSiderFixed
} = useBoolean(localStg.get('mixSiderFixed') === 'Y');
/** Is mobile layout */ /** Is mobile layout */
const isMobile = breakpoints.smaller('sm'); const isMobile = breakpoints.smaller('sm');
@@ -107,6 +111,11 @@ export const useAppStore = defineStore(SetupStoreId.App, () => {
}); });
}); });
// cache mixSiderFixed
useEventListener(window, 'beforeunload', () => {
localStg.set('mixSiderFixed', mixSiderFixed.value ? 'Y' : 'N');
});
/** On scope dispose */ /** On scope dispose */
onScopeDispose(() => { onScopeDispose(() => {
scope.stop(); scope.stop();

View File

@@ -14,6 +14,8 @@ declare namespace StorageType {
lang: App.I18n.LangType; lang: App.I18n.LangType;
/** The token */ /** The token */
token: string; token: string;
/** Fixed sider with mix-menu */
mixSiderFixed: CommonType.YesOrNo;
/** The refresh token */ /** The refresh token */
refreshToken: string; refreshToken: string;
/** The user info */ /** The user info */

View File

@@ -182,7 +182,7 @@ watch(visible, () => {
</script> </script>
<template> <template>
<NDrawer v-model:show="visible" :title="title" display-directive="show" :width="360"> <NDrawer v-model:show="visible" display-directive="show" :width="360">
<NDrawerContent :title="title" :native-scrollbar="false" closable> <NDrawerContent :title="title" :native-scrollbar="false" closable>
<NForm ref="formRef" :model="model" :rules="rules" label-placement="left" :label-width="80"> <NForm ref="formRef" :model="model" :rules="rules" label-placement="left" :label-width="80">
<NFormItem :label="$t('page.manage.menu.menuType')" path="menuType"> <NFormItem :label="$t('page.manage.menu.menuType')" path="menuType">

View File

@@ -100,7 +100,7 @@ watch(visible, () => {
</script> </script>
<template> <template>
<NDrawer v-model:show="visible" :title="title" display-directive="show" :width="360"> <NDrawer v-model:show="visible" display-directive="show" :width="360">
<NDrawerContent :title="title" :native-scrollbar="false" closable> <NDrawerContent :title="title" :native-scrollbar="false" closable>
<NForm ref="formRef" :model="model" :rules="rules"> <NForm ref="formRef" :model="model" :rules="rules">
<NFormItem :label="$t('page.manage.role.roleName')" path="roleName"> <NFormItem :label="$t('page.manage.role.roleName')" path="roleName">

View File

@@ -122,7 +122,7 @@ watch(visible, () => {
</script> </script>
<template> <template>
<NDrawer v-model:show="visible" :title="title" display-directive="show" :width="360"> <NDrawer v-model:show="visible" display-directive="show" :width="360">
<NDrawerContent :title="title" :native-scrollbar="false" closable> <NDrawerContent :title="title" :native-scrollbar="false" closable>
<NForm ref="formRef" :model="model" :rules="rules"> <NForm ref="formRef" :model="model" :rules="rules">
<NFormItem :label="$t('page.manage.user.userName')" path="userName"> <NFormItem :label="$t('page.manage.user.userName')" path="userName">