From add1e61b6f197d82724668e33a07ed2df0d612b1 Mon Sep 17 00:00:00 2001 From: Netfan Date: Wed, 30 Apr 2025 23:41:44 +0800 Subject: [PATCH 01/11] fix: show validation message as tooltip in compact form (#6087) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 紧凑模式表单的校验消息将显示为一个tooltip --- packages/@core/ui-kit/form-ui/package.json | 1 + .../form-ui/src/form-render/form-field.vue | 22 ++++++++++++++++++- pnpm-lock.yaml | 3 +++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/@core/ui-kit/form-ui/package.json b/packages/@core/ui-kit/form-ui/package.json index 09237896..920b0576 100644 --- a/packages/@core/ui-kit/form-ui/package.json +++ b/packages/@core/ui-kit/form-ui/package.json @@ -38,6 +38,7 @@ }, "dependencies": { "@vben-core/composables": "workspace:*", + "@vben-core/icons": "workspace:*", "@vben-core/shadcn-ui": "workspace:*", "@vben-core/shared": "workspace:*", "@vben-core/typings": "workspace:*", diff --git a/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue b/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue index 61852aae..fd5fb5ef 100644 --- a/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue +++ b/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue @@ -5,6 +5,7 @@ import type { FormSchema, MaybeComponentProps } from '../types'; import { computed, nextTick, onUnmounted, useTemplateRef, watch } from 'vue'; +import { CircleAlert } from '@vben-core/icons'; import { FormControl, FormDescription, @@ -12,6 +13,7 @@ import { FormItem, FormMessage, VbenRenderContent, + VbenTooltip, } from '@vben-core/shadcn-ui'; import { cn, isFunction, isObject, isString } from '@vben-core/shared/utils'; @@ -354,6 +356,24 @@ onUnmounted(() => { + + + + @@ -365,7 +385,7 @@ onUnmounted(() => { - + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5735c2d6..58cc8b56 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1335,6 +1335,9 @@ importers: '@vben-core/composables': specifier: workspace:* version: link:../../composables + '@vben-core/icons': + specifier: workspace:* + version: link:../../base/icons '@vben-core/shadcn-ui': specifier: workspace:* version: link:../shadcn-ui From 5de954baa42c0f09153e4fa5e2023508cb03ddf9 Mon Sep 17 00:00:00 2001 From: ming4762 Date: Thu, 1 May 2025 10:40:42 +0800 Subject: [PATCH 02/11] fix: fix `LoginExpiredModal` in some cases, `message` may be obscured (#6086) --- .../ui/authentication/login-expired-modal.vue | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/effects/common-ui/src/ui/authentication/login-expired-modal.vue b/packages/effects/common-ui/src/ui/authentication/login-expired-modal.vue index 4b4f9b44..c337c29d 100644 --- a/packages/effects/common-ui/src/ui/authentication/login-expired-modal.vue +++ b/packages/effects/common-ui/src/ui/authentication/login-expired-modal.vue @@ -35,6 +35,16 @@ const getZIndex = computed(() => { return props.zIndex || calcZIndex(); }); +/** + * 排除ant-message和loading:9999的z-index + */ +const zIndexExcludeClass = ['ant-message', 'loading']; +function isZIndexExcludeClass(element: Element) { + return zIndexExcludeClass.some((className) => + element.classList.contains(className), + ); +} + /** * 获取最大的zIndex值 */ @@ -44,7 +54,11 @@ function calcZIndex() { [...elements].forEach((element) => { const style = window.getComputedStyle(element); const zIndex = style.getPropertyValue('z-index'); - if (zIndex && !Number.isNaN(Number.parseInt(zIndex))) { + if ( + zIndex && + !Number.isNaN(Number.parseInt(zIndex)) && + !isZIndexExcludeClass(element) + ) { maxZ = Math.max(maxZ, Number.parseInt(zIndex)); } }); From 3e6d608a2fb2ae09ca486075d4d5c462fccadea2 Mon Sep 17 00:00:00 2001 From: Netfan Date: Thu, 1 May 2025 14:09:37 +0800 Subject: [PATCH 03/11] fix: destroyOnClose incorrect default value, fixed #6092 (#6093) --- docs/src/components/common-ui/vben-drawer.md | 2 +- packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue | 2 +- packages/@core/ui-kit/popup-ui/src/drawer/use-drawer.ts | 4 +--- packages/@core/ui-kit/popup-ui/src/modal/modal.vue | 2 +- packages/@core/ui-kit/popup-ui/src/modal/use-modal.ts | 4 +--- 5 files changed, 5 insertions(+), 9 deletions(-) diff --git a/docs/src/components/common-ui/vben-drawer.md b/docs/src/components/common-ui/vben-drawer.md index 0eedb01b..b66bd3a0 100644 --- a/docs/src/components/common-ui/vben-drawer.md +++ b/docs/src/components/common-ui/vben-drawer.md @@ -78,7 +78,7 @@ const [Drawer, drawerApi] = useVbenDrawer({ | --- | --- | --- | --- | | appendToMain | 是否挂载到内容区域(默认挂载到body) | `boolean` | `false` | | connectedComponent | 连接另一个Modal组件 | `Component` | - | -| destroyOnClose | 关闭时销毁`connectedComponent` | `boolean` | `false` | +| destroyOnClose | 关闭时销毁 | `boolean` | `false` | | title | 标题 | `string\|slot` | - | | titleTooltip | 标题提示信息 | `string\|slot` | - | | description | 描述信息 | `string\|slot` | - | 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 25069979..ebd98fa2 100644 --- a/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue +++ b/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue @@ -35,7 +35,7 @@ interface Props extends DrawerProps { const props = withDefaults(defineProps(), { appendToMain: false, closeIconPlacement: 'right', - destroyOnClose: true, + destroyOnClose: false, drawerApi: undefined, submitting: false, zIndex: 1000, diff --git a/packages/@core/ui-kit/popup-ui/src/drawer/use-drawer.ts b/packages/@core/ui-kit/popup-ui/src/drawer/use-drawer.ts index 59bccbd8..21b11c56 100644 --- a/packages/@core/ui-kit/popup-ui/src/drawer/use-drawer.ts +++ b/packages/@core/ui-kit/popup-ui/src/drawer/use-drawer.ts @@ -21,9 +21,7 @@ import VbenDrawer from './drawer.vue'; const USER_DRAWER_INJECT_KEY = Symbol('VBEN_DRAWER_INJECT'); -const DEFAULT_DRAWER_PROPS: Partial = { - destroyOnClose: true, -}; +const DEFAULT_DRAWER_PROPS: Partial = {}; export function setDefaultDrawerProps(props: Partial) { Object.assign(DEFAULT_DRAWER_PROPS, props); diff --git a/packages/@core/ui-kit/popup-ui/src/modal/modal.vue b/packages/@core/ui-kit/popup-ui/src/modal/modal.vue index 1f3e5468..7fbc2be1 100644 --- a/packages/@core/ui-kit/popup-ui/src/modal/modal.vue +++ b/packages/@core/ui-kit/popup-ui/src/modal/modal.vue @@ -34,7 +34,7 @@ interface Props extends ModalProps { const props = withDefaults(defineProps(), { appendToMain: false, - destroyOnClose: true, + destroyOnClose: false, modalApi: undefined, }); diff --git a/packages/@core/ui-kit/popup-ui/src/modal/use-modal.ts b/packages/@core/ui-kit/popup-ui/src/modal/use-modal.ts index e2c709d0..cafd7b87 100644 --- a/packages/@core/ui-kit/popup-ui/src/modal/use-modal.ts +++ b/packages/@core/ui-kit/popup-ui/src/modal/use-modal.ts @@ -17,9 +17,7 @@ import VbenModal from './modal.vue'; const USER_MODAL_INJECT_KEY = Symbol('VBEN_MODAL_INJECT'); -const DEFAULT_MODAL_PROPS: Partial = { - destroyOnClose: true, -}; +const DEFAULT_MODAL_PROPS: Partial = {}; export function setDefaultModalProps(props: Partial) { Object.assign(DEFAULT_MODAL_PROPS, props); From 0517a7014fe2d413a1d4a69cc5481d6199f20834 Mon Sep 17 00:00:00 2001 From: Netfan Date: Thu, 1 May 2025 20:08:44 +0800 Subject: [PATCH 04/11] fix: add missing translation for preferences drawer (#6094) --- .../src/widgets/preferences/blocks/layout/sidebar.vue | 6 +++--- packages/locales/src/langs/en-US/preferences.json | 3 +++ packages/locales/src/langs/zh-CN/preferences.json | 3 +++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/effects/layouts/src/widgets/preferences/blocks/layout/sidebar.vue b/packages/effects/layouts/src/widgets/preferences/blocks/layout/sidebar.vue index 1dbc4f99..e8d84afa 100644 --- a/packages/effects/layouts/src/widgets/preferences/blocks/layout/sidebar.vue +++ b/packages/effects/layouts/src/widgets/preferences/blocks/layout/sidebar.vue @@ -79,14 +79,14 @@ const handleCheckboxChange = () => { - 按钮配置 + {{ $t('preferences.sidebar.buttons') }} Date: Thu, 1 May 2025 21:40:45 +0800 Subject: [PATCH 05/11] fix: add triggerClass binding to PopoverTrigger and update icon-picker styles (#6095) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Popover支持设置trigger的样式 * 修正icon-picker的input值更新 --- .../ui-kit/shadcn-ui/src/components/popover/popover.vue | 4 +++- .../common-ui/src/components/icon-picker/icon-picker.vue | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/popover/popover.vue b/packages/@core/ui-kit/shadcn-ui/src/components/popover/popover.vue index 07d5d062..c398bddc 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/components/popover/popover.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/components/popover/popover.vue @@ -21,6 +21,7 @@ interface Props extends PopoverRootProps { class?: ClassType; contentClass?: ClassType; contentProps?: PopoverContentProps; + triggerClass?: ClassType; } const props = withDefaults(defineProps(), {}); @@ -32,6 +33,7 @@ const delegatedProps = computed(() => { class: _cls, contentClass: _, contentProps: _cProps, + triggerClass: _tClass, ...delegated } = props; @@ -43,7 +45,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);