@opentiny/vue-docs 3.27.1 → 3.28.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 (419) hide show
  1. package/demos/apis/base-select.js +2 -2
  2. package/demos/apis/chart-attributes-demo.js +4 -4
  3. package/demos/apis/chart-demo.js +4 -4
  4. package/demos/apis/chart-docs.js +4 -4
  5. package/demos/apis/chart-events.js +4 -4
  6. package/demos/apis/chart-question.js +4 -4
  7. package/demos/apis/chart.js +4 -4
  8. package/demos/apis/color-picker.js +1 -1
  9. package/demos/apis/color-select-panel.js +1 -1
  10. package/demos/apis/drawer.js +14 -0
  11. package/demos/apis/dropdown.js +6 -2
  12. package/demos/apis/grid-select.js +20 -21
  13. package/demos/apis/grid.js +1 -1
  14. package/demos/apis/modal.js +15 -1
  15. package/demos/apis/select-wrapper.js +1067 -0
  16. package/demos/apis/select.js +25 -13
  17. package/demos/apis/switch.js +15 -0
  18. package/demos/apis/time-line.js +14 -0
  19. package/demos/apis/tree-menu.js +7 -4
  20. package/demos/apis/tree-select.js +41 -0
  21. package/demos/mobile-first/app/base-select/all-text.vue +43 -0
  22. package/demos/mobile-first/app/base-select/allow-create.vue +51 -0
  23. package/demos/mobile-first/app/base-select/automatic-dropdown.vue +60 -0
  24. package/demos/mobile-first/app/base-select/basic-usage.vue +47 -0
  25. package/demos/mobile-first/app/base-select/binding-obj.vue +44 -0
  26. package/demos/mobile-first/app/base-select/cache-usage.vue +55 -0
  27. package/demos/mobile-first/app/base-select/clear-no-match-value.vue +52 -0
  28. package/demos/mobile-first/app/base-select/clearable.vue +34 -0
  29. package/demos/mobile-first/app/base-select/collapse-tags.vue +49 -0
  30. package/demos/mobile-first/app/base-select/copy-multi.vue +55 -0
  31. package/demos/mobile-first/app/base-select/copy-single.vue +158 -0
  32. package/demos/mobile-first/app/base-select/disabled.vue +107 -0
  33. package/demos/mobile-first/app/base-select/events.vue +112 -0
  34. package/demos/mobile-first/app/base-select/filter-method.vue +83 -0
  35. package/demos/mobile-first/app/base-select/filter-mode.vue +57 -0
  36. package/demos/mobile-first/app/base-select/hide-drop.vue +34 -0
  37. package/demos/mobile-first/app/base-select/is-drop-inherit-width.vue +49 -0
  38. package/demos/mobile-first/app/base-select/manual-focus-blur.vue +90 -0
  39. package/demos/mobile-first/app/base-select/map-field.vue +42 -0
  40. package/demos/mobile-first/app/base-select/memoize-usage.vue +66 -0
  41. package/demos/mobile-first/app/base-select/multiple-mix.vue +156 -0
  42. package/demos/mobile-first/app/base-select/multiple.vue +98 -0
  43. package/demos/mobile-first/app/base-select/native-properties.vue +34 -0
  44. package/demos/mobile-first/app/base-select/no-data-text.vue +40 -0
  45. package/demos/mobile-first/app/base-select/optimization.vue +55 -0
  46. package/demos/mobile-first/app/base-select/option-group.vue +105 -0
  47. package/demos/mobile-first/app/base-select/popup-style-position.vue +40 -0
  48. package/demos/mobile-first/app/base-select/remote-method.vue +286 -0
  49. package/demos/mobile-first/app/base-select/show-alloption.vue +34 -0
  50. package/demos/mobile-first/app/base-select/show-tip.vue +34 -0
  51. package/demos/mobile-first/app/base-select/size.vue +48 -0
  52. package/demos/mobile-first/app/base-select/slot-default.vue +95 -0
  53. package/demos/mobile-first/app/base-select/slot-empty.vue +41 -0
  54. package/demos/mobile-first/app/base-select/slot-footer.vue +45 -0
  55. package/demos/mobile-first/app/base-select/slot-label.vue +85 -0
  56. package/demos/mobile-first/app/base-select/slot-panel.vue +155 -0
  57. package/demos/mobile-first/app/base-select/slot-prefix.vue +39 -0
  58. package/demos/mobile-first/app/base-select/slot-reference.vue +41 -0
  59. package/demos/mobile-first/app/base-select/tag-type.vue +36 -0
  60. package/demos/mobile-first/app/base-select/webdoc/base-select.cn.md +7 -0
  61. package/demos/mobile-first/app/base-select/webdoc/base-select.en.md +7 -0
  62. package/demos/mobile-first/app/base-select/webdoc/base-select.js +590 -0
  63. package/demos/mobile-first/app/button/webdoc/button.js +2 -2
  64. package/demos/mobile-first/app/file-upload/show-title.vue +2 -3
  65. package/demos/mobile-first/app/grid-select/basic-usage.vue +70 -0
  66. package/demos/mobile-first/app/grid-select/config.vue +88 -0
  67. package/demos/mobile-first/app/grid-select/extra-query-params.vue +126 -0
  68. package/demos/mobile-first/app/grid-select/init-query.vue +124 -0
  69. package/demos/mobile-first/app/grid-select/radio-bigdata.vue +46 -0
  70. package/demos/mobile-first/app/grid-select/remote.vue +90 -0
  71. package/demos/mobile-first/app/grid-select/webdoc/grid-select.cn.md +7 -0
  72. package/demos/mobile-first/app/grid-select/webdoc/grid-select.en.md +8 -0
  73. package/demos/mobile-first/app/grid-select/webdoc/grid-select.js +92 -0
  74. package/demos/mobile-first/app/select-wrapper/all-text.vue +43 -0
  75. package/demos/mobile-first/app/select-wrapper/allow-create.vue +77 -0
  76. package/demos/mobile-first/app/select-wrapper/automatic-dropdown.vue +62 -0
  77. package/demos/mobile-first/app/select-wrapper/basic-usage.vue +47 -0
  78. package/demos/mobile-first/app/select-wrapper/binding-obj.vue +44 -0
  79. package/demos/mobile-first/app/select-wrapper/cache-usage.vue +49 -0
  80. package/demos/mobile-first/app/select-wrapper/clear-no-match-value.vue +54 -0
  81. package/demos/mobile-first/app/select-wrapper/clearable.vue +34 -0
  82. package/demos/mobile-first/app/select-wrapper/collapse-tags.vue +58 -0
  83. package/demos/mobile-first/app/select-wrapper/copy-multi.vue +77 -0
  84. package/demos/mobile-first/app/select-wrapper/copy-single.vue +157 -0
  85. package/demos/mobile-first/app/select-wrapper/disabled.vue +108 -0
  86. package/demos/mobile-first/app/select-wrapper/events.vue +112 -0
  87. package/demos/mobile-first/app/select-wrapper/extra-query-params.vue +157 -0
  88. package/demos/mobile-first/app/select-wrapper/filter-method.vue +85 -0
  89. package/demos/mobile-first/app/select-wrapper/filter-mode.vue +46 -0
  90. package/demos/mobile-first/app/select-wrapper/hide-drop.vue +34 -0
  91. package/demos/mobile-first/app/select-wrapper/init-label.vue +74 -0
  92. package/demos/mobile-first/app/select-wrapper/is-drop-inherit-width.vue +51 -0
  93. package/demos/mobile-first/app/select-wrapper/manual-focus-blur.vue +90 -0
  94. package/demos/mobile-first/app/select-wrapper/map-field.vue +68 -0
  95. package/demos/mobile-first/app/select-wrapper/memoize-usage.vue +66 -0
  96. package/demos/mobile-first/app/select-wrapper/multiple-mix.vue +84 -0
  97. package/demos/mobile-first/app/select-wrapper/multiple.vue +133 -0
  98. package/demos/mobile-first/app/select-wrapper/native-properties.vue +34 -0
  99. package/demos/mobile-first/app/select-wrapper/nest-grid-disable.vue +122 -0
  100. package/demos/mobile-first/app/select-wrapper/nest-grid-init-query.vue +129 -0
  101. package/demos/mobile-first/app/select-wrapper/nest-grid-remote.vue +144 -0
  102. package/demos/mobile-first/app/select-wrapper/nest-grid.vue +106 -0
  103. package/demos/mobile-first/app/select-wrapper/nest-radio-grid-much-data.vue +50 -0
  104. package/demos/mobile-first/app/select-wrapper/nest-tree.vue +164 -0
  105. package/demos/mobile-first/app/select-wrapper/no-data-text.vue +48 -0
  106. package/demos/mobile-first/app/select-wrapper/optimization.vue +59 -0
  107. package/demos/mobile-first/app/select-wrapper/option-group.vue +105 -0
  108. package/demos/mobile-first/app/select-wrapper/popup-style-position.vue +40 -0
  109. package/demos/mobile-first/app/select-wrapper/remote-method.vue +286 -0
  110. package/demos/mobile-first/app/select-wrapper/show-alloption.vue +34 -0
  111. package/demos/mobile-first/app/select-wrapper/show-tip.vue +28 -0
  112. package/demos/mobile-first/app/select-wrapper/size.vue +57 -0
  113. package/demos/mobile-first/app/select-wrapper/slot-default.vue +95 -0
  114. package/demos/mobile-first/app/select-wrapper/slot-empty.vue +44 -0
  115. package/demos/mobile-first/app/select-wrapper/slot-header-footer.vue +55 -0
  116. package/demos/mobile-first/app/select-wrapper/slot-label.vue +85 -0
  117. package/demos/mobile-first/app/select-wrapper/slot-prefix.vue +39 -0
  118. package/demos/mobile-first/app/select-wrapper/slot-reference.vue +41 -0
  119. package/demos/mobile-first/app/select-wrapper/tag-type.vue +36 -0
  120. package/demos/mobile-first/app/select-wrapper/webdoc/select-wrapper.cn.md +7 -0
  121. package/demos/mobile-first/app/select-wrapper/webdoc/select-wrapper.en.md +7 -0
  122. package/demos/mobile-first/app/select-wrapper/webdoc/select-wrapper.js +695 -0
  123. package/demos/mobile-first/app/space/space-size.vue +1 -1
  124. package/demos/mobile-first/app/tree-select/basic-usage.vue +63 -0
  125. package/demos/mobile-first/app/tree-select/collapse-tags.vue +77 -0
  126. package/demos/mobile-first/app/tree-select/copy.vue +77 -0
  127. package/demos/mobile-first/app/tree-select/disabled.vue +76 -0
  128. package/demos/mobile-first/app/tree-select/lazy.vue +59 -0
  129. package/demos/mobile-first/app/tree-select/map-field.vue +63 -0
  130. package/demos/mobile-first/app/tree-select/multiple.vue +63 -0
  131. package/demos/mobile-first/app/tree-select/native-properties.vue +69 -0
  132. package/demos/mobile-first/app/tree-select/panel-style.vue +80 -0
  133. package/demos/mobile-first/app/tree-select/reference-style.vue +79 -0
  134. package/demos/mobile-first/app/tree-select/size.vue +78 -0
  135. package/demos/mobile-first/app/tree-select/webdoc/tree-select.cn.md +7 -0
  136. package/demos/mobile-first/app/tree-select/webdoc/tree-select.en.md +7 -0
  137. package/demos/mobile-first/app/tree-select/webdoc/tree-select.js +220 -0
  138. package/demos/mobile-first/menus.js +14 -0
  139. package/demos/pc/app/amount/custom-service.spec.js +4 -4
  140. package/demos/pc/app/base-select/all-text.spec.ts +2 -2
  141. package/demos/pc/app/base-select/allow-create.spec.ts +3 -3
  142. package/demos/pc/app/base-select/automatic-dropdown.spec.ts +2 -2
  143. package/demos/pc/app/base-select/basic-usage.spec.ts +4 -4
  144. package/demos/pc/app/base-select/binding-obj.spec.ts +2 -2
  145. package/demos/pc/app/base-select/cache-usage.spec.ts +2 -2
  146. package/demos/pc/app/base-select/clearable.spec.ts +2 -2
  147. package/demos/pc/app/base-select/input-box-type.spec.ts +0 -2
  148. package/demos/pc/app/base-select/multiple.spec.ts +1 -1
  149. package/demos/pc/app/base-select/searchable.spec.ts +1 -1
  150. package/demos/pc/app/base-select/slot-reference.spec.ts +1 -1
  151. package/demos/pc/app/base-select/webdoc/base-select.js +3 -3
  152. package/demos/pc/app/checkbox/checkbox-disabled-composition-api.vue +10 -0
  153. package/demos/pc/app/checkbox/checkbox-disabled.spec.ts +22 -0
  154. package/demos/pc/app/checkbox/checkbox-disabled.vue +18 -0
  155. package/demos/pc/app/checkbox/vertical-checkbox.spec.ts +4 -4
  156. package/demos/pc/app/checkbox/webdoc/checkbox.js +13 -0
  157. package/demos/pc/app/color-picker/webdoc/color-picker.js +2 -2
  158. package/demos/pc/app/color-select-panel/format.spec.ts +3 -3
  159. package/demos/pc/app/country/fields.spec.js +1 -1
  160. package/demos/pc/app/currency/basic-usage.spec.ts +1 -1
  161. package/demos/pc/app/currency/custom-service.spec.ts +3 -3
  162. package/demos/pc/app/date-panel/shortcuts.vue +23 -23
  163. package/demos/pc/app/date-panel/unlink-panels.spec.ts +12 -8
  164. package/demos/pc/app/dept/custom-service.spec.ts +6 -6
  165. package/demos/pc/app/directives/webdoc/directives-auto-tip.js +2 -0
  166. package/demos/pc/app/drawer/close-on-press-escape-composition-api.vue +29 -0
  167. package/demos/pc/app/drawer/close-on-press-escape.spec.ts +19 -0
  168. package/demos/pc/app/drawer/close-on-press-escape.vue +38 -0
  169. package/demos/pc/app/drawer/webdoc/drawer.js +12 -0
  170. package/demos/pc/app/drop-roles/custom-service.spec.ts +1 -1
  171. package/demos/pc/app/drop-times/basic-usage.spec.ts +2 -2
  172. package/demos/pc/app/drop-times/start-end-step.spec.ts +1 -1
  173. package/demos/pc/app/dropdown/trigger-composition-api.vue +13 -0
  174. package/demos/pc/app/dropdown/trigger.spec.ts +13 -0
  175. package/demos/pc/app/dropdown/trigger.vue +13 -0
  176. package/demos/pc/app/dropdown/webdoc/dropdown.js +4 -4
  177. package/demos/pc/app/file-upload/upload-file-list-saas.spec.ts +0 -2
  178. package/demos/pc/app/form/basic-usage.spec.ts +2 -2
  179. package/demos/pc/app/form/custom-validation-string-length.vue +38 -0
  180. package/demos/pc/app/form/webdoc/form.js +12 -0
  181. package/demos/pc/app/grid/custom/column-simple.spec.js +2 -2
  182. package/demos/pc/app/grid/data-source/undefined-field-defalut-value-composition-api.vue +51 -0
  183. package/demos/pc/app/grid/data-source/undefined-field-defalut-value.spec.js +52 -0
  184. package/demos/pc/app/grid/data-source/undefined-field-defalut-value.vue +61 -0
  185. package/demos/pc/app/grid/editor/custom-editor-select-composition-api.vue +6 -1
  186. package/demos/pc/app/grid/editor/custom-editor-select.spec.js +5 -4
  187. package/demos/pc/app/grid/editor/custom-editor-select.vue +5 -1
  188. package/demos/pc/app/grid/editor/mutil-render.spec.js +4 -1
  189. package/demos/pc/app/grid/filter/server-filter-composition-api.vue +1 -1
  190. package/demos/pc/app/grid/filter/server-filter.vue +1 -1
  191. package/demos/pc/app/grid/webdoc/grid-data-source.js +12 -0
  192. package/demos/pc/app/grid-select/basic-usage-composition-api.vue +29 -1
  193. package/demos/pc/app/grid-select/basic-usage.vue +30 -1
  194. package/demos/pc/app/grid-select/config.spec.ts +24 -0
  195. package/demos/pc/app/grid-select/config.vue +1 -1
  196. package/demos/pc/app/grid-select/extra-query-params-composition-api.vue +110 -0
  197. package/demos/pc/app/grid-select/extra-query-params.spec.ts +21 -0
  198. package/demos/pc/app/grid-select/extra-query-params.vue +129 -0
  199. package/demos/pc/app/grid-select/init-query-composition-api.vue +119 -0
  200. package/demos/pc/app/grid-select/init-query.spec.ts +30 -0
  201. package/demos/pc/app/grid-select/init-query.vue +127 -0
  202. package/demos/pc/app/grid-select/radio-bigdata-composition-api.vue +44 -0
  203. package/demos/pc/app/grid-select/radio-bigdata.spec.ts +19 -0
  204. package/demos/pc/app/grid-select/radio-bigdata.vue +52 -0
  205. package/demos/pc/app/grid-select/remote.spec.ts +23 -0
  206. package/demos/pc/app/grid-select/remote.vue +2 -1
  207. package/demos/pc/app/grid-select/webdoc/grid-select.js +48 -29
  208. package/demos/pc/app/guide/basic-usage-composition-api.vue +4 -1
  209. package/demos/pc/app/guide/basic-usage.vue +4 -1
  210. package/demos/pc/app/guide/callback-composition-api.vue +1 -0
  211. package/demos/pc/app/guide/callback.vue +1 -0
  212. package/demos/pc/app/icon/advance-icons.js +412 -0
  213. package/demos/pc/app/icon/advance-usage-composition-api.vue +174 -0
  214. package/demos/pc/app/icon/advance-usage.vue +200 -0
  215. package/demos/pc/app/icon/webdoc/icon.js +20 -0
  216. package/demos/pc/app/modal/modal-header.vue +16 -2
  217. package/demos/pc/app/modal/webdoc/modal.js +7 -6
  218. package/demos/pc/app/query-builder/webdoc/query-builder.js +17 -14
  219. package/demos/pc/app/scroll-text/scroll-direction.spec.ts +4 -4
  220. package/demos/pc/app/select/allow-create.spec.ts +3 -3
  221. package/demos/pc/app/select/automatic-dropdown.spec.ts +2 -2
  222. package/demos/pc/app/select/basic-usage.spec.ts +3 -3
  223. package/demos/pc/app/select/binding-obj.spec.ts +2 -2
  224. package/demos/pc/app/select/cache-usage.spec.ts +2 -2
  225. package/demos/pc/app/select/clearable.spec.ts +1 -1
  226. package/demos/pc/app/select/webdoc/select.js +17 -11
  227. package/demos/pc/app/select-wrapper/all-text-composition-api.vue +35 -0
  228. package/demos/pc/app/select-wrapper/all-text.spec.ts +13 -0
  229. package/demos/pc/app/select-wrapper/all-text.vue +43 -0
  230. package/demos/pc/app/select-wrapper/allow-create-composition-api.vue +102 -0
  231. package/demos/pc/app/select-wrapper/allow-create.spec.ts +50 -0
  232. package/demos/pc/app/select-wrapper/allow-create.vue +112 -0
  233. package/demos/pc/app/select-wrapper/automatic-dropdown-composition-api.vue +54 -0
  234. package/demos/pc/app/select-wrapper/automatic-dropdown.spec.ts +31 -0
  235. package/demos/pc/app/select-wrapper/automatic-dropdown.vue +62 -0
  236. package/demos/pc/app/select-wrapper/basic-usage-composition-api.vue +38 -0
  237. package/demos/pc/app/select-wrapper/basic-usage.spec.ts +47 -0
  238. package/demos/pc/app/select-wrapper/basic-usage.vue +47 -0
  239. package/demos/pc/app/select-wrapper/binding-obj-composition-api.vue +35 -0
  240. package/demos/pc/app/select-wrapper/binding-obj.spec.ts +21 -0
  241. package/demos/pc/app/select-wrapper/binding-obj.vue +44 -0
  242. package/demos/pc/app/select-wrapper/cache-usage-composition-api.vue +39 -0
  243. package/demos/pc/app/select-wrapper/cache-usage.spec.ts +19 -0
  244. package/demos/pc/app/select-wrapper/cache-usage.vue +49 -0
  245. package/demos/pc/app/select-wrapper/clear-no-match-value-composition-api.vue +46 -0
  246. package/demos/pc/app/select-wrapper/clear-no-match-value.spec.ts +24 -0
  247. package/demos/pc/app/select-wrapper/clear-no-match-value.vue +54 -0
  248. package/demos/pc/app/select-wrapper/clearable-composition-api.vue +25 -0
  249. package/demos/pc/app/select-wrapper/clearable.spec.ts +21 -0
  250. package/demos/pc/app/select-wrapper/clearable.vue +34 -0
  251. package/demos/pc/app/select-wrapper/collapse-tags-composition-api.vue +54 -0
  252. package/demos/pc/app/select-wrapper/collapse-tags.spec.ts +32 -0
  253. package/demos/pc/app/select-wrapper/collapse-tags.vue +62 -0
  254. package/demos/pc/app/select-wrapper/copy-multi-composition-api.vue +66 -0
  255. package/demos/pc/app/select-wrapper/copy-multi.spec.ts +65 -0
  256. package/demos/pc/app/select-wrapper/copy-multi.vue +77 -0
  257. package/demos/pc/app/select-wrapper/copy-single-composition-api.vue +150 -0
  258. package/demos/pc/app/select-wrapper/copy-single.spec.ts +76 -0
  259. package/demos/pc/app/select-wrapper/copy-single.vue +157 -0
  260. package/demos/pc/app/select-wrapper/disabled-composition-api.vue +101 -0
  261. package/demos/pc/app/select-wrapper/disabled.spec.ts +88 -0
  262. package/demos/pc/app/select-wrapper/disabled.vue +108 -0
  263. package/demos/pc/app/select-wrapper/events-composition-api.vue +109 -0
  264. package/demos/pc/app/select-wrapper/events.spec.ts +72 -0
  265. package/demos/pc/app/select-wrapper/events.vue +112 -0
  266. package/demos/pc/app/select-wrapper/extra-query-params-composition-api.vue +155 -0
  267. package/demos/pc/app/select-wrapper/extra-query-params.vue +157 -0
  268. package/demos/pc/app/select-wrapper/filter-method-composition-api.vue +75 -0
  269. package/demos/pc/app/select-wrapper/filter-method.spec.ts +89 -0
  270. package/demos/pc/app/select-wrapper/filter-method.vue +85 -0
  271. package/demos/pc/app/select-wrapper/filter-mode-composition-api.vue +37 -0
  272. package/demos/pc/app/select-wrapper/filter-mode.vue +46 -0
  273. package/demos/pc/app/select-wrapper/hide-drop-composition-api.vue +25 -0
  274. package/demos/pc/app/select-wrapper/hide-drop.spec.ts +12 -0
  275. package/demos/pc/app/select-wrapper/hide-drop.vue +34 -0
  276. package/demos/pc/app/select-wrapper/init-label-composition-api.vue +57 -0
  277. package/demos/pc/app/select-wrapper/init-label.vue +65 -0
  278. package/demos/pc/app/select-wrapper/input-box-type-composition-api.vue +49 -0
  279. package/demos/pc/app/select-wrapper/input-box-type.spec.ts +71 -0
  280. package/demos/pc/app/select-wrapper/input-box-type.vue +58 -0
  281. package/demos/pc/app/select-wrapper/is-drop-inherit-width-composition-api.vue +42 -0
  282. package/demos/pc/app/select-wrapper/is-drop-inherit-width.spec.ts +34 -0
  283. package/demos/pc/app/select-wrapper/is-drop-inherit-width.vue +51 -0
  284. package/demos/pc/app/select-wrapper/manual-focus-blur-composition-api.vue +88 -0
  285. package/demos/pc/app/select-wrapper/manual-focus-blur.spec.ts +18 -0
  286. package/demos/pc/app/select-wrapper/manual-focus-blur.vue +90 -0
  287. package/demos/pc/app/select-wrapper/map-field-composition-api.vue +61 -0
  288. package/demos/pc/app/select-wrapper/map-field.spec.ts +60 -0
  289. package/demos/pc/app/select-wrapper/map-field.vue +68 -0
  290. package/demos/pc/app/select-wrapper/memoize-usage-composition-api.vue +52 -0
  291. package/demos/pc/app/select-wrapper/memoize-usage.spec.ts +19 -0
  292. package/demos/pc/app/select-wrapper/memoize-usage.vue +66 -0
  293. package/demos/pc/app/select-wrapper/multiple-composition-api.vue +139 -0
  294. package/demos/pc/app/select-wrapper/multiple-mix-composition-api.vue +75 -0
  295. package/demos/pc/app/select-wrapper/multiple-mix.vue +84 -0
  296. package/demos/pc/app/select-wrapper/multiple.spec.ts +52 -0
  297. package/demos/pc/app/select-wrapper/multiple.vue +146 -0
  298. package/demos/pc/app/select-wrapper/native-properties-composition-api.vue +25 -0
  299. package/demos/pc/app/select-wrapper/native-properties.spec.ts +16 -0
  300. package/demos/pc/app/select-wrapper/native-properties.vue +34 -0
  301. package/demos/pc/app/select-wrapper/nest-grid-composition-api.vue +99 -0
  302. package/demos/pc/app/select-wrapper/nest-grid-disable-composition-api.vue +88 -0
  303. package/demos/pc/app/select-wrapper/nest-grid-disable.spec.ts +41 -0
  304. package/demos/pc/app/select-wrapper/nest-grid-disable.vue +122 -0
  305. package/demos/pc/app/select-wrapper/nest-grid-init-query-composition-api.vue +122 -0
  306. package/demos/pc/app/select-wrapper/nest-grid-init-query.vue +129 -0
  307. package/demos/pc/app/select-wrapper/nest-grid-remote-composition-api.vue +127 -0
  308. package/demos/pc/app/select-wrapper/nest-grid-remote.spec.ts +136 -0
  309. package/demos/pc/app/select-wrapper/nest-grid-remote.vue +144 -0
  310. package/demos/pc/app/select-wrapper/nest-grid.spec.ts +95 -0
  311. package/demos/pc/app/select-wrapper/nest-grid.vue +106 -0
  312. package/demos/pc/app/select-wrapper/nest-radio-grid-much-data-composition-api.vue +43 -0
  313. package/demos/pc/app/select-wrapper/nest-radio-grid-much-data.spec.ts +35 -0
  314. package/demos/pc/app/select-wrapper/nest-radio-grid-much-data.vue +50 -0
  315. package/demos/pc/app/select-wrapper/nest-tree-composition-api.vue +97 -0
  316. package/demos/pc/app/select-wrapper/nest-tree.spec.ts +84 -0
  317. package/demos/pc/app/select-wrapper/nest-tree.vue +164 -0
  318. package/demos/pc/app/select-wrapper/no-data-text-composition-api.vue +39 -0
  319. package/demos/pc/app/select-wrapper/no-data-text.spec.ts +39 -0
  320. package/demos/pc/app/select-wrapper/no-data-text.vue +48 -0
  321. package/demos/pc/app/select-wrapper/optimization-composition-api.vue +50 -0
  322. package/demos/pc/app/select-wrapper/optimization.spec.ts +46 -0
  323. package/demos/pc/app/select-wrapper/optimization.vue +59 -0
  324. package/demos/pc/app/select-wrapper/option-group-composition-api.vue +96 -0
  325. package/demos/pc/app/select-wrapper/option-group.spec.ts +22 -0
  326. package/demos/pc/app/select-wrapper/option-group.vue +105 -0
  327. package/demos/pc/app/select-wrapper/popup-style-position-composition-api.vue +31 -0
  328. package/demos/pc/app/select-wrapper/popup-style-position.spec.ts +16 -0
  329. package/demos/pc/app/select-wrapper/popup-style-position.vue +40 -0
  330. package/demos/pc/app/select-wrapper/remote-method-composition-api.vue +283 -0
  331. package/demos/pc/app/select-wrapper/remote-method.spec.ts +68 -0
  332. package/demos/pc/app/select-wrapper/remote-method.vue +286 -0
  333. package/demos/pc/app/select-wrapper/searchable-composition-api.vue +46 -0
  334. package/demos/pc/app/select-wrapper/searchable.spec.ts +66 -0
  335. package/demos/pc/app/select-wrapper/searchable.vue +55 -0
  336. package/demos/pc/app/select-wrapper/show-alloption-composition-api.vue +25 -0
  337. package/demos/pc/app/select-wrapper/show-alloption.spec.ts +15 -0
  338. package/demos/pc/app/select-wrapper/show-alloption.vue +34 -0
  339. package/demos/pc/app/select-wrapper/show-tip-composition-api.vue +19 -0
  340. package/demos/pc/app/select-wrapper/show-tip.vue +28 -0
  341. package/demos/pc/app/select-wrapper/size-composition-api.vue +49 -0
  342. package/demos/pc/app/select-wrapper/size.spec.ts +61 -0
  343. package/demos/pc/app/select-wrapper/size.vue +57 -0
  344. package/demos/pc/app/select-wrapper/slot-default-composition-api.vue +86 -0
  345. package/demos/pc/app/select-wrapper/slot-default.spec.ts +18 -0
  346. package/demos/pc/app/select-wrapper/slot-default.vue +95 -0
  347. package/demos/pc/app/select-wrapper/slot-empty-composition-api.vue +35 -0
  348. package/demos/pc/app/select-wrapper/slot-empty.spec.ts +16 -0
  349. package/demos/pc/app/select-wrapper/slot-empty.vue +44 -0
  350. package/demos/pc/app/select-wrapper/slot-header-footer-composition-api.vue +45 -0
  351. package/demos/pc/app/select-wrapper/slot-header-footer.spec.ts +17 -0
  352. package/demos/pc/app/select-wrapper/slot-header-footer.vue +55 -0
  353. package/demos/pc/app/select-wrapper/slot-label-composition-api.vue +77 -0
  354. package/demos/pc/app/select-wrapper/slot-label.vue +85 -0
  355. package/demos/pc/app/select-wrapper/slot-prefix-composition-api.vue +31 -0
  356. package/demos/pc/app/select-wrapper/slot-prefix.spec.ts +18 -0
  357. package/demos/pc/app/select-wrapper/slot-prefix.vue +39 -0
  358. package/demos/pc/app/select-wrapper/slot-reference-composition-api.vue +33 -0
  359. package/demos/pc/app/select-wrapper/slot-reference.spec.ts +16 -0
  360. package/demos/pc/app/select-wrapper/slot-reference.vue +41 -0
  361. package/demos/pc/app/select-wrapper/tag-type-composition-api.vue +27 -0
  362. package/demos/pc/app/select-wrapper/tag-type.spec.ts +13 -0
  363. package/demos/pc/app/select-wrapper/tag-type.vue +36 -0
  364. package/demos/pc/app/select-wrapper/webdoc/select-wrapper.cn.md +7 -0
  365. package/demos/pc/app/select-wrapper/webdoc/select-wrapper.en.md +7 -0
  366. package/demos/pc/app/select-wrapper/webdoc/select-wrapper.js +721 -0
  367. package/demos/pc/app/space/space-size.vue +1 -1
  368. package/demos/pc/app/switch/webdoc/switch.js +12 -0
  369. package/demos/pc/app/switch/width-composition-api.vue +29 -0
  370. package/demos/pc/app/switch/width.spec.ts +17 -0
  371. package/demos/pc/app/switch/width.vue +35 -0
  372. package/demos/pc/app/tabs/header-only-composition-api.vue +56 -0
  373. package/demos/pc/app/tabs/header-only.vue +40 -29
  374. package/demos/pc/app/time-picker/picker-options.spec.ts +3 -4
  375. package/demos/pc/app/time-picker/step.spec.ts +2 -2
  376. package/demos/pc/app/transfer/basic-usage.spec.ts +4 -4
  377. package/demos/pc/app/tree/filter-view.spec.ts +1 -1
  378. package/demos/pc/app/tree-menu/clearable.spec.ts +1 -5
  379. package/demos/pc/app/tree-select/collapse-tags.vue +2 -18
  380. package/demos/pc/app/tree-select/lazy-composition-api.vue +51 -0
  381. package/demos/pc/app/tree-select/lazy-multiple-composition-api.vue +58 -0
  382. package/demos/pc/app/tree-select/lazy-multiple.vue +66 -0
  383. package/demos/pc/app/tree-select/lazy.vue +59 -0
  384. package/demos/pc/app/tree-select/webdoc/tree-select.js +14 -0
  385. package/demos/pc/app/user/custom-service.spec.ts +1 -1
  386. package/demos/pc/menus.js +19 -10
  387. package/demos/pc/webdoc/architecture.png +0 -0
  388. package/demos/pc/webdoc/import-components-en.md +4 -2
  389. package/demos/pc/webdoc/import-components.md +4 -2
  390. package/demos/pc/webdoc/installation-en.md +5 -3
  391. package/demos/pc/webdoc/installation.md +5 -3
  392. package/demos/pc/webdoc/introduce.md +64 -0
  393. package/demos/pc/webdoc/motion-configuration-en.md +183 -0
  394. package/demos/pc/webdoc/motion-configuration.md +183 -0
  395. package/demos/pc/webdoc/theme-en.md +7 -5
  396. package/demos/pc/webdoc/theme.md +12 -7
  397. package/demos/saas/menus.js +14 -1
  398. package/env/.env.saaspages +1 -1
  399. package/package.json +20 -20
  400. package/playground/App.vue +270 -84
  401. package/playground/assets/icon-layout-vertical.svg +4 -0
  402. package/playground/icons/Github.vue +14 -2
  403. package/playground/icons/Layout.vue +18 -0
  404. package/playground/icons/Reverse.vue +115 -0
  405. package/playground/icons/Set.vue +80 -0
  406. package/playground/icons/Share.vue +103 -8
  407. package/playground/icons/Vertical.vue +19 -0
  408. package/public/static/css/design-common.css +1 -0
  409. package/src/assets/custom-block.less +2 -2
  410. package/src/components/anchor.vue +2 -1
  411. package/src/components/api-docs.vue +2 -2
  412. package/src/components/async-highlight.vue +6 -0
  413. package/src/components/header.vue +19 -0
  414. package/src/views/components-doc/common.vue +20 -3
  415. package/src/views/overview.vue +1 -1
  416. package/demos/pc/app/grid-select/filter-composition-api.vue +0 -49
  417. package/demos/pc/app/grid-select/filter.vue +0 -57
  418. package/demos/pc/app/grid-select/multiple-composition-api.vue +0 -38
  419. package/demos/pc/app/grid-select/multiple.vue +0 -45
@@ -0,0 +1,79 @@
1
+ <template>
2
+ <div>
3
+ <p>场景 1:自定义图标 + 自定义样式</p>
4
+ <tiny-tree-select
5
+ v-model="value"
6
+ :tree-op="treeOp"
7
+ :dropdown-icon="tinyIconPopup"
8
+ :drop-style="{ width: '200px', 'min-width': '200px' }"
9
+ >
10
+ </tiny-tree-select>
11
+ <br />
12
+ <br />
13
+ <p>场景 2:标签类型</p>
14
+ <tiny-tree-select v-model="value2" :tree-op="treeOp" multiple tag-type="warning"></tiny-tree-select>
15
+ </div>
16
+ </template>
17
+
18
+ <script>
19
+ import { TinyTreeSelect } from '@opentiny/vue'
20
+ import { iconPopup } from '@opentiny/vue-icon'
21
+
22
+ export default {
23
+ components: {
24
+ TinyTreeSelect
25
+ },
26
+ data() {
27
+ return {
28
+ tinyIconPopup: iconPopup(),
29
+ value: '',
30
+ value2: [9],
31
+ treeOp: {
32
+ data: [
33
+ {
34
+ value: 1,
35
+ label: '一级 1',
36
+ children: [
37
+ {
38
+ value: 4,
39
+ label: '二级 1-1',
40
+ children: [
41
+ {
42
+ value: 9,
43
+ label: '三级 1-1-1'
44
+ },
45
+ {
46
+ value: 10,
47
+ label: '三级 1-1-2'
48
+ }
49
+ ]
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ value: 2,
55
+ label: '一级 2',
56
+ children: [
57
+ {
58
+ value: 5,
59
+ label: '二级 2-1'
60
+ },
61
+ {
62
+ value: 6,
63
+ label: '二级 2-2'
64
+ }
65
+ ]
66
+ }
67
+ ]
68
+ }
69
+ }
70
+ }
71
+ }
72
+ </script>
73
+
74
+ <style scoped>
75
+ [data-tag='tiny-base-select'],
76
+ [data-tag='tiny-tree-select'] {
77
+ width: 280px;
78
+ }
79
+ </style>
@@ -0,0 +1,78 @@
1
+ <template>
2
+ <div>
3
+ <p>medium</p>
4
+ <tiny-tree-select v-model="value" size="medium" multiple :tree-op="treeOp"></tiny-tree-select>
5
+ <br />
6
+ <br />
7
+ <p>默认</p>
8
+ <tiny-tree-select v-model="value" multiple :tree-op="treeOp"></tiny-tree-select>
9
+ <br />
10
+ <br />
11
+ <p>small</p>
12
+ <tiny-tree-select v-model="value" size="small" multiple :tree-op="treeOp"> </tiny-tree-select>
13
+ <br />
14
+ <br />
15
+ <p>mini</p>
16
+ <tiny-tree-select v-model="value" size="mini" multiple :tree-op="treeOp"> </tiny-tree-select>
17
+ </div>
18
+ </template>
19
+
20
+ <script>
21
+ import { TinyTreeSelect } from '@opentiny/vue'
22
+
23
+ export default {
24
+ components: {
25
+ TinyTreeSelect
26
+ },
27
+ data() {
28
+ return {
29
+ value: [9, 6],
30
+ treeOp: {
31
+ data: [
32
+ {
33
+ value: 1,
34
+ label: '一级 1',
35
+ children: [
36
+ {
37
+ value: 4,
38
+ label: '二级 1-1',
39
+ children: [
40
+ {
41
+ value: 9,
42
+ label: '三级 1-1-1'
43
+ },
44
+ {
45
+ value: 10,
46
+ label: '三级 1-1-2'
47
+ }
48
+ ]
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ value: 2,
54
+ label: '一级 2',
55
+ children: [
56
+ {
57
+ value: 5,
58
+ label: '二级 2-1'
59
+ },
60
+ {
61
+ value: 6,
62
+ label: '二级 2-2'
63
+ }
64
+ ]
65
+ }
66
+ ]
67
+ }
68
+ }
69
+ }
70
+ }
71
+ </script>
72
+
73
+ <style scoped>
74
+ [data-tag='tiny-base-select'],
75
+ [data-tag='tiny-tree-select'] {
76
+ width: 280px;
77
+ }
78
+ </style>
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: TreeSelect 树形选择器
3
+ ---
4
+
5
+ # TreeSelect 树形选择器
6
+
7
+ 结合了 BaseSelect 和 Tree 组件的选择器,用于从一个下拉树中选择一个或多个选项。
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: TreeSelect
3
+ ---
4
+
5
+ # TreeSelect
6
+
7
+ A selector that combines the BaseSelect and Tree components to select one or more options from a drop-down tree.
@@ -0,0 +1,220 @@
1
+ export default {
2
+ column: '2',
3
+ owner: '',
4
+ show: true,
5
+ cloud: true,
6
+ demos: [
7
+ {
8
+ demoId: 'basic-usage',
9
+ name: {
10
+ 'zh-CN': '基本用法',
11
+ 'en-US': 'Basic Usage'
12
+ },
13
+ desc: {
14
+ 'zh-CN': '<p>最基础的用法,通过 <code>tree-op</code> 设置下拉树的数据源,<code>v-model</code> 设置绑定值。</p>',
15
+ 'en-US': ''
16
+ },
17
+ codeFiles: ['basic-usage.vue']
18
+ },
19
+ {
20
+ demoId: 'multiple',
21
+ name: {
22
+ 'zh-CN': '多选',
23
+ 'en-US': 'Multiple'
24
+ },
25
+ desc: {
26
+ 'zh-CN': `通过 <code>multiple</code> 属性启用多选功能,此时 <code>v-model</code> 的值为当前选中值所组成的数组,默认选中值会以标签形式展示。<br>`,
27
+ 'en-US': `Use the <code>multiple</code> attribute to enable the multi-selection function. In this case, the value of <code>v-model</code> is an array of selected values. By default, the selected value is displayed as a tag.<br>`
28
+ },
29
+ codeFiles: ['multiple.vue']
30
+ },
31
+ {
32
+ demoId: 'collapse-tags',
33
+ name: {
34
+ 'zh-CN': '折叠标签',
35
+ 'en-US': 'Collapse tags'
36
+ },
37
+ desc: {
38
+ 'zh-CN':
39
+ '<p>通过 <code>collapse-tags</code> 属性设置选中多个选项时,多个标签缩略展示。设置 <code>hover-expand</code> 为 <code>true</code> ,默认折叠标签,<code>hover</code> 时展示所有标签。标签内容超长时超出省略,<code>hover</code> 标签时展示 <code>tooltip</code> 。</p>\n',
40
+ 'en-US':
41
+ '<p>When multiple options are selected through the <code>collapse-tags</code> attribute settings, multiple tags are displayed in a thumbnail. By setting <code>hover-expand</code> to <code>true</code> , the tags are collapsed by default, and all tags are displayed when hovering. If the content of the tag is too long, it should be omitted. When hovering the tag, a <code>tooltip</code> should be displayed</p>'
42
+ },
43
+ codeFiles: ['collapse-tags.vue']
44
+ },
45
+ {
46
+ demoId: 'size',
47
+ name: {
48
+ 'zh-CN': '尺寸',
49
+ 'en-US': 'Size'
50
+ },
51
+ desc: {
52
+ 'zh-CN': '<p>通过 <code>size</code> 属性设置输入框尺寸,可选值:medium / small / mini。</p>',
53
+ 'en-US':
54
+ '<p>Set the input box size through the <code>size</code> attribute, with optional values of medium / small / mini.</p>'
55
+ },
56
+ codeFiles: ['size.vue']
57
+ },
58
+ {
59
+ demoId: 'disabled',
60
+ name: {
61
+ 'zh-CN': '禁用',
62
+ 'en-US': 'Disabled'
63
+ },
64
+ desc: {
65
+ 'zh-CN': '<p>通过 <code>disabled</code> 属性设置禁用状态。</p>\n',
66
+ 'en-US':
67
+ '<p>Set the disabled status of the dropdown or dropdown item through the <code>disabled</code> attribute. </p>\n'
68
+ },
69
+ codeFiles: ['disabled.vue']
70
+ },
71
+ {
72
+ demoId: 'lazy',
73
+ name: {
74
+ 'zh-CN': '懒加载',
75
+ 'en-US': 'Lazy loading'
76
+ },
77
+ desc: {
78
+ 'zh-CN':
79
+ '通过 <code>lazy</code> 属性,启用懒加载模式。<br>通过 <code>load</code> 函数属性,触发加载,初始会执行一次。<br>通过 <code>after-load</code> 函数属性,监听下级节点加载完毕的事件。'
80
+ },
81
+ codeFiles: ['lazy.vue']
82
+ },
83
+ {
84
+ demoId: 'map-field',
85
+ name: {
86
+ 'zh-CN': '映射字段',
87
+ 'en-US': 'Map Fields'
88
+ },
89
+ desc: {
90
+ 'zh-CN': '通过 <code>text-field</code> 设置显示文本字段,<code>value-field</code>设置绑定值字段。',
91
+ 'en-US':
92
+ '<p>Set the display text field by <code>text-field</code>, and set the binding value field by <code>value-field</code>. </p>\n'
93
+ },
94
+ codeFiles: ['map-field.vue']
95
+ },
96
+ {
97
+ demoId: 'reference-style',
98
+ name: {
99
+ 'zh-CN': '触发源样式',
100
+ 'en-US': 'Reference type'
101
+ },
102
+ desc: {
103
+ 'zh-CN':
104
+ '<p>通过 <code>dropdown-icon</code> 属性可自定义下拉图标,<code>drop-style</code> 属性可自定义下拉选项样式,<code>tag-type</code> 属性设置标签类型(同 Tag 组件的 type 属性),<code>input-box-type</code> 属性设置输入框类型。</p>\n',
105
+ 'en-US':
106
+ '<p>Set the label type through the <code>tag-type</code> attribute, which is the same as the type attribute of the Tag component. Optional values: success/info/warning/danger.</p>\n'
107
+ },
108
+ codeFiles: ['reference-style.vue']
109
+ },
110
+ {
111
+ demoId: 'panel-style',
112
+ name: {
113
+ 'zh-CN': '下拉面板样式',
114
+ 'en-US': 'Panel style'
115
+ },
116
+ desc: {
117
+ 'zh-CN':
118
+ '<p>通过 <code>popper-append-to-body</code> 设置是否将弹框 dom 元素插入至 body 元素,默认为 true,<code>popper-class</code> 属性设置下拉弹框的类名,可自定义样式,<code>placement</code>设置弹出位置。</p>\n',
119
+ 'en-US':
120
+ '<p>You can customize the style by setting the class name of the dropdown pop-up box through the <code>popper-class</code> attribute <code>placement</code> set the pop-up position <code>popper-append-to-body</code> set whether to insert the pop-up dom element into the body element, default to true. </p>\n'
121
+ },
122
+ codeFiles: ['panel-style.vue']
123
+ },
124
+ {
125
+ demoId: 'copy',
126
+ name: {
127
+ 'zh-CN': '可复制',
128
+ 'en-US': 'Copyable'
129
+ },
130
+ desc: {
131
+ 'zh-CN':
132
+ '<p>通过 <code>copyable</code> 设置启用一键复制所有标签的文本内容并以逗号分隔,<code>text-split</code> 自定义复制文本的分隔符。</p>\n',
133
+ 'en-US':
134
+ '<p>When setting radio searchable through the <code>allow-copy</code> attribute, the mouse can slide to select and copy the content of the input box. </p>\n'
135
+ },
136
+ codeFiles: ['copy.vue']
137
+ },
138
+ {
139
+ demoId: 'native-properties',
140
+ name: {
141
+ 'zh-CN': '原生属性',
142
+ 'en-US': 'Native properties'
143
+ },
144
+ desc: {
145
+ 'zh-CN':
146
+ '<p>通过 <code>name</code> / <code>placeholder</code> / <code>autocomplete</code> 属性设置下拉组件内置 Input 的原生属性。</p>\n',
147
+ 'en-US':
148
+ '<p>Set the native properties of the built-in Input in the dropdown component through the <code>name</code> / <code>placeholder</code> / <code>autocomplete</code> attribute settings.</p>\n'
149
+ },
150
+ codeFiles: ['native-properties.vue']
151
+ }
152
+ ],
153
+ features: [
154
+ {
155
+ id: 'basic',
156
+ name: '基本功能',
157
+ support: {
158
+ value: true
159
+ },
160
+ description: '支持基本的树形选择功能,可通过 tree-op 设置数据源。',
161
+ cloud: {
162
+ value: true
163
+ },
164
+ apis: ['tree-op', 'v-model'],
165
+ demos: ['basic-usage']
166
+ },
167
+ {
168
+ id: 'multiple',
169
+ name: '多选',
170
+ support: {
171
+ value: true
172
+ },
173
+ description: '支持多选功能,选中值以标签形式展示。',
174
+ cloud: {
175
+ value: true
176
+ },
177
+ apis: ['multiple'],
178
+ demos: ['multiple']
179
+ },
180
+ {
181
+ id: 'size',
182
+ name: '尺寸',
183
+ support: {
184
+ value: true
185
+ },
186
+ description: '支持 medium、small、mini 三种尺寸。',
187
+ cloud: {
188
+ value: true
189
+ },
190
+ apis: ['size'],
191
+ demos: ['size']
192
+ },
193
+ {
194
+ id: 'disabled',
195
+ name: '禁用状态',
196
+ support: {
197
+ value: true
198
+ },
199
+ description: '支持禁用整个选择器。',
200
+ cloud: {
201
+ value: true
202
+ },
203
+ apis: ['disabled'],
204
+ demos: ['disabled']
205
+ },
206
+ {
207
+ id: 'field-mapping',
208
+ name: '字段映射',
209
+ support: {
210
+ value: true
211
+ },
212
+ description: '支持自定义显示文本字段和绑定值字段。',
213
+ cloud: {
214
+ value: true
215
+ },
216
+ apis: ['text-field', 'value-field'],
217
+ demos: ['map-field']
218
+ }
219
+ ]
220
+ }
@@ -73,6 +73,20 @@ export const cmpMenus = [
73
73
  { name: 'Select', nameCn: '选择器', key: 'select' },
74
74
  { name: 'SelectMobile', nameCn: '面板选择器', key: 'select-mobile' },
75
75
  { name: 'SelectView', nameCn: '页面选择器', key: 'select-view' },
76
+ {
77
+ 'name': 'BaseSelect',
78
+ 'nameCn': '基础选择器',
79
+ 'key': 'base-select'
80
+ },
81
+ {
82
+ name: 'GridSelect',
83
+ nameCn: '下拉表格选择器',
84
+ key: 'grid-select',
85
+ meta: {
86
+ experimental: '3.27.0'
87
+ }
88
+ },
89
+ { name: 'TreeSelect', nameCn: '树形选择器', key: 'tree-select' },
76
90
  { name: 'Slider', nameCn: '滑块', key: 'slider' },
77
91
  { name: 'SliderButton', nameCn: '滑动按钮组', key: 'slider-button' },
78
92
  { name: 'Switch', nameCn: '开关', key: 'switch' },
@@ -8,11 +8,11 @@ test('自定义服务', async ({ page }) => {
8
8
  await page
9
9
  .locator('div')
10
10
  .filter({ hasText: /^币种MZNCNY$/ })
11
- .getByRole('textbox')
11
+ .locator('input[type="text"]')
12
12
  .click()
13
- await page.getByRole('listitem').filter({ hasText: /MZN/ }).locator('div').click()
14
- await page.getByRole('tooltip', { name: '币种 MZN 金额 确定 重置' }).getByRole('textbox').nth(1).click()
15
- await page.getByRole('tooltip', { name: '币种 MZN 金额 确定 重置' }).getByRole('textbox').nth(1).fill('100')
13
+ await page.getByLabel('MZN').locator('div').click()
14
+ await page.getByRole('tooltip', { name: '币种 MZN 金额 确定 重置' }).getByRole('textbox').click()
15
+ await page.getByRole('tooltip', { name: '币种 金额 确定 重置' }).getByRole('textbox').fill('100')
16
16
  await page.getByRole('button', { name: '确定' }).click()
17
17
  expect(await demo.locator('.reference-wrapper input').inputValue()).toEqual('$100.00')
18
18
  })
@@ -4,10 +4,10 @@ test('多选时自定义全部的文本', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('base-select#all-text')
6
6
  const wrap = page.locator('#all-text')
7
- const select = wrap.locator('.tiny-base-select').nth(0)
7
+ const select = wrap.locator('.tiny-base-select')
8
8
  const dropdown = page.locator('body > .tiny-select-dropdown')
9
9
  const option = dropdown.locator('.tiny-option')
10
10
 
11
- await select.locator('.tiny-input__suffix').click()
11
+ await select.click()
12
12
  await expect(option.filter({ hasText: '全部小吃' })).toHaveCount(1)
13
13
  })
@@ -16,12 +16,12 @@ test('点击选中', async ({ page }) => {
16
16
  await input.dispatchEvent('keyup', { KeyboardEvent })
17
17
 
18
18
  await expect(input).toHaveValue('测试 allow-create')
19
- await dropdown.getByRole('listitem').filter({ hasText: '测试 allow-create' }).click()
19
+ await dropdown.getByText('测试 allow-create').click()
20
20
  await expect(input).toHaveValue('测试 allow-create')
21
21
 
22
22
  await input.click()
23
23
  await expect(input).toHaveValue('')
24
- await expect(dropdown.getByRole('listitem').filter({ hasText: '测试 allow-create' })).toHaveClass(/selected/)
24
+ await expect(dropdown.getByRole('option').filter({ hasText: '测试 allow-create' })).toHaveClass(/selected/)
25
25
  })
26
26
 
27
27
  test('enter 选中', async ({ page }) => {
@@ -46,5 +46,5 @@ test('enter 选中', async ({ page }) => {
46
46
  await input.click()
47
47
 
48
48
  await expect(input).toHaveValue('')
49
- await expect(dropdown.getByRole('listitem').filter({ hasText: 'ab' })).toHaveClass(/selected/)
49
+ await expect(dropdown.getByRole('option').filter({ hasText: 'ab' })).toHaveClass(/selected/)
50
50
  })
@@ -23,9 +23,9 @@ test('可搜索时,获取焦点自动下拉', async ({ page }) => {
23
23
 
24
24
  await wrap.getByRole('button').nth(1).click()
25
25
  // 聚焦下拉
26
- await dropdown.getByRole('listitem').filter({ hasText: '上海' }).click()
26
+ await dropdown.getByRole('option').filter({ hasText: '上海' }).click()
27
27
  await expect(input).toHaveValue('上海')
28
28
  // 验证选中
29
29
  await input.click()
30
- await expect(page.getByRole('listitem').filter({ hasText: '上海' })).toHaveClass(/selected/)
30
+ await expect(page.getByRole('option').filter({ hasText: '上海' })).toHaveClass(/selected/)
31
31
  })
@@ -12,8 +12,8 @@ test('基础用法标签式', async ({ page }) => {
12
12
  await input.click()
13
13
  await option.filter({ hasText: '天津' }).click()
14
14
  await expect(input).toHaveValue('天津')
15
- await select.locator('.tiny-input__suffix svg').click()
16
- await expect(page.getByRole('listitem').filter({ hasText: '天津' })).toHaveClass(/selected/)
15
+ await input.click()
16
+ await expect(page.getByRole('option').filter({ hasText: '天津' })).toHaveClass(/selected/)
17
17
  await option.filter({ hasText: '深圳' }).click()
18
18
  await expect(input).toHaveValue('深圳')
19
19
  await input.click()
@@ -35,8 +35,8 @@ test('基础用法配置式', async ({ page }) => {
35
35
  await input.click()
36
36
  await option.filter({ hasText: '天津' }).click()
37
37
  await expect(input).toHaveValue('天津')
38
- await select.locator('.tiny-input__suffix svg').click()
39
- await expect(page.getByRole('listitem').filter({ hasText: '天津' })).toHaveClass(/selected/)
38
+ await input.click()
39
+ await expect(page.getByRole('option').filter({ hasText: '天津' })).toHaveClass(/selected/)
40
40
  await option.filter({ hasText: '深圳' }).click()
41
41
  await expect(input).toHaveValue('深圳')
42
42
  await input.click()
@@ -10,12 +10,12 @@ test('binding-obj', async ({ page }) => {
10
10
  const valueLocator = wrap.locator('.value')
11
11
 
12
12
  await input.click()
13
- await dropdown.getByRole('listitem').filter({ hasText: '重庆' }).click()
13
+ await dropdown.getByRole('option').filter({ hasText: '重庆' }).click()
14
14
  await expect(input).toHaveValue('重庆')
15
15
  await expect(valueLocator).toHaveText('{ "val": "选项 4", "id": 4 }')
16
16
 
17
17
  await input.click()
18
- await dropdown.getByRole('listitem').filter({ hasText: '天津' }).click()
18
+ await dropdown.getByRole('option').filter({ hasText: '天津' }).click()
19
19
  await expect(input).toHaveValue('天津')
20
20
  await expect(valueLocator).toHaveText('{ "val": "选项 3", "id": 3 }')
21
21
  })
@@ -10,10 +10,10 @@ test('cache-op', async ({ page }) => {
10
10
  const cacheValue = wrap.locator('.cache-value')
11
11
 
12
12
  await input.click()
13
- await dropdown.getByRole('listitem').filter({ hasText: '北京' }).click()
13
+ await dropdown.getByRole('option').filter({ hasText: '北京' }).click()
14
14
  await expect(cacheValue).toContainText(['选项 1'])
15
15
 
16
16
  await input.click()
17
- await dropdown.getByRole('listitem').filter({ hasText: '上海' }).click()
17
+ await dropdown.getByRole('option').filter({ hasText: '上海' }).click()
18
18
  await expect(cacheValue).toContainText(['选项 2'])
19
19
  })
@@ -15,7 +15,7 @@ test('clearable', async ({ page }) => {
15
15
  await icon.click()
16
16
  await expect(input).toHaveValue('')
17
17
  // 验证选中
18
- await icon.click()
19
- await dropdown.getByRole('listitem').filter({ hasText: '上海' }).click()
18
+ await input.click()
19
+ await dropdown.getByRole('option').filter({ hasText: '上海' }).click()
20
20
  await expect(input).toHaveValue('上海')
21
21
  })
@@ -14,7 +14,6 @@ test('下划线默认', async ({ page }) => {
14
14
  await expect(input).toHaveCSS('border-left-width', '0px')
15
15
  await expect(input).toHaveCSS('border-right-width', '0px')
16
16
  await expect(input).toHaveCSS('border-bottom-color', 'rgb(194, 194, 194)')
17
- await expect(select.locator('svg')).toHaveCSS('fill', 'rgb(128, 128, 128)')
18
17
 
19
18
  await select.click()
20
19
  await option.first().click()
@@ -36,7 +35,6 @@ test('下划线禁用', async ({ page }) => {
36
35
  await expect(input).toHaveCSS('border-right-width', '0px')
37
36
  await expect(input).toHaveCSS('border-bottom-color', 'rgb(219, 219, 219)')
38
37
  await expect(input).toHaveCSS('cursor', 'not-allowed')
39
- await expect(select.locator('svg')).toHaveCSS('fill', 'rgb(194, 194, 194)')
40
38
  const hasDisabled = await input.evaluate((input) => input.hasAttribute('disabled'))
41
39
  await expect(hasDisabled).toBe(true)
42
40
 
@@ -10,7 +10,7 @@ test('多选时取远端数据与当前已选数据的并集', async ({ page })
10
10
  const tag = select.locator('.tiny-tag')
11
11
 
12
12
  await expect(tag).toHaveCount(2)
13
- await select.locator('.tiny-input__suffix').click()
13
+ await select.click()
14
14
  await option.filter({ hasText: '全部' }).click()
15
15
  await expect(tag).toHaveCount(7)
16
16
  await option.filter({ hasText: '全部' }).click()
@@ -29,7 +29,7 @@ test('searchable-single', async ({ page }) => {
29
29
  })
30
30
  await option.filter({ hasText: '上海' }).click()
31
31
  await page.waitForTimeout(500)
32
- await expect(input).toHaveValue('')
32
+ await expect(input).toHaveValue('上海')
33
33
  })
34
34
 
35
35
  test('searchable-multiple', async ({ page }) => {
@@ -12,5 +12,5 @@ test('custom-reference', async ({ page }) => {
12
12
 
13
13
  await expect(option).toHaveCount(0)
14
14
  await reference.click()
15
- await page.getByRole('listitem').filter({ hasText: /北京/ }).locator('span').click()
15
+ await page.getByRole('option').filter({ hasText: /北京/ }).locator('span').click()
16
16
  })
@@ -28,14 +28,14 @@ export default {
28
28
  'zh-CN': `
29
29
  通过 <code>multiple</code> 属性启用多选功能,此时 <code>v-model</code> 的值为当前选中值所组成的数组。默认选中值会以标签(Tag 组件)展示。<br>
30
30
  通过 <code>multiple-limit</code> 属性限制最多可选择的个数,默认为 0 不限制。<br>
31
- 通过 <code>show-limit-text</code> 属性限制最多可选择的个数,默认为 0 不限制。<br>
31
+ 设置 <code>show-limit-text</code> 可展示选中条数和限制总条数的占比,默认为 false 不展示。<br>
32
32
  多选时,通过给 option 标签配置 <code>required</code> 或者在 options 配置项中添加 <code>required</code> 属性,来设置必选选项。<br>
33
33
  通过 <code>dropdown-icon</code> 属性可自定义下拉图标,<code>drop-style</code> 属性可自定义下拉选项样式。<br>
34
34
  `,
35
35
  'en-US': `
36
36
  Use the <code>multiple</code> attribute to enable the multi-selection function. In this case, the value of <code>v-model</code> is an array of selected values. By default, the selected value is displayed as a tag (Tag component).<br>
37
- The <code>multiple-limit</code> attribute is used to limit the maximum number of users that can be selected. The default value is 0.
38
- The <code>show-limit-text</code> attribute is used to limit the maximum number of users that can be selected. The default value is 0, which is not limited.<br>
37
+ The <code>multiple-limit</code> attribute is used to limit the maximum number of options available. The default value is 0.
38
+ Set <code>show-limit-text</code> to display the proportion of the number of selected items and the maximum number of options available. The default value is false.
39
39
  When multiple options are selected, you can set <code>required</code> for the option tag or add the <code>required</code> attribute to the options configuration item to set mandatory options.<br>
40
40
  You can use the <code>dropdown-icon</code> attribute to customize the drop-down icon, and the <code>drop-style</code> attribute to customize the style of the drop-down options.<br>
41
41
  `
@@ -0,0 +1,10 @@
1
+ <template>
2
+ <tiny-checkbox v-model="checked" name="tiny-checkbox" disabled>复选框</tiny-checkbox>
3
+ </template>
4
+
5
+ <script setup>
6
+ import { ref } from 'vue'
7
+ import { TinyCheckbox } from '@opentiny/vue'
8
+
9
+ const checked = ref(true)
10
+ </script>
@@ -0,0 +1,22 @@
1
+ import { test, expect } from '@playwright/test'
2
+
3
+ test('禁用复选框', async ({ page }) => {
4
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
5
+
6
+ await page.goto('checkbox#disabled')
7
+
8
+ const checkbox = page.locator('#disabled .tiny-checkbox')
9
+
10
+ await expect(checkbox).toHaveClass(/is-disabled/)
11
+ await expect(checkbox).toHaveClass(/is-checked/)
12
+
13
+ // 在浏览器上下文调用原生 click,但先作类型判断,避免 TS 报错
14
+ await checkbox.evaluate((node: Element) => {
15
+ if (node instanceof HTMLElement) {
16
+ node.click()
17
+ }
18
+ })
19
+
20
+ // 状态应保持不变
21
+ await expect(checkbox).toHaveClass(/is-checked/)
22
+ })