From 13fd0ea16c01ff4334a4248c71947a2cc63c5a67 Mon Sep 17 00:00:00 2001 From: Vben Date: Thu, 3 Oct 2024 15:34:29 +0800 Subject: [PATCH 1/3] fix: try to fix the error reported by the stub command in the window system (#4560) --- docs/src/en/guide/essentials/development.md | 2 +- docs/src/guide/essentials/development.md | 2 +- package.json | 2 +- scripts/turbo-run/src/run.ts | 1 + turbo.json | 3 --- 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/src/en/guide/essentials/development.md b/docs/src/en/guide/essentials/development.md index 5e168e47..287c0a96 100644 --- a/docs/src/en/guide/essentials/development.md +++ b/docs/src/en/guide/essentials/development.md @@ -95,7 +95,7 @@ The execution command is: `pnpm run [script]` or `npm run [script]`. // Lint code "lint": "vsh lint", // After installing dependencies, execute the stub script for all packages - "postinstall": "turbo run stub", + "postinstall": "pnpm -r run stub --if-present", // Only allow using pnpm "preinstall": "npx only-allow pnpm", // Install husky diff --git a/docs/src/guide/essentials/development.md b/docs/src/guide/essentials/development.md index 2af6a357..7e64564f 100644 --- a/docs/src/guide/essentials/development.md +++ b/docs/src/guide/essentials/development.md @@ -95,7 +95,7 @@ npm 脚本是项目常见的配置,用于执行一些常见的任务,比如 // lint 代码 "lint": "vsh lint", // 依赖安装完成之后,执行所有包的stub脚本 - "postinstall": "turbo run stub", + "postinstall": "pnpm -r run stub --if-present", // 只允许使用pnpm "preinstall": "npx only-allow pnpm", // husky的安装 diff --git a/package.json b/package.json index 940fbfba..9857ee72 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "dev:play": "pnpm -F @vben/playground run dev", "format": "vsh lint --format", "lint": "vsh lint", - "postinstall": "turbo run stub", + "postinstall": "pnpm -r run stub --if-present", "preinstall": "npx only-allow pnpm", "prepare": "is-ci || husky", "preview": "turbo-run preview", diff --git a/scripts/turbo-run/src/run.ts b/scripts/turbo-run/src/run.ts index 6a8762fa..2e2efd8b 100644 --- a/scripts/turbo-run/src/run.ts +++ b/scripts/turbo-run/src/run.ts @@ -46,6 +46,7 @@ export async function run(options: RunOptions) { process.exit(1); } + process.env.VITE_CJS_IGNORE_WARNING = '1'; execaCommand(`pnpm --filter=${selectPkg} run ${command}`, { stdio: 'inherit', }); diff --git a/turbo.json b/turbo.json index a1d57e58..bc2fe7f6 100644 --- a/turbo.json +++ b/turbo.json @@ -30,9 +30,6 @@ "dependsOn": ["^build"], "outputs": [".nitro/**", ".output/**"] }, - "stub": { - "cache": false - }, "test:e2e": {}, "dev": { "dependsOn": [], From 46540a73299670e860df1b6fadd88790bc55d8ca Mon Sep 17 00:00:00 2001 From: vben Date: Thu, 3 Oct 2024 15:43:15 +0800 Subject: [PATCH 2/3] chore: release v5.3.2 --- apps/web-antd/package.json | 2 +- apps/web-ele/package.json | 2 +- apps/web-naive/package.json | 2 +- docs/package.json | 2 +- internal/lint-configs/commitlint-config/package.json | 2 +- internal/lint-configs/stylelint-config/package.json | 2 +- internal/node-utils/package.json | 2 +- internal/tailwind-config/package.json | 2 +- internal/tsconfig/package.json | 2 +- internal/vite-config/package.json | 2 +- package.json | 2 +- packages/@core/base/design/package.json | 2 +- packages/@core/base/icons/package.json | 2 +- packages/@core/base/shared/package.json | 2 +- packages/@core/base/typings/package.json | 2 +- packages/@core/composables/package.json | 2 +- packages/@core/preferences/package.json | 2 +- packages/@core/ui-kit/layout-ui/package.json | 2 +- packages/@core/ui-kit/menu-ui/package.json | 2 +- packages/@core/ui-kit/shadcn-ui/package.json | 2 +- packages/@core/ui-kit/tabs-ui/package.json | 2 +- packages/constants/package.json | 2 +- packages/effects/access/package.json | 2 +- packages/effects/common-ui/package.json | 2 +- packages/effects/hooks/package.json | 2 +- packages/effects/layouts/package.json | 2 +- packages/effects/plugins/package.json | 2 +- packages/effects/request/package.json | 2 +- packages/icons/package.json | 2 +- packages/locales/package.json | 2 +- packages/preferences/package.json | 2 +- packages/stores/package.json | 2 +- packages/styles/package.json | 2 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- scripts/turbo-run/package.json | 2 +- scripts/vsh/package.json | 2 +- 37 files changed, 37 insertions(+), 37 deletions(-) diff --git a/apps/web-antd/package.json b/apps/web-antd/package.json index bf6b904e..1e6f1b70 100644 --- a/apps/web-antd/package.json +++ b/apps/web-antd/package.json @@ -1,6 +1,6 @@ { "name": "@vben/web-antd", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://vben.pro", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/apps/web-ele/package.json b/apps/web-ele/package.json index 4a1286c1..5d29e439 100644 --- a/apps/web-ele/package.json +++ b/apps/web-ele/package.json @@ -1,6 +1,6 @@ { "name": "@vben/web-ele", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://vben.pro", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/apps/web-naive/package.json b/apps/web-naive/package.json index b6ead495..45ea2af4 100644 --- a/apps/web-naive/package.json +++ b/apps/web-naive/package.json @@ -1,6 +1,6 @@ { "name": "@vben/web-naive", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://vben.pro", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/docs/package.json b/docs/package.json index 2b9f1c2f..ee1553f8 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@vben/docs", - "version": "5.3.1", + "version": "5.3.2", "private": true, "scripts": { "build": "vitepress build", diff --git a/internal/lint-configs/commitlint-config/package.json b/internal/lint-configs/commitlint-config/package.json index f2dd4715..8224a072 100644 --- a/internal/lint-configs/commitlint-config/package.json +++ b/internal/lint-configs/commitlint-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/commitlint-config", - "version": "5.3.1", + "version": "5.3.2", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/lint-configs/stylelint-config/package.json b/internal/lint-configs/stylelint-config/package.json index 4f4c3d19..3d5dbec4 100644 --- a/internal/lint-configs/stylelint-config/package.json +++ b/internal/lint-configs/stylelint-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/stylelint-config", - "version": "5.3.1", + "version": "5.3.2", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/node-utils/package.json b/internal/node-utils/package.json index 680835ec..1455e492 100644 --- a/internal/node-utils/package.json +++ b/internal/node-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vben/node-utils", - "version": "5.3.1", + "version": "5.3.2", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/tailwind-config/package.json b/internal/tailwind-config/package.json index e40645ed..9148f7bb 100644 --- a/internal/tailwind-config/package.json +++ b/internal/tailwind-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/tailwind-config", - "version": "5.3.1", + "version": "5.3.2", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/tsconfig/package.json b/internal/tsconfig/package.json index e7bcef34..4c8a1934 100644 --- a/internal/tsconfig/package.json +++ b/internal/tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@vben/tsconfig", - "version": "5.3.1", + "version": "5.3.2", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/vite-config/package.json b/internal/vite-config/package.json index 52cda1a2..a2d48d9f 100644 --- a/internal/vite-config/package.json +++ b/internal/vite-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/vite-config", - "version": "5.3.1", + "version": "5.3.2", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/package.json b/package.json index 9857ee72..cb1d13ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vben-admin-pro", - "version": "5.3.1", + "version": "5.3.2", "private": true, "keywords": [ "monorepo", diff --git a/packages/@core/base/design/package.json b/packages/@core/base/design/package.json index 3b7eaa3b..9f1ac6ab 100644 --- a/packages/@core/base/design/package.json +++ b/packages/@core/base/design/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/design", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/base/icons/package.json b/packages/@core/base/icons/package.json index ba2f2f9d..2c61bc42 100644 --- a/packages/@core/base/icons/package.json +++ b/packages/@core/base/icons/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/icons", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/base/shared/package.json b/packages/@core/base/shared/package.json index 57d593fc..5d7cd4e1 100644 --- a/packages/@core/base/shared/package.json +++ b/packages/@core/base/shared/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/shared", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/base/typings/package.json b/packages/@core/base/typings/package.json index 3c39e5ad..8057b85f 100644 --- a/packages/@core/base/typings/package.json +++ b/packages/@core/base/typings/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/typings", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/composables/package.json b/packages/@core/composables/package.json index 450c4660..06cb810c 100644 --- a/packages/@core/composables/package.json +++ b/packages/@core/composables/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/composables", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/preferences/package.json b/packages/@core/preferences/package.json index 66b262e1..d7eca4c5 100644 --- a/packages/@core/preferences/package.json +++ b/packages/@core/preferences/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/preferences", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/ui-kit/layout-ui/package.json b/packages/@core/ui-kit/layout-ui/package.json index 239717a6..90b46c83 100644 --- a/packages/@core/ui-kit/layout-ui/package.json +++ b/packages/@core/ui-kit/layout-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/layout-ui", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/ui-kit/menu-ui/package.json b/packages/@core/ui-kit/menu-ui/package.json index 78d77ce4..9704f5ac 100644 --- a/packages/@core/ui-kit/menu-ui/package.json +++ b/packages/@core/ui-kit/menu-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/menu-ui", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/ui-kit/shadcn-ui/package.json b/packages/@core/ui-kit/shadcn-ui/package.json index a646640f..d882b2d1 100644 --- a/packages/@core/ui-kit/shadcn-ui/package.json +++ b/packages/@core/ui-kit/shadcn-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/shadcn-ui", - "version": "5.3.1", + "version": "5.3.2", "#main": "./dist/index.mjs", "#module": "./dist/index.mjs", "homepage": "https://github.com/vbenjs/vue-vben-admin", diff --git a/packages/@core/ui-kit/tabs-ui/package.json b/packages/@core/ui-kit/tabs-ui/package.json index a51af8a3..911f6f35 100644 --- a/packages/@core/ui-kit/tabs-ui/package.json +++ b/packages/@core/ui-kit/tabs-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/tabs-ui", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/constants/package.json b/packages/constants/package.json index 85225203..57e51865 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -1,6 +1,6 @@ { "name": "@vben/constants", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/access/package.json b/packages/effects/access/package.json index 22f1113f..a6d20668 100644 --- a/packages/effects/access/package.json +++ b/packages/effects/access/package.json @@ -1,6 +1,6 @@ { "name": "@vben/access", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/common-ui/package.json b/packages/effects/common-ui/package.json index 0e18a94c..b0110272 100644 --- a/packages/effects/common-ui/package.json +++ b/packages/effects/common-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben/common-ui", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/hooks/package.json b/packages/effects/hooks/package.json index f0f7cf05..8564d1a8 100644 --- a/packages/effects/hooks/package.json +++ b/packages/effects/hooks/package.json @@ -1,6 +1,6 @@ { "name": "@vben/hooks", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/layouts/package.json b/packages/effects/layouts/package.json index d301ce17..8b034029 100644 --- a/packages/effects/layouts/package.json +++ b/packages/effects/layouts/package.json @@ -1,6 +1,6 @@ { "name": "@vben/layouts", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/plugins/package.json b/packages/effects/plugins/package.json index 8ffeb60d..1d7770d1 100644 --- a/packages/effects/plugins/package.json +++ b/packages/effects/plugins/package.json @@ -1,6 +1,6 @@ { "name": "@vben/plugins", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/request/package.json b/packages/effects/request/package.json index 31c83665..41742f0b 100644 --- a/packages/effects/request/package.json +++ b/packages/effects/request/package.json @@ -1,6 +1,6 @@ { "name": "@vben/request", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/icons/package.json b/packages/icons/package.json index 5c6d2e74..d2016d28 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -1,6 +1,6 @@ { "name": "@vben/icons", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/locales/package.json b/packages/locales/package.json index 6d92a6f5..56839e12 100644 --- a/packages/locales/package.json +++ b/packages/locales/package.json @@ -1,6 +1,6 @@ { "name": "@vben/locales", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/preferences/package.json b/packages/preferences/package.json index 6d5563d9..6d10d3c7 100644 --- a/packages/preferences/package.json +++ b/packages/preferences/package.json @@ -1,6 +1,6 @@ { "name": "@vben/preferences", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/stores/package.json b/packages/stores/package.json index 3562e465..97fefbd8 100644 --- a/packages/stores/package.json +++ b/packages/stores/package.json @@ -1,6 +1,6 @@ { "name": "@vben/stores", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/styles/package.json b/packages/styles/package.json index 7dbbb41f..be4f5008 100644 --- a/packages/styles/package.json +++ b/packages/styles/package.json @@ -1,6 +1,6 @@ { "name": "@vben/styles", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/types/package.json b/packages/types/package.json index d8eeeb43..8cc34787 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@vben/types", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/utils/package.json b/packages/utils/package.json index d201d169..8221a11e 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@vben/utils", - "version": "5.3.1", + "version": "5.3.2", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/scripts/turbo-run/package.json b/scripts/turbo-run/package.json index d4d219b4..e8dca299 100644 --- a/scripts/turbo-run/package.json +++ b/scripts/turbo-run/package.json @@ -1,6 +1,6 @@ { "name": "@vben/turbo-run", - "version": "5.3.1", + "version": "5.3.2", "private": true, "license": "MIT", "type": "module", diff --git a/scripts/vsh/package.json b/scripts/vsh/package.json index fa45b75f..c26be14f 100644 --- a/scripts/vsh/package.json +++ b/scripts/vsh/package.json @@ -1,6 +1,6 @@ { "name": "@vben/vsh", - "version": "5.3.1", + "version": "5.3.2", "private": true, "license": "MIT", "type": "module", From 417326480579765bbea54d280e95db7250049c18 Mon Sep 17 00:00:00 2001 From: Vben Date: Fri, 4 Oct 2024 23:05:28 +0800 Subject: [PATCH 3/3] feat: add vxe-table component (#4563) * chore: wip vxe-table * feat: add table demo * chore: follow ci recommendations to adjust details * chore: add custom-cell demo * feat: add custom-cell table demo * feat: add table from demo --- apps/backend-mock/api/table/list.ts | 48 ++++ apps/backend-mock/package.json | 1 + apps/backend-mock/utils/response.ts | 36 +++ apps/web-antd/src/adapter/index.ts | 1 + apps/web-antd/src/adapter/vxe-table.ts | 59 ++++ apps/web-ele/src/adapter/index.ts | 1 + apps/web-ele/src/adapter/vxe-table.ts | 60 ++++ apps/web-naive/src/adapter/index.ts | 1 + apps/web-naive/src/adapter/vxe-table.ts | 59 ++++ cspell.json | 1 + docs/package.json | 2 - docs/src/components/common-ui/vben-form.md | 1 + internal/tailwind-config/src/index.ts | 5 +- internal/vite-config/package.json | 3 +- .../vite-config/src/config/application.ts | 1 + internal/vite-config/src/plugins/index.ts | 8 + internal/vite-config/src/plugins/vxe-table.ts | 20 ++ internal/vite-config/src/typing.ts | 2 + .../design/src/design-tokens/dark/index.css | 1 + .../src/design-tokens/default/index.css | 2 +- packages/@core/base/icons/build.config.ts | 16 +- .../@core/base/icons/src/components/empty.vue | 27 ++ packages/@core/base/icons/src/index.ts | 3 +- .../base/shared/src/constants/globals.ts | 10 +- packages/@core/base/shared/src/utils/dom.ts | 8 + packages/@core/composables/src/index.ts | 2 +- ...e-content-style.ts => use-layout-style.ts} | 32 ++- .../__snapshots__/config.test.ts.snap | 2 +- packages/@core/preferences/src/config.ts | 2 +- .../@core/preferences/src/use-preferences.ts | 5 + .../ui-kit/form-ui/__tests__/form-api.test.ts | 2 +- .../form-ui/src/components/form-actions.vue | 14 +- packages/@core/ui-kit/form-ui/src/form-api.ts | 4 +- packages/@core/ui-kit/form-ui/src/types.ts | 9 + .../@core/ui-kit/form-ui/src/use-vben-form.ts | 2 +- .../ui-kit/form-ui/src/vben-use-form.vue | 15 + .../src/components/layout-content.vue | 4 +- .../ui-kit/layout-ui/src/vben-layout.vue | 29 +- packages/@core/ui-kit/menu-ui/build.config.ts | 7 - .../@core/ui-kit/shadcn-ui/build.config.ts | 7 - .../src/components/pagination/pagination.vue | 14 +- .../src/components/spinner/loading.vue | 2 +- .../src/components/spinner/spinner.vue | 2 +- .../components/page/__tests__/page.test.ts | 2 +- .../common-ui/src/components/page/page.vue | 81 ++++-- packages/effects/plugins/package.json | 16 +- packages/effects/plugins/postcss.config.mjs | 1 + packages/effects/plugins/src/vxe-table/api.ts | 111 ++++++++ .../effects/plugins/src/vxe-table/index.ts | 4 + .../effects/plugins/src/vxe-table/init.ts | 122 ++++++++ .../effects/plugins/src/vxe-table/theme.css | 78 ++++++ .../effects/plugins/src/vxe-table/types.ts | 53 ++++ .../plugins/src/vxe-table/use-vxe-grid.ts | 42 +++ .../plugins/src/vxe-table/use-vxe-grid.vue | 264 ++++++++++++++++++ packages/effects/plugins/tailwind.config.mjs | 1 + packages/locales/src/langs/en-US.json | 3 +- packages/locales/src/langs/zh-CN.json | 3 +- playground/src/adapter/index.ts | 1 + playground/src/adapter/vxe-table.ts | 59 ++++ .../src/api/{demos => examples}/index.ts | 1 + .../src/api/{demos => examples}/status.ts | 0 playground/src/api/examples/table.ts | 18 ++ playground/src/api/index.ts | 2 +- playground/src/locales/langs/en-US.json | 12 + playground/src/locales/langs/zh-CN.json | 12 + .../src/router/routes/modules/examples.ts | 84 +++++- playground/src/views/examples/doc-button.vue | 2 +- playground/src/views/examples/form/basic.vue | 5 + .../src/views/examples/vxe-table/basic.vue | 93 ++++++ .../views/examples/vxe-table/custom-cell.vue | 110 ++++++++ .../views/examples/vxe-table/edit-cell.vue | 57 ++++ .../src/views/examples/vxe-table/edit-row.vue | 94 +++++++ .../src/views/examples/vxe-table/fixed.vue | 64 +++++ .../src/views/examples/vxe-table/form.vue | 102 +++++++ .../src/views/examples/vxe-table/remote.vue | 65 +++++ .../views/examples/vxe-table/table-data.ts | 172 ++++++++++++ .../src/views/examples/vxe-table/tree.vue | 59 ++++ .../src/views/examples/vxe-table/virtual.vue | 63 +++++ pnpm-lock.yaml | 114 +++++++- pnpm-workspace.yaml | 6 +- 80 files changed, 2426 insertions(+), 80 deletions(-) create mode 100644 apps/backend-mock/api/table/list.ts create mode 100644 apps/web-antd/src/adapter/vxe-table.ts create mode 100644 apps/web-ele/src/adapter/vxe-table.ts create mode 100644 apps/web-naive/src/adapter/vxe-table.ts create mode 100644 internal/vite-config/src/plugins/vxe-table.ts create mode 100644 packages/@core/base/icons/src/components/empty.vue rename packages/@core/composables/src/{use-content-style.ts => use-layout-style.ts} (68%) create mode 100644 packages/effects/plugins/postcss.config.mjs create mode 100644 packages/effects/plugins/src/vxe-table/api.ts create mode 100644 packages/effects/plugins/src/vxe-table/index.ts create mode 100644 packages/effects/plugins/src/vxe-table/init.ts create mode 100644 packages/effects/plugins/src/vxe-table/theme.css create mode 100644 packages/effects/plugins/src/vxe-table/types.ts create mode 100644 packages/effects/plugins/src/vxe-table/use-vxe-grid.ts create mode 100644 packages/effects/plugins/src/vxe-table/use-vxe-grid.vue create mode 100644 packages/effects/plugins/tailwind.config.mjs create mode 100644 playground/src/adapter/vxe-table.ts rename playground/src/api/{demos => examples}/index.ts (50%) rename playground/src/api/{demos => examples}/status.ts (100%) create mode 100644 playground/src/api/examples/table.ts create mode 100644 playground/src/views/examples/vxe-table/basic.vue create mode 100644 playground/src/views/examples/vxe-table/custom-cell.vue create mode 100644 playground/src/views/examples/vxe-table/edit-cell.vue create mode 100644 playground/src/views/examples/vxe-table/edit-row.vue create mode 100644 playground/src/views/examples/vxe-table/fixed.vue create mode 100644 playground/src/views/examples/vxe-table/form.vue create mode 100644 playground/src/views/examples/vxe-table/remote.vue create mode 100644 playground/src/views/examples/vxe-table/table-data.ts create mode 100644 playground/src/views/examples/vxe-table/tree.vue create mode 100644 playground/src/views/examples/vxe-table/virtual.vue diff --git a/apps/backend-mock/api/table/list.ts b/apps/backend-mock/api/table/list.ts new file mode 100644 index 00000000..4a0db94e --- /dev/null +++ b/apps/backend-mock/api/table/list.ts @@ -0,0 +1,48 @@ +import { faker } from '@faker-js/faker'; +import { verifyAccessToken } from '~/utils/jwt-utils'; +import { unAuthorizedResponse } from '~/utils/response'; + +function generateMockDataList(count: number) { + const dataList = []; + + for (let i = 0; i < count; i++) { + const dataItem = { + id: faker.string.uuid(), + imageUrl: faker.image.avatar(), + imageUrl2: faker.image.avatar(), + open: faker.datatype.boolean(), + status: faker.helpers.arrayElement(['success', 'error', 'warning']), + productName: faker.commerce.productName(), + price: faker.commerce.price(), + currency: faker.finance.currencyCode(), + quantity: faker.number.int({ min: 1, max: 100 }), + available: faker.datatype.boolean(), + category: faker.commerce.department(), + releaseDate: faker.date.past(), + rating: faker.number.float({ min: 1, max: 5 }), + description: faker.commerce.productDescription(), + weight: faker.number.float({ min: 0.1, max: 10 }), + color: faker.color.human(), + inProduction: faker.datatype.boolean(), + tags: Array.from({ length: 3 }, () => faker.commerce.productAdjective()), + }; + + dataList.push(dataItem); + } + + return dataList; +} + +const mockData = generateMockDataList(100); + +export default eventHandler(async (event) => { + const userinfo = verifyAccessToken(event); + if (!userinfo) { + return unAuthorizedResponse(event); + } + + await sleep(600); + + const { page, pageSize } = getQuery(event); + return usePageResponseSuccess(page as string, pageSize as string, mockData); +}); diff --git a/apps/backend-mock/package.json b/apps/backend-mock/package.json index 2700d89c..cc0b8d53 100644 --- a/apps/backend-mock/package.json +++ b/apps/backend-mock/package.json @@ -10,6 +10,7 @@ "start": "nitro dev" }, "dependencies": { + "@faker-js/faker": "catalog:", "jsonwebtoken": "catalog:", "nitropack": "catalog:" }, diff --git a/apps/backend-mock/utils/response.ts b/apps/backend-mock/utils/response.ts index dea14724..aa6d18cc 100644 --- a/apps/backend-mock/utils/response.ts +++ b/apps/backend-mock/utils/response.ts @@ -9,6 +9,27 @@ export function useResponseSuccess(data: T) { }; } +export function usePageResponseSuccess( + page: number | string, + pageSize: number | string, + list: T[], + { message = 'ok' } = {}, +) { + const pageData = pagination( + Number.parseInt(`${page}`), + Number.parseInt(`${pageSize}`), + list, + ); + + return { + ...useResponseSuccess({ + items: pageData, + total: list.length, + }), + message, + }; +} + export function useResponseError(message: string, error: any = null) { return { code: -1, @@ -27,3 +48,18 @@ export function unAuthorizedResponse(event: H3Event) { setResponseStatus(event, 401); return useResponseError('UnauthorizedException', 'Unauthorized Exception'); } + +export function sleep(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +export function pagination( + pageNo: number, + pageSize: number, + array: T[], +): T[] { + const offset = (pageNo - 1) * Number(pageSize); + return offset + Number(pageSize) >= array.length + ? array.slice(offset) + : array.slice(offset, offset + Number(pageSize)); +} diff --git a/apps/web-antd/src/adapter/index.ts b/apps/web-antd/src/adapter/index.ts index 698d687b..6a9391be 100644 --- a/apps/web-antd/src/adapter/index.ts +++ b/apps/web-antd/src/adapter/index.ts @@ -1 +1,2 @@ export * from './form'; +export * from './vxe-table'; diff --git a/apps/web-antd/src/adapter/vxe-table.ts b/apps/web-antd/src/adapter/vxe-table.ts new file mode 100644 index 00000000..969ec750 --- /dev/null +++ b/apps/web-antd/src/adapter/vxe-table.ts @@ -0,0 +1,59 @@ +import { h } from 'vue'; + +import { setupVbenVxeTable, useVbenVxeGrid } from '@vben/plugins/vxe-table'; + +import { Button, Image } from 'ant-design-vue'; + +import { useVbenForm } from './form'; + +setupVbenVxeTable({ + configVxeTable: (vxeUI) => { + vxeUI.setConfig({ + grid: { + align: 'center', + border: true, + minHeight: 180, + proxyConfig: { + autoLoad: true, + response: { + result: 'items', + total: 'total', + list: 'items', + }, + showActiveMsg: true, + showResponseMsg: false, + }, + round: true, + size: 'small', + }, + }); + + // 表格配置项可以用 cellRender: { name: 'CellImage' }, + vxeUI.renderer.add('CellImage', { + renderDefault(_renderOpts, params) { + const { column, row } = params; + return h(Image, { src: row[column.field] }); + }, + }); + + // 表格配置项可以用 cellRender: { name: 'CellLink' }, + vxeUI.renderer.add('CellLink', { + renderDefault(renderOpts) { + const { props } = renderOpts; + return h( + Button, + { size: 'small', type: 'link' }, + { default: () => props?.text }, + ); + }, + }); + + // 这里可以自行扩展 vxe-table 的全局配置,比如自定义格式化 + // vxeUI.formats.add + }, + useVbenForm, +}); + +export { useVbenVxeGrid }; + +export type * from '@vben/plugins/vxe-table'; diff --git a/apps/web-ele/src/adapter/index.ts b/apps/web-ele/src/adapter/index.ts index 698d687b..6a9391be 100644 --- a/apps/web-ele/src/adapter/index.ts +++ b/apps/web-ele/src/adapter/index.ts @@ -1 +1,2 @@ export * from './form'; +export * from './vxe-table'; diff --git a/apps/web-ele/src/adapter/vxe-table.ts b/apps/web-ele/src/adapter/vxe-table.ts new file mode 100644 index 00000000..177408c4 --- /dev/null +++ b/apps/web-ele/src/adapter/vxe-table.ts @@ -0,0 +1,60 @@ +import { h } from 'vue'; + +import { setupVbenVxeTable, useVbenVxeGrid } from '@vben/plugins/vxe-table'; + +import { ElButton, ElImage } from 'element-plus'; + +import { useVbenForm } from './form'; + +setupVbenVxeTable({ + configVxeTable: (vxeUI) => { + vxeUI.setConfig({ + grid: { + align: 'center', + border: true, + minHeight: 180, + proxyConfig: { + autoLoad: true, + response: { + result: 'items', + total: 'total', + list: 'items', + }, + showActiveMsg: true, + showResponseMsg: false, + }, + round: true, + size: 'small', + }, + }); + + // 表格配置项可以用 cellRender: { name: 'CellImage' }, + vxeUI.renderer.add('CellImage', { + renderDefault(_renderOpts, params) { + const { column, row } = params; + const src = row[column.field]; + return h(ElImage, { src, previewSrcList: [src] }); + }, + }); + + // 表格配置项可以用 cellRender: { name: 'CellLink' }, + vxeUI.renderer.add('CellLink', { + renderDefault(renderOpts) { + const { props } = renderOpts; + return h( + ElButton, + { size: 'small', link: true }, + { default: () => props?.text }, + ); + }, + }); + + // 这里可以自行扩展 vxe-table 的全局配置,比如自定义格式化 + // vxeUI.formats.add + }, + useVbenForm, +}); + +export { useVbenVxeGrid }; + +export type * from '@vben/plugins/vxe-table'; diff --git a/apps/web-naive/src/adapter/index.ts b/apps/web-naive/src/adapter/index.ts index 423f6308..9617430f 100644 --- a/apps/web-naive/src/adapter/index.ts +++ b/apps/web-naive/src/adapter/index.ts @@ -1,2 +1,3 @@ export * from './form'; export * from './naive'; +export * from './vxe-table'; diff --git a/apps/web-naive/src/adapter/vxe-table.ts b/apps/web-naive/src/adapter/vxe-table.ts new file mode 100644 index 00000000..23c74d71 --- /dev/null +++ b/apps/web-naive/src/adapter/vxe-table.ts @@ -0,0 +1,59 @@ +import { h } from 'vue'; + +import { setupVbenVxeTable, useVbenVxeGrid } from '@vben/plugins/vxe-table'; + +import { NButton, NImage } from 'naive-ui'; + +import { useVbenForm } from './form'; + +setupVbenVxeTable({ + configVxeTable: (vxeUI) => { + vxeUI.setConfig({ + grid: { + align: 'center', + border: true, + minHeight: 180, + proxyConfig: { + autoLoad: true, + response: { + result: 'items', + total: 'total', + list: 'items', + }, + showActiveMsg: true, + showResponseMsg: false, + }, + round: true, + size: 'small', + }, + }); + + // 表格配置项可以用 cellRender: { name: 'CellImage' }, + vxeUI.renderer.add('CellImage', { + renderDefault(_renderOpts, params) { + const { column, row } = params; + return h(NImage, { src: row[column.field] }); + }, + }); + + // 表格配置项可以用 cellRender: { name: 'CellLink' }, + vxeUI.renderer.add('CellLink', { + renderDefault(renderOpts) { + const { props } = renderOpts; + return h( + NButton, + { size: 'small', type: 'primary', quaternary: true }, + { default: () => props?.text }, + ); + }, + }); + + // 这里可以自行扩展 vxe-table 的全局配置,比如自定义格式化 + // vxeUI.formats.add + }, + useVbenForm, +}); + +export { useVbenVxeGrid }; + +export type * from '@vben/plugins/vxe-table'; diff --git a/cspell.json b/cspell.json index ff9c5d03..b4cbb962 100644 --- a/cspell.json +++ b/cspell.json @@ -19,6 +19,7 @@ "intlify", "mkdist", "mockjs", + "vitejs", "noopener", "noreferrer", "nprogress", diff --git a/docs/package.json b/docs/package.json index ee1553f8..1ab6abc7 100644 --- a/docs/package.json +++ b/docs/package.json @@ -13,9 +13,7 @@ "dependencies": { "@vben-core/shadcn-ui": "workspace:*", "@vben/common-ui": "workspace:*", - "@vben/hooks": "workspace:*", "@vben/locales": "workspace:*", - "@vben/preferences": "workspace:*", "@vben/styles": "workspace:*", "ant-design-vue": "catalog:", "lucide-vue-next": "catalog:", diff --git a/docs/src/components/common-ui/vben-form.md b/docs/src/components/common-ui/vben-form.md index 5b4c12ce..ccb438c9 100644 --- a/docs/src/components/common-ui/vben-form.md +++ b/docs/src/components/common-ui/vben-form.md @@ -267,6 +267,7 @@ useVbenForm 返回的第二个参数,是一个对象,包含了一些表单 | submitButtonOptions | 提交按钮组件参数 | `ActionButtonOptions` | - | | showDefaultActions | 是否显示默认操作按钮 | `boolean` | `true` | | collapsed | 是否折叠,在`是否展开,在showCollapseButton=true`时生效 | `boolean` | `false` | +| collapseTriggerResize | 折叠时,触发`resize`事件 | `boolean` | `false` | | collapsedRows | 折叠时保持的行数 | `number` | `1` | | commonConfig | 表单项的通用配置,每个配置都会传递到每个表单项,表单项可覆盖 | `FormCommonConfig` | - | | schema | 表单项的每一项配置 | `FormSchema` | - | diff --git a/internal/tailwind-config/src/index.ts b/internal/tailwind-config/src/index.ts index 08cfde2d..528998cb 100644 --- a/internal/tailwind-config/src/index.ts +++ b/internal/tailwind-config/src/index.ts @@ -91,7 +91,10 @@ const customColors = { main: { DEFAULT: 'hsl(var(--main))', }, - overlay: 'hsl(var(--overlay))', + overlay: { + content: 'hsl(var(--overlay-content))', + DEFAULT: 'hsl(var(--overlay))', + }, red: { ...createColorsPalette('red'), foreground: 'hsl(var(--destructive-foreground))', diff --git a/internal/vite-config/package.json b/internal/vite-config/package.json index a2d48d9f..7c43ff0b 100644 --- a/internal/vite-config/package.json +++ b/internal/vite-config/package.json @@ -53,6 +53,7 @@ "vite": "catalog:", "vite-plugin-compression": "catalog:", "vite-plugin-dts": "catalog:", - "vite-plugin-html": "catalog:" + "vite-plugin-html": "catalog:", + "vite-plugin-lazy-import": "catalog:" } } diff --git a/internal/vite-config/src/config/application.ts b/internal/vite-config/src/config/application.ts index c6809399..f323e662 100644 --- a/internal/vite-config/src/config/application.ts +++ b/internal/vite-config/src/config/application.ts @@ -47,6 +47,7 @@ function defineApplicationConfig(userConfigPromise?: DefineApplicationOptions) { }, pwa: true, pwaOptions: getDefaultPwaOptions(appTitle), + vxeTableLazyImport: true, ...envConfig, ...application, }); diff --git a/internal/vite-config/src/plugins/index.ts b/internal/vite-config/src/plugins/index.ts index de559fd3..1a8e7c26 100644 --- a/internal/vite-config/src/plugins/index.ts +++ b/internal/vite-config/src/plugins/index.ts @@ -26,6 +26,7 @@ import { viteMetadataPlugin } from './inject-metadata'; import { viteLicensePlugin } from './license'; import { viteNitroMockPlugin } from './nitro-mock'; import { vitePrintPlugin } from './print'; +import { viteVxeTableImportsPlugin } from './vxe-table'; /** * 获取条件成立的 vite 插件 @@ -110,6 +111,7 @@ async function loadApplicationPlugins( printInfoMap, pwa, pwaOptions, + vxeTableLazyImport, ...commonOptions } = options; @@ -135,6 +137,12 @@ async function loadApplicationPlugins( return [await vitePrintPlugin({ infoMap: printInfoMap })]; }, }, + { + condition: vxeTableLazyImport, + plugins: async () => { + return [await viteVxeTableImportsPlugin()]; + }, + }, { condition: nitroMock, plugins: async () => { diff --git a/internal/vite-config/src/plugins/vxe-table.ts b/internal/vite-config/src/plugins/vxe-table.ts new file mode 100644 index 00000000..3c107a7f --- /dev/null +++ b/internal/vite-config/src/plugins/vxe-table.ts @@ -0,0 +1,20 @@ +import type { PluginOption } from 'vite'; + +import { lazyImport, VxeResolver } from 'vite-plugin-lazy-import'; + +async function viteVxeTableImportsPlugin(): Promise { + return [ + lazyImport({ + resolvers: [ + VxeResolver({ + libraryName: 'vxe-table', + }), + VxeResolver({ + libraryName: 'vxe-pc-ui', + }), + ], + }), + ]; +} + +export { viteVxeTableImportsPlugin }; diff --git a/internal/vite-config/src/typing.ts b/internal/vite-config/src/typing.ts index 37da46d2..69e9fd37 100644 --- a/internal/vite-config/src/typing.ts +++ b/internal/vite-config/src/typing.ts @@ -123,6 +123,8 @@ interface ApplicationPluginOptions extends CommonPluginOptions { pwa?: boolean; /** pwa 插件配置 */ pwaOptions?: Partial; + /** 是否开启vxe-table懒加载 */ + vxeTableLazyImport?: boolean; } interface LibraryPluginOptions extends CommonPluginOptions { diff --git a/packages/@core/base/design/src/design-tokens/dark/index.css b/packages/@core/base/design/src/design-tokens/dark/index.css index 0e48e5f6..5f244442 100644 --- a/packages/@core/base/design/src/design-tokens/dark/index.css +++ b/packages/@core/base/design/src/design-tokens/dark/index.css @@ -79,6 +79,7 @@ /* 遮罩颜色 */ --overlay: 0deg 0% 0% / 40%; + --overlay-content: 0deg 0% 0% / 40%; /* 基本文字大小 */ --font-size-base: 16px; diff --git a/packages/@core/base/design/src/design-tokens/default/index.css b/packages/@core/base/design/src/design-tokens/default/index.css index 2309e925..aa41d23e 100644 --- a/packages/@core/base/design/src/design-tokens/default/index.css +++ b/packages/@core/base/design/src/design-tokens/default/index.css @@ -79,7 +79,7 @@ /* 遮罩颜色 */ --overlay: 0 0% 0% / 45%; - --overlay-light: 0 0% 95% / 45%; + --overlay-content: 0 0% 95% / 45%; /* 基本文字大小 */ --font-size-base: 16px; diff --git a/packages/@core/base/icons/build.config.ts b/packages/@core/base/icons/build.config.ts index 97e572c5..18eaa604 100644 --- a/packages/@core/base/icons/build.config.ts +++ b/packages/@core/base/icons/build.config.ts @@ -3,5 +3,19 @@ import { defineBuildConfig } from 'unbuild'; export default defineBuildConfig({ clean: true, declaration: true, - entries: ['src/index'], + entries: [ + { + builder: 'mkdist', + input: './src', + loaders: ['vue'], + pattern: ['**/*.vue'], + }, + { + builder: 'mkdist', + format: 'esm', + input: './src', + loaders: ['js'], + pattern: ['**/*.ts'], + }, + ], }); diff --git a/packages/@core/base/icons/src/components/empty.vue b/packages/@core/base/icons/src/components/empty.vue new file mode 100644 index 00000000..444a765e --- /dev/null +++ b/packages/@core/base/icons/src/components/empty.vue @@ -0,0 +1,27 @@ + diff --git a/packages/@core/base/icons/src/index.ts b/packages/@core/base/icons/src/index.ts index d533cd58..89ebd9af 100644 --- a/packages/@core/base/icons/src/index.ts +++ b/packages/@core/base/icons/src/index.ts @@ -1,4 +1,5 @@ +export { default as EmptyIcon } from './components/empty.vue'; export * from './create-icon'; -export * from './lucide'; +export * from './lucide'; export * from '@iconify/vue'; diff --git a/packages/@core/base/shared/src/constants/globals.ts b/packages/@core/base/shared/src/constants/globals.ts index 1d9d2f45..17941de1 100644 --- a/packages/@core/base/shared/src/constants/globals.ts +++ b/packages/@core/base/shared/src/constants/globals.ts @@ -1,9 +1,11 @@ -/** - * @zh_CN 布局内容高度 css变量 - * @en_US Layout content height - */ +/** layout content 组件的高度 */ export const CSS_VARIABLE_LAYOUT_CONTENT_HEIGHT = `--vben-content-height`; +/** layout content 组件的宽度 */ export const CSS_VARIABLE_LAYOUT_CONTENT_WIDTH = `--vben-content-width`; +/** layout header 组件的高度 */ +export const CSS_VARIABLE_LAYOUT_HEADER_HEIGHT = `--vben-header-height`; +/** layout footer 组件的高度 */ +export const CSS_VARIABLE_LAYOUT_FOOTER_HEIGHT = `--vben-footer-height`; /** * @zh_CN 默认命名空间 diff --git a/packages/@core/base/shared/src/utils/dom.ts b/packages/@core/base/shared/src/utils/dom.ts index aa39597d..69617176 100644 --- a/packages/@core/base/shared/src/utils/dom.ts +++ b/packages/@core/base/shared/src/utils/dom.ts @@ -85,3 +85,11 @@ export function needsScrollbar() { // 在其他情况下,根据 scrollHeight 和 innerHeight 比较判断 return doc.scrollHeight > window.innerHeight; } + +export function triggerWindowResize(): void { + // 创建一个新的 resize 事件 + const resizeEvent = new Event('resize'); + + // 触发 window 的 resize 事件 + window.dispatchEvent(resizeEvent); +} diff --git a/packages/@core/composables/src/index.ts b/packages/@core/composables/src/index.ts index abfd9501..146ff005 100644 --- a/packages/@core/composables/src/index.ts +++ b/packages/@core/composables/src/index.ts @@ -1,5 +1,5 @@ -export * from './use-content-style'; export * from './use-is-mobile'; +export * from './use-layout-style'; export * from './use-namespace'; export * from './use-priority-value'; export * from './use-scroll-lock'; diff --git a/packages/@core/composables/src/use-content-style.ts b/packages/@core/composables/src/use-layout-style.ts similarity index 68% rename from packages/@core/composables/src/use-content-style.ts rename to packages/@core/composables/src/use-layout-style.ts index 4aea499c..ac599c4f 100644 --- a/packages/@core/composables/src/use-content-style.ts +++ b/packages/@core/composables/src/use-layout-style.ts @@ -4,6 +4,8 @@ import { computed, onMounted, onUnmounted, ref } from 'vue'; import { CSS_VARIABLE_LAYOUT_CONTENT_HEIGHT, CSS_VARIABLE_LAYOUT_CONTENT_WIDTH, + CSS_VARIABLE_LAYOUT_FOOTER_HEIGHT, + CSS_VARIABLE_LAYOUT_HEADER_HEIGHT, } from '@vben-core/shared/constants'; import { getElementVisibleRect, @@ -15,7 +17,7 @@ import { useCssVar, useDebounceFn } from '@vueuse/core'; /** * @zh_CN content style */ -function useContentStyle() { +export function useLayoutContentStyle() { let resizeObserver: null | ResizeObserver = null; const contentElement = ref(null); const visibleDomRect = ref(null); @@ -40,7 +42,7 @@ function useContentStyle() { contentHeight.value = `${visibleDomRect.value.height}px`; contentWidth.value = `${visibleDomRect.value.width}px`; }, - 100, + 16, ); onMounted(() => { @@ -58,4 +60,28 @@ function useContentStyle() { return { contentElement, overlayStyle, visibleDomRect }; } -export { useContentStyle }; +export function useLayoutHeaderStyle() { + const headerHeight = useCssVar(CSS_VARIABLE_LAYOUT_HEADER_HEIGHT); + + return { + getLayoutHeaderHeight: () => { + return Number.parseInt(`${headerHeight.value}`, 10); + }, + setLayoutHeaderHeight: (height: number) => { + headerHeight.value = `${height}px`; + }, + }; +} + +export function useLayoutFooterStyle() { + const footerHeight = useCssVar(CSS_VARIABLE_LAYOUT_FOOTER_HEIGHT); + + return { + getLayoutFooterHeight: () => { + return Number.parseInt(`${footerHeight.value}`, 10); + }, + setLayoutFooterHeight: (height: number) => { + footerHeight.value = `${height}px`; + }, + }; +} diff --git a/packages/@core/preferences/__tests__/__snapshots__/config.test.ts.snap b/packages/@core/preferences/__tests__/__snapshots__/config.test.ts.snap index fba6d31d..139f23e4 100644 --- a/packages/@core/preferences/__tests__/__snapshots__/config.test.ts.snap +++ b/packages/@core/preferences/__tests__/__snapshots__/config.test.ts.snap @@ -39,7 +39,7 @@ exports[`defaultPreferences immutability test > should not modify the config obj "icpLink": "", }, "footer": { - "enable": true, + "enable": false, "fixed": false, }, "header": { diff --git a/packages/@core/preferences/src/config.ts b/packages/@core/preferences/src/config.ts index a3222407..0a8e689a 100644 --- a/packages/@core/preferences/src/config.ts +++ b/packages/@core/preferences/src/config.ts @@ -39,7 +39,7 @@ const defaultPreferences: Preferences = { icpLink: '', }, footer: { - enable: true, + enable: false, fixed: false, }, header: { diff --git a/packages/@core/preferences/src/use-preferences.ts b/packages/@core/preferences/src/use-preferences.ts index a5068771..fc1e2de5 100644 --- a/packages/@core/preferences/src/use-preferences.ts +++ b/packages/@core/preferences/src/use-preferences.ts @@ -28,6 +28,10 @@ function usePreferences() { return isDarkTheme(preferences.theme.mode); }); + const locale = computed(() => { + return preferences.app.locale; + }); + const isMobile = computed(() => { return appPreferences.value.isMobile; }); @@ -218,6 +222,7 @@ function usePreferences() { isSideNav, keepAlive, layout, + locale, preferencesButtonPosition, sidebarCollapsed, theme, diff --git a/packages/@core/ui-kit/form-ui/__tests__/form-api.test.ts b/packages/@core/ui-kit/form-ui/__tests__/form-api.test.ts index 69126420..31aa3554 100644 --- a/packages/@core/ui-kit/form-ui/__tests__/form-api.test.ts +++ b/packages/@core/ui-kit/form-ui/__tests__/form-api.test.ts @@ -109,7 +109,7 @@ describe('formApi', () => { }); it('should unmount form and reset state', () => { - formApi.unmounted(); + formApi.unmount(); expect(formApi.isMounted).toBe(false); }); diff --git a/packages/@core/ui-kit/form-ui/src/components/form-actions.vue b/packages/@core/ui-kit/form-ui/src/components/form-actions.vue index 2f2b95ec..3c03c757 100644 --- a/packages/@core/ui-kit/form-ui/src/components/form-actions.vue +++ b/packages/@core/ui-kit/form-ui/src/components/form-actions.vue @@ -1,9 +1,9 @@