uview-pro 0.4.6 → 0.4.8

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 CHANGED
@@ -1,22 +1,57 @@
1
- ## 0.4.6(2025-12-17
1
+ ## 0.4.8(2025-12-23
2
2
 
3
- ### 📝 Documentation | 文档
4
-
5
- - 添加鸿蒙系统预览说明及二维码 ([7f6199a](https://github.com/anyup/uView-Pro/commit/7f6199a30d5477743c20b27a94711b4605787757))
6
-
7
- ### ✨ Features | 新功能
3
+ ### 🐛 Bug Fixes | Bug 修复
8
4
 
9
- - **u-slider:** 增强滑块组件功能与灵活性,支持设置滑块的整体范围起点(start)和终点(end) ([a20c44b](https://github.com/anyup/uView-Pro/commit/a20c44b0270cffde02afd8738a932b2d6bae49f4))
10
- - **button:** 新增按钮禁用与自定义样式功能演示 ([5f1f482](https://github.com/anyup/uView-Pro/commit/5f1f4823e027dc5ab2e6f49f29fe327c6d4318c6))
5
+ - **u-avatar:** 修复 ios 微信小程序默认头像不显示问题 ([9e3420f](https://github.com/anyup/uView-Pro/commit/9e3420fb8d0db533ce7fb3a8e83543b43ac0c7a7))
6
+ - 修复 u-cell 组件中使用 u-icon 样式在微信小程序不生效问题,修复 u-upload 图片上传失败重试是否显示提示配置不生效问题 ([e591d62](https://github.com/anyup/uView-Pro/commit/e591d62befce95c207ca47158549e6fd97f1e58d))
7
+ - **u-cell-item:** 修复图标样式问题并优化组件结构 ([294bf4b](https://github.com/anyup/uView-Pro/commit/294bf4be88fb53a2ccd72fcc8702b09f6d736a30))
11
8
 
12
- ### 🐛 Bug Fixes | Bug 修复
9
+ ### ♻️ Code Refactoring | 代码重构
13
10
 
14
- - **button:** 更新禁用状态下按钮样式优先级 ([b3ff20b](https://github.com/anyup/uView-Pro/commit/b3ff20b59818c8bc8204bb2a489eff42ded7e842))
11
+ - **theme:** 修改主题默认为官方内置主题,暗黑模式默认为亮色 ([176b482](https://github.com/anyup/uView-Pro/commit/176b48210209ae362fe30e459e73dff6fc81b53e))
15
12
 
16
13
  ### 👥 Contributors
17
14
 
18
- <a href="https://github.com/anyup"><img src="https://github.com/anyup.png?size=40" width="40" height="40" alt="anyup" title="anyup"/></a>
15
+ <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/lime"><img src="https://github.com/lime.png?size=40" width="40" height="40" alt="lime" title="lime"/></a>
19
16
 
17
+ ## 0.4.7(2025-12-19)
18
+
19
+ ### 🚀 Chore | 构建/工程依赖/工具
20
+
21
+ - 忽略部分文件 ([a8a747f](https://github.com/anyup/uView-Pro/commit/a8a747f97e93ed278a305cd1b2671d2ede5c0fde))
22
+
23
+ ### ✨ Features | 新功能
24
+
25
+ - **u-tabbar:** u-tabbar 组件支持 custom-icon 直接配置图标 custom-prefix ([e577c2d](https://github.com/anyup/uView-Pro/commit/e577c2d083cf46db7124b0df46b2848ef9bdbe80))
26
+
27
+ ### 🐛 Bug Fixes | Bug 修复
28
+
29
+ - **u-icon:** 修复图标组件样式和事件处理问题 ([1cadf27](https://github.com/anyup/uView-Pro/commit/1cadf27f8bd2aec3a11fb1befb9255256a2e3b3a))
30
+ - **u-pagination:** 修复分页切换时传递不正确的当前页码值 ([4befe02](https://github.com/anyup/uView-Pro/commit/4befe02c5cbb4e7db6fbf49f04ca68fac0f69a37))
31
+
32
+ ### 👥 Contributors
33
+
34
+ <a href="https://github.com/anyup"><img src="https://github.com/anyup.png?size=40" width="40" height="40" alt="anyup" title="anyup"/></a>
35
+
36
+ ## 0.4.6(2025-12-17)
37
+
38
+ ### 📝 Documentation | 文档
39
+
40
+ - 添加鸿蒙系统预览说明及二维码 ([7f6199a](https://github.com/anyup/uView-Pro/commit/7f6199a30d5477743c20b27a94711b4605787757))
41
+
42
+ ### ✨ Features | 新功能
43
+
44
+ - **u-slider:** 增强滑块组件功能与灵活性,支持设置滑块的整体范围起点(start)和终点(end) ([a20c44b](https://github.com/anyup/uView-Pro/commit/a20c44b0270cffde02afd8738a932b2d6bae49f4))
45
+ - **button:** 新增按钮禁用与自定义样式功能演示 ([5f1f482](https://github.com/anyup/uView-Pro/commit/5f1f4823e027dc5ab2e6f49f29fe327c6d4318c6))
46
+
47
+ ### 🐛 Bug Fixes | Bug 修复
48
+
49
+ - **button:** 更新禁用状态下按钮样式优先级 ([b3ff20b](https://github.com/anyup/uView-Pro/commit/b3ff20b59818c8bc8204bb2a489eff42ded7e842))
50
+
51
+ ### 👥 Contributors
52
+
53
+ <a href="https://github.com/anyup"><img src="https://github.com/anyup.png?size=40" width="40" height="40" alt="anyup" title="anyup"/></a>
54
+
20
55
  ## 0.4.5(2025-12-10)
21
56
 
22
57
  ### ✨ Features | 新功能
@@ -37,8 +37,8 @@ import { ref, computed, watch } from 'vue';
37
37
  import { AvatarProps } from './types';
38
38
  import { $u } from '../..';
39
39
 
40
- let base64Avatar =
41
- 'data:image/jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjREMEQwRkY0RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjREMEQwRkY1RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NEQwRDBGRjJGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NEQwRDBGRjNGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYG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';
40
+ const base64Avatar =
41
+ 'data:image/jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjREMEQwRkY0RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjREMEQwRkY1RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NEQwRDBGRjJGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NEQwRDBGRjNGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYG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';
42
42
 
43
43
  /**
44
44
  * avatar 头像
@@ -15,13 +15,10 @@
15
15
  :hover-class="hoverClass"
16
16
  :style="$u.toStyle({ backgroundColor: bgColor }, customStyle)"
17
17
  >
18
- <u-icon
19
- :size="iconSize"
20
- :name="icon"
21
- v-if="icon"
22
- :custom-style="iconStyle"
23
- class="u-cell__left-icon-wrap"
24
- ></u-icon>
18
+ <view v-if="icon" class="u-cell__left-icon-wrap">
19
+ <u-icon :size="iconSize" :name="icon" :custom-style="iconStyle"></u-icon>
20
+ </view>
21
+
25
22
  <view class="u-flex" v-else>
26
23
  <slot name="icon"></slot>
27
24
  </view>
@@ -40,12 +37,9 @@
40
37
  <view class="u-flex u-cell_right" v-if="$slots['right-icon']">
41
38
  <slot name="right-icon"></slot>
42
39
  </view>
43
- <u-icon
44
- v-if="arrow"
45
- name="arrow-right"
46
- :style="[arrowStyle]"
47
- class="u-icon-wrap u-cell__right-icon-wrap"
48
- ></u-icon>
40
+ <view v-if="arrow" class="u-icon-wrap u-cell__right-icon-wrap">
41
+ <u-icon name="arrow-right" :style="[arrowStyle]"></u-icon>
42
+ </view>
49
43
  </view>
50
44
  </template>
51
45
 
@@ -1,26 +1,26 @@
1
1
  import type { ExtractPropTypes, PropType } from 'vue';
2
2
  import { baseProps } from '../common/props';
3
- import { configProvider } from '../../libs';
3
+ import { config, configProvider } from '../../libs';
4
4
  import type { Theme } from '../../types/global';
5
5
 
6
6
  export const ConfigProviderProps = {
7
7
  ...baseProps,
8
8
  /**
9
9
  * 主题风格,可选值:
10
- * - 'light': 强制亮色模式
10
+ * - 'light': 强制亮色模式(默认)
11
11
  * - 'dark': 强制暗黑模式
12
- * - 'auto': 自动跟随系统设置(默认)
12
+ * - 'auto': 自动跟随系统设置
13
13
  */
14
14
  darkMode: {
15
15
  type: String as PropType<'light' | 'dark' | 'auto'>,
16
- default: 'auto'
16
+ default: () => config.defaultDarkMode
17
17
  },
18
18
  /**
19
19
  * 当前主题名称(用于多主题切换)
20
20
  */
21
21
  currentTheme: {
22
22
  type: String,
23
- default: () => configProvider.getCurrentTheme()?.name ?? 'uviewpro'
23
+ default: () => configProvider.getCurrentTheme()?.name ?? config.defaultTheme
24
24
  },
25
25
  /**
26
26
  * 自定义主题列表
@@ -1,17 +1,22 @@
1
1
  <template>
2
- <view :style="[customStyle]" class="u-icon" @click="onClick" :class="['u-icon--' + labelPos, customClass]">
3
- <image class="u-icon__img" v-if="isImg" :src="name" :mode="imgMode" :style="[imgStyle]" />
2
+ <view
3
+ :style="$u.toStyle(customStyle)"
4
+ class="u-icon"
5
+ @click="onClick"
6
+ :class="['u-icon--' + labelPos, customClass]"
7
+ >
8
+ <image class="u-icon__img" v-if="isImg" :src="props.name" :mode="imgMode" :style="[imgStyle]" />
4
9
  <text
5
10
  v-else
6
11
  class="u-icon__icon"
7
12
  :class="iconClass"
8
- :style="[iconStyle]"
13
+ :style="$u.toStyle(iconStyle)"
9
14
  :hover-class="hoverClass"
10
15
  @touchstart="onTouchstart"
11
16
  >
12
17
  <text
13
18
  v-if="showDecimalIcon"
14
- :style="[decimalIconStyle]"
19
+ :style="$u.toStyle(decimalIconStyle)"
15
20
  :class="decimalIconClass"
16
21
  :hover-class="hoverClass"
17
22
  class="u-icon__decimal"
@@ -219,8 +224,8 @@ function onClick(event: any) {
219
224
  * 图标触摸时触发
220
225
  * @emits touchstart(index)
221
226
  */
222
- function onTouchstart() {
223
- emit('touchstart', props.index);
227
+ function onTouchstart(event: any) {
228
+ emit('touchstart', props.index || event);
224
229
  }
225
230
  </script>
226
231
 
@@ -65,14 +65,15 @@ const totalPages = computed(() => {
65
65
 
66
66
  // 切换分页
67
67
  function handleChange(type: PaginationDirection) {
68
- if (type === 'prev') {
69
- current.value -= 1;
70
- } else {
71
- current.value += 1;
72
- }
68
+ // 先计算新值,确保获取到的是更新后的值
69
+ const newCurrent = type === 'prev' ? current.value - 1 : current.value + 1;
70
+
71
+ // 更新 current
72
+ current.value = newCurrent;
73
73
 
74
74
  // current为当前页,type值为:next/prev,表示点击的是上一页还是下一页
75
- emit('change', { type, current: current.value });
75
+ // 使用计算后的新值,而不是 current.value,避免异步更新导致的值不同步问题
76
+ emit('change', { type, current: newCurrent });
76
77
  }
77
78
  </script>
78
79
 
@@ -31,7 +31,7 @@
31
31
  :name="elIconPath(index)"
32
32
  img-mode="scaleToFill"
33
33
  :color="elColor(index)"
34
- :custom-prefix="item.customIcon ? 'custom-icon' : 'uicon'"
34
+ :custom-prefix="getCustomPrefix(index)"
35
35
  ></u-icon>
36
36
  <u-badge
37
37
  :count="item.count"
@@ -154,6 +154,34 @@ const elColor = computed<(index: number) => string>(() => {
154
154
  };
155
155
  });
156
156
 
157
+ /**
158
+ * 计算当前item的custom-prefix
159
+ * customIcon为boolean时:true为"custom-icon",false为"uicon"
160
+ * customIcon为string时:直接使用该值
161
+ * customIcon为空时:默认"uicon"
162
+ */
163
+ function getCustomPrefix(index: number): string {
164
+ const customIcon = props.list[index]?.customIcon;
165
+
166
+ // 如果为空(undefined/null),返回默认值
167
+ if (customIcon === undefined || customIcon === null || customIcon === '') {
168
+ return 'uicon';
169
+ }
170
+
171
+ // 如果是字符串类型,直接返回
172
+ if (typeof customIcon === 'string') {
173
+ return customIcon;
174
+ }
175
+
176
+ // 如果是boolean类型
177
+ if (typeof customIcon === 'boolean') {
178
+ return customIcon ? 'custom-icon' : 'uicon';
179
+ }
180
+
181
+ // 默认返回uicon
182
+ return 'uicon';
183
+ }
184
+
157
185
  /**
158
186
  * 点击tabbar item
159
187
  */
@@ -146,7 +146,7 @@ watch(
146
146
  // 数组的some方法意思是,只要数组元素有任意一个元素条件符合,就返回true,而另一个数组的every方法的意思是数组所有元素都符合条件才返回true
147
147
  let tmp = lists.value.some(val2 => val2.url == value.url);
148
148
  // 如果内部没有这个图片(tmp为false),则添加到内部
149
- !tmp && lists.value.push({ url: value.url, error: false, progress: 100 });
149
+ !tmp && lists.value.push({ ...value, url: value.url, error: false, progress: 100 });
150
150
  });
151
151
  },
152
152
  { immediate: true, deep: true }
@@ -244,7 +244,9 @@ function retry(index: number) {
244
244
  lists.value[index].progress = 0;
245
245
  lists.value[index].error = false;
246
246
  lists.value[index].response = null;
247
- uni.showLoading({ title: '重新上传' });
247
+ if (props.showTips) {
248
+ uni.showLoading({ title: '重新上传' });
249
+ }
248
250
  uploadFile(index);
249
251
  }
250
252
 
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { version } from '../../package.json';
7
+ import type { DarkMode } from '../../types/global';
7
8
 
8
9
  export interface AppConfig {
9
10
  /** 版本号 */
@@ -12,6 +13,10 @@ export interface AppConfig {
12
13
  version: string;
13
14
  /** 主题名称列表 */
14
15
  type: string[];
16
+ /** 默认主题名称 */
17
+ defaultTheme: string;
18
+ /** 默认暗黑主题 */
19
+ defaultDarkMode: DarkMode;
15
20
  }
16
21
 
17
22
  // const version: string = '1.8.8';
@@ -20,7 +25,11 @@ const config: AppConfig = {
20
25
  v: version,
21
26
  version: version,
22
27
  // 主题名称
23
- type: ['primary', 'success', 'info', 'error', 'warning']
28
+ type: ['primary', 'success', 'info', 'error', 'warning'],
29
+ // 默认为官方主题名称
30
+ defaultTheme: 'uviewpro',
31
+ // 默认为亮色模式
32
+ defaultDarkMode: 'light'
24
33
  };
25
34
 
26
35
  export default config;
@@ -1,4 +1,5 @@
1
1
  import type { Theme, ThemeColor } from '../../types/global';
2
+ import config from './config';
2
3
 
3
4
  const lightPalette: ThemeColor = {
4
5
  primary: '#2979ff',
@@ -90,7 +91,7 @@ const darkCss: Record<string, string> = {
90
91
 
91
92
  export const defaultThemes: Theme[] = [
92
93
  {
93
- name: 'uviewpro',
94
+ name: config.defaultTheme,
94
95
  label: '默认蓝',
95
96
  description: 'uView Pro 默认主题,支持亮色与暗黑模式',
96
97
  color: lightPalette,
@@ -44,7 +44,7 @@ export class ConfigProvider {
44
44
  // 响应式状态,供外部直接引用
45
45
  public themesRef = ref<Theme[]>([]);
46
46
  public currentThemeRef = ref<Theme | null>(null);
47
- public darkModeRef = ref<DarkMode>('auto');
47
+ public darkModeRef = ref<DarkMode>(config.defaultDarkMode);
48
48
  public cssVarsRef = ref<Record<string, string>>({});
49
49
  private baseColorTokens: Partial<ThemeColor> = DEFAULT_LIGHT_TOKENS;
50
50
  private baseDarkColorTokens: Partial<ThemeColor> = DEFAULT_DARK_TOKENS;
@@ -162,7 +162,7 @@ export class ConfigProvider {
162
162
 
163
163
  // 尝试从 Storage 读取暗黑模式设置
164
164
  const savedDarkMode = this.readStorage<DarkMode>(DARK_MODE_STORAGE_KEY);
165
- this.darkModeRef.value = savedDarkMode || 'auto';
165
+ this.darkModeRef.value = savedDarkMode || config.defaultDarkMode;
166
166
 
167
167
  // 应用主题
168
168
  this.applyTheme(found);
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的80+精选UI组件库,支持多主题,暗黑模式",
5
- "version": "0.4.6",
5
+ "version": "0.4.8",
6
6
  "description": "uView Pro,是全面支持Vue3+TS的uni-app生态框架,80+精选组件,支持安卓,iOS,鸿蒙,各小程序平台,支持多主题,一键暗黑模式",
7
7
  "main": "index.ts",
8
8
  "module": "index.ts",
package/types/global.d.ts CHANGED
@@ -401,6 +401,6 @@ export type TabbarItem = {
401
401
  selectedIconPath?: string;
402
402
  count?: number;
403
403
  isDot?: boolean;
404
- customIcon?: boolean;
404
+ customIcon?: boolean | string;
405
405
  midButton?: boolean;
406
406
  };