@tdesign/uniapp 0.7.3 → 0.8.1

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 (258) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +44 -35
  3. package/dist/action-sheet/README.md +9 -4
  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/README.md +3 -1
  8. package/dist/avatar/avatar.vue +89 -87
  9. package/dist/avatar-group/avatar-group.vue +69 -67
  10. package/dist/back-top/README.md +3 -1
  11. package/dist/back-top/back-top.vue +60 -58
  12. package/dist/badge/README.md +3 -1
  13. package/dist/badge/badge.vue +69 -59
  14. package/dist/button/README.md +3 -1
  15. package/dist/button/button.vue +121 -116
  16. package/dist/button/props.ts +2 -2
  17. package/dist/button/type.ts +1 -1
  18. package/dist/calendar/README.md +3 -1
  19. package/dist/calendar/calendar-header.vue +4 -4
  20. package/dist/calendar/calendar.vue +308 -297
  21. package/dist/calendar/template.vue +1 -1
  22. package/dist/cascader/README.en-US.md +2 -1
  23. package/dist/cascader/README.md +5 -2
  24. package/dist/cascader/cascader.vue +340 -328
  25. package/dist/cascader/props.ts +6 -1
  26. package/dist/cascader/type.ts +6 -0
  27. package/dist/cell/README.md +3 -1
  28. package/dist/cell/cell.vue +127 -121
  29. package/dist/cell-group/cell-group.vue +32 -30
  30. package/dist/check-tag/check-tag.vue +73 -71
  31. package/dist/checkbox/README.md +3 -1
  32. package/dist/checkbox/checkbox.vue +127 -127
  33. package/dist/checkbox/props.ts +6 -6
  34. package/dist/checkbox/type.ts +3 -3
  35. package/dist/checkbox-group/checkbox-group.vue +175 -173
  36. package/dist/checkbox-group/props.ts +6 -6
  37. package/dist/checkbox-group/type.ts +4 -4
  38. package/dist/col/README.md +3 -1
  39. package/dist/col/col.vue +26 -24
  40. package/dist/collapse/README.md +3 -1
  41. package/dist/collapse/collapse.vue +83 -81
  42. package/dist/collapse-panel/collapse-panel.vue +121 -119
  43. package/dist/collapse-panel/props.ts +4 -4
  44. package/dist/collapse-panel/type.ts +2 -2
  45. package/dist/color-picker/README.md +4 -2
  46. package/dist/color-picker/color-picker.vue +324 -322
  47. package/dist/color-picker/props.ts +2 -2
  48. package/dist/color-picker/template.vue +14 -10
  49. package/dist/common/common.ts +122 -5
  50. package/dist/common/src/index.js +0 -1
  51. package/dist/common/style/theme/index.css +5 -5
  52. package/dist/common/utils.js +7 -2
  53. package/dist/common/validator.ts +496 -0
  54. package/dist/config-provider/README.en-US.md +184 -0
  55. package/dist/config-provider/README.md +236 -0
  56. package/dist/config-provider/config-provider.vue +105 -0
  57. package/dist/config-provider/config-store.js +70 -0
  58. package/dist/config-provider/props.ts +16 -0
  59. package/dist/config-provider/reactive-state.js +39 -0
  60. package/dist/config-provider/type.ts +401 -0
  61. package/dist/config-provider/use-config.js +29 -0
  62. package/dist/config-provider/utils.js +29 -0
  63. package/dist/count-down/README.md +3 -1
  64. package/dist/count-down/count-down.vue +98 -97
  65. package/dist/date-time-picker/README.md +3 -1
  66. package/dist/date-time-picker/date-time-picker.vue +410 -395
  67. package/dist/demo/demo.vue +1 -0
  68. package/dist/dialog/README.md +3 -1
  69. package/dist/dialog/dialog.vue +175 -173
  70. package/dist/divider/README.md +3 -1
  71. package/dist/divider/divider.vue +38 -36
  72. package/dist/draggable/draggable.vue +60 -58
  73. package/dist/drawer/README.md +4 -2
  74. package/dist/drawer/drawer.vue +48 -46
  75. package/dist/dropdown-item/dropdown-item.vue +209 -207
  76. package/dist/dropdown-item/props.ts +4 -4
  77. package/dist/dropdown-item/type.ts +3 -3
  78. package/dist/dropdown-menu/README.md +2 -2
  79. package/dist/dropdown-menu/dropdown-menu.vue +93 -99
  80. package/dist/empty/README.md +3 -1
  81. package/dist/empty/empty.vue +43 -42
  82. package/dist/fab/README.md +3 -1
  83. package/dist/fab/fab.vue +88 -86
  84. package/dist/footer/README.md +3 -1
  85. package/dist/footer/footer.vue +36 -34
  86. package/dist/form/README.en-US.md +17 -24
  87. package/dist/form/README.md +21 -26
  88. package/dist/form/form.css +1 -166
  89. package/dist/form/form.vue +251 -236
  90. package/dist/form/props.ts +2 -21
  91. package/dist/form/type.ts +6 -69
  92. package/dist/form-item/README.en-US.md +4 -5
  93. package/dist/form-item/README.md +4 -5
  94. package/dist/form-item/form-item.css +72 -95
  95. package/dist/form-item/form-item.vue +315 -337
  96. package/dist/form-item/form-model.ts +125 -173
  97. package/dist/form-item/props.ts +4 -17
  98. package/dist/form-item/type.ts +43 -1
  99. package/dist/grid/README.md +3 -1
  100. package/dist/grid/grid.vue +53 -51
  101. package/dist/grid-item/grid-item.vue +121 -119
  102. package/dist/guide/README.md +4 -2
  103. package/dist/guide/guide.vue +281 -277
  104. package/dist/icon/README.md +12 -11
  105. package/dist/icon/icon.css +1633 -1624
  106. package/dist/icon/icon.vue +78 -76
  107. package/dist/image/README.md +4 -2
  108. package/dist/image/image.vue +103 -101
  109. package/dist/image-viewer/README.md +3 -1
  110. package/dist/image-viewer/image-viewer.vue +160 -158
  111. package/dist/image-viewer/props.ts +2 -2
  112. package/dist/image-viewer/type.ts +1 -1
  113. package/dist/index.js +16 -0
  114. package/dist/indexes/README.md +3 -1
  115. package/dist/indexes/indexes.vue +264 -267
  116. package/dist/indexes-anchor/indexes-anchor.vue +41 -41
  117. package/dist/input/README.md +3 -1
  118. package/dist/input/input.vue +172 -198
  119. package/dist/input/props.ts +6 -6
  120. package/dist/input/type.ts +3 -3
  121. package/dist/link/README.md +3 -1
  122. package/dist/link/link.vue +73 -71
  123. package/dist/loading/README.md +3 -1
  124. package/dist/loading/loading.vue +59 -59
  125. package/dist/locale/ar_KW.ts +157 -0
  126. package/dist/locale/en_US.ts +146 -0
  127. package/dist/locale/it_IT.ts +145 -0
  128. package/dist/locale/ja_JP.ts +132 -0
  129. package/dist/locale/ko_KR.ts +132 -0
  130. package/dist/locale/ru_RU.ts +157 -0
  131. package/dist/locale/zh_CN.ts +133 -0
  132. package/dist/locale/zh_TW.ts +132 -0
  133. package/dist/message/README.md +8 -3
  134. package/dist/message/message.vue +181 -173
  135. package/dist/message/props.ts +2 -2
  136. package/dist/message/type.ts +1 -1
  137. package/dist/message-item/message-item.vue +192 -184
  138. package/dist/mixins/page-scroll.d.ts +19 -0
  139. package/dist/mixins/skyline.js +1 -1
  140. package/dist/mixins/using-config.js +39 -0
  141. package/dist/navbar/README.md +3 -1
  142. package/dist/navbar/navbar.vue +201 -199
  143. package/dist/notice-bar/README.md +3 -1
  144. package/dist/notice-bar/notice-bar.vue +175 -171
  145. package/dist/notice-bar/props.ts +2 -2
  146. package/dist/notice-bar/type.ts +1 -1
  147. package/dist/npm/dayjs/esm/locale/ar.js +81 -0
  148. package/dist/npm/dayjs/esm/locale/it.js +39 -0
  149. package/dist/overlay/README.md +3 -1
  150. package/dist/overlay/overlay.vue +50 -48
  151. package/dist/picker/README.md +3 -1
  152. package/dist/picker/picker.vue +168 -161
  153. package/dist/picker-item/picker-item.vue +269 -269
  154. package/dist/popover/README.md +4 -2
  155. package/dist/popover/popover.vue +262 -261
  156. package/dist/popover/props.ts +4 -4
  157. package/dist/popover/type.ts +2 -2
  158. package/dist/popup/README.md +3 -1
  159. package/dist/popup/popup.vue +46 -45
  160. package/dist/progress/README.md +3 -3
  161. package/dist/progress/progress.vue +76 -76
  162. package/dist/pull-down-refresh/README.md +3 -1
  163. package/dist/pull-down-refresh/props.ts +2 -2
  164. package/dist/pull-down-refresh/pull-down-refresh.vue +240 -234
  165. package/dist/pull-down-refresh/type.ts +1 -1
  166. package/dist/qrcode/README.md +4 -2
  167. package/dist/qrcode/components/qrcode-canvas/qrcode-canvas.vue +340 -338
  168. package/dist/qrcode/components/qrcode-status/qrcode-status.vue +6 -6
  169. package/dist/qrcode/qrcode.vue +93 -87
  170. package/dist/radio/README.md +3 -1
  171. package/dist/radio/props.ts +6 -6
  172. package/dist/radio/radio.vue +118 -120
  173. package/dist/radio/type.ts +3 -3
  174. package/dist/radio-group/props.ts +4 -4
  175. package/dist/radio-group/radio-group.vue +136 -134
  176. package/dist/radio-group/type.ts +4 -4
  177. package/dist/rate/README.md +3 -1
  178. package/dist/rate/computed.js +2 -2
  179. package/dist/rate/props.ts +4 -4
  180. package/dist/rate/rate.css +1 -0
  181. package/dist/rate/rate.vue +155 -154
  182. package/dist/rate/type.ts +2 -2
  183. package/dist/result/README.md +3 -1
  184. package/dist/result/result.vue +41 -39
  185. package/dist/row/row.vue +38 -36
  186. package/dist/script/postinstall.js +49 -24
  187. package/dist/scroll-view/scroll-view.vue +24 -22
  188. package/dist/search/README.md +3 -1
  189. package/dist/search/props.ts +2 -2
  190. package/dist/search/search.vue +127 -125
  191. package/dist/search/type.ts +1 -1
  192. package/dist/side-bar/README.md +3 -1
  193. package/dist/side-bar/side-bar.vue +57 -55
  194. package/dist/side-bar-item/side-bar-item.vue +86 -86
  195. package/dist/skeleton/README.md +3 -1
  196. package/dist/skeleton/skeleton.vue +126 -124
  197. package/dist/slider/README.md +4 -2
  198. package/dist/slider/props.ts +2 -2
  199. package/dist/slider/slider.vue +457 -457
  200. package/dist/slider/type.ts +1 -1
  201. package/dist/step-item/step-item.vue +77 -75
  202. package/dist/stepper/README.md +3 -1
  203. package/dist/stepper/props.ts +2 -2
  204. package/dist/stepper/stepper.vue +168 -149
  205. package/dist/stepper/type.ts +1 -1
  206. package/dist/steps/README.md +3 -1
  207. package/dist/steps/props.ts +2 -2
  208. package/dist/steps/steps.vue +83 -81
  209. package/dist/steps/type.ts +1 -1
  210. package/dist/sticky/README.md +3 -1
  211. package/dist/sticky/sticky.vue +104 -102
  212. package/dist/swipe-cell/README.md +3 -1
  213. package/dist/swipe-cell/swipe-cell.vue +91 -89
  214. package/dist/swiper/README.md +4 -2
  215. package/dist/swiper/swiper.vue +91 -89
  216. package/dist/swiper-nav/swiper-nav.vue +38 -36
  217. package/dist/switch/README.md +3 -1
  218. package/dist/switch/props.ts +2 -2
  219. package/dist/switch/switch.vue +62 -62
  220. package/dist/switch/type.ts +1 -1
  221. package/dist/tab-bar/README.md +3 -1
  222. package/dist/tab-bar/tab-bar.vue +88 -86
  223. package/dist/tab-bar-item/tab-bar-item.vue +85 -82
  224. package/dist/tab-panel/tab-panel.vue +66 -64
  225. package/dist/tabs/README.md +3 -1
  226. package/dist/tabs/tabs.vue +294 -287
  227. package/dist/tag/README.md +3 -1
  228. package/dist/tag/tag.vue +79 -77
  229. package/dist/textarea/README.md +3 -1
  230. package/dist/textarea/props.ts +6 -6
  231. package/dist/textarea/textarea.vue +128 -151
  232. package/dist/textarea/type.ts +3 -3
  233. package/dist/theme.css +467 -0
  234. package/dist/theme.css.d.ts +2 -0
  235. package/dist/theme.less +1 -0
  236. package/dist/theme.less.d.ts +2 -0
  237. package/dist/toast/README.md +3 -1
  238. package/dist/toast/toast.vue +107 -106
  239. package/dist/transition/README.md +4 -6
  240. package/dist/transition/transition.vue +30 -28
  241. package/dist/tree-select/README.md +3 -1
  242. package/dist/tree-select/tree-select.vue +151 -151
  243. package/dist/types/config-provider.d.ts +7 -0
  244. package/dist/types/index.d.ts +17 -0
  245. package/dist/types/popover.d.ts +7 -0
  246. package/dist/upload/README.en-US.md +13 -14
  247. package/dist/upload/README.md +14 -13
  248. package/dist/upload/props.ts +2 -4
  249. package/dist/upload/type.ts +12 -11
  250. package/dist/upload/upload.css +1 -1
  251. package/dist/upload/upload.vue +672 -512
  252. package/dist/watermark/README.md +3 -1
  253. package/dist/watermark/watermark.vue +151 -149
  254. package/global.d.ts +2 -0
  255. package/package.json +51 -5
  256. package/dist/common/src/superComponent.js +0 -5
  257. package/dist/common/validator.js +0 -38
  258. package/dist/form/form-item-props.ts +0 -56
@@ -2,43 +2,68 @@ const fs = require('fs');
2
2
  const path = require('path');
3
3
 
4
4
 
5
- function switchVersion(version) {
6
- const pkg = require('../package.json');
7
- if (version != 2) {
8
- return;
5
+ function printVue2PostCSSWarning() {
6
+ console.warn('\n');
7
+ console.warn('⚠️ [TDesign UniApp] 检测到当前使用 Vue2 环境');
8
+ console.warn(' Vue2 项目需要在 postcss.config.js 中进行适配,否则样式可能无法正常工作。');
9
+ console.warn('');
10
+ console.warn(' 📖 适配指南: https://juejin.cn/post/7602901195154030644');
11
+ console.warn(' 📦 Vue2 CLI 参考项目: https://github.com/TDesignOteam/tdesign-uniapp-starter-vue2-cli');
12
+ console.warn('\n');
13
+ }
14
+
15
+
16
+ /**
17
+ * 多重检测 Vue 版本,提升准确性
18
+ * 优先级:环境变量 > require('vue') > 用户项目 package.json
19
+ */
20
+ function detectVueVersion() {
21
+ // 1. 环境变量优先
22
+ if (process.env.npm_config_vueVersion) {
23
+ return process.env.npm_config_vueVersion;
9
24
  }
10
25
 
11
- delete pkg.exports;
26
+ // 2. 尝试直接 require vue
27
+ try {
28
+ const Vue = require('vue');
29
+ if (Vue && Vue.version) return Vue.version;
30
+ } catch (e) {}
12
31
 
13
- const pkgStr = JSON.stringify(pkg, null, 2);
32
+ // 3. 读用户项目的 package.json 中的 vue 版本声明
33
+ try {
34
+ const userPkgPath = path.resolve(process.cwd(), 'package.json');
35
+ const userPkg = JSON.parse(fs.readFileSync(userPkgPath, 'utf-8'));
36
+ const vueDep = (userPkg.dependencies && userPkg.dependencies.vue)
37
+ || (userPkg.devDependencies && userPkg.devDependencies.vue);
38
+ if (vueDep) return vueDep;
39
+ } catch (e) {}
14
40
 
15
- fs.writeFileSync(path.resolve(__dirname, '../package.json'), pkgStr, 'utf-8');
41
+ return null;
16
42
  }
17
43
 
18
-
19
- function loadModule(name) {
20
- try {
21
- return require(name);
22
- } catch (e) {
23
- return undefined;
24
- }
44
+ function isVue2(version) {
45
+ if (!version || typeof version !== 'string') return false;
46
+ // 匹配 "2.x"、"^2.x"、"~2.x"、">=2.x" 等
47
+ return /(?:^|[~^>=\s])2\./.test(version);
25
48
  }
26
49
 
27
- const Vue = loadModule('vue');
50
+ function isVue3(version) {
51
+ if (!version || typeof version !== 'string') return false;
52
+ return /(?:^|[~^>=\s])3\./.test(version);
53
+ }
28
54
 
29
55
  function main() {
30
- const version = process.env.npm_config_vueVersion || (Vue ? Vue.version : '2.7.');
31
- if (!Vue || typeof version !== 'string') {
32
- console.warn('Vue is not found. Please run "npm install vue" to install.');
56
+ const version = detectVueVersion();
57
+
58
+ if (!version) {
59
+ console.warn('[TDesign UniApp] Vue is not found. Please run "npm install vue" to install.');
33
60
  return;
34
61
  }
35
62
 
36
- if (version.startsWith('2.')) {
37
- switchVersion(2);
38
- } else if (version.startsWith('3.')) {
39
- switchVersion(3);
40
- } else {
41
- console.warn(`Vue version v${version} is not supported.`);
63
+ if (isVue2(version)) {
64
+ printVue2PostCSSWarning();
65
+ } else if (!isVue3(version)) {
66
+ console.warn(`[TDesign UniApp] Vue version ${version} is not supported.`);
42
67
  }
43
68
  }
44
69
 
@@ -20,33 +20,35 @@ import { prefix } from '../common/config';
20
20
  const name = `${prefix}-scroll-view`;
21
21
 
22
22
 
23
- export default uniComponent({
24
- name,
25
- options: {
26
- styleIsolation: 'shared',
27
- },
28
- externalClasses: [`${prefix}-class`],
29
- props: {
30
- scrollIntoView: {
31
- type: [String, Number, null],
32
- default: null,
23
+ export default {
24
+ ...uniComponent({
25
+ name,
26
+ options: {
27
+ styleIsolation: 'shared',
33
28
  },
34
- },
35
- data() {
36
- return {
29
+ externalClasses: [`${prefix}-class`],
30
+ props: {
31
+ scrollIntoView: {
32
+ type: [String, Number, null],
33
+ default: null,
34
+ },
35
+ },
36
+ data() {
37
+ return {
37
38
 
38
- };
39
- },
40
- watch: {
39
+ };
40
+ },
41
+ watch: {
41
42
 
42
- },
43
- mounted() {
43
+ },
44
+ mounted() {
44
45
 
45
- },
46
- methods: {
46
+ },
47
+ methods: {
47
48
 
48
- },
49
- });
49
+ },
50
+ }),
51
+ };
50
52
  </script>
51
53
  <style scoped>
52
54
  </style>
@@ -9,7 +9,9 @@ isComponent: true
9
9
 
10
10
  ## 引入
11
11
 
12
- 可在 `main.ts` 或在需要使用的页面或组件中引入。
12
+ 推荐使用 easycom 模式引入组件,配置后无需手动 import 即可直接在模板中使用 `<t-search />`。详细配置请参考 [快速开始](../getting-started)。
13
+
14
+ 如需手动引入:
13
15
 
14
16
  ```js
15
17
  import TSearch from '@tdesign/uniapp/search/search.vue';
@@ -97,8 +97,8 @@ export default {
97
97
  },
98
98
  /** 只读状态 */
99
99
  readonly: {
100
- type: Boolean,
101
- default: undefined,
100
+ type: [Boolean, null],
101
+ default: null as TdSearchProps['readonly'],
102
102
  },
103
103
  /** 预览结果列表 */
104
104
  resultList: {
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <view>
3
3
  <view
4
- :style="tools._style([customStyle])"
4
+ :style="'' + tools._style([customStyle])"
5
5
  :class="classPrefix + ' ' + tClass"
6
6
  >
7
7
  <view
@@ -88,7 +88,7 @@
88
88
  :t-class="classPrefix + '__result-item'"
89
89
  hover
90
90
  aria-role="option"
91
- @click="onSelectOption($event, { index })"
91
+ @click="(e) => onSelectOption(e, { index })"
92
92
  >
93
93
  <template
94
94
  #title
@@ -115,160 +115,161 @@ import { highLight } from './computed.js';
115
115
  const name = `${prefix}-search`;
116
116
 
117
117
 
118
- export default uniComponent({
119
- name,
120
- options: {
121
- styleIsolation: 'shared',
122
- },
123
- externalClasses: [
124
- `${prefix}-class`,
125
- `${prefix}-class-input-container`,
126
- `${prefix}-class-input`,
127
- `${prefix}-class-action`,
128
- `${prefix}-class-left`,
129
- `${prefix}-class-clear`,
130
- ],
118
+ export default {
131
119
  components: {
132
120
  TIcon,
133
121
  TCell,
134
122
  },
135
- props: {
136
- ...props,
137
- },
138
- emits: [
139
- ],
140
- data() {
141
- return {
142
- classPrefix: name,
143
- prefix,
144
- isShowResultList: false,
145
- isSelected: false,
146
- showClearIcon: false,
147
- tools,
123
+ ...uniComponent({
124
+ name,
125
+ options: {
126
+ styleIsolation: 'shared',
127
+ },
128
+ externalClasses: [
129
+ `${prefix}-class`,
130
+ `${prefix}-class-input-container`,
131
+ `${prefix}-class-input`,
132
+ `${prefix}-class-action`,
133
+ `${prefix}-class-left`,
134
+ `${prefix}-class-clear`,
135
+ ],
136
+ props: {
137
+ ...props,
138
+ },
139
+ emits: [
140
+ ],
141
+ data() {
142
+ return {
143
+ classPrefix: name,
144
+ prefix,
145
+ isShowResultList: false,
146
+ isSelected: false,
147
+ showClearIcon: false,
148
+ tools,
148
149
 
149
- dataValue: this.value,
150
+ dataValue: this.value,
150
151
  // innerMaxLen: -1,
151
152
  // rawValue: '',
152
- };
153
- },
154
- watch: {
155
- resultList: {
156
- handler(val) {
157
- const { isSelected } = this;
158
- if (val.length) {
159
- if (isSelected) {
160
- // 已选择
161
- this.isShowResultList = false;
162
- this.isSelected = false;
153
+ };
154
+ },
155
+ watch: {
156
+ resultList: {
157
+ handler(val) {
158
+ const { isSelected } = this;
159
+ if (val.length) {
160
+ if (isSelected) {
161
+ // 已选择
162
+ this.isShowResultList = false;
163
+ this.isSelected = false;
164
+ } else {
165
+ this.isShowResultList = true;
166
+ }
163
167
  } else {
164
- this.isShowResultList = true;
168
+ this.isShowResultList = false;
165
169
  }
166
- } else {
167
- this.isShowResultList = false;
168
- }
170
+ },
171
+ immediate: true,
169
172
  },
170
- immediate: true,
171
- },
172
173
 
173
- value: {
174
- handler(val) {
175
- this.dataValue = val;
174
+ value: {
175
+ handler(val) {
176
+ this.dataValue = val;
177
+ },
178
+ immediate: true,
176
179
  },
177
- immediate: true,
178
- },
179
180
 
180
- dataValue: {
181
- handler() {
181
+ dataValue: {
182
+ handler() {
182
183
  // this.updateInnerMaxLen();
183
- this.updateClearIconVisible();
184
+ this.updateClearIconVisible();
185
+ },
184
186
  },
185
- },
186
- clearTrigger: 'updateClearIconVisible',
187
- clearable: 'updateClearIconVisible',
188
- disabled: 'updateClearIconVisible',
189
- readonly: 'updateClearIconVisible',
187
+ clearTrigger: 'updateClearIconVisible',
188
+ clearable: 'updateClearIconVisible',
189
+ disabled: 'updateClearIconVisible',
190
+ readonly: 'updateClearIconVisible',
190
191
 
191
192
  // maxcharacter: 'updateInnerMaxLen',
192
193
  // maxlength: 'updateInnerMaxLen',
193
- },
194
- mounted() {
195
- this.updateClearIconVisible();
196
- },
197
- methods: {
198
- updateClearIconVisible(value = false) {
199
- const { clearTrigger, disabled, readonly, dataValue } = this;
200
- if (disabled || readonly || !dataValue) {
201
- this.showClearIcon = false;
202
- return;
203
- }
204
-
205
- this.showClearIcon = value || String(clearTrigger) === 'always';
206
194
  },
195
+ mounted() {
196
+ this.updateClearIconVisible();
197
+ },
198
+ methods: {
199
+ updateClearIconVisible(value = false) {
200
+ const { clearTrigger, disabled, readonly, dataValue } = this;
201
+ if (disabled || readonly || !dataValue) {
202
+ this.showClearIcon = false;
203
+ return;
204
+ }
207
205
 
208
- onInput(e) {
209
- let { value } = e.detail;
210
- // this.rawValue = value;
211
- this.dataValue = value;
206
+ this.showClearIcon = value || String(clearTrigger) === 'always';
207
+ },
212
208
 
213
- const { maxcharacter } = this;
214
- if (maxcharacter && typeof maxcharacter === 'number' && maxcharacter > 0) {
215
- const { characters } = getCharacterLength('maxcharacter', value, maxcharacter);
209
+ onInput(e) {
210
+ let { value } = e.detail;
211
+ // this.rawValue = value;
212
+ this.dataValue = value;
216
213
 
217
- value = characters;
218
- }
214
+ const { maxcharacter } = this;
215
+ if (maxcharacter && typeof maxcharacter === 'number' && maxcharacter > 0) {
216
+ const { characters } = getCharacterLength('maxcharacter', value, maxcharacter);
219
217
 
218
+ value = characters;
219
+ }
220
220
 
221
- nextTick().then(() => {
222
- this.dataValue = value;
223
- this.$emit('change', {
224
- value,
225
- trigger: 'input-change',
221
+
222
+ nextTick().then(() => {
223
+ this.dataValue = value;
224
+ this.$emit('change', {
225
+ value,
226
+ trigger: 'input-change',
227
+ });
226
228
  });
227
- });
228
229
  // this.updateInnerMaxLen();
229
- },
230
+ },
230
231
 
231
- onFocus(e) {
232
- const { value } = e.detail;
233
- this.updateClearIconVisible(true);
234
- this.$emit('focus', { value });
235
- },
232
+ onFocus(e) {
233
+ const { value } = e.detail;
234
+ this.updateClearIconVisible(true);
235
+ this.$emit('focus', { value });
236
+ },
236
237
 
237
- onBlur(e) {
238
- const { value } = e.detail;
239
- this.updateClearIconVisible();
240
- this.$emit('blur', { value });
241
- },
238
+ onBlur(e) {
239
+ const { value } = e.detail;
240
+ this.updateClearIconVisible();
241
+ this.$emit('blur', { value });
242
+ },
242
243
 
243
- handleClear() {
244
- this.dataValue = '';
245
- this.$emit('clear', { value: '' });
246
- this.$emit('change', {
247
- value: '',
248
- trigger: 'clear',
249
- });
250
- },
244
+ handleClear() {
245
+ this.dataValue = '';
246
+ this.$emit('clear', { value: '' });
247
+ this.$emit('change', {
248
+ value: '',
249
+ trigger: 'clear',
250
+ });
251
+ },
251
252
 
252
- onConfirm(e) {
253
- const { value } = e.detail;
254
- this.$emit('submit', { value });
255
- },
253
+ onConfirm(e) {
254
+ const { value } = e.detail;
255
+ this.$emit('submit', { value });
256
+ },
256
257
 
257
- onActionClick() {
258
- this.$emit('action-click');
259
- },
258
+ onActionClick() {
259
+ this.$emit('action-click');
260
+ },
260
261
 
261
- onSelectOption(tools, { index }) {
262
- const item = this.resultList[index];
263
- this.dataValue = item;
264
- this.isSelected = true;
262
+ onSelectOption(tools, { index }) {
263
+ const item = this.resultList[index];
264
+ this.dataValue = item;
265
+ this.isSelected = true;
265
266
 
266
- this.$emit('change', {
267
- value: item,
268
- trigger: 'option-click',
269
- });
270
- },
271
- highLight,
267
+ this.$emit('change', {
268
+ value: item,
269
+ trigger: 'option-click',
270
+ });
271
+ },
272
+ highLight,
272
273
  // updateInnerMaxLen() {
273
274
  // // this.innerMaxLen = this.getInnerMaxLen();
274
275
  // },
@@ -289,8 +290,9 @@ export default uniComponent({
289
290
  // count,
290
291
  // });
291
292
  // },
292
- },
293
- });
293
+ },
294
+ }),
295
+ };
294
296
 
295
297
 
296
298
  </script>
@@ -107,7 +107,7 @@ export interface TdSearchProps {
107
107
  /**
108
108
  * 只读状态
109
109
  */
110
- readonly?: boolean;
110
+ readonly?: boolean | null;
111
111
  /**
112
112
  * 预览结果列表
113
113
  * @default []
@@ -8,7 +8,9 @@ isComponent: true
8
8
 
9
9
  ## 引入
10
10
 
11
- 可在 `main.ts` 或在需要使用的页面或组件中引入。
11
+ 推荐使用 easycom 模式引入组件,配置后无需手动 import 即可直接在模板中使用 `<t-side-bar />`。详细配置请参考 [快速开始](../getting-started)。
12
+
13
+ 如需手动引入:
12
14
 
13
15
  ```js
14
16
  import TSideBar from '@tdesign/uniapp/side-bar/side-bar.vue';
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <view
3
3
  :class="classPrefix + ' ' + tClass"
4
- :style="tools._style([customStyle])"
4
+ :style="'' + tools._style([customStyle])"
5
5
  >
6
6
  <slot />
7
7
  <view :class="classPrefix + '__padding'" />
@@ -18,65 +18,67 @@ import { ParentMixin, RELATION_MAP } from '../common/relation';
18
18
 
19
19
  const name = `${prefix}-side-bar`;
20
20
 
21
- export default uniComponent({
22
- name,
23
- options: {
24
- styleIsolation: 'shared',
25
- },
26
- controlledProps: [
27
- {
28
- key: 'value',
29
- event: 'change',
21
+ export default {
22
+ ...uniComponent({
23
+ name,
24
+ options: {
25
+ styleIsolation: 'shared',
30
26
  },
31
- ],
32
- externalClasses: [
33
- `${prefix}-class`,
34
- ],
35
- mixins: [ParentMixin(RELATION_MAP.SideBarItem)],
36
- props: {
37
- ...props,
38
- },
39
- emits: [
40
- 'click',
41
- 'change',
42
- ],
43
- data() {
44
- return {
45
- classPrefix: name,
46
- prefix,
47
- tools,
48
-
49
- dataValue: coalesce(this.value, this.defaultValue),
50
- };
51
- },
52
- watch: {
53
- value: {
54
- handler(e) {
55
- this.dataValue = e;
27
+ controlledProps: [
28
+ {
29
+ key: 'value',
30
+ event: 'change',
56
31
  },
57
- immediate: true,
32
+ ],
33
+ externalClasses: [
34
+ `${prefix}-class`,
35
+ ],
36
+ mixins: [ParentMixin(RELATION_MAP.SideBarItem)],
37
+ props: {
38
+ ...props,
58
39
  },
59
- dataValue: {
60
- handler(v) {
61
- const sideBarItems = this.children || [];
62
- sideBarItems.forEach((item, index) => {
63
- item.updateActive(v);
64
- item.isFirstChild = index === 0;
65
- item.isLastChild = index === sideBarItems.length - 1;
66
- });
67
- },
68
- immediate: true,
40
+ emits: [
41
+ 'click',
42
+ 'change',
43
+ ],
44
+ data() {
45
+ return {
46
+ classPrefix: name,
47
+ prefix,
48
+ tools,
49
+
50
+ dataValue: coalesce(this.value, this.defaultValue),
51
+ };
69
52
  },
70
- },
71
- methods: {
72
- innerAfterUnLinked(child) {
73
- const index = this.children.findIndex(item => item === child);
74
- this.children.splice(index, 1);
53
+ watch: {
54
+ value: {
55
+ handler(e) {
56
+ this.dataValue = e;
57
+ },
58
+ immediate: true,
59
+ },
60
+ dataValue: {
61
+ handler(v) {
62
+ const sideBarItems = this.children || [];
63
+ sideBarItems.forEach((item, index) => {
64
+ item.updateActive(v);
65
+ item.isFirstChild = index === 0;
66
+ item.isLastChild = index === sideBarItems.length - 1;
67
+ });
68
+ },
69
+ immediate: true,
70
+ },
75
71
  },
76
- doChange({ value, label }) {
77
- this._trigger('change', { value, label });
72
+ methods: {
73
+ innerAfterUnLinked(child) {
74
+ const index = this.children.findIndex(item => item === child);
75
+ this.children.splice(index, 1);
76
+ },
77
+ doChange({ value, label }) {
78
+ this._trigger('change', { value, label });
79
+ },
78
80
  },
79
- },
80
- });
81
+ }),
82
+ };
81
83
  </script>
82
84
  <style scoped src="./side-bar.css"></style>