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/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 acf676be..08f69805 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';
@@ -356,6 +358,24 @@ onUnmounted(() => {
+
+
+
+
+
+
+
+
@@ -367,7 +387,7 @@ onUnmounted(() => {
-
+
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 62007dce..a9220d43 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
@@ -9,9 +9,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);
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);
-
+
{
};
});
+function updateCurrentSelect(v: string) {
+ currentSelect.value = v;
+}
+
defineExpose({ toggleOpenState, open, close });
@@ -183,6 +188,7 @@ defineExpose({ toggleOpenState, open, close });
role="combobox"
:aria-label="$t('ui.iconPicker.placeholder')"
aria-expanded="visible"
+ :[`onUpdate:${modelValueProp}`]="updateCurrentSelect"
v-bind="$attrs"
>
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));
}
});
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') }}