uview-pro 0.4.12 → 0.4.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +30 -10
- package/components/u-config-provider/u-config-provider.vue +3 -3
- package/components/u-number-box/u-number-box.vue +2 -2
- package/components/u-textarea/types.ts +2 -1
- package/components/u-textarea/u-textarea.vue +2 -2
- package/index.ts +13 -8
- package/libs/config/config.ts +3 -6
- package/libs/config/theme-tokens.ts +1 -1
- package/libs/hooks/useTheme.ts +31 -29
- package/libs/util/config-provider.ts +39 -7
- package/package.json +1 -1
- package/theme.scss +1 -1
- package/types/global.d.ts +9 -1
package/changelog.md
CHANGED
|
@@ -1,24 +1,44 @@
|
|
|
1
|
-
## 0.4.
|
|
1
|
+
## 0.4.13(2026-01-06)
|
|
2
2
|
|
|
3
|
-
###
|
|
3
|
+
### ✨ Features | 新功能
|
|
4
4
|
|
|
5
|
-
- **
|
|
6
|
-
- **
|
|
5
|
+
- **theme:** 主题初始化时支持默认主题设置 ([f2b61f6](https://github.com/anyup/uView-Pro/commit/f2b61f6caa1c285753b2e02f97309aa55bb77cca))
|
|
6
|
+
- **theme:** 增强主题系统初始化配置,支持在初始化时设置默认主题和暗黑模式 ([d228d10](https://github.com/anyup/uView-Pro/commit/d228d100baf619799b1dc1c8e289e1e8c9a30699))
|
|
7
7
|
|
|
8
8
|
### 🐛 Bug Fixes | Bug 修复
|
|
9
9
|
|
|
10
|
-
- **
|
|
10
|
+
- **u-number-box:** 修复 u-number-box 步进器 disabled 时字体不显示问题 ([75b3a74](https://github.com/anyup/uView-Pro/commit/75b3a74e6e763dec1a1ee0d3b4d0a62d646ee389))
|
|
11
|
+
- **u-textarea:** 修复u-textarea组件设置props.border='none'无效的问题 ([c5a97ba](https://github.com/anyup/uView-Pro/commit/c5a97ba4c00d226c8c0fd9605660d2654dec9dc2))
|
|
11
12
|
|
|
12
|
-
###
|
|
13
|
+
### ♻️ Code Refactoring | 代码重构
|
|
13
14
|
|
|
14
|
-
- **
|
|
15
|
-
- **u-modal:** 增加u-modal基础属性支持和自定义样式功能 ([201231e](https://github.com/anyup/uView-Pro/commit/201231ee2e0c25c605f12f582650b048e83213de))
|
|
16
|
-
- **components:** 增加u-pagination和u-picker自定义样式支持 ([eb22265](https://github.com/anyup/uView-Pro/commit/eb222657540179fcf8359133df83da89c10b09b8))
|
|
15
|
+
- **theme:** 调整u-bg-gray-light默认色值,优化演示示例 ([37d6bda](https://github.com/anyup/uView-Pro/commit/37d6bda939f5d7c54aec09960878f236dfa32bb2))
|
|
17
16
|
|
|
18
17
|
### 👥 Contributors
|
|
19
18
|
|
|
20
|
-
<a href="https://github.com/anyup"><img src="https://github.com/anyup.png?size=40" width="40" height="40" alt="anyup" title="anyup"/></a>
|
|
19
|
+
<a href="https://github.com/anyup"><img src="https://github.com/anyup.png?size=40" width="40" height="40" alt="anyup" title="anyup"/></a>
|
|
21
20
|
|
|
21
|
+
## 0.4.12(2026-01-04)
|
|
22
|
+
|
|
23
|
+
### ♻️ Code Refactoring | 代码重构
|
|
24
|
+
|
|
25
|
+
- **u-action-sheet:** 优化u-action-sheet组件的类型定义 ([bc5e474](https://github.com/anyup/uView-Pro/commit/bc5e474e7117e20495504ff0e2397a147595033c))
|
|
26
|
+
- **zIndex:** 统一组件z-index值配置 ([ae1da98](https://github.com/anyup/uView-Pro/commit/ae1da986d307e5b4855fa32e5b2995fdb7be69e8))
|
|
27
|
+
|
|
28
|
+
### 🐛 Bug Fixes | Bug 修复
|
|
29
|
+
|
|
30
|
+
- **form:** 修复field实例销毁时没有正常移除问题 ([57bfd3b](https://github.com/anyup/uView-Pro/commit/57bfd3bf9315d74c416869cd5a8c41562231166a))
|
|
31
|
+
|
|
32
|
+
### ✨ Features | 新功能
|
|
33
|
+
|
|
34
|
+
- **u-tabbar:** 新增z-index属性支持自定义层级 ([c75d45f](https://github.com/anyup/uView-Pro/commit/c75d45f45e237453d0248124cdbe5bb797edb117))
|
|
35
|
+
- **u-modal:** 增加u-modal基础属性支持和自定义样式功能 ([201231e](https://github.com/anyup/uView-Pro/commit/201231ee2e0c25c605f12f582650b048e83213de))
|
|
36
|
+
- **components:** 增加u-pagination和u-picker自定义样式支持 ([eb22265](https://github.com/anyup/uView-Pro/commit/eb222657540179fcf8359133df83da89c10b09b8))
|
|
37
|
+
|
|
38
|
+
### 👥 Contributors
|
|
39
|
+
|
|
40
|
+
<a href="https://github.com/anyup"><img src="https://github.com/anyup.png?size=40" width="40" height="40" alt="anyup" title="anyup"/></a> <a href="https://github.com/yoshinosk"><img src="https://github.com/yoshinosk.png?size=40" width="40" height="40" alt="yoshinosk" title="yoshinosk"/></a> <a href="https://github.com/liujiayii"><img src="https://github.com/liujiayii.png?size=40" width="40" height="40" alt="liujiayii" title="liujiayii"/></a>
|
|
41
|
+
|
|
22
42
|
## 0.4.11(2025-12-30)
|
|
23
43
|
|
|
24
44
|
### 📦 Build System | 打包构建
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - 组件/页面场景(推荐):使用 `useTheme()` 组合式函数在组件内部读取响应式 `currentTheme`、`themes`、`darkMode` 并通过 `setTheme()` 和 `setDarkMode()` 切换主题/模式。
|
|
14
14
|
*
|
|
15
15
|
* 该组件的行为:
|
|
16
|
-
* - 如果在挂载时传入 `themes`,会调用 `configProvider.
|
|
16
|
+
* - 如果在挂载时传入 `themes`,会调用 `configProvider.initTheme(themes)`
|
|
17
17
|
* - 如果传入 `currentTheme`,会优先设置当前主题
|
|
18
18
|
* - 如果传入 `darkMode`,会设置当前的暗黑模式状态,同时在 document 上添加 `u-theme-dark` 或 `u-theme-light` 类名
|
|
19
19
|
*
|
|
@@ -63,7 +63,7 @@ const bootstrapTheme = () => {
|
|
|
63
63
|
|
|
64
64
|
// 未初始化,进行初始化
|
|
65
65
|
if (props.themes && props.themes.length) {
|
|
66
|
-
configProvider.
|
|
66
|
+
configProvider.initTheme(props.themes, props.currentTheme as any);
|
|
67
67
|
} else {
|
|
68
68
|
// 使用 useTheme 的 initTheme,它会处理默认主题
|
|
69
69
|
const { initTheme } = useTheme();
|
|
@@ -91,7 +91,7 @@ watch(
|
|
|
91
91
|
// 那么对其做深度监听会在我们内部更新主题对象时触发该回调,进而再次调用 init 导致循环更新。
|
|
92
92
|
// 为避免该情况,先做简单保护:当传入对象正是 configProvider.themesRef.value 时不重复初始化。
|
|
93
93
|
if (val && val.length && val !== configProvider.themesRef.value) {
|
|
94
|
-
configProvider.
|
|
94
|
+
configProvider.initTheme(val, props.currentTheme as any);
|
|
95
95
|
}
|
|
96
96
|
},
|
|
97
97
|
{ deep: true }
|
|
@@ -310,12 +310,12 @@ function handleChange(value: number, type: 'update:modelValue' | 'change' | 'blu
|
|
|
310
310
|
}
|
|
311
311
|
|
|
312
312
|
.u-icon-disabled {
|
|
313
|
-
color: var(--u-
|
|
313
|
+
color: var(--u-type-info-disabled) !important;
|
|
314
314
|
background: var(--u-bg-gray-light) !important;
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
.u-input-disabled {
|
|
318
|
-
color: var(--u-
|
|
318
|
+
color: var(--u-type-info-disabled) !important;
|
|
319
319
|
background-color: var(--u-bg-gray-light) !important;
|
|
320
320
|
}
|
|
321
321
|
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ExtractPropTypes, PropType } from 'vue';
|
|
2
2
|
import { baseProps } from '../common/props';
|
|
3
|
+
import type { TextareaBorder } from '../../types/global';
|
|
3
4
|
|
|
4
5
|
const textarea = {
|
|
5
6
|
value: '',
|
|
@@ -72,7 +73,7 @@ export const TextareaProps = {
|
|
|
72
73
|
// 最大输入长度,设置为 -1 的时候不限制最大长度
|
|
73
74
|
maxlength: { type: [String, Number] as PropType<string | number>, default: textarea.maxlength },
|
|
74
75
|
// 边框类型,surround-四周边框,bottom-底部边框
|
|
75
|
-
border: { type: [String, Boolean] as PropType<
|
|
76
|
+
border: { type: [String, Boolean] as PropType<TextareaBorder | boolean>, default: textarea.border },
|
|
76
77
|
// 用于处理或者过滤输入框内容的方法
|
|
77
78
|
formatter: { type: Function as PropType<((val: any) => any) | null>, default: textarea.formatter },
|
|
78
79
|
// 是否忽略组件内对文本合成系统事件的处理
|
|
@@ -165,7 +165,7 @@ watch(
|
|
|
165
165
|
// 组件的类名
|
|
166
166
|
const textareaClass = computed(() => {
|
|
167
167
|
let classes: string[] = [];
|
|
168
|
-
if (props.border) {
|
|
168
|
+
if (props.border && props.border !== 'none') {
|
|
169
169
|
if (props.border === 'surround') {
|
|
170
170
|
classes = classes.concat(['u-textarea--border', 'u-textarea--radius']);
|
|
171
171
|
} else if (props.border === 'bottom') {
|
|
@@ -181,7 +181,7 @@ const textareaClass = computed(() => {
|
|
|
181
181
|
// 组件的样式
|
|
182
182
|
const textareaStyle = computed(() => {
|
|
183
183
|
const style: Record<string, any> = {};
|
|
184
|
-
if (props.border) {
|
|
184
|
+
if (props.border && props.border !== 'none') {
|
|
185
185
|
style.padding = `${props.border ? 20 : 0}rpx`;
|
|
186
186
|
}
|
|
187
187
|
// #ifdef APP-NVUE
|
package/index.ts
CHANGED
|
@@ -17,14 +17,19 @@ const install = (app: any, options?: UViewProOptions): void => {
|
|
|
17
17
|
try {
|
|
18
18
|
if (options) {
|
|
19
19
|
// 配置主题:统一使用 useTheme 的 initTheme 初始化,避免重复初始化
|
|
20
|
-
if (options
|
|
21
|
-
|
|
22
|
-
//
|
|
23
|
-
if (Array.isArray(
|
|
24
|
-
initTheme(
|
|
20
|
+
if (options?.theme) {
|
|
21
|
+
const optTheme = options.theme as any;
|
|
22
|
+
// 1.如果是数组,则为多主题配置
|
|
23
|
+
if (Array.isArray(optTheme)) {
|
|
24
|
+
initTheme(optTheme);
|
|
25
|
+
} else if (typeof optTheme === 'object' && optTheme.themes) {
|
|
26
|
+
// 2.如果为对象且有themes,则为多主题配置+设置默认主题
|
|
27
|
+
initTheme(optTheme.themes, {
|
|
28
|
+
defaultTheme: optTheme.defaultTheme,
|
|
29
|
+
defaultDarkMode: optTheme.defaultDarkMode
|
|
30
|
+
});
|
|
25
31
|
} else {
|
|
26
|
-
//
|
|
27
|
-
// 获取默认主题(uviewpro)
|
|
32
|
+
// 3.兼容之前只有一套样式的情况,需要覆盖默认主题,默认系统主题(uviewpro)
|
|
28
33
|
const defaultTheme = defaultThemes[0];
|
|
29
34
|
if (defaultTheme) {
|
|
30
35
|
// 创建新主题对象,用用户的 theme 覆盖默认主题的 color
|
|
@@ -32,7 +37,7 @@ const install = (app: any, options?: UViewProOptions): void => {
|
|
|
32
37
|
...defaultTheme,
|
|
33
38
|
color: {
|
|
34
39
|
...defaultTheme.color,
|
|
35
|
-
...
|
|
40
|
+
...optTheme
|
|
36
41
|
}
|
|
37
42
|
};
|
|
38
43
|
// 初始化主题(只包含覆盖后的默认主题)
|
package/libs/config/config.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
// 此版本发布于2023-03-27
|
|
2
1
|
/**
|
|
3
2
|
* 组件库配置项类型定义
|
|
4
3
|
*/
|
|
5
|
-
|
|
4
|
+
import { reactive } from 'vue';
|
|
6
5
|
import { version } from '../../package.json';
|
|
7
6
|
import type { DarkMode } from '../../types/global';
|
|
8
7
|
|
|
@@ -19,9 +18,7 @@ export interface AppConfig {
|
|
|
19
18
|
defaultDarkMode: DarkMode;
|
|
20
19
|
}
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const config: AppConfig = {
|
|
21
|
+
export const config = reactive<AppConfig>({
|
|
25
22
|
v: version,
|
|
26
23
|
version: version,
|
|
27
24
|
// 主题名称
|
|
@@ -30,6 +27,6 @@ const config: AppConfig = {
|
|
|
30
27
|
defaultTheme: 'uviewpro',
|
|
31
28
|
// 默认为亮色模式
|
|
32
29
|
defaultDarkMode: 'light'
|
|
33
|
-
};
|
|
30
|
+
});
|
|
34
31
|
|
|
35
32
|
export default config;
|
package/libs/hooks/useTheme.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import type { DarkMode, Theme } from '../../types/global';
|
|
10
|
-
import configProvider from '../util/config-provider';
|
|
10
|
+
import configProvider, { type DefaultThemeConfig } from '../util/config-provider';
|
|
11
11
|
import { defaultThemes } from '../config/theme-tokens';
|
|
12
12
|
|
|
13
13
|
const THEME_STORAGE_KEY = 'uview-pro-theme';
|
|
@@ -64,42 +64,44 @@ function getAvailableThemes() {
|
|
|
64
64
|
/**
|
|
65
65
|
* 初始化主题系统
|
|
66
66
|
* @param themes 可选的主题列表,如果未提供则尝试从 uni.$u.themes 读取
|
|
67
|
-
* @param
|
|
67
|
+
* @param defaultConfig 可选的默认主题配置,支持字符串(默认主题名)或对象({ defaultTheme?, defaultDarkMode? })
|
|
68
68
|
*/
|
|
69
|
-
export function initTheme(themes?:
|
|
69
|
+
export function initTheme(themes?: Theme[], defaultConfig?: string | DefaultThemeConfig) {
|
|
70
70
|
// 如果有传入主题列表,使用传入的
|
|
71
71
|
if (Array.isArray(themes) && themes.length > 0) {
|
|
72
|
-
configProvider.
|
|
72
|
+
configProvider.initTheme(themes, defaultConfig);
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
// 若已通过插件或其他方式完成初始化,则不再覆盖,最多按需切换默认主题
|
|
77
|
-
const existingThemes = configProvider.getThemes();
|
|
78
|
-
if (existingThemes.length > 0) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
76
|
+
// // 若已通过插件或其他方式完成初始化,则不再覆盖,最多按需切换默认主题
|
|
77
|
+
// const existingThemes = configProvider.getThemes();
|
|
78
|
+
// if (existingThemes.length > 0) {
|
|
79
|
+
// if (typeof defaultConfig === 'string') {
|
|
80
|
+
// configProvider.setTheme(defaultConfig);
|
|
81
|
+
// } else if (defaultConfig && typeof defaultConfig === 'object' && (defaultConfig as any).defaultTheme) {
|
|
82
|
+
// configProvider.setTheme(defaultConfig.defaultTheme);
|
|
83
|
+
// } else if (!configProvider.getCurrentTheme()) {
|
|
84
|
+
// configProvider.setTheme(existingThemes[0].name);
|
|
85
|
+
// } else {
|
|
86
|
+
// // 触发一次 apply,便于初始化 CSS 变量
|
|
87
|
+
// configProvider.setTheme(configProvider.getCurrentTheme()!.name);
|
|
88
|
+
// }
|
|
89
|
+
// return;
|
|
90
|
+
// }
|
|
91
|
+
|
|
92
|
+
// // 初始化 configProvider(如果运行时提供了内置主题)
|
|
93
|
+
// try {
|
|
94
|
+
// const builtin = (typeof uni !== 'undefined' && (uni as any).$u && (uni as any).$u.themes) || [];
|
|
95
|
+
// if (Array.isArray(builtin) && builtin.length > 0) {
|
|
96
|
+
// configProvider.initTheme(builtin as Theme[], defaultConfig);
|
|
97
|
+
// return;
|
|
98
|
+
// }
|
|
99
|
+
// } catch (e) {
|
|
100
|
+
// // ignore
|
|
101
|
+
// }
|
|
100
102
|
|
|
101
103
|
// 回退到内置默认主题
|
|
102
|
-
configProvider.
|
|
104
|
+
configProvider.initTheme(defaultThemes as Theme[], defaultConfig);
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
/**
|
|
@@ -33,6 +33,17 @@ const STRUCTURAL_TOKENS = new Set([
|
|
|
33
33
|
'shadowColor'
|
|
34
34
|
]);
|
|
35
35
|
|
|
36
|
+
export type DefaultThemeConfig = {
|
|
37
|
+
/**
|
|
38
|
+
* 默认主题
|
|
39
|
+
*/
|
|
40
|
+
defaultTheme?: string;
|
|
41
|
+
/**
|
|
42
|
+
* 默认暗黑模式
|
|
43
|
+
*/
|
|
44
|
+
defaultDarkMode?: DarkMode;
|
|
45
|
+
};
|
|
46
|
+
|
|
36
47
|
/**
|
|
37
48
|
* ConfigProvider: 管理全局主题
|
|
38
49
|
* - init(themes, defaultName): 初始化主题系统
|
|
@@ -141,28 +152,39 @@ export class ConfigProvider {
|
|
|
141
152
|
/**
|
|
142
153
|
* 初始化主题系统
|
|
143
154
|
* @param themes 可用主题数组
|
|
144
|
-
* @param
|
|
155
|
+
* @param defaultTheme 可选默认主题名
|
|
145
156
|
*/
|
|
146
|
-
|
|
157
|
+
initTheme(themes?: Theme[], defaultConfig?: string | DefaultThemeConfig) {
|
|
147
158
|
const normalizedThemes = this.normalizeThemes(themes);
|
|
148
159
|
if (!normalizedThemes.length) {
|
|
149
160
|
console.warn('[ConfigProvider] init called with empty themes');
|
|
150
161
|
return;
|
|
151
162
|
}
|
|
152
163
|
|
|
164
|
+
// 配置默认主题
|
|
165
|
+
if (defaultConfig) {
|
|
166
|
+
if (typeof defaultConfig === 'string') {
|
|
167
|
+
config.defaultTheme = defaultConfig || config.defaultTheme;
|
|
168
|
+
} else if (typeof defaultConfig === 'object') {
|
|
169
|
+
const { defaultTheme, defaultDarkMode } = defaultConfig;
|
|
170
|
+
config.defaultTheme = defaultTheme || config.defaultTheme;
|
|
171
|
+
config.defaultDarkMode = defaultDarkMode || config.defaultDarkMode;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// 设置主题列表,响应式
|
|
153
176
|
this.themesRef.value = normalizedThemes.slice();
|
|
154
177
|
|
|
155
178
|
// 先尝试从 Storage 读取已保存主题名
|
|
156
179
|
const saved = this.readStorage<string>(THEME_STORAGE_KEY);
|
|
157
|
-
|
|
158
|
-
let initialName = saved || defaultThemeName || this.themesRef.value[0].name;
|
|
180
|
+
let initialName = saved || config.defaultTheme || this.themesRef.value[0].name;
|
|
159
181
|
const found = this.themesRef.value.find(t => t.name === initialName) || this.themesRef.value[0];
|
|
160
182
|
|
|
183
|
+
// 设置当前主题,响应式
|
|
161
184
|
this.currentThemeRef.value = found;
|
|
162
185
|
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
this.darkModeRef.value = savedDarkMode || config.defaultDarkMode;
|
|
186
|
+
// 初始化暗黑模式设置
|
|
187
|
+
this.initDarkMode(config.defaultDarkMode);
|
|
166
188
|
|
|
167
189
|
// 应用主题
|
|
168
190
|
this.applyTheme(found);
|
|
@@ -173,6 +195,16 @@ export class ConfigProvider {
|
|
|
173
195
|
return this;
|
|
174
196
|
}
|
|
175
197
|
|
|
198
|
+
/**
|
|
199
|
+
* 初始化暗黑模式设置
|
|
200
|
+
* @param darkMode
|
|
201
|
+
*/
|
|
202
|
+
initDarkMode(darkMode?: DarkMode) {
|
|
203
|
+
// 尝试从 Storage 读取暗黑模式设置
|
|
204
|
+
const savedDarkMode = this.readStorage<DarkMode>(DARK_MODE_STORAGE_KEY);
|
|
205
|
+
this.darkModeRef.value = savedDarkMode || darkMode || config.defaultDarkMode;
|
|
206
|
+
}
|
|
207
|
+
|
|
176
208
|
/**
|
|
177
209
|
* 获取所有可用主题
|
|
178
210
|
*/
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "uview-pro",
|
|
3
3
|
"name": "uview-pro",
|
|
4
4
|
"displayName": "【支持鸿蒙】uView Pro|基于Vue3+TS的高质量UI组件库,支持多主题、暗黑模式",
|
|
5
|
-
"version": "0.4.
|
|
5
|
+
"version": "0.4.13",
|
|
6
6
|
"description": "uView Pro是基于Vue3+TS的多平台UI框架,提供80+高质量组件、便捷工具和常用模板,支持多主题与暗黑模式,支持H5/APP/鸿蒙/小程序等多端开发。已在华为鸿蒙应用商店上架,欢迎体验!",
|
|
7
7
|
"main": "index.ts",
|
|
8
8
|
"module": "index.ts",
|
package/theme.scss
CHANGED
package/types/global.d.ts
CHANGED
|
@@ -160,6 +160,8 @@ export type InputConfirmType = 'send' | 'search' | 'next' | 'go' | 'done';
|
|
|
160
160
|
|
|
161
161
|
export type InputLabelPosition = 'left' | 'top';
|
|
162
162
|
|
|
163
|
+
export type TextareaBorder = 'surround' | 'none' | 'bottom';
|
|
164
|
+
|
|
163
165
|
export type FormErrorType = 'message' | 'border' | 'border-bottom' | 'none' | 'toast';
|
|
164
166
|
|
|
165
167
|
export type IconLabelPosition = 'left' | 'top' | 'right' | 'bottom';
|
|
@@ -372,6 +374,12 @@ export type Theme = {
|
|
|
372
374
|
darkCss?: Record<string, string>;
|
|
373
375
|
};
|
|
374
376
|
|
|
377
|
+
export type Themes = {
|
|
378
|
+
themes: Theme[];
|
|
379
|
+
defaultTheme?: string;
|
|
380
|
+
defaultDarkMode?: DarkMode;
|
|
381
|
+
};
|
|
382
|
+
|
|
375
383
|
export type LogConfig = Partial<{
|
|
376
384
|
debug?: boolean;
|
|
377
385
|
prefix?: string;
|
|
@@ -379,7 +387,7 @@ export type LogConfig = Partial<{
|
|
|
379
387
|
}>;
|
|
380
388
|
|
|
381
389
|
export interface UViewProOptions {
|
|
382
|
-
theme?: ThemeColor | Theme[];
|
|
390
|
+
theme?: ThemeColor | Theme[] | Themes;
|
|
383
391
|
log?: LogConfig;
|
|
384
392
|
// 可扩展更多配置项
|
|
385
393
|
}
|