diff --git a/apps/web-antd/src/views/演示使用自行删除/form/index.vue b/apps/web-antd/src/views/演示使用自行删除/form/index.vue index 7478ca9c..9e6cbb7b 100644 --- a/apps/web-antd/src/views/演示使用自行删除/form/index.vue +++ b/apps/web-antd/src/views/演示使用自行删除/form/index.vue @@ -61,6 +61,13 @@ const [BaseForm, baseFormApi] = useVbenForm({ label: '字符串', rules: 'required', }, + { + component: 'Input', + fieldName: 'desc', + // 界面显示的description + description: '这是表单描述', + label: '字符串(带描述)', + }, { // 组件需要在 #/adapter.ts内注册,并加上类型 component: 'ApiSelect', diff --git a/internal/vite-config/src/index.ts b/internal/vite-config/src/index.ts index 352a3235..c9c2b20d 100644 --- a/internal/vite-config/src/index.ts +++ b/internal/vite-config/src/index.ts @@ -1,4 +1,5 @@ export * from './config'; export * from './options'; export * from './plugins'; +export type * from './typing'; export { loadAndConvertEnv } from './utils/env'; diff --git a/packages/@core/base/icons/src/lucide.ts b/packages/@core/base/icons/src/lucide.ts index a167aea0..97325131 100644 --- a/packages/@core/base/icons/src/lucide.ts +++ b/packages/@core/base/icons/src/lucide.ts @@ -29,6 +29,7 @@ export { FoldHorizontal, Fullscreen, Github, + Grid, Grip, GripVertical, Menu as IconDefault, @@ -36,6 +37,7 @@ export { Info, InspectionPanel, Languages, + LayoutGrid, LoaderCircle, LockKeyhole, LogOut, diff --git a/packages/@core/base/typings/src/helper.d.ts b/packages/@core/base/typings/src/helper.d.ts index 96d4f37b..737b6157 100644 --- a/packages/@core/base/typings/src/helper.d.ts +++ b/packages/@core/base/typings/src/helper.d.ts @@ -1,20 +1,38 @@ import type { ComputedRef, MaybeRef } from 'vue'; +/** + * 类型级递归中增加深度计数 + */ +type Increment = [...A, unknown]; /** * 深层递归所有属性为可选 */ -type DeepPartial = T extends object - ? { - [P in keyof T]?: DeepPartial; - } - : T; +type DeepPartial< + T, + D extends number = 10, + C extends unknown[] = [], +> = C['length'] extends D + ? T + : T extends object + ? { + [P in keyof T]?: DeepPartial>; + } + : T; /** * 深层递归所有属性为只读 */ -type DeepReadonly = { - readonly [P in keyof T]: T[P] extends object ? DeepReadonly : T[P]; -}; +type DeepReadonly< + T, + D extends number = 10, + C extends unknown[] = [], +> = C['length'] extends D + ? T + : T extends object + ? { + readonly [P in keyof T]: DeepReadonly>; + } + : T; /** * 任意类型的异步函数 diff --git a/packages/@core/preferences/__tests__/__snapshots__/config.test.ts.snap b/packages/@core/preferences/__tests__/__snapshots__/config.test.ts.snap index 841aac62..46f54a15 100644 --- a/packages/@core/preferences/__tests__/__snapshots__/config.test.ts.snap +++ b/packages/@core/preferences/__tests__/__snapshots__/config.test.ts.snap @@ -104,6 +104,7 @@ exports[`defaultPreferences immutability test > should not modify the config obj "showIcon": true, "showMaximize": true, "showMore": true, + "showRefresh": true, "styleType": "chrome", "visitHistory": true, "wheelable": true, @@ -119,6 +120,7 @@ exports[`defaultPreferences immutability test > should not modify the config obj "radius": "0.5", "semiDarkHeader": false, "semiDarkSidebar": false, + "semiDarkSidebarSub": false, }, "transition": { "enable": true, diff --git a/packages/@core/preferences/src/config.ts b/packages/@core/preferences/src/config.ts index 8fd5d629..0bdf5c65 100644 --- a/packages/@core/preferences/src/config.ts +++ b/packages/@core/preferences/src/config.ts @@ -105,6 +105,7 @@ const defaultPreferences: Preferences = { showIcon: true, showMaximize: true, showMore: true, + showRefresh: true, styleType: 'chrome', visitHistory: true, wheelable: true, @@ -121,6 +122,7 @@ const defaultPreferences: Preferences = { fontSize: 16, semiDarkHeader: false, semiDarkSidebar: false, + semiDarkSidebarSub: false, }, transition: { enable: true, diff --git a/packages/@core/preferences/src/constants.ts b/packages/@core/preferences/src/constants.ts index 96721afb..50191eba 100644 --- a/packages/@core/preferences/src/constants.ts +++ b/packages/@core/preferences/src/constants.ts @@ -38,12 +38,10 @@ const BUILT_IN_THEME_PRESETS: BuiltinThemePreset[] = [ primaryColor: 'hsl(240 5.9% 10%)', type: 'zinc', }, - { color: 'hsl(181 84% 32%)', type: 'deep-green', }, - { color: 'hsl(211 91% 39%)', type: 'deep-blue', @@ -56,7 +54,6 @@ const BUILT_IN_THEME_PRESETS: BuiltinThemePreset[] = [ color: 'hsl(0 75% 42%)', type: 'rose', }, - { color: 'hsl(0 0% 25%)', darkPrimaryColor: 'hsl(0 0% 98%)', diff --git a/packages/@core/preferences/src/types.ts b/packages/@core/preferences/src/types.ts index 0d0a95c6..09f48a17 100644 --- a/packages/@core/preferences/src/types.ts +++ b/packages/@core/preferences/src/types.ts @@ -222,6 +222,8 @@ interface TabbarPreferences { showMaximize: boolean; /** 显示更多按钮 */ showMore: boolean; + /** 显示刷新按钮 */ + showRefresh: boolean; /** 标签页风格 */ styleType: TabsStyleType; /** 是否开启访问历史记录 */ @@ -253,6 +255,8 @@ interface ThemePreferences { semiDarkHeader: boolean; /** 是否开启半深色菜单(只在theme='light'时生效) */ semiDarkSidebar: boolean; + /** 是否开启半深色子菜单(只在theme='light'时生效) */ + semiDarkSidebarSub: boolean; } interface TransitionPreferences { 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 a1dadb28..f6377fb6 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 @@ -382,10 +382,10 @@ onUnmounted(() => {
- - - + + + diff --git a/packages/@core/ui-kit/layout-ui/src/components/layout-sidebar.vue b/packages/@core/ui-kit/layout-ui/src/components/layout-sidebar.vue index 7c0e9c10..76ba74d1 100644 --- a/packages/@core/ui-kit/layout-ui/src/components/layout-sidebar.vue +++ b/packages/@core/ui-kit/layout-ui/src/components/layout-sidebar.vue @@ -77,7 +77,10 @@ interface Props { * 主题 */ theme: string; - + /** + * 子主题 + */ + themeSub: string; /** * 宽度 */ @@ -261,40 +264,48 @@ function handleMouseleave() { class="h-full transition-all duration-150" >