@tdesign/uniapp 0.7.3 → 0.8.0

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 (197) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +1 -1
  3. package/dist/action-sheet/README.md +1 -1
  4. package/dist/action-sheet/action-sheet.vue +158 -150
  5. package/dist/action-sheet/props.ts +2 -2
  6. package/dist/action-sheet/type.ts +1 -1
  7. package/dist/avatar/avatar.vue +89 -87
  8. package/dist/avatar-group/avatar-group.vue +69 -67
  9. package/dist/back-top/back-top.vue +60 -58
  10. package/dist/badge/badge.vue +69 -59
  11. package/dist/button/button.vue +121 -116
  12. package/dist/button/props.ts +2 -2
  13. package/dist/button/type.ts +1 -1
  14. package/dist/calendar/calendar-header.vue +4 -4
  15. package/dist/calendar/calendar.vue +308 -297
  16. package/dist/calendar/template.vue +1 -1
  17. package/dist/cascader/README.en-US.md +2 -1
  18. package/dist/cascader/README.md +2 -1
  19. package/dist/cascader/cascader.vue +340 -328
  20. package/dist/cascader/props.ts +6 -1
  21. package/dist/cascader/type.ts +6 -0
  22. package/dist/cell/cell.vue +127 -121
  23. package/dist/cell-group/cell-group.vue +32 -30
  24. package/dist/check-tag/check-tag.vue +73 -71
  25. package/dist/checkbox/checkbox.vue +127 -127
  26. package/dist/checkbox/props.ts +6 -6
  27. package/dist/checkbox/type.ts +3 -3
  28. package/dist/checkbox-group/checkbox-group.vue +175 -173
  29. package/dist/checkbox-group/props.ts +6 -6
  30. package/dist/checkbox-group/type.ts +4 -4
  31. package/dist/col/col.vue +26 -24
  32. package/dist/collapse/collapse.vue +83 -81
  33. package/dist/collapse-panel/collapse-panel.vue +121 -119
  34. package/dist/collapse-panel/props.ts +4 -4
  35. package/dist/collapse-panel/type.ts +2 -2
  36. package/dist/color-picker/README.md +1 -1
  37. package/dist/color-picker/color-picker.vue +324 -322
  38. package/dist/color-picker/props.ts +2 -2
  39. package/dist/color-picker/template.vue +14 -10
  40. package/dist/common/common.ts +1 -0
  41. package/dist/common/style/theme/index.css +5 -5
  42. package/dist/common/utils.js +7 -2
  43. package/dist/common/validator.js +172 -0
  44. package/dist/config-provider/README.en-US.md +184 -0
  45. package/dist/config-provider/README.md +234 -0
  46. package/dist/config-provider/config-provider.vue +105 -0
  47. package/dist/config-provider/config-store.js +70 -0
  48. package/dist/config-provider/props.ts +16 -0
  49. package/dist/config-provider/reactive-state.js +39 -0
  50. package/dist/config-provider/type.ts +401 -0
  51. package/dist/config-provider/use-config.js +29 -0
  52. package/dist/config-provider/utils.js +29 -0
  53. package/dist/count-down/count-down.vue +98 -97
  54. package/dist/date-time-picker/date-time-picker.vue +410 -395
  55. package/dist/demo/demo.vue +1 -0
  56. package/dist/dialog/dialog.vue +175 -173
  57. package/dist/divider/divider.vue +38 -36
  58. package/dist/draggable/draggable.vue +60 -58
  59. package/dist/drawer/README.md +1 -1
  60. package/dist/drawer/drawer.vue +48 -46
  61. package/dist/dropdown-item/dropdown-item.vue +209 -207
  62. package/dist/dropdown-item/props.ts +4 -4
  63. package/dist/dropdown-item/type.ts +3 -3
  64. package/dist/dropdown-menu/dropdown-menu.vue +93 -99
  65. package/dist/empty/empty.vue +43 -42
  66. package/dist/fab/fab.vue +88 -86
  67. package/dist/footer/footer.vue +36 -34
  68. package/dist/form/README.en-US.md +17 -24
  69. package/dist/form/README.md +18 -25
  70. package/dist/form/form.css +1 -166
  71. package/dist/form/form.vue +251 -236
  72. package/dist/form/props.ts +2 -21
  73. package/dist/form/type.ts +7 -70
  74. package/dist/form-item/README.en-US.md +4 -5
  75. package/dist/form-item/README.md +4 -5
  76. package/dist/form-item/form-item.css +69 -96
  77. package/dist/form-item/form-item.vue +315 -336
  78. package/dist/form-item/form-model.ts +125 -173
  79. package/dist/form-item/props.ts +4 -17
  80. package/dist/form-item/type.ts +43 -1
  81. package/dist/grid/grid.vue +53 -51
  82. package/dist/grid-item/grid-item.vue +121 -119
  83. package/dist/guide/README.md +1 -1
  84. package/dist/guide/guide.vue +281 -277
  85. package/dist/icon/README.md +2 -4
  86. package/dist/icon/icon.vue +78 -76
  87. package/dist/image/README.md +1 -1
  88. package/dist/image/image.vue +103 -101
  89. package/dist/image-viewer/image-viewer.vue +160 -158
  90. package/dist/image-viewer/props.ts +2 -2
  91. package/dist/image-viewer/type.ts +1 -1
  92. package/dist/index.js +3 -0
  93. package/dist/indexes/indexes.vue +264 -267
  94. package/dist/indexes-anchor/indexes-anchor.vue +41 -41
  95. package/dist/input/input.vue +192 -192
  96. package/dist/input/props.ts +6 -6
  97. package/dist/input/type.ts +3 -3
  98. package/dist/link/link.vue +73 -71
  99. package/dist/loading/loading.vue +59 -59
  100. package/dist/locale/ar_KW.ts +157 -0
  101. package/dist/locale/en_US.ts +146 -0
  102. package/dist/locale/it_IT.ts +145 -0
  103. package/dist/locale/ja_JP.ts +132 -0
  104. package/dist/locale/ko_KR.ts +132 -0
  105. package/dist/locale/ru_RU.ts +157 -0
  106. package/dist/locale/zh_CN.ts +133 -0
  107. package/dist/locale/zh_TW.ts +132 -0
  108. package/dist/message/message.vue +181 -173
  109. package/dist/message/props.ts +2 -2
  110. package/dist/message/type.ts +1 -1
  111. package/dist/message-item/message-item.vue +192 -184
  112. package/dist/mixins/using-config.js +39 -0
  113. package/dist/navbar/navbar.vue +201 -199
  114. package/dist/notice-bar/notice-bar.vue +175 -171
  115. package/dist/notice-bar/props.ts +2 -2
  116. package/dist/notice-bar/type.ts +1 -1
  117. package/dist/npm/dayjs/esm/locale/ar.js +81 -0
  118. package/dist/npm/dayjs/esm/locale/it.js +39 -0
  119. package/dist/overlay/overlay.vue +50 -48
  120. package/dist/picker/picker.vue +168 -161
  121. package/dist/picker-item/picker-item.vue +269 -269
  122. package/dist/popover/README.md +1 -1
  123. package/dist/popover/popover.vue +262 -261
  124. package/dist/popover/props.ts +4 -4
  125. package/dist/popover/type.ts +2 -2
  126. package/dist/popup/popup.vue +46 -45
  127. package/dist/progress/README.md +1 -1
  128. package/dist/progress/progress.vue +76 -76
  129. package/dist/pull-down-refresh/props.ts +2 -2
  130. package/dist/pull-down-refresh/pull-down-refresh.vue +240 -234
  131. package/dist/pull-down-refresh/type.ts +1 -1
  132. package/dist/qrcode/README.md +1 -1
  133. package/dist/qrcode/components/qrcode-canvas/qrcode-canvas.vue +340 -338
  134. package/dist/qrcode/components/qrcode-status/qrcode-status.vue +6 -6
  135. package/dist/qrcode/qrcode.vue +93 -87
  136. package/dist/radio/props.ts +6 -6
  137. package/dist/radio/radio.vue +118 -120
  138. package/dist/radio/type.ts +3 -3
  139. package/dist/radio-group/props.ts +4 -4
  140. package/dist/radio-group/radio-group.vue +136 -134
  141. package/dist/radio-group/type.ts +4 -4
  142. package/dist/rate/computed.js +2 -2
  143. package/dist/rate/props.ts +4 -4
  144. package/dist/rate/rate.vue +155 -154
  145. package/dist/rate/type.ts +2 -2
  146. package/dist/result/result.vue +41 -39
  147. package/dist/row/row.vue +38 -36
  148. package/dist/scroll-view/scroll-view.vue +24 -22
  149. package/dist/search/props.ts +2 -2
  150. package/dist/search/search.vue +127 -125
  151. package/dist/search/type.ts +1 -1
  152. package/dist/side-bar/side-bar.vue +57 -55
  153. package/dist/side-bar-item/side-bar-item.vue +86 -86
  154. package/dist/skeleton/skeleton.vue +126 -124
  155. package/dist/slider/README.md +1 -1
  156. package/dist/slider/props.ts +2 -2
  157. package/dist/slider/slider.vue +457 -457
  158. package/dist/slider/type.ts +1 -1
  159. package/dist/step-item/step-item.vue +77 -75
  160. package/dist/stepper/props.ts +2 -2
  161. package/dist/stepper/stepper.vue +168 -149
  162. package/dist/stepper/type.ts +1 -1
  163. package/dist/steps/props.ts +2 -2
  164. package/dist/steps/steps.vue +83 -81
  165. package/dist/steps/type.ts +1 -1
  166. package/dist/sticky/sticky.vue +104 -102
  167. package/dist/swipe-cell/swipe-cell.vue +91 -89
  168. package/dist/swiper/README.md +1 -1
  169. package/dist/swiper/swiper.vue +91 -89
  170. package/dist/swiper-nav/swiper-nav.vue +38 -36
  171. package/dist/switch/props.ts +2 -2
  172. package/dist/switch/switch.vue +62 -62
  173. package/dist/switch/type.ts +1 -1
  174. package/dist/tab-bar/tab-bar.vue +88 -86
  175. package/dist/tab-bar-item/tab-bar-item.vue +85 -82
  176. package/dist/tab-panel/tab-panel.vue +66 -64
  177. package/dist/tabs/tabs.vue +294 -287
  178. package/dist/tag/tag.vue +79 -77
  179. package/dist/textarea/props.ts +6 -6
  180. package/dist/textarea/textarea.vue +127 -126
  181. package/dist/textarea/type.ts +3 -3
  182. package/dist/toast/toast.vue +107 -106
  183. package/dist/transition/transition.vue +30 -28
  184. package/dist/tree-select/tree-select.vue +151 -151
  185. package/dist/types/config-provider.d.ts +7 -0
  186. package/dist/types/index.d.ts +2 -0
  187. package/dist/types/popover.d.ts +7 -0
  188. package/dist/upload/README.en-US.md +13 -14
  189. package/dist/upload/README.md +11 -12
  190. package/dist/upload/props.ts +2 -4
  191. package/dist/upload/type.ts +12 -11
  192. package/dist/upload/upload.css +1 -1
  193. package/dist/upload/upload.vue +672 -512
  194. package/dist/watermark/watermark.vue +151 -149
  195. package/global.d.ts +2 -0
  196. package/package.json +15 -3
  197. package/dist/form/form-item-props.ts +0 -56
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <view
3
- :style="tools._style([customStyle])"
3
+ :style="'' + tools._style([customStyle])"
4
4
  :class="classPrefix + ' ' + tClass"
5
5
  aria-role="radiogroup"
6
6
  >
@@ -29,7 +29,7 @@
29
29
  :name="item.name || ''"
30
30
  :borderless="borderless"
31
31
  :relation-key="relationKey"
32
- @change="handleRadioChange($event, { index, value: item.value, allowUncheck: item.allowUncheck || allowUncheck })"
32
+ @change="(e) => handleRadioChange(e, { index, value: item.value, allowUncheck: item.allowUncheck || allowUncheck })"
33
33
  />
34
34
  </view>
35
35
  </template>
@@ -46,160 +46,162 @@ import { ParentMixin, RELATION_MAP } from '../common/relation';
46
46
  const name = `${prefix}-radio-group`;
47
47
 
48
48
 
49
- export default uniComponent({
50
- name,
51
- options: {
52
- styleIsolation: 'shared',
53
- },
54
- controlledProps: [
55
- {
56
- key: 'value',
57
- event: 'change',
58
- },
59
- ],
60
- externalClasses: [
61
- `${prefix}-class`,
62
- ],
63
- inject: {
64
- [RELATION_MAP.FormKey]: {
65
- default: null,
66
- },
67
- },
68
- mixins: [ParentMixin(RELATION_MAP.Radio)],
49
+ export default {
69
50
  components: {
70
51
  TRadio,
71
52
  },
72
- props: {
73
- ...props,
74
- },
75
- data() {
76
- return {
77
- prefix,
78
- classPrefix: name,
79
- radioOptions: [],
80
- tools,
81
-
82
- dataValue: coalesce(this.value, this.defaultValue),
83
- };
84
- },
85
- watch: {
86
- value: {
87
- handler(v) {
88
- this.dataValue = v;
89
- },
90
- immediate: true,
91
- deep: true,
53
+ ...uniComponent({
54
+ name,
55
+ options: {
56
+ styleIsolation: 'shared',
92
57
  },
93
- dataValue: {
94
- handler(v) {
95
- this.getChildren()?.forEach((item) => {
96
- item.dataChecked = v === item.value;
97
- });
58
+ controlledProps: [
59
+ {
60
+ key: 'value',
61
+ event: 'change',
98
62
  },
99
- immediate: true,
100
- deep: true,
101
- },
102
- options: {
103
- handler() {
104
- this.initWithOptions();
63
+ ],
64
+ externalClasses: [
65
+ `${prefix}-class`,
66
+ ],
67
+ inject: {
68
+ [RELATION_MAP.FormKey]: {
69
+ default: null,
105
70
  },
106
- immediate: true,
107
- deep: true,
108
71
  },
109
- disabled: {
110
- handler(v) {
111
- if (this.options?.length) {
72
+ mixins: [ParentMixin(RELATION_MAP.Radio)],
73
+ props: {
74
+ ...props,
75
+ },
76
+ data() {
77
+ return {
78
+ prefix,
79
+ classPrefix: name,
80
+ radioOptions: [],
81
+ tools,
82
+
83
+ dataValue: coalesce(this.value, this.defaultValue),
84
+ };
85
+ },
86
+ watch: {
87
+ value: {
88
+ handler(v) {
89
+ this.dataValue = v;
90
+ },
91
+ immediate: true,
92
+ deep: true,
93
+ },
94
+ dataValue: {
95
+ handler(v) {
96
+ this.getChildren()?.forEach((item) => {
97
+ item.dataChecked = v === item.value;
98
+ });
99
+ },
100
+ immediate: true,
101
+ deep: true,
102
+ },
103
+ options: {
104
+ handler() {
112
105
  this.initWithOptions();
113
- return;
114
- }
106
+ },
107
+ immediate: true,
108
+ deep: true,
109
+ },
110
+ disabled: {
111
+ handler(v) {
112
+ if (this.options?.length) {
113
+ this.initWithOptions();
114
+ return;
115
+ }
116
+ this.getChildren()?.forEach((item) => {
117
+ item.setDisabled(v);
118
+ });
119
+ },
120
+ immediate: true,
121
+ },
122
+ },
123
+ mounted() {
124
+ setTimeout(() => {
115
125
  this.getChildren()?.forEach((item) => {
116
- item.setDisabled(v);
126
+ item.dataChecked = this.dataValue === item.value;
127
+ item.setDisabled(this.disabled);
117
128
  });
118
- },
119
- immediate: true,
129
+ }, 33);
120
130
  },
121
- },
122
- mounted() {
123
- setTimeout(() => {
124
- this.getChildren()?.forEach((item) => {
125
- item.dataChecked = this.dataValue === item.value;
126
- item.setDisabled(this.disabled);
127
- });
128
- }, 33);
129
- },
130
- methods: {
131
- innerAfterLinked(target) {
132
- const { value, disabled, readonly } = this;
133
- target.dataChecked = value === target.value;
131
+ methods: {
132
+ innerAfterLinked(target) {
133
+ const { value, disabled, readonly } = this;
134
+ target.dataChecked = value === target.value;
134
135
 
135
- target.setDisabled(disabled);
136
- target.setReadonly(readonly);
137
- },
138
- getChildren() {
139
- let items = this.children;
136
+ target.setDisabled(disabled);
137
+ target.setReadonly(readonly);
138
+ },
139
+ getChildren() {
140
+ let items = this.children;
140
141
 
141
- if (!items?.length) {
142
- items = this.$refs[`.${prefix}-radio-option`];
143
- }
142
+ if (!items?.length) {
143
+ items = this.$refs[`.${prefix}-radio-option`];
144
+ }
144
145
 
145
- return items;
146
- },
146
+ return items;
147
+ },
147
148
 
148
- updateValue(value) {
149
- this._trigger('change', { value });
149
+ updateValue(value) {
150
+ this._trigger('change', { value });
150
151
 
151
- this.onChange(value);
152
- },
152
+ this.onChange(value);
153
+ },
153
154
 
154
- handleRadioChange(tools, { value, index, allowUncheck, checked }) {
155
- this._trigger('change', checked === false && allowUncheck ? { value: null, index } : { value, index });
156
- },
155
+ handleRadioChange(tools, { value, index, allowUncheck, checked }) {
156
+ this._trigger('change', checked === false && allowUncheck ? { value: null, index } : { value, index });
157
+ },
157
158
 
158
- onChange(value) {
159
- if (this[RELATION_MAP.FormKey]
159
+ onChange(value) {
160
+ if (this[RELATION_MAP.FormKey]
160
161
  && this[RELATION_MAP.FormKey].onValueChange) {
161
- this[RELATION_MAP.FormKey].onValueChange(value);
162
- }
163
- },
162
+ this[RELATION_MAP.FormKey].onValueChange(value);
163
+ }
164
+ },
164
165
 
165
- // 支持自定义options
166
- initWithOptions() {
167
- const { options, value, keys, disabled, readonly } = this;
168
- // 数字数组|字符串数组|对像数组
169
- if (!options?.length || !Array.isArray(options)) {
170
- this.radioOptions = [];
171
- return;
172
- }
173
- const optionsValue = [];
174
- try {
175
- options.forEach((element) => {
176
- const typeName = typeof element;
177
- if (typeName === 'number' || typeName === 'string') {
178
- optionsValue.push({
179
- label: `${element}`,
180
- value: element,
181
- checked: value === element,
182
- disabled,
183
- readonly,
184
- });
185
- } else if (typeName === 'object') {
186
- optionsValue.push({
187
- ...element,
188
- label: element[coalesce(keys?.label, 'label')],
189
- value: element[coalesce(keys?.value, 'value')],
190
- checked: value === element[coalesce(keys?.value, 'value')],
191
- disabled: element.disabled || disabled,
192
- readonly: element.readonly || readonly,
193
- });
194
- }
195
- });
196
- this.radioOptions = optionsValue;
197
- } catch (error) {
166
+ // 支持自定义options
167
+ initWithOptions() {
168
+ const { options, value, keys, disabled, readonly } = this;
169
+ // 数字数组|字符串数组|对像数组
170
+ if (!options?.length || !Array.isArray(options)) {
171
+ this.radioOptions = [];
172
+ return;
173
+ }
174
+ const optionsValue = [];
175
+ try {
176
+ options.forEach((element) => {
177
+ const typeName = typeof element;
178
+ if (typeName === 'number' || typeName === 'string') {
179
+ optionsValue.push({
180
+ label: `${element}`,
181
+ value: element,
182
+ checked: value === element,
183
+ disabled,
184
+ readonly,
185
+ });
186
+ } else if (typeName === 'object') {
187
+ optionsValue.push({
188
+ ...element,
189
+ label: element[coalesce(keys?.label, 'label')],
190
+ value: element[coalesce(keys?.value, 'value')],
191
+ checked: value === element[coalesce(keys?.value, 'value')],
192
+ disabled: element.disabled || disabled,
193
+ readonly: element.readonly || readonly,
194
+ });
195
+ }
196
+ });
197
+ this.radioOptions = optionsValue;
198
+ } catch (error) {
198
199
 
199
- }
200
+ }
201
+ },
200
202
  },
201
- },
202
- });
203
+ }),
204
+ };
203
205
  </script>
204
206
  <style scoped>
205
207
  </style>
@@ -21,7 +21,7 @@ export interface TdRadioGroupProps<T = RadioValue> {
21
21
  /**
22
22
  * 是否禁用全部子单选框
23
23
  */
24
- disabled?: boolean;
24
+ disabled?: boolean | null;
25
25
  /**
26
26
  * 自定义选中图标和非选中图标。示例:[选中态图标,非选中态图标]。使用 String 时,值为 circle 表示填充型图标、值为 line 表示描边型图标、值为 dot 表示圆点图标;仅在使用 options 时生效
27
27
  * @default 'circle'
@@ -48,7 +48,7 @@ export interface TdRadioGroupProps<T = RadioValue> {
48
48
  /**
49
49
  * 只读状态
50
50
  */
51
- readonly?: boolean;
51
+ readonly?: boolean | null;
52
52
  /**
53
53
  * -1 时代表独立,不再寻找 parent,用于头条小程序
54
54
  * @default ''
@@ -73,7 +73,7 @@ export type RadioOption = string | number | RadioOptionObj;
73
73
  export interface RadioOptionObj {
74
74
  label?: string;
75
75
  value?: string | number;
76
- readonly?: boolean;
77
- disabled?: boolean;
76
+ readonly?: boolean | null;
77
+ disabled?: boolean | null;
78
78
  allowUncheck?: boolean;
79
79
  }
@@ -1,7 +1,7 @@
1
1
  export default {
2
- getText(texts, val, defaultTexts) {
2
+ getText(texts, val, globalConfig) {
3
3
  if (!texts.length) {
4
- texts = defaultTexts;
4
+ texts = globalConfig.texts || [];
5
5
  }
6
6
  const curVal = Math.floor(val - 1);
7
7
  return texts[curVal] || '未评分';
@@ -20,8 +20,8 @@ export default {
20
20
  },
21
21
  /** 是否禁用评分 */
22
22
  disabled: {
23
- type: Boolean,
24
- default: undefined,
23
+ type: [Boolean, null],
24
+ default: null as TdRateProps['disabled'],
25
25
  },
26
26
  /** 评分图标的间距 */
27
27
  gap: {
@@ -34,8 +34,8 @@ export default {
34
34
  },
35
35
  /** 定义图标前缀 */
36
36
  iconPrefix: {
37
- type: String,
38
- default: undefined,
37
+ type: [String, null],
38
+ default: null as TdRateProps['iconPrefix'],
39
39
  },
40
40
  /** 选择评分弹框的位置,值为空字符表示不显示评分弹框 */
41
41
  placement: {