uview-plus 3.8.86 → 3.8.108

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.
Files changed (61) hide show
  1. package/changelog.md +173 -3
  2. package/components/u-action-sheet/u-action-sheet.vue +21 -2
  3. package/components/u-barcode/u-barcode.vue +0 -2
  4. package/components/u-button/u-button.vue +2 -5
  5. package/components/u-canvas/u-canvas.vue +430 -77
  6. package/components/u-cell/u-cell.vue +8 -0
  7. package/components/u-datetime-picker/u-datetime-picker.vue +53 -4
  8. package/components/u-dragsort/u-dragsort.vue +55 -31
  9. package/components/u-icon/u-icon.vue +12 -3
  10. package/components/u-icon/util.js +81 -10
  11. package/components/u-index-item/u-index-item.vue +1 -1
  12. package/components/u-index-list/u-index-list.vue +1 -1
  13. package/components/u-novel-reader/content-normalizer.js +80 -0
  14. package/components/u-novel-reader/layout-engine.js +225 -0
  15. package/components/u-novel-reader/measure-adapter.js +69 -0
  16. package/components/u-novel-reader/novelReader.js +35 -0
  17. package/components/u-novel-reader/persistence.js +144 -0
  18. package/components/u-novel-reader/props.js +100 -0
  19. package/components/u-novel-reader/reader-catalog.vue +234 -0
  20. package/components/u-novel-reader/reader-content.vue +226 -0
  21. package/components/u-novel-reader/reader-core.js +151 -0
  22. package/components/u-novel-reader/reader-settings.vue +325 -0
  23. package/components/u-novel-reader/reader-toolbar.vue +313 -0
  24. package/components/u-novel-reader/theme-vars.scss +49 -0
  25. package/components/u-novel-reader/u-novel-reader.vue +836 -0
  26. package/components/u-poster/u-poster.vue +272 -222
  27. package/components/u-qrcode/qrcode.js +56 -49
  28. package/components/u-qrcode/u-qrcode.vue +159 -88
  29. package/components/u-scroll-list/scrollWxs.wxs +1 -1
  30. package/components/u-slider/u-slider.vue +1 -1
  31. package/components/u-swipe-action-item/index.wxs +43 -25
  32. package/components/u-swipe-action-item/nvue.js +9 -0
  33. package/components/u-swipe-action-item/other.js +32 -21
  34. package/components/u-swipe-action-item/props.js +5 -0
  35. package/components/u-swipe-action-item/swipeActionItem.js +1 -0
  36. package/components/u-swipe-action-item/u-swipe-action-item.vue +28 -4
  37. package/components/u-switch/u-switch.vue +1 -1
  38. package/components/u-tabbar/u-tabbar.vue +2 -1
  39. package/components/u-tabbar-item/u-tabbar-item.vue +64 -21
  40. package/components/u-tabs/u-tabs.vue +11 -8
  41. package/components/u-tabs-pro/u-tabs-pro.vue +212 -0
  42. package/components/u-text/text.js +1 -1
  43. package/components/u-text/u-text.vue +18 -6
  44. package/components/u-upload/u-upload.vue +1 -1
  45. package/components/u-waterfall/u-waterfall.vue +118 -65
  46. package/libs/config/config.js +1 -1
  47. package/libs/config/props.js +1 -0
  48. package/libs/function/index.js +66 -0
  49. package/libs/mixin/mixin.js +4 -50
  50. package/libs/root/index.js +78 -5
  51. package/libs/root/page.js +7 -7
  52. package/libs/root/root.js +73 -3
  53. package/libs/util/app-nvue-webview-canvas.js +486 -0
  54. package/libs/util/gcanvas/bridge/bridge-weex.js +0 -2
  55. package/libs/util/gcanvas/index.js +3 -3
  56. package/package.json +2 -2
  57. package/types/comps/swipeActionItem.d.ts +13 -0
  58. package/types/comps/tabs.d.ts +2 -1
  59. package/types/comps/text.d.ts +1 -1
  60. package/types/func.d.ts +23 -0
  61. package/types/index.d.ts +1 -0
package/changelog.md CHANGED
@@ -1,8 +1,178 @@
1
- ## Next
1
+ ## 3.8.108(2026-08-18)
2
+ fix: 修复鸿蒙二维码不显示、海报文字不换行等绘图问题
3
+
4
+ 鸿蒙 CanvasContext.measureText 同步返回值恒为 0,真实宽度只通过可选 callback 经 evalJSAsync 异步回传;
5
+ 而 uni-app-plus 走 evalJSSync 同步就能拿到真值。这是同样代码在安卓
6
+ 正常、鸿蒙异常的根因。
7
+
8
+ 宽度 0 会让 drawTextWithLineClamp 里 `0 <= maxWidth` 恒成立,整段
9
+ 文本被当成一行放得下直接输出,标题横穿并压到二维码上。
10
+
11
+ - u-canvas: 新增 #ifdef APP-HARMONY 的 callback 测量分支;measureText
12
+ 不再把 0 当有效值外传;新增 estimateTextWidth 兜底
13
+ - u-poster: measureTextWidth 拿到非正数宽度时改用估算,不再 `|| 0` 静默吞掉
14
+ - 兜底估算区分全角/半角(全角 1.0、半角 0.56、空白 0.28)。原先的
15
+ length * fontSize * 0.6 会让中文短算约 40%,仍然不换行
16
+ - callback 超时从 1000ms 降到 300ms,并用 _harmonyMeasureUnavailable
17
+ 锁存状态:一次换行要二分测量十几次,逐次干等会把导出拖成十几秒
18
+ - 新增 verify:harmony-poster-text-wrap 校验脚本
19
+
20
+
21
+ ## 3.8.107(2026-08-18)
22
+ fix: 修复empty示例页面
23
+
24
+ ## 3.8.106
25
+ feat: 让 App 原生 nvue 页面完整复用 App.up.vue 根容器
26
+
27
+ - 原生 App nvue 页面统一导入并包裹项目 App.up.vue,保留页面主题、导航栏和 Root 能力。
28
+ - App.up.vue 在 App Vue 和 App nvue 中分别显示 VUE、NVUE 渲染标识,并补充 nvue 根容器尺寸适配。
29
+ - Toast/Notify 根宿主改为本地注册,兼容 nvue 独立页面实例。
30
+ - 增加 Root、nvue 页面和 App.up.vue 的回归验证。
31
+
32
+ ## 3.8.105
33
+ feat: 完善 APP-NVUE 海报与通用画布能力
34
+
35
+ - 修复 APP-NVUE 海报生成时图片、文字和二维码无法完整导出的问题
36
+ - 增加基于 WebView 的通用画布运行时,统一提供绘制、文本、图片、二维码和导出能力
37
+ - 完善 u-canvas 跨端接口,支持后续扩展自定义图形绘制与图表场景
38
+ - 修复 GCanvas 背景设置异常并移除发布版本中的调试日志
39
+
40
+ fix: 修复跨端字体图标与字体加载问题
41
+
42
+ - 修复 App Vue 模式下图标字体不显示的问题
43
+ - 修复微信小程序字体加载失败后无法再次加载的问题
44
+ - 支持 App nvue 页面按 Vue 模式编译,改善组件兼容性
45
+
46
+ fix: 完善 Tabs、二维码与小说阅读器示例
47
+
48
+ - 修复 Tabs 自定义样式颜色回退,并完善点击事件参数
49
+ - 修复二维码在 APP-NVUE 海报场景中的绘制与导出兼容性
50
+ - 统一小说阅读器示例的根容器、主题、工具栏、设置、目录和正文布局
51
+ - 将小说阅读器示例调整为全屏布局,改善不同设备下的显示效果
52
+
53
+ ## 3.8.104
54
+ fix: 修复 DatetimePicker 动态修改 minMinute 等边界值导致已选值重置及重复触发 change
55
+
56
+ - 修复 mode=time/timesecond 下,切换时间时动态改变 minMinute(及其他 min/max 边界)会把已选值重置为初始值的问题:改为保留当前已选值并按新边界重新校正,未点确认前不再回退到 modelValue。
57
+ - 修复边界变化时程序化重建各列在部分原生端再次派发 change 的问题:新增 lastEmitValue 去重,值未变化不再上抛 change。
58
+ - 已选值低于新的 minMinute(或高于 maxMinute)时会被自动夹取到合法范围并补发一次 change。
59
+ - 示例页新增「只能选当前时间之后(动态 minMinute)」演示。
60
+
61
+ ## 3.8.103
62
+ feat: 增加小说阅读器组件
63
+
64
+ - 新增 `up-novel-reader` 小说阅读组件,支持纵向滚动与横向分页两种阅读模式。
65
+ - 增加顶部工具栏、返回按钮、目录、书签、章节切换、阅读设置和五种内置主题。
66
+ - 增加字号、行高、段距、正文宽度、字体、粗体和翻页动画配置。
67
+ - 增加章节预加载、阅读进度、阅读时长、本地持久化和损坏状态恢复。
68
+ - 增加顶部状态栏与底部安全区适配,返回按钮仅随顶部工具栏显示。
69
+ - 增加组件示例页面、组件文档和小说阅读器静态校验脚本。
70
+
71
+ ## 3.8.102
72
+ feat: 新增组合式 API 节点查询方法
73
+
74
+ - 将节点查询逻辑迁移到公共 upGetRect,并保留旧 $uGetRect 兼容入口
75
+ - 补充跨端空结果处理与类型声明,保持 Vue 与组合式 API 的查询能力一致
76
+
77
+ fix: 修复 u-text 设置无单位行高时文字不可见
78
+
79
+ - 修复 lineHeight=1.2 被转换为 1.2px 后与单行省略裁剪叠加导致文字显示为虚线的问题
80
+ - 保留 20 等尺寸值的像素语义,并支持 px、rpx、百分比等显式单位
81
+ - 同步补充 u-text 的 TypeScript 行高说明
82
+
83
+ ## 3.8.101
84
+ fix: 修复 H5 overlay 内二维码重复 HiDPI 缩放导致绘制不完整
85
+
86
+ - H5 使用 uni-h5 内置 HiDPI 尺寸和绘制缩放,避免 up-canvas 再次设置画布尺寸与变换矩阵
87
+ - 保留小程序端 DPR 适配,避免影响已有跨端绘制行为
88
+ - 增加 DPR=2 初始化回归校验,并静态检查 H5 不再重复执行手动缩放
89
+
90
+ ## 3.8.100
91
+ 修复 H5 中 up-qrcode 嵌入 up-overlay 时二维码可能绘制不完整或空白的问题。
92
+
93
+ 通过合并同一 up-canvas 实例的并发初始化,避免重复设置画布尺寸和清屏覆盖已绘制内容;新增 Overlay 二维码示例与初始化竞态回归验证。
94
+
95
+ ## 3.8.99(2026-08-05)
96
+ feat: 增加up-tab-pro封装组件
97
+
98
+ ## 3.8.98
99
+ fix: 修复 u-waterfall 快速更新时并发分配错乱
100
+
101
+ - 修复多批数据快速到达时异步分配循环并发交错,改为共享队列串行消费
102
+ - clear 或全量重排时取消过期分配任务,避免旧数据继续写回已清空的列
103
+ - 检测中间插入、重排和列表缩短等非纯追加变化并执行全量重排,避免数据错列、重复或丢失
104
+ - 增加并发、清空和中间插入回归校验,覆盖 issue #1047
105
+
106
+ ## 3.8.97
107
+ fix: 修复 u-dragsort 微信小程序拖动排序兼容问题
108
+
109
+ - 修复拖动并松手后列表项覆盖,保持原生拖动节点身份稳定
110
+ - 修复自定义拖动句柄在微信小程序中不显示,补充作用域插槽示例
111
+ - 修复横向和多行多列模式右侧出现额外白色区域
112
+ - 增加拖动排序稳定身份与跨端句柄回归校验
113
+
114
+ ## 3.8.96(2026-08-03)
115
+ fix: 更新示例工程
116
+
117
+ ## 3.8.95(2026-08-03)
118
+ fix: 优化App端字体图标不显示先支持本地模式(依赖Root组件)和远程模式及IOS编译报错问题
119
+
120
+ - 修复启用 UniUpRoot 后 iOS App 下 `u-icon` 字体从 `/assets` 加载失败的问题,App 构建时自动复制 `upicon.ttf` 到 `static/app-plus/uview-plus/upicon.ttf`
121
+ - 未启用 UniUpRoot 的 App 项目继续保留远程 CSS 字体兼容;启用 UniUpRoot 后内置图标字体改用 `_www/static/app-plus/uview-plus/upicon.ttf` 并通过 `plus.io.convertLocalFileSystemURL` 转为平台路径
122
+ - 修复启用 UniUpRoot 后 App nvue 子构建页面 chunk 被 tree-shaking 移除默认导出,导致 `No matching export ... for import "default"` 的问题
123
+
124
+ ## 3.8.94
125
+ fix: 修复 slider 设置 height 时初始化报错
126
+
127
+ - 修复非空 height 触发 `ReferenceError: val is not defined` 的问题
128
+ - 保留 height 优先、未设置时回退 size 的滑块厚度兼容行为
129
+ - 增加 slider height mounted 初始化回归校验,覆盖 issue #1046
130
+
131
+ ## 3.8.93
132
+ fix: 修复自定义 action-sheet 插槽点击不关闭
133
+
134
+ - 修复 closeOnClickAction 在自定义 slot 内容中的关闭行为
135
+ - 兼容 up-cell 阻止事件冒泡时的 action-sheet 关闭场景
136
+ - 增加对应的 action-sheet 插槽关闭验证脚本
137
+
138
+ ## 3.8.92
139
+ feat: swipe-action-item 新增 scrolling / v-model:scrolling,用于横向滑动时联动暂停页面或 scroll-view 容器滚动。
140
+ fix: 补充 touchcancel、关闭、禁用和卸载释放逻辑,避免外部滚动锁状态卡住。
141
+ docs: 更新防止页面或容器滚动示例,说明 page-meta 与 scroll-view 用法。
142
+
143
+ ## 3.8.91
144
+ fix: 调整文本默认伸展与字体加载配置
145
+
146
+ - u-text 默认不再占满剩余空间,未显式开启 flex1 时避免影响父级布局
147
+ - 默认只加载一次字体资源,减少重复加载
148
+ - 补充 tabbar 示例 borderColor 展示,便于验证顶部边框颜色
149
+
150
+ ## 3.8.90
151
+ fix: 修复 plain 按钮默认白底
152
+
153
+ - plain 镂空按钮默认背景改为透明,避免深色背景下出现白色或卡片色底块
154
+ - 保留显式背景变量覆盖能力,已有主动配置背景色的场景不受影响
155
+ - 补充验证脚本,覆盖 plain 按钮默认背景兜底
156
+
157
+ ## 3.8.89
158
+ fix: 修复 tabbar 中间按钮圆弧边框颜色
159
+
160
+ - 中间按钮上半圆边框跟随 tabbar 的 `borderColor` 属性,避免圆弧与顶部边框颜色不一致
161
+ - `borderColor` 为空时继续使用主题边框色 fallback,保持默认表现不变
162
+ - uview-ultra 同步 Vue 与 uvue 实现,保证两个组件库样式一致
163
+
164
+ ## 3.8.88
165
+ fix: 修复 tabbar 中间按钮上半圆边框
166
+
167
+ - 中间按钮改为 64px 圆形边框裁剪方案,透明或半透明 tabbar 背景下不再依赖纯色遮罩
168
+ - 根据 `midButtonOffsetY` 自动计算上半圆边框裁剪高度,兼容有文字和无文字布局
169
+ - 修复微信小程序中间按钮图标层级,避免被内层圆形背景遮住
170
+
171
+ ## 3.8.87
2
172
  feat: swiper 支持 vertical 纵向滑动(#936)
3
173
 
4
- - 新增 `vertical` 属性并透传原生 swiper,默认 `false` 保持横向兼容
5
- - 补充类型定义与纵向滑动示例
174
+ - up-swiper 新增 `vertical` 属性并透传原生 swiper,默认 `false` 保持横向兼容
175
+ - 补充 TypeScript 类型定义、纵向滑动示例与自动校验
6
176
 
7
177
  ## 3.8.86
8
178
  fix: 为 .w-full 补充 box-sizing,并补充插件 tsconfig
@@ -36,7 +36,14 @@
36
36
  }, descriptionDynamicStyle]"
37
37
  v-if="description"
38
38
  >{{description}}</text>
39
- <slot>
39
+ <view
40
+ class="u-action-sheet__slot"
41
+ v-if="$slots.default"
42
+ @tap="slotClickHandler"
43
+ >
44
+ <slot></slot>
45
+ </view>
46
+ <template v-else>
40
47
  <!-- 分割线 -->
41
48
  <u-line v-if="description" :color="dividerColor"></u-line>
42
49
  <!-- 操作项列表 -->
@@ -96,7 +103,7 @@
96
103
  <u-line v-if="index !== actions.length - 1" :color="dividerColor"></u-line>
97
104
  </view>
98
105
  </scroll-view>
99
- </slot>
106
+ </template>
100
107
  <!-- 取消按钮前的分割区域 -->
101
108
  <u-gap
102
109
  :bgColor="cancelGapColor"
@@ -161,6 +168,11 @@
161
168
  name: "u-action-sheet",
162
169
  // 一些props参数和methods方法,通过mixin混入,因为其他文件也会用到
163
170
  mixins: [openType, buttonMixin, mixin, props],
171
+ provide() {
172
+ return {
173
+ uActionSheet: this,
174
+ }
175
+ },
164
176
  data() {
165
177
  return {
166
178
 
@@ -227,6 +239,13 @@
227
239
  this.$emit('update:show', false)
228
240
  this.$emit('close')
229
241
  },
242
+ // 点击自定义内容时,按菜单项点击配置关闭弹窗
243
+ slotClickHandler() {
244
+ if (this.closeOnClickAction) {
245
+ this.$emit('update:show', false)
246
+ this.$emit('close')
247
+ }
248
+ },
230
249
  // 选择操作项处理
231
250
  selectHandler(index) {
232
251
  const item = this.actions[index]
@@ -341,8 +341,6 @@ export default {
341
341
  canvas.toTempFilePath({
342
342
  width: this.canvasWidth,
343
343
  height: this.canvasHeight,
344
- destWidth: this.canvasWidth,
345
- destHeight: this.canvasHeight,
346
344
  success: (res) => {
347
345
  this.barcodeImage = res.tempFilePath
348
346
  this.$emit('rendered', { type: 'image', value: this.value, path: res.tempFilePath })
@@ -227,10 +227,7 @@ export default {
227
227
  nvuePlainBackgroundColor() {
228
228
  return this.upThemeVar(
229
229
  '--up-button-plain-background-color',
230
- this.upThemeVar(
231
- '--up-card-bg-color',
232
- this.isDarkTheme ? '#1c1c1e' : '#ffffff'
233
- )
230
+ 'transparent'
234
231
  );
235
232
  },
236
233
  loadingColor() {
@@ -441,7 +438,7 @@ $u-button-square-border-top-left-radius: 3px !default;
441
438
  $u-button-square-border-bottom-left-radius: 3px !default;
442
439
  $u-button-square-border-bottom-right-radius: 3px !default;
443
440
  $u-button-icon-min-width: 1em !default;
444
- $u-button-plain-background-color: var(--up-button-plain-background-color, var(--up-card-bg-color, #fff)) !default;
441
+ $u-button-plain-background-color: var(--up-button-plain-background-color, transparent) !default;
445
442
  $u-button-hairline-border-width: 0.5px !default;
446
443
 
447
444
  .u-button {