@tuya-miniapp/smart-ui 2.13.2-beta-0 → 2.13.2-beta-2

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 (107) hide show
  1. package/dist/action-sheet/README.md +631 -0
  2. package/dist/battery/README.md +102 -0
  3. package/dist/bottom-sheet/README.md +397 -0
  4. package/dist/button/README.md +205 -0
  5. package/dist/button/index.css +1 -1
  6. package/dist/button/index.wxss +1 -1
  7. package/dist/calendar/README.md +466 -0
  8. package/dist/cascader/README.md +235 -0
  9. package/dist/cell/README.md +240 -0
  10. package/dist/checkbox/README.md +359 -0
  11. package/dist/circle/README.md +116 -0
  12. package/dist/col/README.md +134 -0
  13. package/dist/collapse/README.md +223 -0
  14. package/dist/common/README.md +71 -0
  15. package/dist/config-provider/README.md +143 -0
  16. package/dist/count-down/README.md +194 -0
  17. package/dist/custom-keyboard/README.md +119 -0
  18. package/dist/datetime-picker/README.md +384 -0
  19. package/dist/dialog/README.md +412 -0
  20. package/dist/divider/README.md +100 -0
  21. package/dist/dropdown-menu/README.md +278 -0
  22. package/dist/empty/README.md +101 -0
  23. package/dist/field/README.md +439 -0
  24. package/dist/grid/README.md +197 -0
  25. package/dist/icon/README.md +143 -0
  26. package/dist/image/README.md +171 -0
  27. package/dist/index-bar/README.md +189 -0
  28. package/dist/loading/README.md +86 -0
  29. package/dist/nav-bar/README.md +378 -0
  30. package/dist/normal-slider/README.md +325 -0
  31. package/dist/notice-bar/README.md +216 -0
  32. package/dist/notify/README.md +120 -0
  33. package/dist/overlay/README.md +132 -0
  34. package/dist/picker/README.md +396 -0
  35. package/dist/popover/README.md +249 -0
  36. package/dist/popup/README.md +162 -0
  37. package/dist/progress/README.md +99 -0
  38. package/dist/radio/README.md +303 -0
  39. package/dist/rate/README.md +176 -0
  40. package/dist/search/README.md +235 -0
  41. package/dist/sidebar/README.md +160 -0
  42. package/dist/skeleton/README.md +98 -0
  43. package/dist/slider/README.md +366 -0
  44. package/dist/stepper/README.md +208 -0
  45. package/dist/sticky/README.md +124 -0
  46. package/dist/swipe-cell/README.md +172 -0
  47. package/dist/switch/README.md +204 -0
  48. package/dist/tab/README.md +414 -0
  49. package/dist/tabbar/README.md +333 -0
  50. package/dist/tag/README.md +184 -0
  51. package/dist/toast/README.md +220 -0
  52. package/dist/transition/README.md +114 -0
  53. package/dist/tree-select/README.md +199 -0
  54. package/lib/action-sheet/README.md +631 -0
  55. package/lib/battery/README.md +102 -0
  56. package/lib/bottom-sheet/README.md +397 -0
  57. package/lib/button/README.md +205 -0
  58. package/lib/button/index.css +1 -1
  59. package/lib/button/index.wxss +1 -1
  60. package/lib/calendar/README.md +466 -0
  61. package/lib/cascader/README.md +235 -0
  62. package/lib/cell/README.md +240 -0
  63. package/lib/checkbox/README.md +359 -0
  64. package/lib/circle/README.md +116 -0
  65. package/lib/col/README.md +134 -0
  66. package/lib/collapse/README.md +223 -0
  67. package/lib/common/README.md +71 -0
  68. package/lib/config-provider/README.md +143 -0
  69. package/lib/count-down/README.md +194 -0
  70. package/lib/custom-keyboard/README.md +119 -0
  71. package/lib/datetime-picker/README.md +384 -0
  72. package/lib/dialog/README.md +412 -0
  73. package/lib/divider/README.md +100 -0
  74. package/lib/dropdown-menu/README.md +278 -0
  75. package/lib/empty/README.md +101 -0
  76. package/lib/field/README.md +439 -0
  77. package/lib/grid/README.md +197 -0
  78. package/lib/icon/README.md +143 -0
  79. package/lib/image/README.md +171 -0
  80. package/lib/index-bar/README.md +189 -0
  81. package/lib/loading/README.md +86 -0
  82. package/lib/nav-bar/README.md +378 -0
  83. package/lib/normal-slider/README.md +325 -0
  84. package/lib/notice-bar/README.md +216 -0
  85. package/lib/notify/README.md +120 -0
  86. package/lib/overlay/README.md +132 -0
  87. package/lib/picker/README.md +396 -0
  88. package/lib/popover/README.md +249 -0
  89. package/lib/popup/README.md +162 -0
  90. package/lib/progress/README.md +99 -0
  91. package/lib/radio/README.md +303 -0
  92. package/lib/rate/README.md +176 -0
  93. package/lib/search/README.md +235 -0
  94. package/lib/sidebar/README.md +160 -0
  95. package/lib/skeleton/README.md +98 -0
  96. package/lib/slider/README.md +366 -0
  97. package/lib/stepper/README.md +208 -0
  98. package/lib/sticky/README.md +124 -0
  99. package/lib/swipe-cell/README.md +172 -0
  100. package/lib/switch/README.md +204 -0
  101. package/lib/tab/README.md +414 -0
  102. package/lib/tabbar/README.md +333 -0
  103. package/lib/tag/README.md +184 -0
  104. package/lib/toast/README.md +220 -0
  105. package/lib/transition/README.md +114 -0
  106. package/lib/tree-select/README.md +199 -0
  107. package/package.json +1 -1
@@ -0,0 +1,414 @@
1
+ ---
2
+ category: 布局
3
+ ---
4
+
5
+ # Tab 标签页
6
+
7
+ ### 介绍
8
+
9
+ 选项卡组件,用于在不同的内容区域之间进行切换。
10
+
11
+ ### 引入
12
+
13
+ 在`app.json`或`index.json`中引入组件,详细介绍见[快速上手](/material/smartui?comId=help-getting-started&appType=miniapp)。
14
+
15
+ ```json
16
+ "usingComponents": {
17
+ "smart-tab": "@tuya-miniapp/smart-ui/lib/tab/index",
18
+ "smart-tabs": "@tuya-miniapp/smart-ui/lib/tabs/index"
19
+ }
20
+ ```
21
+
22
+ ## 代码演示
23
+
24
+ ### 基础用法
25
+
26
+ 通过`active`设定当前激活标签对应的索引值,默认情况下启用第一个标签。
27
+
28
+ ```html
29
+ <smart-tabs active="{{ active }}" bind:change="onChange">
30
+ <smart-tab title="标签 1">内容 1</smart-tab>
31
+ <smart-tab title="标签 2">内容 2</smart-tab>
32
+ <smart-tab title="标签 3">内容 3</smart-tab>
33
+ <smart-tab title="标签 4">内容 4</smart-tab>
34
+ </smart-tabs>
35
+ ```
36
+
37
+ ```js
38
+ Page({
39
+ data: {
40
+ active: 1,
41
+ },
42
+
43
+ onChange(event) {
44
+ ty.showToast({
45
+ title: `切换到标签 ${event.detail.name}`,
46
+ icon: 'none',
47
+ });
48
+ },
49
+ });
50
+ ```
51
+
52
+ ### 通过名称匹配
53
+
54
+ 在标签指定`name`属性的情况下,`active`的值为当前标签的`name`(此时无法通过索引值来匹配标签)。
55
+
56
+ ```html
57
+ <smart-tabs active="a">
58
+ <smart-tab title="标签 1" name="a">内容 1</smart-tab>
59
+ <smart-tab title="标签 2" name="b">内容 2</smart-tab>
60
+ <smart-tab title="标签 3" name="c">内容 3</smart-tab>
61
+ </smart-tabs>
62
+ ```
63
+
64
+ ### 样式风格
65
+
66
+ `Tab`支持两种样式风格:`line`和`card`,默认为`line`样式,可以通过`type`属性修改样式风格。
67
+
68
+ ```html
69
+ <smart-tabs type="card">
70
+ <smart-tab title="标签 1">内容 1</smart-tab>
71
+ <smart-tab title="标签 2">内容 2</smart-tab>
72
+ <smart-tab title="标签 3">内容 3</smart-tab>
73
+ </smart-tabs>
74
+ ```
75
+
76
+ ### 横向滚动
77
+
78
+ 多于 5 个标签时,Tab 可以横向滚动。
79
+
80
+ ```html
81
+ <smart-tabs active="{{ active }}">
82
+ <smart-tab title="标签 1">内容 1</smart-tab>
83
+ <smart-tab title="标签 2">内容 2</smart-tab>
84
+ <smart-tab title="标签 3">内容 3</smart-tab>
85
+ <smart-tab title="标签 4">内容 4</smart-tab>
86
+ <smart-tab title="标签 5">内容 5</smart-tab>
87
+ <smart-tab title="标签 6">内容 6</smart-tab>
88
+ </smart-tabs>
89
+ ```
90
+
91
+ ### 禁用标签
92
+
93
+ 设置`disabled`属性即可禁用标签。如果需要监听禁用标签的点击事件,可以在`smart-tabs`上监听`disabled`事件。
94
+
95
+ ```html
96
+ <smart-tabs bind:disabled="onClickDisabled">
97
+ <smart-tab title="标签 1">内容 1</smart-tab>
98
+ <smart-tab title="标签 2" disabled>内容 2</smart-tab>
99
+ <smart-tab title="标签 3">内容 3</smart-tab>
100
+ </smart-tabs>
101
+ ```
102
+
103
+ ```javascript
104
+ Page({
105
+ onClickDisabled(event) {
106
+ ty.showToast({
107
+ title: `标签 ${event.detail.name} 已被禁用`,
108
+ icon: 'none',
109
+ });
110
+ },
111
+ });
112
+ ```
113
+
114
+ ### 点击事件
115
+
116
+ 可以在`smart-tabs`上绑定`click`事件,在回调参数的`event.detail`中可以取得被点击标签的标题和标识符。
117
+
118
+ ```html
119
+ <smart-tabs bind:click="onClick">
120
+ <smart-tab title="标签 1">内容 1</smart-tab>
121
+ <smart-tab title="标签 2">内容 2</smart-tab>
122
+ </smart-tabs>
123
+ ```
124
+
125
+ ```javascript
126
+ Page({
127
+ onClick(event) {
128
+ ty.showToast({
129
+ title: `点击标签 ${event.detail.name}`,
130
+ icon: 'none',
131
+ });
132
+ },
133
+ });
134
+ ```
135
+
136
+ ### 粘性布局
137
+
138
+ 通过`sticky`属性可以开启粘性布局,粘性布局下,当 Tab 滚动到顶部时会自动吸顶。
139
+
140
+ ```html
141
+ <smart-tabs sticky>
142
+ <smart-tab title="标签 1">内容 1</smart-tab>
143
+ <smart-tab title="标签 2">内容 2</smart-tab>
144
+ <smart-tab title="标签 3">内容 3</smart-tab>
145
+ <smart-tab title="标签 4">内容 4</smart-tab>
146
+ </smart-tabs>
147
+ ```
148
+
149
+ ### 切换动画
150
+
151
+ 可以通过`animated`来设置是否启用切换 tab 时的动画。
152
+
153
+ ```html
154
+ <smart-tabs animated>
155
+ <smart-tab title="标签 1">内容 1</smart-tab>
156
+ <smart-tab title="标签 2">内容 2</smart-tab>
157
+ <smart-tab title="标签 3">内容 3</smart-tab>
158
+ <smart-tab title="标签 4">内容 4</smart-tab>
159
+ </smart-tabs>
160
+ ```
161
+
162
+ ### 滑动切换
163
+
164
+ 通过`swipeable`属性可以开启滑动切换标签页。
165
+
166
+ ```html
167
+ <smart-tabs swipeable>
168
+ <smart-tab title="标签 1">内容 1</smart-tab>
169
+ <smart-tab title="标签 2">内容 2</smart-tab>
170
+ <smart-tab title="标签 3">内容 3</smart-tab>
171
+ <smart-tab title="标签 4">内容 4</smart-tab>
172
+ </smart-tabs>
173
+ ```
174
+
175
+ ### 嵌套 popup
176
+
177
+ 如果将 smart-tabs 嵌套在 smart-popup 等会隐藏内容的组件或节点内,当 smart-tabs 显示时下划线将不会正常显示。
178
+
179
+ 此时可以通过使用 `ty:if` 手动控制 smart-tabs 的渲染来规避这种场景。
180
+
181
+ ```html
182
+ <smart-popup show="{{ show }}">
183
+ <smart-tabs ty:if="{{ show }}">
184
+ <smart-tab title="标签 1">内容 1</smart-tab>
185
+ <smart-tab title="标签 2">内容 2</smart-tab>
186
+ <smart-tab title="标签 3">内容 3</smart-tab>
187
+ <smart-tab title="标签 4">内容 4</smart-tab>
188
+ </smart-tabs>
189
+ </smart-popup>
190
+ ```
191
+
192
+ ### 异步切换
193
+
194
+ 通过 `before-change` 事件可以在切换标签前执行特定的逻辑,实现切换前校验、异步切换的目的
195
+
196
+ ```html
197
+ <smart-tabs
198
+ active="{{ active }}"
199
+ use-before-change="{{ true }}"
200
+ bind:change="onChange"
201
+ bind:before-change="onBeforeChange"
202
+ >
203
+ <smart-tab title="标签 1">内容 1</smart-tab>
204
+ <smart-tab title="标签 2">内容 2</smart-tab>
205
+ <smart-tab title="标签 3">内容 3</smart-tab>
206
+ <smart-tab title="标签 4">内容 4</smart-tab>
207
+ </smart-tabs>
208
+ ```
209
+
210
+ ```js
211
+ Page({
212
+ data: {
213
+ active: 1,
214
+ },
215
+
216
+ onChange(event) {
217
+ ty.showToast({
218
+ title: `切换到标签 ${event.detail.name}`,
219
+ icon: 'none',
220
+ });
221
+ },
222
+ onBeforeChange(event) {
223
+ const { callback, title } = event.detail;
224
+
225
+ ty.showModal({
226
+ title: '异步切换',
227
+ content: `确定要切换至 ${title} tab吗?`,
228
+ success: res => {
229
+ if (res.confirm) {
230
+ callback(true);
231
+ } else if (res.cancel) {
232
+ callback(false);
233
+ }
234
+ },
235
+ });
236
+ },
237
+ });
238
+ ```
239
+
240
+ ### 副标题
241
+
242
+ 通过 `subtitle` 可以设置二级标题
243
+
244
+ ```html
245
+ <smart-tabs
246
+ active="{{ 1 }}"
247
+ bind:change="onChange"
248
+ swipe-threshold="7"
249
+ title-active-color="#1989FA"
250
+ >
251
+ <smart-tab
252
+ wx:for="{{ tabsRenders }}"
253
+ wx:key="name"
254
+ title="{{ item.name }}"
255
+ subtitle="{{ item.content }}"
256
+ subtitle-style="color: black;"
257
+ dot="{{ index === 1 }}"
258
+ >
259
+ </smart-tab>
260
+ </smart-tabs>
261
+ ```
262
+
263
+ ```js
264
+ Page({
265
+ data: {
266
+ active: 1,
267
+ tabsRenders: [
268
+ { name: '周一', content: '12' },
269
+ { name: '周二', content: '13' },
270
+ { name: '周三', content: '14' },
271
+ { name: '周四', content: '15' },
272
+ { name: '周五', content: '16' },
273
+ { name: '周六', content: '17' },
274
+ { name: '周日', content: '18' },
275
+ ],
276
+ },
277
+
278
+ onChange(event) {
279
+ ty.showToast({
280
+ title: `切换到标签 ${event.detail.name}`,
281
+ icon: 'none',
282
+ });
283
+ },
284
+ });
285
+ ```
286
+
287
+ ## API
288
+
289
+ ### Tabs Props
290
+
291
+ | 参数 | 说明 | 类型 | 默认值 |
292
+ | ---------------------------- | -------------------------------------------------------------- | ------------------ | --------- |
293
+ | active | 当前选中标签的标识符 | _string_ | `0` |
294
+ | animated | 是否开启切换标签内容时的转场动画 | _boolean_ | `false` |
295
+ | border | 是否展示外边框,仅在 `line` 风格下生效 | _boolean_ | `false` |
296
+ | color | 标签主题色,仅在非`card`模式可用 | _string_ | `#ee0a24` |
297
+ | duration | 动画时间,单位秒 | _number_ | `0.3` |
298
+ | ellipsis | 是否省略过长的标题文字 | _boolean_ | `true` |
299
+ | lazy-render | 是否开启标签页内容延迟渲染(不销毁组件) | _boolean_ | `true` |
300
+ | inactive-destroy `v2.1.0` | 标签未被选择时是否销毁 tab 插槽内容 | _boolean_ | `false` |
301
+ | line-height | 底部条高度,默认单位`px` | _string \| number_ | `3px` |
302
+ | line-width | 底部条宽度,默认单位`px` | _string \| number_ | `40px` |
303
+ | offset-top | 粘性定位布局下与顶部的最小距离,单位`px` | _number_ | - |
304
+ | sticky | 是否使用粘性定位布局 | _boolean_ | `false` |
305
+ | swipe-threshold | 滚动阈值,标签数量超过阈值且总宽度超过标签栏宽度时开始横向滚动 | _number_ | `5` |
306
+ | swipeable | 是否开启手势滑动切换 | _boolean_ | `false` |
307
+ | title-active-color | 标题选中态颜色 | _string_ | - |
308
+ | title-inactive-color | 标题默认态颜色 | _string_ | - |
309
+ | type | 样式风格,可选值为`card` | _string_ | `line` |
310
+ | use-before-change `v1.10.10` | 是否开启切换前校验 | _boolean_ | `false` |
311
+ | z-index | z-index 层级 | _number_ | `1` |
312
+
313
+ ### Tab Props
314
+
315
+ | 参数 | 说明 | 类型 | 默认值 |
316
+ | ----------------------- | -------------------------- | ------------------ | ------- |
317
+ | disabled | 是否禁用标签 | _boolean_ | `false` |
318
+ | dot | 是否显示小红点 | _boolean_ | - |
319
+ | info | 图标右上角提示信息 | _string \| number_ | - |
320
+ | name | 标签名称,作为匹配的标识符 | _string_ | - |
321
+ | title | 标题 | _string_ | - |
322
+ | title-style | 自定义标题样式 | _string_ | - |
323
+ | subtitle `v2.3.5` | 二级标题 | _string_ | - |
324
+ | subtitle-style `v2.3.5` | 自定义二级标题样式 | _string_ | - |
325
+
326
+ ### Tabs Slot
327
+
328
+ | 名称 | 说明 |
329
+ | --------- | ------------ |
330
+ | nav-left | 标题左侧内容 |
331
+ | nav-right | 标题右侧内容 |
332
+
333
+ ### Tab Slot
334
+
335
+ | 名称 | 说明 |
336
+ | ---- | ---------- |
337
+ | - | 标签页内容 |
338
+
339
+ ### Tabs Event
340
+
341
+ | 事件名 | 说明 | 参数 |
342
+ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
343
+ | bind:before-change `v1.10.10` | tab 切换前会触发,在回调函数中返回 `false` 可终止 tab 切换,绑定事件的同时需要将`use-before-change`属性设置为`true` | `event.detail.name`: 当前切换的 tab 标识符, `event.detail.title`: 当前切换的 tab 标题, `event.detail.index`: 当前切换的 tab 下标,`event.detail.callback`: 回调函数,调用`callback(false)`终止 tab 切换 |
344
+ | bind:change | 当前激活的标签改变时触发 | name:标签标识符,title:标题 |
345
+ | bind:click | 点击标签时触发 | name:标签标识符,title:标题 |
346
+ | bind:disabled | 点击被禁用的标签时触发 | name:标签标识符,title:标题 |
347
+ | bind:scroll | 滚动时触发 | { scrollTop: 距离顶部位置, isFixed: 是否吸顶 } |
348
+
349
+ ### 外部样式类
350
+
351
+ | 类名 | 说明 |
352
+ | ---------------- | ------------------ |
353
+ | custom-class | 根节点样式类 |
354
+ | nav-class | 标签栏样式类 |
355
+ | tab-active-class | 标签激活态样式类 |
356
+ | tab-class | 标签样式类 |
357
+ | wrap-class | 标签栏根节点样式类 |
358
+
359
+ ### 样式变量
360
+
361
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/material/smartui?comId=config-provider&appType=miniapp)。
362
+
363
+ | 名称 | 默认值 | 描述 |
364
+ | ----------------------------------------- | --------------------------------------- | ----------------------- |
365
+ | --tabs-background-color | _var(--app-B3, #fff)_ | 背景色 |
366
+ | --tabs-default-color | _var(--app-M4)_ | 默认文字颜色 |
367
+ | --tabs-line-height | _32px_ | 默认文字字高 |
368
+ | --tabs-sub-line-height `v2.3.5` | _64px_ | 默认二级文字字高 |
369
+ | --tabs-bottom-bar-height | _3px_ | 底部滑块高度 |
370
+ | --tabs-bottom-bar-color | _var(--tabs-default-color)_ | 底部滑块背景色 |
371
+ | --tabs-card-text-color | _var(--app-B6-N3)_ | card 模式文字颜色 |
372
+ | --tabs-card-text-active-color | _var(--app-B6-N1)_ | card 模式选中的文字颜色 |
373
+ | --tabs-card-height | _32px_ | card 模式滑块高度 |
374
+ | --tabs-card-border-radius | _8px_ | card 模式 radius |
375
+ | --tabs-card-active-border-radius `v2.0.0` | _6px_ | card 模式滑块 radius |
376
+ | --tabs-card-active-background-color | _var(--app-B3, #fff)_ | card 模式滑块背景色 |
377
+ | --tabs-card-active-top `v2.0.0` | _0_ | card 模式滑块 top 定位 |
378
+ | --tabs-card-active-left `v2.0.0` | _0_ | card 模式滑块 left 定位 |
379
+ | --tabs-card-padding `v2.0.0` | _2px_ | card 模式 padding |
380
+ | --tab-panel-background-color `v2.0.0` | _var(--app-B3)_ | panel 背景色 |
381
+ | --tab-panel-text-color `v2.0.0` | _var(--app-B3-N1)_ | panel 文字颜色 |
382
+ | --tabs-card-background-color `v2.1.0` | _var(--app-B6-N9, rgba(0, 0, 0, 0.05))_ | 卡片模式背景颜色 |
383
+
384
+ ### 方法
385
+
386
+ 通过 [selectComponent](/material/smartui?comId=faq&appType=miniapp) 可以获取到 Tabs 实例并调用实例方法。
387
+
388
+ | 方法名 | 参数 | 返回值 | 介绍 |
389
+ | ------ | ---- | ------ | ---------------------------------------------------------- |
390
+ | resize | - | - | 外层元素大小或组件显示状态变化时,可以调用此方法来触发重绘 |
391
+
392
+ ## 常见问题
393
+
394
+ ### 组件从隐藏状态切换到显示状态时,底部条位置错误?
395
+
396
+ Tabs 组件在挂载时,会获取自身的宽度,并计算出底部条的位置。如果组件一开始处于隐藏状态,则获取到的宽度永远为 0,因此无法展示底部条位置。
397
+
398
+ #### 解决方法
399
+
400
+ 方法一,使用 `ty:if` 来控制组件展示,使组件重新初始化。
401
+
402
+ ```html
403
+ <smart-tabs ty:if="show" />
404
+ ```
405
+
406
+ 方法二,调用组件的 resize 方法来主动触发重绘。
407
+
408
+ ```html
409
+ <smart-tabs id="tabs" />
410
+ ```
411
+
412
+ ```js
413
+ this.selectComponent('#tabs').resize();
414
+ ```