@opentiny/vue-docs 2.2.19 → 2.2.21

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 (438) hide show
  1. package/demos/apis/action-menu.js +11 -0
  2. package/demos/apis/cascader.js +10 -0
  3. package/demos/apis/config-provider.js +1 -1
  4. package/demos/apis/date-picker.js +1 -1
  5. package/demos/apis/float-button.js +22 -22
  6. package/demos/apis/form.js +21 -0
  7. package/demos/apis/hui.js +49 -0
  8. package/demos/apis/image.js +32 -7
  9. package/demos/apis/mind-map.js +36 -41
  10. package/demos/apis/numeric.js +24 -0
  11. package/demos/apis/popeditor.js +1 -1
  12. package/demos/apis/roles.js +13 -0
  13. package/demos/apis/select.js +34 -0
  14. package/demos/apis/skeleton.js +10 -10
  15. package/demos/apis/statistic.js +144 -0
  16. package/demos/apis/tag.js +17 -7
  17. package/demos/apis/time-line.js +2 -1
  18. package/demos/mobile/app/alert/basic-usage.spec.ts +36 -0
  19. package/demos/mobile/app/alert/center.spec.ts +11 -0
  20. package/demos/mobile/app/alert/custom-close.spec.ts +45 -0
  21. package/demos/mobile/app/alert/custom-close.vue +6 -3
  22. package/demos/mobile/app/alert/icon.spec.ts +11 -0
  23. package/demos/mobile/app/alert/size.spec.ts +17 -0
  24. package/demos/mobile/app/alert/size.vue +1 -2
  25. package/demos/mobile/app/alert/slot-default.spec.ts +12 -0
  26. package/demos/mobile/app/alert/target.spec.ts +8 -0
  27. package/demos/mobile/app/alert/webdoc/alert.js +4 -4
  28. package/demos/mobile/app/input/basic-usage.spec.ts +25 -0
  29. package/demos/mobile/app/input/clearable.spec.ts +13 -0
  30. package/demos/mobile/app/input/counter.spec.ts +19 -0
  31. package/demos/mobile/app/input/counter.vue +1 -1
  32. package/demos/mobile/app/input/disabled.spec.ts +17 -0
  33. package/demos/mobile/app/input/events.spec.ts +24 -0
  34. package/demos/mobile/app/input/methods.spec.ts +23 -0
  35. package/demos/mobile/app/input/native-attributes.spec.ts +14 -0
  36. package/demos/mobile/app/input/native-attributes.vue +0 -5
  37. package/demos/mobile/app/input/prefix-suffix-icon.spec.ts +12 -0
  38. package/demos/mobile/app/input/show-password.spec.ts +16 -0
  39. package/demos/mobile/app/input/slots.spec.ts +32 -0
  40. package/demos/mobile/app/input/slots.vue +7 -7
  41. package/demos/mobile/app/input/textarea-rows-cols.spec.ts +11 -0
  42. package/demos/mobile/app/input/textarea-rows-cols.vue +3 -3
  43. package/demos/mobile/app/input/textarea-scalable.spec.ts +25 -0
  44. package/demos/mobile/app/input/textarea-scalable.vue +21 -10
  45. package/demos/mobile/app/input/type-select.spec.ts +20 -0
  46. package/demos/mobile/app/input/type.spec.ts +20 -0
  47. package/demos/mobile/app/input/validate-event.spec.ts +22 -0
  48. package/demos/mobile/app/input/webdoc/input.js +36 -36
  49. package/demos/mobile-first/app/numeric/empty-value-composition-api.vue +15 -0
  50. package/demos/mobile-first/app/numeric/empty-value.vue +24 -0
  51. package/demos/mobile-first/app/numeric/webdoc/numeric.js +14 -0
  52. package/demos/mobile-first/app/select/collapse-tags.vue +1 -1
  53. package/demos/mobile-first/app/select/webdoc/select.js +3 -2
  54. package/demos/pc/app/action-menu/card-mode-composition-api.vue +31 -0
  55. package/demos/pc/app/action-menu/card-mode.spec.ts +16 -0
  56. package/demos/pc/app/action-menu/card-mode.vue +39 -0
  57. package/demos/pc/app/action-menu/webdoc/action-menu.js +14 -0
  58. package/demos/pc/app/button/ghost-composition-api.vue +6 -6
  59. package/demos/pc/app/button/ghost.spec.ts +13 -6
  60. package/demos/pc/app/button/ghost.vue +6 -6
  61. package/demos/pc/app/calendar-view/calendar-event-composition-api.vue +5 -0
  62. package/demos/pc/app/calendar-view/calendar-event.spec.ts +5 -0
  63. package/demos/pc/app/calendar-view/calendar-event.vue +5 -1
  64. package/demos/pc/app/calendar-view/set-working-day-composition-api.vue +3 -0
  65. package/demos/pc/app/calendar-view/set-working-day.vue +3 -0
  66. package/demos/pc/app/calendar-view/webdoc/calendar-view.js +43 -20
  67. package/demos/pc/app/cascader/slot-composition-api.vue +226 -0
  68. package/demos/pc/app/cascader/slot.spec.ts +16 -0
  69. package/demos/pc/app/cascader/slot.vue +234 -0
  70. package/demos/pc/app/cascader/webdoc/cascader.js +18 -0
  71. package/demos/pc/app/chart/amap/amap.spec.ts +6 -0
  72. package/demos/pc/app/chart/amap/amap.spec.ts-snapshots/base-chromium-win32.png +0 -0
  73. package/demos/pc/app/chart/bar/bar.spec.ts +43 -0
  74. package/demos/pc/app/chart/bar/bar.spec.ts-snapshots/base-chromium-win32.png +0 -0
  75. package/demos/pc/app/chart/bar/bar.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  76. package/demos/pc/app/chart/bar/bar.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  77. package/demos/pc/app/chart/bar/bar.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  78. package/demos/pc/app/chart/bar/bar.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  79. package/demos/pc/app/chart/bar/bar.spec.ts-snapshots/demo6-chromium-win32.png +0 -0
  80. package/demos/pc/app/chart/bar/bar.spec.ts-snapshots/demo7-chromium-win32.png +0 -0
  81. package/demos/pc/app/chart/bmap/bmap.spec.ts +7 -0
  82. package/demos/pc/app/chart/bmap/bmap.spec.ts-snapshots/base-chromium-win32.png +0 -0
  83. package/demos/pc/app/chart/boxplot/boxplot.spec.ts +19 -0
  84. package/demos/pc/app/chart/boxplot/boxplot.spec.ts-snapshots/base-chromium-win32.png +0 -0
  85. package/demos/pc/app/chart/boxplot/boxplot.spec.ts-snapshots/multiple-chromium-win32.png +0 -0
  86. package/demos/pc/app/chart/boxplot/boxplot.spec.ts-snapshots/vertical-chromium-win32.png +0 -0
  87. package/demos/pc/app/chart/candle/candle.spec.ts +43 -0
  88. package/demos/pc/app/chart/candle/candle.spec.ts-snapshots/base-chromium-win32.png +0 -0
  89. package/demos/pc/app/chart/candle/candle.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  90. package/demos/pc/app/chart/candle/candle.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  91. package/demos/pc/app/chart/candle/candle.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  92. package/demos/pc/app/chart/candle/candle.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  93. package/demos/pc/app/chart/candle/candle.spec.ts-snapshots/demo6-chromium-win32.png +0 -0
  94. package/demos/pc/app/chart/candle/candle.spec.ts-snapshots/demo7-chromium-win32.png +0 -0
  95. package/demos/pc/app/chart/funnel/funnel.spec.ts +43 -0
  96. package/demos/pc/app/chart/funnel/funnel.spec.ts-snapshots/base-chromium-win32.png +0 -0
  97. package/demos/pc/app/chart/funnel/funnel.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  98. package/demos/pc/app/chart/funnel/funnel.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  99. package/demos/pc/app/chart/funnel/funnel.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  100. package/demos/pc/app/chart/funnel/funnel.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  101. package/demos/pc/app/chart/funnel/funnel.spec.ts-snapshots/demo6-chromium-win32.png +0 -0
  102. package/demos/pc/app/chart/funnel/funnel.spec.ts-snapshots/demo7-chromium-win32.png +0 -0
  103. package/demos/pc/app/chart/gauge/gauge.spec.ts +37 -0
  104. package/demos/pc/app/chart/gauge/gauge.spec.ts-snapshots/base-chromium-win32.png +0 -0
  105. package/demos/pc/app/chart/gauge/gauge.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  106. package/demos/pc/app/chart/gauge/gauge.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  107. package/demos/pc/app/chart/gauge/gauge.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  108. package/demos/pc/app/chart/gauge/gauge.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  109. package/demos/pc/app/chart/gauge/gauge.spec.ts-snapshots/demo6-chromium-win32.png +0 -0
  110. package/demos/pc/app/chart/graph/graph.spec.ts +19 -0
  111. package/demos/pc/app/chart/graph/graph.spec.ts-snapshots/base-chromium-win32.png +0 -0
  112. package/demos/pc/app/chart/graph/graph.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  113. package/demos/pc/app/chart/graph/graph.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  114. package/demos/pc/app/chart/heatmap/heatmap.spec.ts +31 -0
  115. package/demos/pc/app/chart/heatmap/heatmap.spec.ts-snapshots/base-chromium-win32.png +0 -0
  116. package/demos/pc/app/chart/heatmap/heatmap.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  117. package/demos/pc/app/chart/heatmap/heatmap.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  118. package/demos/pc/app/chart/heatmap/heatmap.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  119. package/demos/pc/app/chart/heatmap/heatmap.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  120. package/demos/pc/app/chart/histogram/histogram.spec.ts +49 -0
  121. package/demos/pc/app/chart/histogram/histogram.spec.ts-snapshots/base-chromium-win32.png +0 -0
  122. package/demos/pc/app/chart/histogram/histogram.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  123. package/demos/pc/app/chart/histogram/histogram.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  124. package/demos/pc/app/chart/histogram/histogram.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  125. package/demos/pc/app/chart/histogram/histogram.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  126. package/demos/pc/app/chart/histogram/histogram.spec.ts-snapshots/demo6-chromium-win32.png +0 -0
  127. package/demos/pc/app/chart/histogram/histogram.spec.ts-snapshots/demo7-chromium-win32.png +0 -0
  128. package/demos/pc/app/chart/histogram/histogram.spec.ts-snapshots/demo8-chromium-win32.png +0 -0
  129. package/demos/pc/app/chart/line/line.spec.ts +55 -0
  130. package/demos/pc/app/chart/line/line.spec.ts-snapshots/base-chromium-win32.png +0 -0
  131. package/demos/pc/app/chart/line/line.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  132. package/demos/pc/app/chart/line/line.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  133. package/demos/pc/app/chart/line/line.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  134. package/demos/pc/app/chart/line/line.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  135. package/demos/pc/app/chart/line/line.spec.ts-snapshots/demo6-chromium-win32.png +0 -0
  136. package/demos/pc/app/chart/line/line.spec.ts-snapshots/demo7-chromium-win32.png +0 -0
  137. package/demos/pc/app/chart/line/line.spec.ts-snapshots/demo8-chromium-win32.png +0 -0
  138. package/demos/pc/app/chart/line/line.spec.ts-snapshots/demo9-chromium-win32.png +0 -0
  139. package/demos/pc/app/chart/liquidfill/liquidfill.spec.ts +7 -0
  140. package/demos/pc/app/chart/liquidfill/liquidfill.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  141. package/demos/pc/app/chart/map/base-composition-api.vue +7 -2
  142. package/demos/pc/app/chart/map/base.vue +3 -2
  143. package/demos/pc/app/chart/map/map.spec.ts +7 -0
  144. package/demos/pc/app/chart/map/map.spec.ts-snapshots/base-chromium-win32.png +0 -0
  145. package/demos/pc/app/chart/pie/pie.spec.ts +43 -0
  146. package/demos/pc/app/chart/pie/pie.spec.ts-snapshots/base-chromium-win32.png +0 -0
  147. package/demos/pc/app/chart/pie/pie.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  148. package/demos/pc/app/chart/pie/pie.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  149. package/demos/pc/app/chart/pie/pie.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  150. package/demos/pc/app/chart/pie/pie.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  151. package/demos/pc/app/chart/pie/pie.spec.ts-snapshots/demo6-chromium-win32.png +0 -0
  152. package/demos/pc/app/chart/pie/pie.spec.ts-snapshots/demo7-chromium-win32.png +0 -0
  153. package/demos/pc/app/chart/process/base-composition-api.vue +29 -0
  154. package/demos/pc/app/chart/process/base.vue +37 -0
  155. package/demos/pc/app/chart/process/demo2-composition-api.vue +32 -0
  156. package/demos/pc/app/chart/process/demo2.vue +40 -0
  157. package/demos/pc/app/chart/process/demo3-composition-api.vue +71 -0
  158. package/demos/pc/app/chart/process/demo3.vue +79 -0
  159. package/demos/pc/app/chart/process/demo4-composition-api.vue +29 -0
  160. package/demos/pc/app/chart/process/demo4.vue +37 -0
  161. package/demos/pc/app/chart/process/demo5-composition-api.vue +28 -0
  162. package/demos/pc/app/chart/process/demo5.vue +36 -0
  163. package/demos/pc/app/chart/process/demo6-composition-api.vue +44 -0
  164. package/demos/pc/app/chart/process/demo6.vue +52 -0
  165. package/demos/pc/app/chart/radar/radar.spec.ts +19 -0
  166. package/demos/pc/app/chart/radar/radar.spec.ts-snapshots/base-chromium-win32.png +0 -0
  167. package/demos/pc/app/chart/radar/radar.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  168. package/demos/pc/app/chart/radar/radar.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  169. package/demos/pc/app/chart/ring/ring.spec.ts +43 -0
  170. package/demos/pc/app/chart/ring/ring.spec.ts-snapshots/base-chromium-win32.png +0 -0
  171. package/demos/pc/app/chart/ring/ring.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  172. package/demos/pc/app/chart/ring/ring.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  173. package/demos/pc/app/chart/ring/ring.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  174. package/demos/pc/app/chart/ring/ring.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  175. package/demos/pc/app/chart/ring/ring.spec.ts-snapshots/demo6-chromium-win32.png +0 -0
  176. package/demos/pc/app/chart/ring/ring.spec.ts-snapshots/ring-title-chromium-win32.png +0 -0
  177. package/demos/pc/app/chart/sankey/sankey.spec.ts +13 -0
  178. package/demos/pc/app/chart/sankey/sankey.spec.ts-snapshots/base-chromium-win32.png +0 -0
  179. package/demos/pc/app/chart/sankey/sankey.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  180. package/demos/pc/app/chart/scatter/scatter.spec.ts +49 -0
  181. package/demos/pc/app/chart/scatter/scatter.spec.ts-snapshots/base-chromium-win32.png +0 -0
  182. package/demos/pc/app/chart/scatter/scatter.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  183. package/demos/pc/app/chart/scatter/scatter.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  184. package/demos/pc/app/chart/scatter/scatter.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  185. package/demos/pc/app/chart/scatter/scatter.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  186. package/demos/pc/app/chart/scatter/scatter.spec.ts-snapshots/demo6-chromium-win32.png +0 -0
  187. package/demos/pc/app/chart/scatter/scatter.spec.ts-snapshots/demo7-chromium-win32.png +0 -0
  188. package/demos/pc/app/chart/scatter/scatter.spec.ts-snapshots/demo8-chromium-win32.png +0 -0
  189. package/demos/pc/app/chart/sunburst/sunburst.spec.ts +19 -0
  190. package/demos/pc/app/chart/sunburst/sunburst.spec.ts-snapshots/base-chromium-win32.png +0 -0
  191. package/demos/pc/app/chart/sunburst/sunburst.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  192. package/demos/pc/app/chart/sunburst/sunburst.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  193. package/demos/pc/app/chart/tree/tree.spec.ts +31 -0
  194. package/demos/pc/app/chart/tree/tree.spec.ts-snapshots/base-chromium-win32.png +0 -0
  195. package/demos/pc/app/chart/tree/tree.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  196. package/demos/pc/app/chart/tree/tree.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  197. package/demos/pc/app/chart/tree/tree.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  198. package/demos/pc/app/chart/tree/tree.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  199. package/demos/pc/app/chart/waterfall/waterfall.spec.ts +31 -0
  200. package/demos/pc/app/chart/waterfall/waterfall.spec.ts-snapshots/base-chromium-win32.png +0 -0
  201. package/demos/pc/app/chart/waterfall/waterfall.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  202. package/demos/pc/app/chart/waterfall/waterfall.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  203. package/demos/pc/app/chart/waterfall/waterfall.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  204. package/demos/pc/app/chart/waterfall/waterfall.spec.ts-snapshots/demo5-chromium-win32.png +0 -0
  205. package/demos/pc/app/chart/webdoc/chart-process.cn.md +7 -0
  206. package/demos/pc/app/chart/webdoc/chart-process.en.md +7 -0
  207. package/demos/pc/app/chart/webdoc/chart-process.js +55 -0
  208. package/demos/pc/app/chart/webdoc/chart-process.json.cn.md +7 -0
  209. package/demos/pc/app/chart/webdoc/chart-process.json.en.md +7 -0
  210. package/demos/pc/app/chart/wordcloud/wordcloud.spec.ts +25 -0
  211. package/demos/pc/app/chart/wordcloud/wordcloud.spec.ts-snapshots/base-chromium-win32.png +0 -0
  212. package/demos/pc/app/chart/wordcloud/wordcloud.spec.ts-snapshots/demo2-chromium-win32.png +0 -0
  213. package/demos/pc/app/chart/wordcloud/wordcloud.spec.ts-snapshots/demo3-chromium-win32.png +0 -0
  214. package/demos/pc/app/chart/wordcloud/wordcloud.spec.ts-snapshots/demo4-chromium-win32.png +0 -0
  215. package/demos/pc/app/company/custom-service.spec.ts +2 -1
  216. package/demos/pc/app/country/custom-service.spec.js +1 -1
  217. package/demos/pc/app/date-picker/basic-usage-composition-api.vue +2 -0
  218. package/demos/pc/app/date-picker/basic-usage.vue +2 -0
  219. package/demos/pc/app/date-picker/default-value.spec.ts +2 -2
  220. package/demos/pc/app/date-picker/events.spec.ts +3 -3
  221. package/demos/pc/app/date-picker/format.spec.ts +2 -2
  222. package/demos/pc/app/dropdown/options.spec.ts +3 -0
  223. package/demos/pc/app/dropdown/trigger.spec.ts +2 -2
  224. package/demos/pc/app/file-upload/http-request-composition-api.vue +5 -3
  225. package/demos/pc/app/file-upload/http-request.vue +4 -2
  226. package/demos/pc/app/float-button/backTop.spec.ts +14 -0
  227. package/demos/pc/app/float-button/basic-usage.spec.ts +34 -0
  228. package/demos/pc/app/float-button/icon.spec.ts +10 -0
  229. package/demos/pc/app/float-button/jump.spec.ts +8 -0
  230. package/demos/pc/app/float-button/reset-time.spec.ts +18 -0
  231. package/demos/pc/app/float-button/trigger.spec.ts +16 -0
  232. package/demos/pc/app/form/error-slot-composition-api.vue +62 -0
  233. package/demos/pc/app/form/error-slot.spec.ts +15 -0
  234. package/demos/pc/app/form/error-slot.vue +71 -0
  235. package/demos/pc/app/form/extra-tip-composition-api.vue +48 -0
  236. package/demos/pc/app/form/extra-tip.spec.ts +15 -0
  237. package/demos/pc/app/form/extra-tip.vue +57 -0
  238. package/demos/pc/app/form/webdoc/form.js +34 -4
  239. package/demos/pc/app/grid/filter/simple-date-filter.spec.ts +2 -1
  240. package/demos/pc/app/grid/fixed/group-header-fixed-composition-api.vue +212 -0
  241. package/demos/pc/app/grid/fixed/group-header-fixed.vue +232 -0
  242. package/demos/pc/app/grid/large-data/column-anchor-clear-active-composition-api.vue +190 -0
  243. package/demos/pc/app/grid/large-data/column-anchor-clear-active.vue +199 -0
  244. package/demos/pc/app/grid/large-data/column-anchor-composition-api.vue +124 -0
  245. package/demos/pc/app/grid/large-data/scroll-to.spec.js +1 -1
  246. package/demos/pc/app/grid/renderer/inner-renderer-rate-composition-api.vue +50 -0
  247. package/demos/pc/app/grid/renderer/inner-renderer-rate.spec.js +12 -0
  248. package/demos/pc/app/grid/renderer/inner-renderer-rate.vue +60 -0
  249. package/demos/pc/app/grid/size/grid-size.spec.js +2 -2
  250. package/demos/pc/app/grid/tree-table/set-tree-expansion-composition-api.vue +2 -2
  251. package/demos/pc/app/grid/tree-table/set-tree-expansion.vue +2 -2
  252. package/demos/pc/app/grid/tree-table/tree-grid-index-composition-api.vue +2 -2
  253. package/demos/pc/app/grid/tree-table/tree-grid-index.spec.js +16 -4
  254. package/demos/pc/app/grid/tree-table/tree-grid-index.vue +2 -2
  255. package/demos/pc/app/grid/tree-table/tree-grid-insert-delete-update-composition-api.vue +7 -2
  256. package/demos/pc/app/grid/tree-table/tree-grid-insert-delete-update.spec.js +6 -2
  257. package/demos/pc/app/grid/tree-table/tree-grid-insert-delete-update.vue +5 -2
  258. package/demos/pc/app/grid/webdoc/grid-custom-style.js +1 -1
  259. package/demos/pc/app/grid/webdoc/grid-editor.js +1 -1
  260. package/demos/pc/app/grid/webdoc/grid-fixed.js +11 -0
  261. package/demos/pc/app/grid/webdoc/grid-large-data.js +24 -0
  262. package/demos/pc/app/grid/webdoc/grid-renderer.js +11 -0
  263. package/demos/pc/app/grid/webdoc/grid-toolbar.js +1 -1
  264. package/demos/pc/app/image/count-slot-composition-api.vue +32 -0
  265. package/demos/pc/app/image/count-slot.spec.ts +16 -0
  266. package/demos/pc/app/image/count-slot.vue +40 -0
  267. package/demos/pc/app/image/index-change-composition-api.vue +29 -0
  268. package/demos/pc/app/image/index-change.spec.ts +16 -0
  269. package/demos/pc/app/image/index-change.vue +37 -0
  270. package/demos/pc/app/image/keep-style-composition-api.vue +24 -0
  271. package/demos/pc/app/image/keep-style.spec.ts +56 -0
  272. package/demos/pc/app/image/keep-style.vue +32 -0
  273. package/demos/pc/app/image/preview-composition-api.vue +1 -1
  274. package/demos/pc/app/image/preview.vue +1 -1
  275. package/demos/pc/app/image/webdoc/image.js +73 -11
  276. package/demos/pc/app/mind-map/basic-usage-composition-api.vue +4 -4
  277. package/demos/pc/app/mind-map/basic-usage.vue +4 -4
  278. package/demos/pc/app/mind-map/event-composition-api.vue +13 -45
  279. package/demos/pc/app/mind-map/event.spec.ts +11 -8
  280. package/demos/pc/app/mind-map/event.vue +27 -57
  281. package/demos/pc/app/mind-map/export-data-composition-api.vue +7 -9
  282. package/demos/pc/app/mind-map/export-data.vue +13 -13
  283. package/demos/pc/app/mind-map/webdoc/mind-map.js +38 -10
  284. package/demos/pc/app/numeric/controls-composition-api.vue +10 -4
  285. package/demos/pc/app/numeric/controls.vue +10 -4
  286. package/demos/pc/app/numeric/empty-value-composition-api.vue +15 -0
  287. package/demos/pc/app/numeric/empty-value.spec.ts +15 -0
  288. package/demos/pc/app/numeric/empty-value.vue +24 -0
  289. package/demos/pc/app/numeric/mouse-wheel.spec.ts +1 -1
  290. package/demos/pc/app/numeric/precision-composition-api.vue +10 -4
  291. package/demos/pc/app/numeric/precision.vue +10 -4
  292. package/demos/pc/app/numeric/string-mode-composition-api.vue +10 -0
  293. package/demos/pc/app/numeric/string-mode.spec.ts +17 -0
  294. package/demos/pc/app/numeric/string-mode.vue +19 -0
  295. package/demos/pc/app/numeric/webdoc/numeric.js +52 -26
  296. package/demos/pc/app/popconfirm/trigger.spec.ts +8 -6
  297. package/demos/pc/app/popconfirm/type.spec.ts +6 -5
  298. package/demos/pc/app/popeditor/condition-layout-composition-api.vue +3 -2
  299. package/demos/pc/app/popeditor/condition-layout.vue +3 -2
  300. package/demos/pc/app/popeditor/slot-footer-composition-api.vue +2 -2
  301. package/demos/pc/app/popeditor/slot-footer.vue +2 -2
  302. package/demos/pc/app/popeditor/webdoc/popeditor.js +11 -12
  303. package/demos/pc/app/radio/dynamic-disable-composition-api.vue +7 -4
  304. package/demos/pc/app/radio/dynamic-disable.vue +8 -5
  305. package/demos/pc/app/roles/base-composition-api.vue +2 -2
  306. package/demos/pc/app/roles/base.vue +2 -2
  307. package/demos/pc/app/select/collapse-tags-composition-api.vue +7 -1
  308. package/demos/pc/app/select/collapse-tags.spec.ts +50 -29
  309. package/demos/pc/app/select/collapse-tags.vue +10 -3
  310. package/demos/pc/app/select/copy-multi.spec.ts +1 -0
  311. package/demos/pc/app/select/copy-single.spec.ts +1 -0
  312. package/demos/pc/app/select/disabled-composition-api.vue +2 -2
  313. package/demos/pc/app/select/disabled.spec.ts +3 -3
  314. package/demos/pc/app/select/disabled.vue +2 -2
  315. package/demos/pc/app/select/events-composition-api.vue +0 -1
  316. package/demos/pc/app/select/events.spec.ts +3 -4
  317. package/demos/pc/app/select/events.vue +0 -1
  318. package/demos/pc/app/select/multiple.vue +1 -1
  319. package/demos/pc/app/select/nest-grid-remote-composition-api.vue +120 -0
  320. package/demos/pc/app/select/nest-grid-remote.spec.ts +135 -0
  321. package/demos/pc/app/select/nest-grid-remote.vue +136 -0
  322. package/demos/pc/app/select/size.spec.ts +4 -2
  323. package/demos/pc/app/select/webdoc/select.js +10 -24
  324. package/demos/pc/app/skeleton/animation-composition-api.vue +25 -0
  325. package/demos/pc/app/skeleton/animation.spec.ts +19 -0
  326. package/demos/pc/app/skeleton/animation.vue +36 -0
  327. package/demos/pc/app/skeleton/custom-layout-composition-api.vue +19 -3
  328. package/demos/pc/app/skeleton/custom-layout.spec.ts +4 -7
  329. package/demos/pc/app/skeleton/custom-layout.vue +19 -3
  330. package/demos/pc/app/skeleton/custom-paragraph-width-composition-api.vue +1 -1
  331. package/demos/pc/app/skeleton/custom-paragraph-width.spec.ts +1 -1
  332. package/demos/pc/app/skeleton/custom-paragraph-width.vue +1 -1
  333. package/demos/pc/app/skeleton/custom-rows.spec.ts +1 -1
  334. package/demos/pc/app/skeleton/fine-grained-mode-composition-api.vue +5 -22
  335. package/demos/pc/app/skeleton/fine-grained-mode.spec.ts +4 -40
  336. package/demos/pc/app/skeleton/fine-grained-mode.vue +6 -23
  337. package/demos/pc/app/skeleton/loading-completed-composition-api.vue +3 -13
  338. package/demos/pc/app/skeleton/loading-completed.spec.ts +1 -12
  339. package/demos/pc/app/skeleton/loading-completed.vue +4 -10
  340. package/demos/pc/app/skeleton/size-composition-api.vue +16 -0
  341. package/demos/pc/app/skeleton/size.spec.ts +14 -0
  342. package/demos/pc/app/skeleton/size.vue +23 -0
  343. package/demos/pc/app/skeleton/webdoc/skeleton.js +42 -21
  344. package/demos/pc/app/statistic/basic-usage-composition-api.vue +26 -0
  345. package/demos/pc/app/statistic/basic-usage.spec.ts +20 -0
  346. package/demos/pc/app/statistic/basic-usage.vue +38 -0
  347. package/demos/pc/app/statistic/statistic-slot-composition-api.vue +39 -0
  348. package/demos/pc/app/statistic/statistic-slot.spec.ts +13 -0
  349. package/demos/pc/app/statistic/statistic-slot.vue +51 -0
  350. package/demos/pc/app/statistic/statistic-style-composition-api.vue +29 -0
  351. package/demos/pc/app/statistic/statistic-style.spec.ts +7 -0
  352. package/demos/pc/app/statistic/statistic-style.vue +41 -0
  353. package/demos/pc/app/statistic/webdoc/statistic.cn.md +7 -0
  354. package/demos/pc/app/statistic/webdoc/statistic.en.md +7 -0
  355. package/demos/pc/app/statistic/webdoc/statistic.js +46 -0
  356. package/demos/pc/app/tabs/tabs-events-close.spec.ts +1 -1
  357. package/demos/pc/app/tag/color3-composition-api.vue +19 -1
  358. package/demos/pc/app/tag/color3.spec.ts +7 -11
  359. package/demos/pc/app/tag/color3.vue +19 -1
  360. package/demos/pc/app/tag/webdoc/tag.js +4 -4
  361. package/demos/pc/app/time-line/custom-field-composition-api.vue +4 -1
  362. package/demos/pc/app/time-line/custom-field.spec.ts +1 -0
  363. package/demos/pc/app/time-line/custom-field.vue +4 -1
  364. package/demos/pc/app/time-line/custom-icon-composition-api.vue +21 -0
  365. package/demos/pc/app/time-line/custom-icon.spec.ts +14 -0
  366. package/demos/pc/app/time-line/custom-icon.vue +34 -0
  367. package/demos/pc/app/time-line/status-composition-api.vue +24 -3
  368. package/demos/pc/app/time-line/status.spec.ts +53 -11
  369. package/demos/pc/app/time-line/status.vue +14 -3
  370. package/demos/pc/app/time-line/webdoc/time-line.js +57 -44
  371. package/demos/pc/app/time-picker/default-value.spec.ts +6 -4
  372. package/demos/pc/app/time-picker/disabled.spec.ts +2 -7
  373. package/demos/pc/app/time-picker/editable.spec.ts +4 -1
  374. package/demos/pc/app/time-picker/format.spec.ts +6 -8
  375. package/demos/pc/app/time-picker/is-range.spec.ts +1 -1
  376. package/demos/pc/app/time-picker/picker-options.spec.ts +16 -14
  377. package/demos/pc/app/tree-menu/lazy-load-composition-api.vue +1 -1
  378. package/demos/pc/app/tree-menu/lazy-load.vue +1 -1
  379. package/demos/pc/menus.js +73 -68
  380. package/demos/pc/webdoc/aui-adapter-en.md +207 -0
  381. package/demos/pc/webdoc/aui-adapter.md +207 -0
  382. package/demos/pc/webdoc/changelog.md +67 -3
  383. package/demos/saas/menus.js +2 -3
  384. package/index.html +1 -1
  385. package/package.json +11 -11
  386. package/src/tools/useApiMode.js +1 -1
  387. package/src/tools/useTheme.js +2 -1
  388. package/src/views/components/components.vue +17 -6
  389. package/src/views/layout/layout.vue +3 -4
  390. package/src/views/overview.vue +9 -5
  391. package/demos/apis/credit-card-form.js +0 -98
  392. package/demos/apis/detail-page.js +0 -126
  393. package/demos/apis/slide-bar.js +0 -104
  394. package/demos/pc/app/credit-card-form/background-image-composition-api.vue +0 -17
  395. package/demos/pc/app/credit-card-form/background-image.vue +0 -25
  396. package/demos/pc/app/credit-card-form/basic-usage-composition-api.vue +0 -16
  397. package/demos/pc/app/credit-card-form/basic-usage.vue +0 -24
  398. package/demos/pc/app/credit-card-form/credit-card-form-events-composition-api.vue +0 -51
  399. package/demos/pc/app/credit-card-form/credit-card-form-events.vue +0 -55
  400. package/demos/pc/app/credit-card-form/webdoc/credit-card-form.cn.md +0 -7
  401. package/demos/pc/app/credit-card-form/webdoc/credit-card-form.en.md +0 -7
  402. package/demos/pc/app/credit-card-form/webdoc/credit-card-form.js +0 -46
  403. package/demos/pc/app/detail-page/basic-usage-composition-api.vue +0 -32
  404. package/demos/pc/app/detail-page/basic-usage.spec.ts +0 -29
  405. package/demos/pc/app/detail-page/basic-usage.vue +0 -40
  406. package/demos/pc/app/detail-page/custom-show-text-composition-api.vue +0 -41
  407. package/demos/pc/app/detail-page/custom-show-text.spec.ts +0 -16
  408. package/demos/pc/app/detail-page/custom-show-text.vue +0 -49
  409. package/demos/pc/app/detail-page/webdoc/detail-page.cn.md +0 -7
  410. package/demos/pc/app/detail-page/webdoc/detail-page.en.md +0 -7
  411. package/demos/pc/app/detail-page/webdoc/detail-page.js +0 -38
  412. package/demos/pc/app/select/nest-grid-remote-multi-composition-api.vue +0 -106
  413. package/demos/pc/app/select/nest-grid-remote-multi.spec.ts +0 -68
  414. package/demos/pc/app/select/nest-grid-remote-multi.vue +0 -118
  415. package/demos/pc/app/select/nest-grid-remote-single-composition-api.vue +0 -230
  416. package/demos/pc/app/select/nest-grid-remote-single.spec.ts +0 -62
  417. package/demos/pc/app/select/nest-grid-remote-single.vue +0 -238
  418. package/demos/pc/app/slide-bar/basic-usage-composition-api.vue +0 -21
  419. package/demos/pc/app/slide-bar/basic-usage.spec.ts +0 -12
  420. package/demos/pc/app/slide-bar/basic-usage.vue +0 -29
  421. package/demos/pc/app/slide-bar/custom-content-composition-api.vue +0 -26
  422. package/demos/pc/app/slide-bar/custom-content.spec.ts +0 -10
  423. package/demos/pc/app/slide-bar/custom-content.vue +0 -34
  424. package/demos/pc/app/slide-bar/custom-tag-composition-api.vue +0 -93
  425. package/demos/pc/app/slide-bar/custom-tag.spec.ts +0 -10
  426. package/demos/pc/app/slide-bar/custom-tag.vue +0 -101
  427. package/demos/pc/app/slide-bar/slide-bar-events-composition-api.vue +0 -37
  428. package/demos/pc/app/slide-bar/slide-bar-events.spec.ts +0 -11
  429. package/demos/pc/app/slide-bar/slide-bar-events.vue +0 -45
  430. package/demos/pc/app/slide-bar/webdoc/slide-bar.cn.md +0 -7
  431. package/demos/pc/app/slide-bar/webdoc/slide-bar.en.md +0 -7
  432. package/demos/pc/app/slide-bar/webdoc/slide-bar.js +0 -72
  433. package/demos/pc/app/slide-bar/wheel-blocks-composition-api.vue +0 -21
  434. package/demos/pc/app/slide-bar/wheel-blocks.spec.ts +0 -13
  435. package/demos/pc/app/slide-bar/wheel-blocks.vue +0 -29
  436. package/demos/pc/overviewimage/credit-card-form.svg +0 -91
  437. package/demos/pc/overviewimage/detail-page.svg +0 -90
  438. package/demos/pc/overviewimage/slide-bar.svg +0 -96
@@ -82,12 +82,12 @@ const options2 = ref([
82
82
  { value: '选项1', label: '黄金糕' },
83
83
  { value: '选项2', label: '双皮奶', disabled: true },
84
84
  { value: '选项3', label: '蚵仔煎' },
85
- { value: '选项4', label: '龙须面' },
85
+ { value: '选项4', label: '龙须面', disabled: true },
86
86
  { value: '选项5', label: '北京烤鸭' }
87
87
  ])
88
88
 
89
89
  const value1 = ref('')
90
- const value2 = ref([])
90
+ const value2 = ref(['选项2'])
91
91
  const value3 = ref('')
92
92
  const value4 = ref(['选项2', '选项3'])
93
93
  const value5 = ref(['选项1', '选项2', '选项3', '选项4', '选项5'])
@@ -19,15 +19,15 @@ test('多选某项禁用', async ({ page }) => {
19
19
  const tag = select.locator('.tiny-tag')
20
20
  const option = dropdown.locator('.tiny-option')
21
21
 
22
- await expect(tag).toHaveCount(0)
22
+ await expect(tag).toHaveCount(1)
23
23
  await select.click()
24
24
  await expect(option.filter({ hasText: '双皮奶' })).toHaveClass(/is-disabled/)
25
25
 
26
26
  await option.filter({ hasText: '双皮奶' }).click()
27
- await expect(tag).toHaveCount(0)
27
+ await expect(tag).toHaveCount(1)
28
28
 
29
29
  await option.filter({ hasText: '黄金糕' }).click()
30
- await expect(tag).toHaveCount(1)
30
+ await expect(tag).toHaveCount(2)
31
31
  await expect(tag.filter({ hasText: '黄金糕' })).toHaveCount(1)
32
32
  })
33
33
 
@@ -87,11 +87,11 @@ export default {
87
87
  { value: '选项1', label: '黄金糕' },
88
88
  { value: '选项2', label: '双皮奶', disabled: true },
89
89
  { value: '选项3', label: '蚵仔煎' },
90
- { value: '选项4', label: '龙须面' },
90
+ { value: '选项4', label: '龙须面', disabled: true },
91
91
  { value: '选项5', label: '北京烤鸭' }
92
92
  ],
93
93
  value1: '',
94
- value2: [],
94
+ value2: ['选项2'],
95
95
  value3: '',
96
96
  value4: ['选项2', '选项3'],
97
97
  value5: ['选项1', '选项2', '选项3', '选项4', '选项5']
@@ -48,7 +48,6 @@ const value2 = ref([])
48
48
  const change = () => {
49
49
  Modal.message({
50
50
  message: '触发 change 事件',
51
- duration: 500,
52
51
  status: 'info'
53
52
  })
54
53
  }
@@ -26,7 +26,7 @@ test('单选事件', async ({ page }) => {
26
26
 
27
27
  await page.waitForTimeout(200)
28
28
  await input.hover()
29
- await select.locator('.tiny-select__caret').click()
29
+ await select.locator('.tiny-select__caret.icon-close').click()
30
30
  await page.waitForTimeout(500)
31
31
  await expect(input).toHaveValue('')
32
32
  await expect(model.filter({ hasText: '触发 clear 事件' })).toHaveCount(1)
@@ -42,8 +42,8 @@ test('多选事件', async ({ page }) => {
42
42
  const option = dropdown.locator('.tiny-option')
43
43
  const model = page.locator('.tiny-modal')
44
44
 
45
+ await page.waitForTimeout(500)
45
46
  await select.click()
46
- await expect(model.filter({ hasText: '触发 focus 事件' })).toHaveCount(1)
47
47
  await expect(model.filter({ hasText: '触发 visible-change 事件' })).toHaveCount(1)
48
48
 
49
49
  await option.nth(1).click()
@@ -56,7 +56,6 @@ test('多选事件', async ({ page }) => {
56
56
 
57
57
  await page.waitForTimeout(500)
58
58
  await tag.first().locator('.tiny-tag__close').click()
59
- await expect(model.filter({ hasText: '触发 blur 事件' })).toHaveCount(1)
60
59
  await expect(model.filter({ hasText: '触发 change 事件' })).toHaveCount(1)
61
60
  await expect(model.filter({ hasText: '触发 remove-tag 事件' })).toHaveCount(1)
62
61
  await expect(tag).toHaveCount(4)
@@ -66,7 +65,7 @@ test('多选事件', async ({ page }) => {
66
65
 
67
66
  await page.waitForTimeout(200)
68
67
  await select.hover()
69
- await select.locator('.tiny-select__caret').click()
68
+ await select.locator('.tiny-select__caret.icon-close').click()
70
69
 
71
70
  await expect(tag).toHaveCount(0)
72
71
  await expect(model.filter({ hasText: '触发 change 事件' })).toHaveCount(1)
@@ -59,7 +59,6 @@ export default {
59
59
  change() {
60
60
  Modal.message({
61
61
  message: '触发 change 事件',
62
- duration: 500,
63
62
  status: 'info'
64
63
  })
65
64
  },
@@ -3,7 +3,7 @@
3
3
  <br />
4
4
  <div>场景1:多选</div>
5
5
  <br />
6
- <tiny-select v-model="value1" multiple>
6
+ <tiny-select v-model="value1" multiple searchable>
7
7
  <tiny-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value"> </tiny-option>
8
8
  </tiny-select>
9
9
  <br />
@@ -0,0 +1,120 @@
1
+ <template>
2
+ <div>
3
+ <p>场景1:单选,下拉表格远程搜索基础用法</p>
4
+ <tiny-select
5
+ v-model="value1"
6
+ placeholder="请输入关键词"
7
+ render-type="grid"
8
+ filterable
9
+ remote
10
+ :remote-method="remoteMethod"
11
+ :grid-op="gridOpRadio"
12
+ ></tiny-select>
13
+
14
+ <p>场景2:单选,下拉表格远程搜索 + 自动搜索 + 显示按钮</p>
15
+ <tiny-select
16
+ v-model="value2"
17
+ placeholder="请输入关键词"
18
+ render-type="grid"
19
+ filterable
20
+ remote
21
+ :remote-method="remoteMethod"
22
+ :grid-op="gridOpRadio"
23
+ :remote-config="{ autoSearch: true, clearData: true, showIcon: true }"
24
+ ></tiny-select>
25
+
26
+ <p>场景3:多选,下拉表格远程搜索基础用法</p>
27
+ <tiny-select
28
+ v-model="value3"
29
+ placeholder="请输入关键词"
30
+ multiple
31
+ render-type="grid"
32
+ reserve-keyword
33
+ filterable
34
+ remote
35
+ :remote-method="remoteMethod"
36
+ :grid-op="gridOpMultiple"
37
+ ></tiny-select>
38
+
39
+ <p>场景4:多选,下拉表格远程搜索 + 自动搜索 + 显示按钮</p>
40
+ <tiny-select
41
+ v-model="value4"
42
+ placeholder="请输入关键词"
43
+ multiple
44
+ reserve-keyword
45
+ filterable
46
+ remote
47
+ render-type="grid"
48
+ :remote-method="remoteMethod"
49
+ :grid-op="gridOpMultiple"
50
+ :remote-config="{ autoSearch: true, clearData: true, showIcon: true }"
51
+ ></tiny-select>
52
+ </div>
53
+ </template>
54
+
55
+ <script setup>
56
+ import { ref } from 'vue'
57
+ import { Select as TinySelect } from '@opentiny/vue'
58
+
59
+ const allData = Array.from({ length: 1000 }, (a, i) => {
60
+ return {
61
+ value: '00' + i,
62
+ province: '省份' + i,
63
+ city: '城市' + i,
64
+ area: '区域' + i,
65
+ label: `省${i}-市${i}`
66
+ }
67
+ })
68
+ const baseGridOp = {
69
+ data: [],
70
+ height: 300,
71
+ optimization: {
72
+ animat: true,
73
+ delayHover: 250,
74
+ scrollX: { gt: 20 },
75
+ scrollY: { gt: 20 }
76
+ }
77
+ }
78
+ const baseCols = [
79
+ { field: 'province', title: '省份' },
80
+ { field: 'city', title: '城市' },
81
+ { field: 'area', title: '区域' }
82
+ ]
83
+
84
+ const value1 = ref('')
85
+ const value2 = ref('')
86
+ const value3 = ref([])
87
+ const value4 = ref([])
88
+ const gridOpRadio = {
89
+ ...baseGridOp,
90
+ columns: [{ type: 'radio', title: '' }, ...baseCols]
91
+ }
92
+ const gridOpMultiple = {
93
+ ...baseGridOp,
94
+ columns: [{ type: 'selection', title: '' }, ...baseCols]
95
+ }
96
+
97
+ const filter = (value) => {
98
+ return allData.filter((item) => item.city.includes(value))
99
+ }
100
+
101
+ const remoteMethod = (value) => {
102
+ const filterData = filter(value)
103
+
104
+ return new Promise((resolve) => {
105
+ setTimeout(() => {
106
+ resolve(filterData)
107
+ }, 500)
108
+ })
109
+ }
110
+ </script>
111
+
112
+ <style scoped>
113
+ .tiny-select {
114
+ width: 280px;
115
+ }
116
+ p {
117
+ font-size: 14px;
118
+ line-height: 1.5;
119
+ }
120
+ </style>
@@ -0,0 +1,135 @@
1
+ import { expect, test } from '@playwright/test'
2
+
3
+ test.describe('下拉表格远程搜索', () => {
4
+ test('单选,下拉表格远程搜索基础用法', async ({ page }) => {
5
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
6
+ await page.goto('select#nest-grid-remote')
7
+
8
+ const wrap = page.locator('#nest-grid-remote')
9
+ const select = wrap.locator('.tiny-select').nth(0)
10
+ const input = select.locator('.tiny-input__inner')
11
+ const dropdown = page.locator('body > .tiny-select-dropdown')
12
+ const suffixSvg = dropdown.locator('.tiny-input__suffix .tiny-select__caret')
13
+
14
+ await expect(suffixSvg).toBeHidden()
15
+ await expect(dropdown).toBeHidden()
16
+ await input.focus()
17
+ await input.fill(' ')
18
+ await input.press('Enter')
19
+ await page.waitForTimeout(200)
20
+ await expect(dropdown).toBeVisible()
21
+ await expect(dropdown.locator('.tiny-grid__body tbody')).toBeEmpty()
22
+ await input.fill('1')
23
+ await input.press('Enter')
24
+ await page.waitForTimeout(200)
25
+ await expect(dropdown.locator('.tiny-grid__body tbody')).not.toBeEmpty()
26
+
27
+ const row1 = page.getByRole('row', { name: '省份1 城市1 区域1' })
28
+ const row2 = page.getByRole('row', { name: '省份2 城市2 区域2' })
29
+ await expect(row2).not.toBeVisible()
30
+ await row1.getByRole('cell').first().click()
31
+ await expect(row1).toHaveClass(/row__current/)
32
+ await expect(input).toHaveValue('省1-市1')
33
+
34
+ const row3 = page.getByRole('row', { name: '省份10 城市10 区域10' })
35
+ await input.click()
36
+ await row3.getByRole('cell').first().click()
37
+ await expect(input).toHaveValue('省10-市10')
38
+ })
39
+
40
+ test('单选,下拉表格远程搜索 + 自动搜索 + 显示按钮', async ({ page }) => {
41
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
42
+ await page.goto('select#nest-grid-remote')
43
+
44
+ const wrap = page.locator('#nest-grid-remote')
45
+ const select = wrap.locator('.tiny-select').nth(1)
46
+ const input = select.locator('.tiny-input__inner')
47
+ const dropdown = page.locator('body > .tiny-select-dropdown')
48
+ const suffixSvg = select.locator('.tiny-input__suffix .tiny-select__caret')
49
+
50
+ await expect(suffixSvg).toBeVisible()
51
+ await expect(dropdown).toBeHidden()
52
+ await input.click()
53
+ await expect(dropdown).toBeVisible()
54
+ await expect(dropdown.locator('.tiny-grid__body tbody')).not.toBeEmpty()
55
+ await page.getByRole('row', { name: '省份2 城市2 区域2' }).getByRole('cell').first().click()
56
+ await expect(input).toHaveValue('省2-市2')
57
+ await input.click()
58
+ await expect(page.getByRole('row', { name: '省份2 城市2 区域2' })).toHaveClass(/row__current/)
59
+ await page.getByRole('row', { name: '省份6 城市6 区域6' }).getByRole('cell').first().click()
60
+ await expect(input).toHaveValue('省6-市6')
61
+ await input.click()
62
+ await expect(page.getByRole('row', { name: '省份6 城市6 区域6' })).toHaveClass(/row__current/)
63
+ await input.fill(' ')
64
+ await input.press('Enter')
65
+ await expect(dropdown).toBeVisible()
66
+ await expect(dropdown.locator('.tiny-grid__body tbody')).toBeEmpty()
67
+ })
68
+
69
+ test('多选,下拉表格远程搜索基础用法', async ({ page }) => {
70
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
71
+ await page.goto('select#nest-grid-remote')
72
+ const wrap = page.locator('#nest-grid-remote')
73
+ const select = wrap.locator('.tiny-select').nth(2)
74
+ const input = select.locator('.tiny-select__input')
75
+ const dropdown = page.locator('body > .tiny-select-dropdown')
76
+ const suffixSvg = select.locator('.tiny-input__suffix .tiny-select__caret').first()
77
+
78
+ // 下拉按钮不显示
79
+ await expect(suffixSvg).toBeHidden()
80
+ await expect(dropdown).toBeHidden()
81
+
82
+ await input.fill(' ')
83
+ await input.press('Enter')
84
+ await page.waitForTimeout(1000)
85
+ await expect(dropdown).toBeVisible()
86
+ await expect(dropdown.locator('.tiny-grid__body tbody')).toBeEmpty()
87
+ await input.fill('')
88
+ await input.press('Enter')
89
+ await page.waitForTimeout(1000)
90
+ await expect(dropdown.locator('.tiny-grid__body tbody')).not.toBeEmpty()
91
+ await page.getByRole('row', { name: '省份0 城市0 区域0' }).getByRole('cell').first().click()
92
+ const tags = page.locator('.tiny-select .tiny-tag')
93
+ expect((await tags.all()).length).toEqual(1)
94
+ await expect(tags.first()).toContainText(/市0/)
95
+ await page.getByRole('row', { name: '省份1 城市1 区域1' }).getByRole('cell').first().click()
96
+ expect((await tags.all()).length).toEqual(2)
97
+ await expect(tags.first()).toContainText(/市0/)
98
+ await expect(tags.nth(1)).toContainText(/市1/)
99
+ })
100
+
101
+ test('多选,下拉表格远程搜索 + 自动搜索 + 显示按钮', async ({ page }) => {
102
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
103
+ await page.goto('select#nest-grid-remote')
104
+
105
+ const wrap = page.locator('#nest-grid-remote')
106
+ const select = wrap.locator('.tiny-select').nth(3)
107
+ const input = select.locator('.tiny-select__input')
108
+ const dropdown = page.locator('body > .tiny-select-dropdown')
109
+ const suffixSvg = select.locator('.tiny-input__suffix .tiny-select__caret').first()
110
+ const tag = select.locator('.tiny-tag')
111
+
112
+ await expect(suffixSvg).toBeVisible()
113
+ await expect(dropdown).toBeHidden()
114
+ await select.click()
115
+ await expect(dropdown).toBeVisible()
116
+ await expect(dropdown.locator('.tiny-grid__body tbody')).not.toBeEmpty()
117
+
118
+ await dropdown.getByRole('row', { name: '省份0 城市0 区域0' }).getByRole('cell').first().click()
119
+
120
+ expect((await tag.all()).length).toEqual(1)
121
+ await expect(tag.first()).toContainText(/市0/)
122
+
123
+ await dropdown.getByRole('row', { name: '省份1 城市1 区域1' }).getByRole('cell').first().click()
124
+ expect((await tag.all()).length).toEqual(2)
125
+ await expect(tag.first()).toContainText(/市0/)
126
+ await expect(tag.nth(1)).toContainText(/市1/)
127
+ await tag.nth(0).locator('.tiny-svg').click()
128
+ await tag.nth(0).locator('.tiny-svg').click()
129
+ await expect((await tag.all()).length).toEqual(0)
130
+ await input.fill(' ')
131
+ await input.press('Enter')
132
+ await expect(dropdown).toBeVisible()
133
+ await expect(dropdown.locator('.tiny-grid__body tbody')).toBeEmpty()
134
+ })
135
+ })
@@ -0,0 +1,136 @@
1
+ <template>
2
+ <div>
3
+ <p>场景1:单选,下拉表格远程搜索基础用法</p>
4
+ <tiny-select
5
+ v-model="value1"
6
+ placeholder="请输入关键词"
7
+ render-type="grid"
8
+ filterable
9
+ remote
10
+ :remote-method="remoteMethod"
11
+ :grid-op="gridOpRadio"
12
+ ></tiny-select>
13
+
14
+ <p>场景2:单选,下拉表格远程搜索 + 自动搜索 + 显示按钮</p>
15
+ <tiny-select
16
+ v-model="value2"
17
+ placeholder="请输入关键词"
18
+ render-type="grid"
19
+ filterable
20
+ remote
21
+ :remote-method="remoteMethod"
22
+ :grid-op="gridOpRadio"
23
+ :remote-config="{ autoSearch: true, clearData: true, showIcon: true }"
24
+ ></tiny-select>
25
+
26
+ <p>场景3:多选,下拉表格远程搜索基础用法</p>
27
+ <tiny-select
28
+ v-model="value3"
29
+ placeholder="请输入关键词"
30
+ multiple
31
+ render-type="grid"
32
+ reserve-keyword
33
+ filterable
34
+ remote
35
+ :remote-method="remoteMethod"
36
+ :grid-op="gridOpMultiple"
37
+ ></tiny-select>
38
+
39
+ <p>场景4:多选,下拉表格远程搜索 + 自动搜索 + 显示按钮</p>
40
+ <tiny-select
41
+ v-model="value4"
42
+ placeholder="请输入关键词"
43
+ multiple
44
+ reserve-keyword
45
+ filterable
46
+ remote
47
+ render-type="grid"
48
+ :remote-method="remoteMethod"
49
+ :grid-op="gridOpMultiple"
50
+ :remote-config="{ autoSearch: true, clearData: true, showIcon: true }"
51
+ ></tiny-select>
52
+ </div>
53
+ </template>
54
+
55
+ <script>
56
+ import { Select } from '@opentiny/vue'
57
+
58
+ export default {
59
+ components: {
60
+ TinySelect: Select
61
+ },
62
+ created() {
63
+ this.allData = Array.from({ length: 1000 }, (a, i) => {
64
+ return {
65
+ value: '00' + i,
66
+ province: '省份' + i,
67
+ city: '城市' + i,
68
+ area: '区域' + i,
69
+ label: `省${i}-市${i}`
70
+ }
71
+ })
72
+ },
73
+ data() {
74
+ const baseGridOp = {
75
+ data: [],
76
+ height: 300,
77
+ optimization: {
78
+ animat: true,
79
+ delayHover: 250,
80
+ scrollX: { gt: 20 },
81
+ scrollY: { gt: 20 }
82
+ }
83
+ }
84
+ const baseCols = [
85
+ {
86
+ field: 'province',
87
+ title: '省份'
88
+ },
89
+ { field: 'city', title: '城市' },
90
+ {
91
+ field: 'area',
92
+ title: '区域'
93
+ }
94
+ ]
95
+ return {
96
+ allData: [],
97
+ value1: '',
98
+ value2: '',
99
+ value3: [],
100
+ value4: [],
101
+ gridOpRadio: {
102
+ ...baseGridOp,
103
+ columns: [{ type: 'radio', title: '' }, ...baseCols]
104
+ },
105
+ gridOpMultiple: {
106
+ ...baseGridOp,
107
+ columns: [{ type: 'selection', title: '' }, ...baseCols]
108
+ }
109
+ }
110
+ },
111
+ methods: {
112
+ remoteMethod(value) {
113
+ const filterData = this.filter(value)
114
+
115
+ return new Promise((resolve) => {
116
+ setTimeout(() => {
117
+ resolve(filterData)
118
+ }, 500)
119
+ })
120
+ },
121
+ filter(value) {
122
+ return this.allData.filter((item) => item.city.includes(value))
123
+ }
124
+ }
125
+ }
126
+ </script>
127
+
128
+ <style scoped>
129
+ .tiny-select {
130
+ width: 280px;
131
+ }
132
+ p {
133
+ font-size: 14px;
134
+ line-height: 1.5;
135
+ }
136
+ </style>
@@ -35,10 +35,11 @@ test('small 尺寸', async ({ page }) => {
35
35
  const select = wrap.locator('.tiny-select').nth(2)
36
36
  const input = select.locator('.tiny-input')
37
37
  const tag = select.locator('.tiny-tag')
38
+ const { height } = await input.locator('.tiny-input__inner').boundingBox()
38
39
 
39
40
  await expect(input).toHaveClass(/tiny-input-small/)
40
- await expect(input.locator('.tiny-input__inner')).toHaveCSS('height', '32px')
41
41
  await expect(tag.nth(0)).toHaveClass(/tiny-tag--small tiny-tag--light/)
42
+ expect(height).toBeCloseTo(32, 1)
42
43
  })
43
44
 
44
45
  test('mini 尺寸', async ({ page }) => {
@@ -49,8 +50,9 @@ test('mini 尺寸', async ({ page }) => {
49
50
  const select = wrap.locator('.tiny-select').nth(3)
50
51
  const input = select.locator('.tiny-input')
51
52
  const tag = select.locator('.tiny-tag')
53
+ const { height } = await input.locator('.tiny-input__inner').boundingBox()
52
54
 
53
55
  await expect(input).toHaveClass(/tiny-input-mini/)
54
- await expect(input.locator('.tiny-input__inner')).toHaveCSS('height', '24px')
55
56
  await expect(tag.nth(0)).toHaveClass(/tiny-tag--mini tiny-tag--light/)
57
+ expect(height).toBeCloseTo(24, 1)
56
58
  })
@@ -38,9 +38,9 @@ export default {
38
38
  },
39
39
  desc: {
40
40
  'zh-CN':
41
- '<p>通过 <code>collapse-tags</code> 属性设置选中多个选项时,多个标签缩略展示。多选时通过设置 <code>hover-expand</code> 为 <code>true</code> ,默认折叠标签, hover 时展示所有标签。标签内容超长时超出省略,hover 标签时展示 tooltip。</p>\n',
41
+ '<p>通过 <code>collapse-tags</code> 属性设置选中多个选项时,多个标签缩略展示。设置 <code>show-proportion</code> 可展示当前选中条数和总条数占比,默认值为 <code>false</code> 。设置 <code>hover-expand</code> 为 <code>true</code> ,默认折叠标签, <code>hover</code> 时展示所有标签。标签内容超长时超出省略,<code>hover</code> 标签时展示 <code>tooltip</code> 。</p>\n',
42
42
  'en-US':
43
- '<p>When multiple options are selected through the <code>collapse-tags</code> attribute settings, multiple tags will be abbreviated and displayed.</p>\n'
43
+ '<p>When multiple options are selected through the <code>collapse-tags</code> attribute settings, multiple tags are displayed in a thumbnail. Set <code>show-proportion</code> to display the current number of selected items and the proportion of total items, with a default value of <code>false</code> . 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>'
44
44
  },
45
45
  codeFiles: ['collapse-tags.vue']
46
46
  },
@@ -460,32 +460,18 @@ export default {
460
460
  codeFiles: ['nest-grid-disable.vue']
461
461
  },
462
462
  {
463
- demoId: 'nest-grid-remote-single',
463
+ demoId: 'nest-grid-remote',
464
464
  name: {
465
- 'zh-CN': '下拉表格远程搜索(单选)',
466
- 'en-US': 'Select table Remote Search (Single)'
465
+ 'zh-CN': '下拉表格远程搜索',
466
+ 'en-US': 'Select table Remote Search'
467
467
  },
468
468
  desc: {
469
- 'zh-CN':
470
- '<p>通过 <code>remote</code> 和 <code>remote-method</code> 和 <code>filterable</code> 开启远程搜索。通过 <code>remote-config</code> 设置自动搜索和显示展开按钮 。</p>\n',
471
- 'en-US':
472
- '<p>Enable remote search through <code>remote</code>,<code>remote-method</code>, and <code>filterable</code>. Set up automatic search and display expansion buttons through <code>remote-config</code>.</p>'
473
- },
474
- codeFiles: ['nest-grid-remote-single.vue']
475
- },
476
- {
477
- demoId: 'nest-grid-remote-multi',
478
- name: {
479
- 'zh-CN': '下拉表格远程搜索(多选)',
480
- 'en-US': 'Select table Remote Search (Multiple)'
481
- },
482
- desc: {
483
- 'zh-CN':
484
- '<p>通过 <code>remote</code> 和 <code>remote-method</code> 和 <code>filterable</code> 开启远程搜索。通过 <code>remote-config</code> 设置自动搜索和显示展开按钮。<code>reserve-keyword</code>设置多选选中一个选项后依然保留搜索关键字。</p>\n',
485
- 'en-US':
486
- '<p>Enable remote search through <code>remote</code>,<code>remote-method</code>, and <code>filterable</code>. Set up automatic search and display expansion buttons through <code>remote-config</code> <code>reserve-keyword</code> set to retain search keywords after selecting multiple options.</p>'
469
+ 'zh-CN': `<p>同时使用 <code>remote</code> 和 <code>remote-method</code> 和 <code>filterable</code> 3个属性开启远程搜索。通过 <code>remote-config</code> 设置自动搜索和显示展开按钮。</p>
470
+ <p>在多选模式下,可通过 <code>reserve-keyword</code>设置选中一个选项后依然保留搜索关键字。</p>`,
471
+ 'en-US': `<p>Enable remote search through <code>remote</code>,<code>remote-method</code>, and <code>filterable</code>. Set up automatic search and display expansion buttons through <code>remote-config</code>.</p>
472
+ <p>In multiple selection mode, <code>reserve-keyword</code> set to retain search keywords after selecting multiple options.</p>`
487
473
  },
488
- codeFiles: ['nest-grid-remote-multi.vue']
474
+ codeFiles: ['nest-grid-remote.vue']
489
475
  },
490
476
  {
491
477
  demoId: 'nest-grid-init-query',
@@ -0,0 +1,25 @@
1
+ <template>
2
+ <div>
3
+ <tiny-button @click="handler">{{ animated ? '关闭' : '开启' }}</tiny-button>
4
+ <br /><br />
5
+ <tiny-skeleton :animated="animated">
6
+ <template #placeholder>
7
+ <tiny-skeleton-item></tiny-skeleton-item>
8
+ <br />
9
+ <br />
10
+ <tiny-skeleton-item variant="image"></tiny-skeleton-item>
11
+ </template>
12
+ </tiny-skeleton>
13
+ </div>
14
+ </template>
15
+
16
+ <script setup>
17
+ import { Skeleton as TinySkeleton, Button as TinyButton, SkeletonItem as TinySkeletonItem } from '@opentiny/vue'
18
+ import { ref } from 'vue'
19
+
20
+ const animated = ref(true)
21
+
22
+ const handler = () => {
23
+ animated.value = !animated.value
24
+ }
25
+ </script>
@@ -0,0 +1,19 @@
1
+ import { expect, test } from '@playwright/test'
2
+
3
+ test('动画效果', async ({ page }) => {
4
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
5
+ await page.goto('skeleton#animation')
6
+
7
+ const square = page.locator('.tiny-skeleton-item--square')
8
+ const image = page.locator('.tiny-skeleton-item--image')
9
+
10
+ // 测试动画效果
11
+ await expect(square).toHaveClass(/tiny-skeleton-item--active/)
12
+ await expect(image).toHaveClass(/tiny-skeleton-item--active/)
13
+
14
+ const button = page.locator('.tiny-button')
15
+ await button.click()
16
+ await page.waitForTimeout(500)
17
+ await expect(square).toHaveClass(/tiny-skeleton-item/)
18
+ await expect(image).toHaveClass(/tiny-skeleton-item/)
19
+ })
@@ -0,0 +1,36 @@
1
+ <template>
2
+ <div>
3
+ <tiny-button @click="handler">{{ animated ? '关闭' : '开启' }}</tiny-button>
4
+ <br /><br />
5
+ <tiny-skeleton :animated="animated">
6
+ <template #placeholder>
7
+ <tiny-skeleton-item></tiny-skeleton-item>
8
+ <br />
9
+ <br />
10
+ <tiny-skeleton-item variant="image"></tiny-skeleton-item>
11
+ </template>
12
+ </tiny-skeleton>
13
+ </div>
14
+ </template>
15
+
16
+ <script>
17
+ import { Skeleton, SkeletonItem, Button } from '@opentiny/vue'
18
+
19
+ export default {
20
+ components: {
21
+ TinySkeleton: Skeleton,
22
+ TinySkeletonItem: SkeletonItem,
23
+ TinyButton: Button
24
+ },
25
+ data() {
26
+ return {
27
+ animated: true
28
+ }
29
+ },
30
+ methods: {
31
+ handler() {
32
+ this.animated = !this.animated
33
+ }
34
+ }
35
+ }
36
+ </script>