diff --git a/.gitpod.yml b/.gitpod.yml index fb75b433..5fda2cf7 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -2,5 +2,5 @@ ports: - port: 5555 onOpen: open-preview tasks: - - init: corepack enable && pnpm install + - init: npm i -g corepack && pnpm install command: pnpm run dev:play diff --git a/README.ja-JP.md b/README.ja-JP.md index baa4cc44..a8a75311 100644 --- a/README.ja-JP.md +++ b/README.ja-JP.md @@ -60,7 +60,7 @@ git clone https://github.com/vbenjs/vue-vben-admin.git ```bash cd vue-vben-admin -corepack enable +npm i -g corepack pnpm install diff --git a/README.md b/README.md index e84c8392..0a997f5a 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ git clone https://github.com/vbenjs/vue-vben-admin.git ```bash cd vue-vben-admin -corepack enable +npm i -g corepack pnpm install ``` diff --git a/apps/web-antd/.env b/apps/web-antd/.env index 2c7c63ca..7227f14a 100644 --- a/apps/web-antd/.env +++ b/apps/web-antd/.env @@ -3,3 +3,6 @@ VITE_APP_TITLE=Plus Admin # 应用命名空间,用于缓存、store等功能的前缀,确保隔离 VITE_APP_NAMESPACE=vben-web-antd + +# 对store进行加密的密钥,在将store持久化到localStorage时会使用该密钥进行加密 +VITE_APP_STORE_SECURE_KEY=please-replace-me-with-your-own-key diff --git a/apps/web-antd/src/adapter/component/index.ts b/apps/web-antd/src/adapter/component/index.ts index 3cde8257..18617676 100644 --- a/apps/web-antd/src/adapter/component/index.ts +++ b/apps/web-antd/src/adapter/component/index.ts @@ -87,8 +87,8 @@ const withDefaultPlaceholder = ( componentProps: Recordable = {}, ) => { return defineComponent({ - inheritAttrs: false, name: component.name, + inheritAttrs: false, setup: (props: any, { attrs, expose, slots }) => { const placeholder = props?.placeholder || @@ -162,20 +162,34 @@ async function initComponentAdapter() { // 如果你的组件体积比较大,可以使用异步加载 // Button: () => // import('xxx').then((res) => res.Button), - ApiSelect: withDefaultPlaceholder(ApiComponent, 'select', { - component: Select, - loadingSlot: 'suffixIcon', - visibleEvent: 'onDropdownVisibleChange', - modelPropName: 'value', - }), - ApiTreeSelect: withDefaultPlaceholder(ApiComponent, 'select', { - component: TreeSelect, - fieldNames: { label: 'label', value: 'value', children: 'children' }, - loadingSlot: 'suffixIcon', - modelPropName: 'value', - optionsPropName: 'treeData', - visibleEvent: 'onVisibleChange', - }), + ApiSelect: withDefaultPlaceholder( + { + ...ApiComponent, + name: 'ApiSelect', + }, + 'select', + { + component: Select, + loadingSlot: 'suffixIcon', + visibleEvent: 'onDropdownVisibleChange', + modelPropName: 'value', + }, + ), + ApiTreeSelect: withDefaultPlaceholder( + { + ...ApiComponent, + name: 'ApiTreeSelect', + }, + 'select', + { + component: TreeSelect, + fieldNames: { label: 'label', value: 'value', children: 'children' }, + loadingSlot: 'suffixIcon', + modelPropName: 'value', + optionsPropName: 'treeData', + visibleEvent: 'onVisibleChange', + }, + ), AutoComplete, Checkbox, CheckboxGroup, diff --git a/docs/package.json b/docs/package.json index 926cd44d..629a523e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@vben/docs", - "version": "5.5.4", + "version": "5.5.5", "private": true, "scripts": { "build": "vitepress build", diff --git a/docs/src/en/guide/introduction/quick-start.md b/docs/src/en/guide/introduction/quick-start.md index d4829dce..757679c3 100644 --- a/docs/src/en/guide/introduction/quick-start.md +++ b/docs/src/en/guide/introduction/quick-start.md @@ -58,7 +58,7 @@ Open a terminal in your code directory and execute the following commands: cd vue-vben-admin # Enable the project-specified version of pnpm -corepack enable +npm i -g corepack # Install dependencies pnpm install diff --git a/docs/src/guide/in-depth/access.md b/docs/src/guide/in-depth/access.md index be7d2ba0..0dbd0819 100644 --- a/docs/src/guide/in-depth/access.md +++ b/docs/src/guide/in-depth/access.md @@ -114,8 +114,6 @@ async function generateAccess(options: GenerateMenuAndRoutesOptions) { ```ts const dashboardMenus = [ { - // 这里固定写死 BasicLayout,不可更改 - component: 'BasicLayout', meta: { order: -1, title: 'page.dashboard.title', @@ -144,6 +142,16 @@ const dashboardMenus = [ }, ], }, + { + name: 'Test', + path: '/test', + component: '/test/index', + meta: { + title: 'page.test', + // 部分特殊页面如果不需要基础布局(页面顶部和侧边栏),可将noBasicLayout设置为true + noBasicLayout: true, + }, + }, ]; ``` diff --git a/docs/src/guide/introduction/quick-start.md b/docs/src/guide/introduction/quick-start.md index 79410895..6b451ddf 100644 --- a/docs/src/guide/introduction/quick-start.md +++ b/docs/src/guide/introduction/quick-start.md @@ -58,7 +58,7 @@ git clone https://gitee.com/annsion/vue-vben-admin.git cd vue-vben-admin # 使用项目指定的pnpm版本进行依赖安装 -corepack enable +npm i -g corepack # 安装依赖 pnpm install diff --git a/docs/src/index.md b/docs/src/index.md index 30aaa0ae..3a346d04 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -20,6 +20,9 @@ hero: - theme: alt text: 在 GitHub 查看 link: https://github.com/vbenjs/vue-vben-admin + - theme: alt + text: DeepWiki 文档 + link: https://deepwiki.com/vbenjs/vue-vben-admin features: - icon: 🚀 diff --git a/internal/lint-configs/commitlint-config/package.json b/internal/lint-configs/commitlint-config/package.json index 3f1037b1..a2f67a45 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.5.4", + "version": "5.5.5", "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/eslint-config/src/configs/vue.ts b/internal/lint-configs/eslint-config/src/configs/vue.ts index d1c6521c..a64c55af 100644 --- a/internal/lint-configs/eslint-config/src/configs/vue.ts +++ b/internal/lint-configs/eslint-config/src/configs/vue.ts @@ -10,7 +10,15 @@ export async function vue(): Promise { interopDefault(import('@typescript-eslint/parser')), ] as const); + const flatEssential = pluginVue.configs?.['flat/essential'] || []; + const flatStronglyRecommended = + pluginVue.configs?.['flat/strongly-recommended'] || []; + const flatRecommended = pluginVue.configs?.['flat/recommended'] || []; + return [ + ...flatEssential, + ...flatStronglyRecommended, + ...flatRecommended, { files: ['**/*.vue'], languageOptions: { @@ -43,12 +51,9 @@ export async function vue(): Promise { plugins: { vue: pluginVue, }, - processor: pluginVue.processors['.vue'], + processor: pluginVue.processors?.['.vue'], rules: { - ...pluginVue.configs.base.rules, - ...pluginVue.configs['vue3-essential'].rules, - ...pluginVue.configs['vue3-strongly-recommended'].rules, - ...pluginVue.configs['vue3-recommended'].rules, + ...pluginVue.configs?.base?.rules, 'vue/attribute-hyphenation': [ 'error', @@ -131,7 +136,6 @@ export async function vue(): Promise { 'vue/require-default-prop': 'error', 'vue/require-explicit-emits': 'error', 'vue/require-prop-types': 'off', - 'vue/script-setup-uses-vars': 'error', 'vue/singleline-html-element-content-newline': 'off', 'vue/space-infix-ops': 'error', 'vue/space-unary-ops': ['error', { nonwords: false, words: true }], diff --git a/internal/lint-configs/stylelint-config/index.mjs b/internal/lint-configs/stylelint-config/index.mjs index 7ef175cc..08ac8238 100644 --- a/internal/lint-configs/stylelint-config/index.mjs +++ b/internal/lint-configs/stylelint-config/index.mjs @@ -43,6 +43,7 @@ export default { 'stylelint-scss', ], rules: { + 'at-rule-no-deprecated': null, 'at-rule-no-unknown': [ true, { diff --git a/internal/lint-configs/stylelint-config/package.json b/internal/lint-configs/stylelint-config/package.json index e9bd45d3..fb05a224 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.5.4", + "version": "5.5.5", "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 7783e353..4505f5bf 100644 --- a/internal/node-utils/package.json +++ b/internal/node-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vben/node-utils", - "version": "5.5.4", + "version": "5.5.5", "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 86c41208..04550d33 100644 --- a/internal/tailwind-config/package.json +++ b/internal/tailwind-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/tailwind-config", - "version": "5.5.4", + "version": "5.5.5", "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 e2425691..bbb756ce 100644 --- a/internal/tsconfig/package.json +++ b/internal/tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@vben/tsconfig", - "version": "5.5.4", + "version": "5.5.5", "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 28655a56..934d64f0 100644 --- a/internal/vite-config/package.json +++ b/internal/vite-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/vite-config", - "version": "5.5.4", + "version": "5.5.5", "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 e571b5f1..8f7f41d7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vben-admin-monorepo", - "version": "5.5.4", + "version": "5.5.5", "private": true, "keywords": [ "monorepo", @@ -107,7 +107,7 @@ "@ast-grep/napi": "catalog:", "@ctrl/tinycolor": "catalog:", "clsx": "catalog:", - "esbuild": "0.24.0", + "esbuild": "0.25.3", "pinia": "catalog:", "vue": "catalog:" }, diff --git a/packages/@core/base/design/package.json b/packages/@core/base/design/package.json index 11b585a2..8e4ea802 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.5.4", + "version": "5.5.5", "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 2fc39647..9f650e01 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.5.4", + "version": "5.5.5", "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 70ad17c3..18f28431 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.5.4", + "version": "5.5.5", "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/src/utils/inference.ts b/packages/@core/base/shared/src/utils/inference.ts index a9ace62c..195d071b 100644 --- a/packages/@core/base/shared/src/utils/inference.ts +++ b/packages/@core/base/shared/src/utils/inference.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line vue/prefer-import-from-vue import { isFunction, isObject, isString } from '@vue/shared'; /** diff --git a/packages/@core/base/typings/package.json b/packages/@core/base/typings/package.json index 6073fbcd..6bc1855a 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.5.4", + "version": "5.5.5", "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 31f3e783..d5fe193e 100644 --- a/packages/@core/composables/package.json +++ b/packages/@core/composables/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/composables", - "version": "5.5.4", + "version": "5.5.5", "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 886fbed3..90024c93 100644 --- a/packages/@core/preferences/package.json +++ b/packages/@core/preferences/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/preferences", - "version": "5.5.4", + "version": "5.5.5", "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/form-ui/package.json b/packages/@core/ui-kit/form-ui/package.json index db6cbab5..09237896 100644 --- a/packages/@core/ui-kit/form-ui/package.json +++ b/packages/@core/ui-kit/form-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/form-ui", - "version": "5.5.4", + "version": "5.5.5", "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 0f26fa31..2074d594 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.5.4", + "version": "5.5.5", "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 f44097b4..16cabd11 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.5.4", + "version": "5.5.5", "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/src/components/sub-menu-content.vue b/packages/@core/ui-kit/menu-ui/src/components/sub-menu-content.vue index 31eead11..5622d413 100644 --- a/packages/@core/ui-kit/menu-ui/src/components/sub-menu-content.vue +++ b/packages/@core/ui-kit/menu-ui/src/components/sub-menu-content.vue @@ -10,7 +10,7 @@ import { VbenIcon } from '@vben-core/shadcn-ui'; import { useMenuContext } from '../hooks'; interface Props extends MenuItemProps { - isMenuMore: boolean; + isMenuMore?: boolean; isTopLevelMenuSubmenu: boolean; level?: number; } diff --git a/packages/@core/ui-kit/popup-ui/src/alert/alert.vue b/packages/@core/ui-kit/popup-ui/src/alert/alert.vue index 9b133ee1..6223ecd7 100644 --- a/packages/@core/ui-kit/popup-ui/src/alert/alert.vue +++ b/packages/@core/ui-kit/popup-ui/src/alert/alert.vue @@ -47,6 +47,10 @@ function onAlertClosed() { isConfirm.value = false; } +function onEscapeKeyDown() { + isConfirm.value = false; +} + const getIconRender = computed(() => { let iconRender: Component | null = null; if (props.icon) { @@ -116,13 +120,11 @@ function handleCancel() { const loading = ref(false); async function handleOpenChange(val: boolean) { - const confirmState = isConfirm.value; - isConfirm.value = false; - await nextTick(); + await nextTick(); // 等待标记isConfirm状态 if (!val && props.beforeClose) { loading.value = true; try { - const res = await props.beforeClose({ isConfirm: confirmState }); + const res = await props.beforeClose({ isConfirm: isConfirm.value }); if (res !== false) { open.value = false; } @@ -142,6 +144,7 @@ async function handleOpenChange(val: boolean) { :overlay-blur="overlayBlur" @opened="emits('opened')" @closed="onAlertClosed" + @escape-key-down="onEscapeKeyDown" :class=" cn( containerClass, diff --git a/packages/@core/ui-kit/popup-ui/src/drawer/drawer.ts b/packages/@core/ui-kit/popup-ui/src/drawer/drawer.ts index 30009a64..89cd3b5f 100644 --- a/packages/@core/ui-kit/popup-ui/src/drawer/drawer.ts +++ b/packages/@core/ui-kit/popup-ui/src/drawer/drawer.ts @@ -52,6 +52,10 @@ export interface DrawerProps { * 弹窗描述 */ description?: string; + /** + * 在关闭时销毁抽屉 + */ + destroyOnClose?: boolean; /** * 是否显示底部 * @default true @@ -143,10 +147,6 @@ export interface DrawerApiOptions extends DrawerState { * 独立的抽屉组件 */ connectedComponent?: Component; - /** - * 在关闭时销毁抽屉。仅在使用 connectedComponent 时有效 - */ - destroyOnClose?: boolean; /** * 关闭前的回调,返回 false 可以阻止关闭 * @returns diff --git a/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue b/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue index b5535ba4..7a28dddd 100644 --- a/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue +++ b/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue @@ -1,7 +1,7 @@