@opentiny/vue-docs 2.2.4 → 2.2.6

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 (414) hide show
  1. package/demos/mobile/app/container/basic-usage.vue +105 -0
  2. package/demos/mobile/app/container/custom-width.vue +93 -0
  3. package/demos/mobile/app/container/webdoc/container.cn.md +7 -0
  4. package/demos/mobile/app/container/webdoc/container.en.md +7 -0
  5. package/demos/mobile/app/container/webdoc/container.js +80 -0
  6. package/demos/mobile/app/pull-refresh/animation-duration.vue +58 -12
  7. package/demos/mobile/app/pull-refresh/base.vue +32 -18
  8. package/demos/mobile/app/pull-refresh/disabled-pull-down.vue +66 -0
  9. package/demos/mobile/app/pull-refresh/disabled-pull-up.vue +67 -0
  10. package/demos/mobile/app/pull-refresh/{hasmore.vue → event.vue} +21 -20
  11. package/demos/mobile/app/pull-refresh/{enhance.vue → has-more.vue} +20 -25
  12. package/demos/mobile/app/pull-refresh/loosing-text.vue +55 -12
  13. package/demos/mobile/app/pull-refresh/pull-refresh-slot.vue +64 -15
  14. package/demos/mobile/app/pull-refresh/pull-up-distance.vue +74 -0
  15. package/demos/mobile/app/pull-refresh/pulling-text.vue +56 -12
  16. package/demos/mobile/app/pull-refresh/webdoc/pull-refresh.js +98 -120
  17. package/demos/mobile/app/tabs/before-leave.vue +3 -3
  18. package/demos/mobile/app/tabs/tabs-events.vue +7 -7
  19. package/demos/mobile/menus.js +4 -1
  20. package/demos/mobile-first/app/tabs/basic-usage.vue +3 -3
  21. package/demos/mobile-first/app/tabs/before-leave.vue +3 -3
  22. package/demos/mobile-first/app/tabs/change-title.vue +2 -2
  23. package/demos/mobile-first/app/tabs/custom-tab-content.vue +3 -3
  24. package/demos/mobile-first/app/tabs/custom-tab-title.vue +3 -3
  25. package/demos/mobile-first/app/tabs/position-bottom.vue +10 -10
  26. package/demos/mobile-first/app/tabs/position-left.vue +10 -10
  27. package/demos/mobile-first/app/tabs/position-right.vue +10 -10
  28. package/demos/mobile-first/app/tabs/position.vue +10 -10
  29. package/demos/mobile-first/app/tabs/prevent-tab-switching.vue +3 -3
  30. package/demos/mobile-first/app/tabs/stretch-wh.vue +3 -3
  31. package/demos/mobile-first/app/tabs/tab-style-bordercard.vue +10 -10
  32. package/demos/mobile-first/app/tabs/tab-style-card.vue +10 -10
  33. package/demos/mobile-first/app/tabs/tabdata-title.vue +4 -4
  34. package/demos/mobile-first/app/tabs/tabs-draggable.vue +1 -1
  35. package/demos/mobile-first/app/tabs/tabs-events-add.vue +3 -3
  36. package/demos/mobile-first/app/tabs/tabs-events-click.vue +3 -3
  37. package/demos/mobile-first/app/tabs/tabs-events-close.vue +4 -4
  38. package/demos/mobile-first/app/tabs/tabs-events-edit.vue +4 -4
  39. package/demos/mobile-first/app/tabs/tabs-separator.vue +8 -8
  40. package/demos/mobile-first/app/tabs/tabs-size.vue +3 -3
  41. package/demos/mobile-first/app/tabs/tabs-tabs.vue +2 -2
  42. package/demos/mobile-first/app/tabs/with-add.vue +1 -1
  43. package/demos/pc/app/action-menu/disabled.vue +2 -1
  44. package/demos/pc/app/action-menu/icon-composition-api.vue +73 -0
  45. package/demos/pc/app/action-menu/icon.vue +79 -0
  46. package/demos/pc/app/action-menu/popper-class.spec.ts +2 -1
  47. package/demos/pc/app/action-menu/webdoc/action-menu.js +42 -1
  48. package/demos/pc/app/autocomplete/webdoc/autocomplete.js +30 -16
  49. package/demos/pc/app/breadcrumb/webdoc/breadcrumb.js +3 -3
  50. package/demos/pc/app/button/basic-usage-composition-api.vue +2 -0
  51. package/demos/pc/app/button/basic-usage.vue +2 -0
  52. package/demos/pc/app/button/click-composition-api.vue +1 -1
  53. package/demos/pc/app/button/click.vue +1 -1
  54. package/demos/pc/app/button/dynamic-disabled-composition-api.vue +10 -1
  55. package/demos/pc/app/button/{dynamic-disabled.spec.js → dynamic-disabled.spec.ts} +4 -0
  56. package/demos/pc/app/button/dynamic-disabled.vue +12 -3
  57. package/demos/pc/app/button/ghost-composition-api.vue +26 -0
  58. package/demos/pc/app/button/ghost.spec.ts +69 -0
  59. package/demos/pc/app/button/ghost.vue +32 -0
  60. package/demos/pc/app/button/icon-composition-api.vue +2 -0
  61. package/demos/pc/app/button/icon.vue +2 -0
  62. package/demos/pc/app/button/loading-composition-api.vue +2 -0
  63. package/demos/pc/app/button/loading.vue +2 -0
  64. package/demos/pc/app/button/size-composition-api.vue +2 -0
  65. package/demos/pc/app/button/size.vue +2 -0
  66. package/demos/pc/app/button/text-composition-api.vue +1 -1
  67. package/demos/pc/app/button/text.vue +1 -1
  68. package/demos/pc/app/button/webdoc/button.js +28 -1
  69. package/demos/pc/app/button-group/button-group-multiple-composition-api.vue +9 -9
  70. package/demos/pc/app/button-group/button-group-multiple.vue +9 -9
  71. package/demos/pc/app/button-group/change-event-composition-api.vue +1 -1
  72. package/demos/pc/app/button-group/change-event.vue +1 -1
  73. package/demos/pc/app/button-group/show-edit-composition-api.vue +1 -1
  74. package/demos/pc/app/button-group/show-edit.vue +1 -1
  75. package/demos/pc/app/button-group/webdoc/button-group.js +2 -3
  76. package/demos/pc/app/carousel/webdoc/carousel.js +82 -49
  77. package/demos/pc/app/cascader/auto-load-checkStrictly-composition-api.vue +2 -1
  78. package/demos/pc/app/cascader/auto-load-checkStrictly.vue +2 -1
  79. package/demos/pc/app/cascader/auto-load-composition-api.vue +3 -1
  80. package/demos/pc/app/cascader/auto-load.vue +2 -1
  81. package/demos/pc/app/cascader/events-composition-api.vue +1 -1
  82. package/demos/pc/app/cascader/expand-trigger-composition-api.vue +195 -2
  83. package/demos/pc/app/cascader/show-all-levels-composition-api.vue +197 -2
  84. package/demos/pc/app/cascader/webdoc/cascader.js +27 -13
  85. package/demos/pc/app/cascader-panel/basic-usage-composition-api.vue +3 -1
  86. package/demos/pc/app/cascader-panel/basic-usage.vue +2 -1
  87. package/demos/pc/app/cascader-panel/cascader-panel-props-composition-api.vue +3 -1
  88. package/demos/pc/app/cascader-panel/cascader-panel-props.vue +3 -1
  89. package/demos/pc/app/cascader-panel/change-composition-api.vue +1 -2
  90. package/demos/pc/app/cascader-panel/change.vue +1 -1
  91. package/demos/pc/app/cascader-panel/webdoc/cascader-panel.js +5 -5
  92. package/demos/pc/app/color-picker/webdoc/color-picker.js +36 -18
  93. package/demos/pc/app/color-select-panel/webdoc/color-select-panel.js +32 -19
  94. package/demos/pc/app/config-provider/basic.spec.ts +9 -0
  95. package/demos/pc/app/config-provider/tag.spec.ts +12 -0
  96. package/demos/pc/app/config-provider/text-direct.spec.ts +11 -0
  97. package/demos/pc/app/config-provider/webdoc/config-provider.en.md +7 -0
  98. package/demos/pc/app/config-provider/webdoc/config-provider.js +27 -12
  99. package/demos/pc/app/container/basic-usage.spec.js +47 -2
  100. package/demos/pc/app/container/custom-with-height.spec.js +10 -2
  101. package/demos/pc/app/crop/webdoc/crop.js +53 -49
  102. package/demos/pc/app/dialog-box/webdoc/dialog-box.js +82 -83
  103. package/demos/pc/app/divider/webdoc/divider.js +25 -21
  104. package/demos/pc/app/dropdown/events-composition-api.vue +1 -1
  105. package/demos/pc/app/dropdown/events.spec.ts +1 -0
  106. package/demos/pc/app/dropdown/multi-level-composition-api.vue +4 -8
  107. package/demos/pc/app/dropdown/multi-level.spec.ts +16 -9
  108. package/demos/pc/app/dropdown/multi-level.vue +3 -7
  109. package/demos/pc/app/dropdown/show-icon-composition-api.vue +44 -21
  110. package/demos/pc/app/dropdown/show-icon.vue +42 -12
  111. package/demos/pc/app/dropdown/webdoc/dropdown.js +29 -8
  112. package/demos/pc/app/fall-menu/custom-menuitem.spec.ts +6 -9
  113. package/demos/pc/app/fall-menu/custom-slider-icon.spec.ts +10 -21
  114. package/demos/pc/app/fall-menu/data-resource.spec.ts +6 -9
  115. package/demos/pc/app/file-upload/abort-quest.spec.ts +6 -5
  116. package/demos/pc/app/file-upload/accept-file-image.spec.ts +9 -4
  117. package/demos/pc/app/file-upload/custom-trigger.spec.ts +1 -1
  118. package/demos/pc/app/file-upload/disabled.spec.ts +4 -5
  119. package/demos/pc/app/file-upload/drag-upload.spec.ts +1 -1
  120. package/demos/pc/app/file-upload/file-picture-card.spec.ts +7 -6
  121. package/demos/pc/app/file-upload/form-validation.spec.ts +2 -2
  122. package/demos/pc/app/file-upload/image-size.spec.ts +2 -2
  123. package/demos/pc/app/file-upload/max-file-count.spec.ts +6 -6
  124. package/demos/pc/app/file-upload/paste-upload-composition-api.vue +2 -2
  125. package/demos/pc/app/file-upload/paste-upload.spec.ts +19 -2
  126. package/demos/pc/app/file-upload/picture-card.spec.ts +6 -5
  127. package/demos/pc/app/file-upload/picture-list.spec.ts +2 -3
  128. package/demos/pc/app/file-upload/prevent-delete-file.spec.ts +1 -1
  129. package/demos/pc/app/file-upload/prevent-upload-file.spec.ts +1 -1
  130. package/demos/pc/app/file-upload/upload-events.spec.ts +6 -4
  131. package/demos/pc/app/file-upload/upload-file-list-slot.spec.ts +18 -0
  132. package/demos/pc/app/file-upload/upload-file-list-thumb-composition-api.vue +4 -3
  133. package/demos/pc/app/file-upload/upload-file-list-thumb.spec.ts +2 -2
  134. package/demos/pc/app/file-upload/upload-file-list-thumb.vue +4 -3
  135. package/demos/pc/app/file-upload/upload-file-list.spec.ts +9 -9
  136. package/demos/pc/app/file-upload/upload-limit.spec.ts +5 -8
  137. package/demos/pc/app/file-upload/upload-request.spec.ts +1 -1
  138. package/demos/pc/app/file-upload/upload-user-head.spec.ts +1 -1
  139. package/demos/pc/app/file-upload/webdoc/file-upload.js +4 -4
  140. package/demos/pc/app/file-upload//346/265/213/350/257/225.txt +1 -0
  141. package/demos/pc/app/form/custom-validation-rule-composition-api.vue +2 -14
  142. package/demos/pc/app/form/custom-validation-rule.vue +2 -8
  143. package/demos/pc/app/form/form-validate-field.vue +2 -2
  144. package/demos/pc/app/form/size.spec.ts +26 -6
  145. package/demos/pc/app/grid/custom-style/body-style-composition-api.vue +1 -1
  146. package/demos/pc/app/grid/custom-style/footer-style-composition-api.vue +64 -19
  147. package/demos/pc/app/grid/drag/row-drag-ctrl-composition-api.vue +4 -4
  148. package/demos/pc/app/grid/edit/trigger-mode-hm-editing-composition-api.vue +2 -2
  149. package/demos/pc/app/grid/edit/trigger-mode-hm-editing.vue +1 -1
  150. package/demos/pc/app/grid/event/cell-mouse-event-composition-api.vue +1 -1
  151. package/demos/pc/app/grid/event/context-menu-event-composition-api.vue +1 -0
  152. package/demos/pc/app/grid/event/edit-event-composition-api.vue +1 -1
  153. package/demos/pc/app/grid/expand/set-row-expansion-composition-api.vue +9 -4
  154. package/demos/pc/app/grid/loading/{grid-loading-off-tip-composition-api.vue → grid-custom-loading-composition-api.vue} +29 -4
  155. package/demos/pc/app/grid/loading/grid-custom-loading.spec.js +7 -0
  156. package/demos/pc/app/grid/loading/{grid-loading-off-tip.vue → grid-custom-loading.vue} +27 -1
  157. package/demos/pc/app/grid/operation-column/clear-and-set-radio-row-composition-api.vue +5 -1
  158. package/demos/pc/app/grid/operation-column/selection-operation-composition-api.vue +32 -0
  159. package/demos/pc/app/grid/size/grid-size-composition-api.vue +17 -0
  160. package/demos/pc/app/grid/slot/editor-slot-composition-api.vue +13 -7
  161. package/demos/pc/app/grid/sort/combinations-sort-composition-api.vue +3 -3
  162. package/demos/pc/app/grid/sort/combinations-sort.spec.js +3 -0
  163. package/demos/pc/app/grid/sort/combinations-sort.vue +3 -3
  164. package/demos/pc/app/grid/toolbar/insert-remove-rows-composition-api.vue +1 -1
  165. package/demos/pc/app/grid/toolbar/insert-remove-rows.vue +1 -1
  166. package/demos/pc/app/grid/toolbar/refresh-grid-composition-api.vue +105 -0
  167. package/demos/pc/app/grid/tree-table/set-tree-expansion-composition-api.vue +4 -4
  168. package/demos/pc/app/grid/validation/before-submit-validation-composition-api.vue +19 -2
  169. package/demos/pc/app/grid/validation/before-submit-validation.spec.js +5 -2
  170. package/demos/pc/app/grid/validation/before-submit-validation.vue +19 -2
  171. package/demos/pc/app/grid/webdoc/grid-loading.js +9 -5
  172. package/demos/pc/app/grid/webdoc/grid-size.js +2 -2
  173. package/demos/pc/app/grid/webdoc/grid-validation.js +1 -1
  174. package/demos/pc/app/grid/webdoc/grid.js +8 -1
  175. package/demos/pc/app/guide/callback-composition-api.vue +2 -2
  176. package/demos/pc/app/guide/callback.vue +2 -2
  177. package/demos/pc/app/guide/highlight-box-composition-api.vue +9 -8
  178. package/demos/pc/app/guide/highlight-box.vue +8 -2
  179. package/demos/pc/app/guide/offset-composition-api.vue +7 -2
  180. package/demos/pc/app/guide/offset.vue +7 -2
  181. package/demos/pc/app/guide/size-composition-api.vue +3 -8
  182. package/demos/pc/app/guide/size.vue +3 -8
  183. package/demos/pc/app/guide/webdoc/guide.js +2 -2
  184. package/demos/pc/app/image/basic-usage.spec.ts +9 -2
  185. package/demos/pc/app/image/events.spec.ts +3 -1
  186. package/demos/pc/app/image/lazy-composition-api.vue +2 -2
  187. package/demos/pc/app/image/lazy.spec.ts +7 -4
  188. package/demos/pc/app/image/lazy.vue +2 -2
  189. package/demos/pc/app/image/preview-in-dialog.spec.ts +15 -1
  190. package/demos/pc/app/image/preview.spec.ts +28 -13
  191. package/demos/pc/app/image/slot.spec.ts +3 -0
  192. package/demos/pc/app/input/webdoc/input.js +11 -11
  193. package/demos/pc/app/link/basic-usage-composition-api.vue +1 -1
  194. package/demos/pc/app/link/basic-usage.spec.ts +1 -1
  195. package/demos/pc/app/link/basic-usage.vue +1 -1
  196. package/demos/pc/app/link/config-href.spec.ts +2 -2
  197. package/demos/pc/app/link/custom-icon.spec.ts +5 -5
  198. package/demos/pc/app/link/dynamic-disable.spec.ts +11 -11
  199. package/demos/pc/app/link/focus-no-underline.spec.ts +3 -3
  200. package/demos/pc/app/link/link-style-composition-api.vue +6 -6
  201. package/demos/pc/app/link/link-style.spec.ts +36 -7
  202. package/demos/pc/app/link/link-style.vue +6 -6
  203. package/demos/pc/app/link/webdoc/link.js +20 -22
  204. package/demos/pc/app/link-menu/webdoc/link-menu.js +22 -22
  205. package/demos/pc/app/milestone/basic-usage-composition-api.vue +6 -6
  206. package/demos/pc/app/milestone/basic-usage.spec.ts +1 -1
  207. package/demos/pc/app/milestone/basic-usage.vue +6 -6
  208. package/demos/pc/app/milestone/line-style-composition-api.vue +6 -6
  209. package/demos/pc/app/milestone/line-style.vue +6 -6
  210. package/demos/pc/app/milestone/show-number-composition-api.vue +9 -7
  211. package/demos/pc/app/milestone/show-number.spec.ts +7 -7
  212. package/demos/pc/app/milestone/show-number.vue +9 -7
  213. package/demos/pc/app/milestone/solid-style-composition-api.vue +7 -7
  214. package/demos/pc/app/milestone/solid-style.spec.ts +7 -7
  215. package/demos/pc/app/milestone/solid-style.vue +7 -7
  216. package/demos/pc/app/milestone/webdoc/milestone.js +31 -12
  217. package/demos/pc/app/modal/webdoc/modal.js +80 -76
  218. package/demos/pc/app/nav-menu/basic-usage.spec.ts +2 -2
  219. package/demos/pc/app/nav-menu/before-skip-prevent.spec.ts +1 -1
  220. package/demos/pc/app/nav-menu/before-skip.spec.ts +1 -1
  221. package/demos/pc/app/nav-menu/custom-service.spec.ts +1 -2
  222. package/demos/pc/app/nav-menu/overflow.spec.ts +2 -2
  223. package/demos/pc/app/nav-menu/slot-logo.spec.ts +1 -1
  224. package/demos/pc/app/nav-menu/slot-toolbar.spec.ts +2 -2
  225. package/demos/pc/app/numeric/webdoc/numeric.js +33 -32
  226. package/demos/pc/app/search/basic-usage.spec.ts +1 -1
  227. package/demos/pc/app/search/clearable.spec.ts +1 -1
  228. package/demos/pc/app/search/events-composition-api.vue +6 -0
  229. package/demos/pc/app/search/events.spec.ts +9 -6
  230. package/demos/pc/app/search/events.vue +5 -0
  231. package/demos/pc/app/search/webdoc/search.js +14 -4
  232. package/demos/pc/app/slide-bar/webdoc/slide-bar.js +18 -12
  233. package/demos/pc/app/slider/webdoc/slider.js +23 -18
  234. package/demos/pc/app/steps/advanced-steps.spec.ts +3 -2
  235. package/demos/pc/app/steps/click-composition-api.vue +0 -1
  236. package/demos/pc/app/steps/click.spec.ts +1 -12
  237. package/demos/pc/app/steps/custom-steps-item.spec.ts +1 -1
  238. package/demos/pc/app/steps/node-status-composition-api.vue +1 -1
  239. package/demos/pc/app/steps/node-status.spec.ts +1 -1
  240. package/demos/pc/app/steps/node-status.vue +1 -1
  241. package/demos/pc/app/steps/normal-steps-composition-api.vue +1 -1
  242. package/demos/pc/app/steps/normal-steps.spec.ts +2 -2
  243. package/demos/pc/app/steps/normal-steps.vue +1 -1
  244. package/demos/pc/app/steps/only-number-composition-api.vue +1 -1
  245. package/demos/pc/app/steps/only-number.spec.ts +1 -1
  246. package/demos/pc/app/steps/only-number.vue +1 -1
  247. package/demos/pc/app/steps/show-divider-composition-api.vue +1 -1
  248. package/demos/pc/app/steps/show-divider.spec.ts +1 -1
  249. package/demos/pc/app/steps/show-divider.vue +1 -1
  250. package/demos/pc/app/steps/size-composition-api.vue +6 -9
  251. package/demos/pc/app/steps/size.spec.ts +1 -4
  252. package/demos/pc/app/steps/size.vue +4 -4
  253. package/demos/pc/app/steps/slot-active-node-desc-composition-api.vue +3 -1
  254. package/demos/pc/app/steps/slot-active-node-desc.spec.ts +1 -1
  255. package/demos/pc/app/steps/slot-active-node-desc.vue +3 -1
  256. package/demos/pc/app/steps/slot-description-composition-api.vue +6 -6
  257. package/demos/pc/app/steps/slot-description.spec.ts +1 -1
  258. package/demos/pc/app/steps/slot-description.vue +5 -5
  259. package/demos/pc/app/steps/slot-item-composition-api.vue +0 -1
  260. package/demos/pc/app/steps/slot-item.spec.ts +1 -7
  261. package/demos/pc/app/steps/slot-item.vue +0 -1
  262. package/demos/pc/app/steps/space.spec.ts +1 -1
  263. package/demos/pc/app/steps/text-position-composition-api.vue +1 -1
  264. package/demos/pc/app/steps/text-position.spec.ts +1 -4
  265. package/demos/pc/app/steps/text-position.vue +1 -1
  266. package/demos/pc/app/steps/vertical-steps.spec.ts +13 -19
  267. package/demos/pc/app/steps/webdoc/steps.js +18 -17
  268. package/demos/pc/app/tabs/basic-usage-composition-api.vue +4 -4
  269. package/demos/pc/app/tabs/basic-usage.vue +4 -4
  270. package/demos/pc/app/tabs/before-leave-composition-api.vue +3 -3
  271. package/demos/pc/app/tabs/before-leave.vue +3 -3
  272. package/demos/pc/app/tabs/custom-more-icon-composition-api.vue +1 -1
  273. package/demos/pc/app/tabs/custom-more-icon.vue +1 -1
  274. package/demos/pc/app/tabs/custom-tab-content-composition-api.vue +3 -3
  275. package/demos/pc/app/tabs/custom-tab-content.vue +3 -3
  276. package/demos/pc/app/tabs/custom-tab-title-composition-api.vue +3 -3
  277. package/demos/pc/app/tabs/custom-tab-title.vue +3 -3
  278. package/demos/pc/app/tabs/lazy-composition-api.vue +5 -3
  279. package/demos/pc/app/tabs/lazy.vue +5 -3
  280. package/demos/pc/app/tabs/position-composition-api.vue +22 -17
  281. package/demos/pc/app/tabs/position.spec.ts +4 -4
  282. package/demos/pc/app/tabs/position.vue +19 -18
  283. package/demos/pc/app/tabs/prevent-tab-switching-composition-api.vue +3 -3
  284. package/demos/pc/app/tabs/prevent-tab-switching.vue +3 -3
  285. package/demos/pc/app/tabs/stretch-wh-composition-api.vue +3 -3
  286. package/demos/pc/app/tabs/stretch-wh.vue +3 -3
  287. package/demos/pc/app/tabs/tab-style-bordercard-composition-api.vue +10 -10
  288. package/demos/pc/app/tabs/tab-style-bordercard.vue +10 -10
  289. package/demos/pc/app/tabs/tab-style-card-composition-api.vue +1 -1
  290. package/demos/pc/app/tabs/tab-style-card.vue +1 -1
  291. package/demos/pc/app/tabs/tabs-draggable-composition-api.vue +1 -1
  292. package/demos/pc/app/tabs/tabs-draggable.spec.ts +1 -7
  293. package/demos/pc/app/tabs/tabs-draggable.vue +1 -1
  294. package/demos/pc/app/tabs/tabs-events-click-composition-api.vue +3 -3
  295. package/demos/pc/app/tabs/tabs-events-click.vue +3 -3
  296. package/demos/pc/app/tabs/tabs-events-close-composition-api.vue +4 -4
  297. package/demos/pc/app/tabs/tabs-events-close.vue +4 -4
  298. package/demos/pc/app/tabs/tabs-events-edit-composition-api.vue +4 -4
  299. package/demos/pc/app/tabs/tabs-events-edit.vue +4 -4
  300. package/demos/pc/app/tabs/tabs-separator-composition-api.vue +7 -7
  301. package/demos/pc/app/tabs/tabs-separator.vue +7 -7
  302. package/demos/pc/app/tabs/tabs-size-composition-api.vue +3 -3
  303. package/demos/pc/app/tabs/tabs-size.vue +3 -3
  304. package/demos/pc/app/tabs/tooltip-composition-api.vue +17 -13
  305. package/demos/pc/app/tabs/tooltip.vue +17 -13
  306. package/demos/pc/app/tabs/webdoc/tabs.js +35 -35
  307. package/demos/pc/app/tabs/with-add-composition-api.vue +1 -1
  308. package/demos/pc/app/tabs/with-add.vue +1 -1
  309. package/demos/pc/app/tag/{before-delete-composition-api.vue → delete-composition-api.vue} +6 -16
  310. package/demos/pc/app/tag/delete.spec.ts +19 -0
  311. package/demos/pc/app/tag/{closable.vue → delete.vue} +22 -5
  312. package/demos/pc/app/tag/webdoc/tag.js +15 -7
  313. package/demos/pc/app/time-line/webdoc/time-line.js +12 -12
  314. package/demos/pc/app/toggle-menu/webdoc/toggle-menu.js +64 -55
  315. package/demos/pc/app/tooltip/content.spec.js +1 -1
  316. package/demos/pc/app/tooltip/custom-popper.spec.js +4 -4
  317. package/demos/pc/app/transfer/basic-usage.spec.ts +7 -20
  318. package/demos/pc/app/transfer/custom-btns.spec.ts +11 -19
  319. package/demos/pc/app/transfer/custom-filter.spec.ts +6 -4
  320. package/demos/pc/app/transfer/custom-footer.spec.ts +1 -2
  321. package/demos/pc/app/transfer/custom-render.spec.ts +7 -5
  322. package/demos/pc/app/transfer/custom-titles.spec.ts +5 -3
  323. package/demos/pc/app/transfer/default-checked.spec.ts +5 -9
  324. package/demos/pc/app/transfer/drop-config.spec.ts +21 -16
  325. package/demos/pc/app/transfer/manual-clear-query.spec.ts +2 -2
  326. package/demos/pc/app/transfer/nested-table.spec.ts +12 -35
  327. package/demos/pc/app/transfer/nested-tree.spec.ts +3 -30
  328. package/demos/pc/app/transfer/target-order.spec.ts +2 -1
  329. package/demos/pc/app/transfer/transfer-events.spec.ts +2 -1
  330. package/demos/pc/app/tree/basic-usage.spec.ts +26 -16
  331. package/demos/pc/app/tree/check-op.spec.ts +37 -19
  332. package/demos/pc/app/tree/checkbox.spec.ts +23 -18
  333. package/demos/pc/app/tree/contextmenu.spec.ts +9 -8
  334. package/demos/pc/app/tree/drag.spec.ts +10 -18
  335. package/demos/pc/app/tree/edit.spec.ts +24 -103
  336. package/demos/pc/app/tree/expand-control.spec.ts +22 -18
  337. package/demos/pc/app/tree/filter-view.spec.ts +16 -18
  338. package/demos/pc/app/tree/icons.spec.ts +20 -18
  339. package/demos/pc/app/tree/lazy.spec.ts +10 -18
  340. package/demos/pc/app/tree/node-hl.spec.ts +27 -18
  341. package/demos/pc/app/tree/node-op-composition-api.vue +12 -6
  342. package/demos/pc/app/tree/node-op.spec.ts +32 -19
  343. package/demos/pc/app/tree/other.spec.ts +5 -18
  344. package/demos/pc/app/tree/props.spec.ts +7 -18
  345. package/demos/pc/app/tree/radio.spec.ts +10 -18
  346. package/demos/pc/app/tree/slot.spec.ts +12 -18
  347. package/demos/pc/app/tree/webdoc/tree.js +2 -2
  348. package/demos/pc/app/tree-menu/accordion.spec.ts +3 -1
  349. package/demos/pc/app/tree-menu/basic-usage.spec.ts +4 -2
  350. package/demos/pc/app/tree-menu/current-node-composition-api.vue +7 -3
  351. package/demos/pc/app/tree-menu/current-node.spec.ts +20 -13
  352. package/demos/pc/app/tree-menu/current-node.vue +8 -6
  353. package/demos/pc/app/tree-menu/custom-icon.spec.ts +12 -2
  354. package/demos/pc/app/tree-menu/data-resource.spec.ts +33 -21
  355. package/demos/pc/app/tree-menu/default-expand-all.spec.ts +25 -8
  356. package/demos/pc/app/tree-menu/default-expanded-keys-highlight.spec.ts +6 -4
  357. package/demos/pc/app/tree-menu/default-expanded-keys.spec.ts +11 -7
  358. package/demos/pc/app/tree-menu/draggable.spec.ts +11 -4
  359. package/demos/pc/app/tree-menu/empty-text.spec.ts +1 -1
  360. package/demos/pc/app/tree-menu/event-allow-draggable.spec.ts +4 -1
  361. package/demos/pc/app/tree-menu/events.spec.ts +56 -28
  362. package/demos/pc/app/tree-menu/expand-on-click-node.spec.ts +32 -3
  363. package/demos/pc/app/tree-menu/filter-node-method.spec.ts +9 -6
  364. package/demos/pc/app/tree-menu/filter-node-method.vue +0 -4
  365. package/demos/pc/app/tree-menu/indent.spec.ts +9 -4
  366. package/demos/pc/app/tree-menu/lazy-load.spec.ts +8 -4
  367. package/demos/pc/app/tree-menu/menu-collapsible.spec.ts +5 -2
  368. package/demos/pc/app/tree-menu/show-checkbox.spec.ts +79 -41
  369. package/demos/pc/app/tree-menu/text-ellipsis.spec.ts +7 -4
  370. package/demos/pc/app/tree-menu/tree-menu-slot.spec.ts +4 -3
  371. package/demos/pc/app/tree-menu/webdoc/tree-menu.cn.md +1 -1
  372. package/demos/pc/app/tree-menu/webdoc/tree-menu.en.md +1 -1
  373. package/demos/pc/app/tree-menu/webdoc/tree-menu.js +3 -3
  374. package/demos/pc/app/user-contact/webdoc/user-contact.js +21 -13
  375. package/demos/pc/app/user-head/icon-user-head.spec.ts +3 -3
  376. package/demos/pc/app/user-head/image-user-head.spec.ts +2 -2
  377. package/demos/pc/app/user-head/webdoc/user-head.js +44 -28
  378. package/demos/pc/webdoc/changelog.md +1 -0
  379. package/demos/pc/webdoc/import-components.md +2 -4
  380. package/demos/pc/webdoc/theme-en.md +8 -4
  381. package/demos/pc/webdoc/theme.md +10 -3
  382. package/package.json +6 -6
  383. package/src/App.vue +0 -2
  384. package/src/i18n/index.js +3 -3
  385. package/src/main.js +2 -7
  386. package/src/menus.jsx +1 -1
  387. package/src/tools/useApiMode.js +2 -2
  388. package/src/tools/useBulletin.jsx +2 -2
  389. package/src/tools/utils.js +2 -2
  390. package/src/views/components/VersionTip.vue +14 -8
  391. package/src/views/components/components.vue +48 -47
  392. package/src/views/components/demo.vue +11 -11
  393. package/src/views/docs/docs.vue +2 -3
  394. package/src/views/layout/layout.vue +17 -19
  395. package/src/views/overview.vue +16 -13
  396. package/vite.config.ts +10 -4
  397. package/demos/mobile/app/pull-refresh/disabled.vue +0 -57
  398. package/demos/mobile/app/pull-refresh/head-height.vue +0 -31
  399. package/demos/mobile/app/pull-refresh/result-text.vue +0 -46
  400. package/demos/mobile/app/pull-refresh/success-duration.vue +0 -31
  401. package/demos/mobile/app/pull-refresh/success-text.vue +0 -27
  402. package/demos/pc/app/grid/loading/grid-loading-off-tip.spec.js +0 -8
  403. package/demos/pc/app/tag/before-delete.vue +0 -64
  404. package/demos/pc/app/tag/closable-composition-api.vue +0 -25
  405. package/demos/pc/app/tag/closable.spec.ts +0 -14
  406. /package/demos/pc/app/button/{autofocus.spec.js → autofocus.spec.ts} +0 -0
  407. /package/demos/pc/app/button/{basic-usage.spec.js → basic-usage.spec.ts} +0 -0
  408. /package/demos/pc/app/button/{click.spec.js → click.spec.ts} +0 -0
  409. /package/demos/pc/app/button/{icon.spec.js → icon.spec.ts} +0 -0
  410. /package/demos/pc/app/button/{image.spec.js → image.spec.ts} +0 -0
  411. /package/demos/pc/app/button/{loading.spec.js → loading.spec.ts} +0 -0
  412. /package/demos/pc/app/button/{reset-time.spec.js → reset-time.spec.ts} +0 -0
  413. /package/demos/pc/app/button/{size.spec.js → size.spec.ts} +0 -0
  414. /package/demos/pc/app/button/{text.spec.js → text.spec.ts} +0 -0
@@ -1,23 +1,21 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('tree组件基本使用', async ({ page }) => {
3
+ test('过滤视图', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree#basic-usage')
5
+ await page.goto('tree#filter-view')
6
6
 
7
- const tree = page.locator('#preview .tiny-tree')
8
- await tree.getByText('一级 1').click()
9
- await expect(tree.locator('.tiny-tree-node').first()).toHaveClass(/is-current/)
10
- await page.getByText('二级 1-1').click()
11
- await expect(tree.locator('.tiny-tree-node').nth(1)).toHaveClass(/is-current/)
12
- await page.getByRole('treeitem', { name: '三级 1-1-1' }).first().click()
13
- await page.getByRole('treeitem', { name: '一级 3' }).locator('.tiny-svg').click()
14
- await page
15
- .getByRole('treeitem', { name: '一级 1' })
16
- .first()
17
- .locator('div')
18
- .filter({ hasText: '一级 1' })
19
- .first()
20
- .click()
21
- await expect(page.getByRole('treeitem', { name: '一级 1-1', includeHidden: true })).toBeHidden({ timeout: 0 })
22
- await page.locator('.tiny-modal__box').first().click()
7
+ const preview = page.locator('.pc-demo-container')
8
+ const tree = preview.locator('.tiny-tree').nth(0)
9
+ const btnPlain = preview.getByText('平铺视图 plain')
10
+ const checkboxs = tree.locator('.tiny-tree__plain-node .tiny-checkbox')
11
+ const input = preview.locator('.tiny-input input')
12
+
13
+ await expect(tree.getByText('数据 1-1-1')).toHaveCount(1)
14
+
15
+ await btnPlain.click()
16
+ await expect(checkboxs).toHaveCount(8)
17
+ await page.waitForTimeout(20)
18
+
19
+ await input.fill('1-1')
20
+ await expect(checkboxs).toHaveCount(3)
23
21
  })
@@ -1,23 +1,25 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('tree组件基本使用', async ({ page }) => {
3
+ test('自定义图标', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree#basic-usage')
5
+ await page.goto('tree#icons')
6
6
 
7
- const tree = page.locator('#preview .tiny-tree')
8
- await tree.getByText('一级 1').click()
9
- await expect(tree.locator('.tiny-tree-node').first()).toHaveClass(/is-current/)
10
- await page.getByText('二级 1-1').click()
11
- await expect(tree.locator('.tiny-tree-node').nth(1)).toHaveClass(/is-current/)
12
- await page.getByRole('treeitem', { name: '三级 1-1-1' }).first().click()
13
- await page.getByRole('treeitem', { name: '一级 3' }).locator('.tiny-svg').click()
14
- await page
15
- .getByRole('treeitem', { name: '一级 1' })
16
- .first()
17
- .locator('div')
18
- .filter({ hasText: '一级 1' })
19
- .first()
20
- .click()
21
- await expect(page.getByRole('treeitem', { name: '一级 1-1', includeHidden: true })).toBeHidden({ timeout: 0 })
22
- await page.locator('.tiny-modal__box').first().click()
7
+ const preview = page.locator('.pc-demo-container')
8
+ const tree1 = preview.locator('.tiny-tree').nth(0)
9
+ const tree2 = preview.locator('.tiny-tree').nth(1)
10
+
11
+ const icon1 = tree1.locator('svg path').nth(0)
12
+ const icon2 = tree2.locator('svg path').nth(0)
13
+
14
+ // 测试tree1
15
+ await expect(tree1.getByText('数据 2')).toHaveCount(1)
16
+ await expect(icon1).toHaveAttribute('d', 'm6 2 13 10L6 22V2zm2 4v12l8-6.1L8 6z')
17
+
18
+ // 测试tree2
19
+ await expect(tree2.getByText('数据 2')).toHaveCount(1)
20
+ await expect(icon2).toHaveAttribute(
21
+ 'd',
22
+ 'M13 11h4c.6 0 1 .4 1 1s-.4 1-1 1h-4v4c0 .6-.4 1-1 1s-1-.4-1-1v-4H7c-.6 0-1-.4-1-1s.4-1 1-1h4V7c0-.6.4-1 1-1s1 .4 1 1v4zM3 1h18c.9 0 2 1.1 2 2v18c0 .9-1 2-2 2H3c-.9 0-2-1.1-2-2V3c0-.9 1.1-2 2-2zm0 2v18h18V3H3z'
23
+ )
24
+ await expect(icon2).toHaveCSS('fill', 'rgb(255, 0, 0)')
23
25
  })
@@ -1,23 +1,15 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('tree组件基本使用', async ({ page }) => {
3
+ test('懒加载', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree#basic-usage')
5
+ await page.goto('tree#lazy')
6
6
 
7
- const tree = page.locator('#preview .tiny-tree')
8
- await tree.getByText('一级 1').click()
9
- await expect(tree.locator('.tiny-tree-node').first()).toHaveClass(/is-current/)
10
- await page.getByText('二级 1-1').click()
11
- await expect(tree.locator('.tiny-tree-node').nth(1)).toHaveClass(/is-current/)
12
- await page.getByRole('treeitem', { name: '三级 1-1-1' }).first().click()
13
- await page.getByRole('treeitem', { name: '一级 3' }).locator('.tiny-svg').click()
14
- await page
15
- .getByRole('treeitem', { name: '一级 1' })
16
- .first()
17
- .locator('div')
18
- .filter({ hasText: '一级 1' })
19
- .first()
20
- .click()
21
- await expect(page.getByRole('treeitem', { name: '一级 1-1', includeHidden: true })).toBeHidden({ timeout: 0 })
22
- await page.locator('.tiny-modal__box').first().click()
7
+ const preview = page.locator('.pc-demo-container')
8
+ const tree = preview.locator('.tiny-tree').nth(0)
9
+ const node2 = tree.getByText('#数据 2')
10
+
11
+ await expect(node2).toHaveCount(1)
12
+ await node2.click()
13
+ await page.waitForTimeout(20)
14
+ await expect(node2).toHaveCount(6)
23
15
  })
@@ -1,23 +1,32 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('tree组件基本使用', async ({ page }) => {
3
+ test('节点选择与高亮', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree#basic-usage')
5
+ await page.goto('tree#node-hl')
6
6
 
7
- const tree = page.locator('#preview .tiny-tree')
8
- await tree.getByText('一级 1').click()
9
- await expect(tree.locator('.tiny-tree-node').first()).toHaveClass(/is-current/)
10
- await page.getByText('二级 1-1').click()
11
- await expect(tree.locator('.tiny-tree-node').nth(1)).toHaveClass(/is-current/)
12
- await page.getByRole('treeitem', { name: '三级 1-1-1' }).first().click()
13
- await page.getByRole('treeitem', { name: '一级 3' }).locator('.tiny-svg').click()
14
- await page
15
- .getByRole('treeitem', { name: '一级 1' })
16
- .first()
17
- .locator('div')
18
- .filter({ hasText: '一级 1' })
19
- .first()
20
- .click()
21
- await expect(page.getByRole('treeitem', { name: '一级 1-1', includeHidden: true })).toBeHidden({ timeout: 0 })
22
- await page.locator('.tiny-modal__box').first().click()
7
+ const preview = page.locator('.pc-demo-container')
8
+ const tree = preview.locator('.tiny-tree')
9
+ const node = tree.getByText('数据 1-1-1')
10
+ const currNode = tree.locator('.is-current')
11
+ const button = preview.getByText('手动高亮节点')
12
+
13
+ await expect(node).toHaveCount(1)
14
+
15
+ // 测试点击后,打印事件
16
+ const values = [] as string[]
17
+ page.on('console', async (msg) => {
18
+ for (const arg of msg.args()) {
19
+ values.push(await arg.jsonValue())
20
+ }
21
+ })
22
+ await node.click()
23
+ await page.waitForTimeout(50)
24
+
25
+ expect(values.length).toBe(2)
26
+ expect(values[0].startsWith('当前高亮节点')).toBeTruthy()
27
+
28
+ // 测试自动点击
29
+ await button.click()
30
+ await page.waitForTimeout(50)
31
+ await expect(currNode.getByText('数据 2-1')).toHaveCount(1)
23
32
  })
@@ -7,7 +7,13 @@
7
7
  <tiny-button @click="updateKeyChildren">更新子节点</tiny-button>
8
8
  <tiny-button @click="remove">删除当前节点</tiny-button>
9
9
  </div>
10
- <tiny-tree ref="treeRef" :data="data" node-key="id" default-expand-all></tiny-tree>
10
+ <tiny-tree
11
+ ref="treeRef"
12
+ :data="data"
13
+ node-key="id"
14
+ default-expand-all
15
+ :current-node-key="currentNodeKey"
16
+ ></tiny-tree>
11
17
  </div>
12
18
  </template>
13
19
 
@@ -37,29 +43,29 @@ const data = ref([
37
43
  children: [{ id: '3-1', label: '数据 3-1' }]
38
44
  }
39
45
  ])
40
-
46
+ const currentNodeKey = ref('1-1')
41
47
  function insertBefore() {
42
48
  const currentKey = treeRef.value.getCurrentKey()
43
49
 
44
- treeRef.value.insertBefore({ id: id, label: 'insertBefore ' + id }, currentKey)
50
+ treeRef.value.insertBefore({ id, label: 'insertBefore ' + id }, currentKey)
45
51
  id++
46
52
  }
47
53
 
48
54
  function insertAfter() {
49
55
  const currentKey = treeRef.value.getCurrentKey()
50
- treeRef.value.insertAfter({ id: id, label: 'insertAfter ' + id }, currentKey)
56
+ treeRef.value.insertAfter({ id, label: 'insertAfter ' + id }, currentKey)
51
57
  id++
52
58
  }
53
59
  function append() {
54
60
  const currentKey = treeRef.value.getCurrentKey()
55
- treeRef.value.append({ id: id, label: 'append ' + id }, currentKey)
61
+ treeRef.value.append({ id, label: 'append ' + id }, currentKey)
56
62
 
57
63
  id++
58
64
  }
59
65
  function updateKeyChildren() {
60
66
  const currentKey = treeRef.value.getCurrentKey()
61
67
 
62
- treeRef.value.updateKeyChildren(currentKey, [{ id: id, label: 'update ' + id }])
68
+ treeRef.value.updateKeyChildren(currentKey, [{ id, label: 'update ' + id }])
63
69
  id++
64
70
  }
65
71
  function remove() {
@@ -1,23 +1,36 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('tree组件基本使用', async ({ page }) => {
3
+ test('节点操作', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree#basic-usage')
6
-
7
- const tree = page.locator('#preview .tiny-tree')
8
- await tree.getByText('一级 1').click()
9
- await expect(tree.locator('.tiny-tree-node').first()).toHaveClass(/is-current/)
10
- await page.getByText('二级 1-1').click()
11
- await expect(tree.locator('.tiny-tree-node').nth(1)).toHaveClass(/is-current/)
12
- await page.getByRole('treeitem', { name: '三级 1-1-1' }).first().click()
13
- await page.getByRole('treeitem', { name: '一级 3' }).locator('.tiny-svg').click()
14
- await page
15
- .getByRole('treeitem', { name: '一级 1' })
16
- .first()
17
- .locator('div')
18
- .filter({ hasText: '一级 1' })
19
- .first()
20
- .click()
21
- await expect(page.getByRole('treeitem', { name: '一级 1-1', includeHidden: true })).toBeHidden({ timeout: 0 })
22
- await page.locator('.tiny-modal__box').first().click()
5
+ await page.goto('tree#node-op')
6
+
7
+ const preview = page.locator('.pc-demo-container')
8
+ const tree = preview.locator('.tiny-tree')
9
+
10
+ const insertBefore = preview.getByText('添加前节点')
11
+ const insertAfter = preview.getByText('添加后节点')
12
+ const append = preview.getByText('添加子节点')
13
+ const updateKeyChildren = preview.getByText('更新子节点')
14
+ const remove = preview.getByText('删除当前节点')
15
+
16
+ await expect(tree.getByText('数据 1-1-1')).toHaveCount(1)
17
+
18
+ await insertBefore.click()
19
+ await expect(tree.getByText('insertBefore 1000')).toHaveCount(1)
20
+ await page.waitForTimeout(20)
21
+
22
+ await insertAfter.click()
23
+ await expect(tree.getByText('insertAfter 1001')).toHaveCount(1)
24
+ await page.waitForTimeout(20)
25
+
26
+ await append.click()
27
+ await expect(tree.getByText('append 1002')).toHaveCount(1)
28
+ await page.waitForTimeout(20)
29
+
30
+ await updateKeyChildren.click()
31
+ await expect(tree.getByText('update 1003')).toHaveCount(1)
32
+ await page.waitForTimeout(20)
33
+
34
+ await remove.click()
35
+ await expect(tree.getByText('数据 1-1')).toHaveCount(0)
23
36
  })
@@ -1,23 +1,10 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('tree组件基本使用', async ({ page }) => {
3
+ test('其它', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree#basic-usage')
5
+ await page.goto('tree#other')
6
6
 
7
- const tree = page.locator('#preview .tiny-tree')
8
- await tree.getByText('一级 1').click()
9
- await expect(tree.locator('.tiny-tree-node').first()).toHaveClass(/is-current/)
10
- await page.getByText('二级 1-1').click()
11
- await expect(tree.locator('.tiny-tree-node').nth(1)).toHaveClass(/is-current/)
12
- await page.getByRole('treeitem', { name: '三级 1-1-1' }).first().click()
13
- await page.getByRole('treeitem', { name: '一级 3' }).locator('.tiny-svg').click()
14
- await page
15
- .getByRole('treeitem', { name: '一级 1' })
16
- .first()
17
- .locator('div')
18
- .filter({ hasText: '一级 1' })
19
- .first()
20
- .click()
21
- await expect(page.getByRole('treeitem', { name: '一级 1-1', includeHidden: true })).toBeHidden({ timeout: 0 })
22
- await page.locator('.tiny-modal__box').first().click()
7
+ const tree = page.locator('.pc-demo-container')
8
+ await expect(tree.getByText('数据 1')).toHaveCount(1)
9
+ await expect(tree.getByText('同时勾选下级')).toHaveCount(1)
23
10
  })
@@ -1,23 +1,12 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('tree组件基本使用', async ({ page }) => {
3
+ test('属性', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree#basic-usage')
5
+ await page.goto('tree#props')
6
6
 
7
- const tree = page.locator('#preview .tiny-tree')
8
- await tree.getByText('一级 1').click()
9
- await expect(tree.locator('.tiny-tree-node').first()).toHaveClass(/is-current/)
10
- await page.getByText('二级 1-1').click()
11
- await expect(tree.locator('.tiny-tree-node').nth(1)).toHaveClass(/is-current/)
12
- await page.getByRole('treeitem', { name: '三级 1-1-1' }).first().click()
13
- await page.getByRole('treeitem', { name: '一级 3' }).locator('.tiny-svg').click()
14
- await page
15
- .getByRole('treeitem', { name: '一级 1' })
16
- .first()
17
- .locator('div')
18
- .filter({ hasText: '一级 1' })
19
- .first()
20
- .click()
21
- await expect(page.getByRole('treeitem', { name: '一级 1-1', includeHidden: true })).toBeHidden({ timeout: 0 })
22
- await page.locator('.tiny-modal__box').first().click()
7
+ const tree = page.locator('.pc-demo-container')
8
+ await expect(tree.getByText('数据 1-1-1')).toHaveCount(1)
9
+
10
+ // 测试disabled
11
+ await expect(tree.getByText('数据 2-2')).toHaveCSS('color', 'rgb(173, 176, 184)')
23
12
  })
@@ -1,23 +1,15 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('tree组件基本使用', async ({ page }) => {
3
+ test('单选', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree#basic-usage')
5
+ await page.goto('tree#radio')
6
6
 
7
- const tree = page.locator('#preview .tiny-tree')
8
- await tree.getByText('一级 1').click()
9
- await expect(tree.locator('.tiny-tree-node').first()).toHaveClass(/is-current/)
10
- await page.getByText('二级 1-1').click()
11
- await expect(tree.locator('.tiny-tree-node').nth(1)).toHaveClass(/is-current/)
12
- await page.getByRole('treeitem', { name: '三级 1-1-1' }).first().click()
13
- await page.getByRole('treeitem', { name: '一级 3' }).locator('.tiny-svg').click()
14
- await page
15
- .getByRole('treeitem', { name: '一级 1' })
16
- .first()
17
- .locator('div')
18
- .filter({ hasText: '一级 1' })
19
- .first()
20
- .click()
21
- await expect(page.getByRole('treeitem', { name: '一级 1-1', includeHidden: true })).toBeHidden({ timeout: 0 })
22
- await page.locator('.tiny-modal__box').first().click()
7
+ const preview = page.locator('.pc-demo-container')
8
+ const tree = preview.locator('.tiny-tree').nth(0)
9
+ const treeChecked = tree.locator('label.is-checked')
10
+ const btn = preview.getByText('勾选指定节点')
11
+
12
+ await expect(tree.getByText('数据 1-1-1')).toHaveCount(1)
13
+ await expect(treeChecked).toHaveCount(1)
14
+ await btn.click()
23
15
  })
@@ -1,23 +1,17 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('tree组件基本使用', async ({ page }) => {
3
+ test('插槽', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree#basic-usage')
5
+ await page.goto('tree#slot')
6
6
 
7
- const tree = page.locator('#preview .tiny-tree')
8
- await tree.getByText('一级 1').click()
9
- await expect(tree.locator('.tiny-tree-node').first()).toHaveClass(/is-current/)
10
- await page.getByText('二级 1-1').click()
11
- await expect(tree.locator('.tiny-tree-node').nth(1)).toHaveClass(/is-current/)
12
- await page.getByRole('treeitem', { name: '三级 1-1-1' }).first().click()
13
- await page.getByRole('treeitem', { name: '一级 3' }).locator('.tiny-svg').click()
14
- await page
15
- .getByRole('treeitem', { name: '一级 1' })
16
- .first()
17
- .locator('div')
18
- .filter({ hasText: '一级 1' })
19
- .first()
20
- .click()
21
- await expect(page.getByRole('treeitem', { name: '一级 1-1', includeHidden: true })).toBeHidden({ timeout: 0 })
22
- await page.locator('.tiny-modal__box').first().click()
7
+ const tree = page.locator('.pc-demo-container')
8
+ const button = page.getByRole('button', { name: '加载数据' })
9
+
10
+ // 测试无数据
11
+ await expect(tree.getByText('组件无数据')).toHaveCount(1)
12
+
13
+ // 测试有数据
14
+ await button.click()
15
+ await expect(tree.getByText('数据 1-1-1')).toHaveCount(2)
16
+ await expect(tree.getByText('新增')).toHaveCount(8)
23
17
  })
@@ -190,7 +190,7 @@ export default {
190
190
  通过 <code> check-strictly </code> 属性,指定是否严格模式。属性默认为 <code> false </code>。严格模式时勾选父节点,子节点自动全选中;子节点全选中,自动勾选父节点。<br>
191
191
  通过 <code> check-on-click-node </code> 属性,点击节点时,同时进行勾选/反勾选节点。 属性默认值为 <code> false </code>, 即点击节点不自动勾选。<br>
192
192
  通过 <code> default-checked-keys </code> 属性,设置默认加载时,自动勾选的节点的keys数组。<br>
193
- <div class="tip custom-block"> 严格模式下父子不相互影响,勾选父节点时不会自动勾选子节点,适于于某些特殊场景。 </div>
193
+ <div class="tip custom-block"> 严格模式下父子不相互影响,勾选父节点时不会自动勾选子节点,适用于某些特殊场景。 </div>
194
194
  `,
195
195
  'en-US': `Enable multiple selection by using the <code> show-checkbox </code> property. <br>
196
196
  The <code> check-strictly </code> property specifies whether strict mode is used. The default property is <code> false </code>. If you select the parent node, all child nodes are automatically selected. If all child nodes are selected, the parent node is automatically selected. <br>
@@ -212,7 +212,7 @@ export default {
212
212
  <code> setChecked </code> 勾选时,可以深度递归勾选(deep:true),也可以只勾选某节点。<br>
213
213
  建议使用 <code> setCheckedKeys </code>进行勾选,保证父子联动状态统一,详见下面例子。
214
214
  </div>
215
- 通过 <code> check </code> 事件,监听勾选节点的事件。<br>
215
+ 通过 <code> check </code> 事件,监听组件的勾选事件。<br>
216
216
  通过 <code> check-change </code> 事件,监听节点状态变化的回调。<br>
217
217
  <div class="tip custom-block">
218
218
  <code> check </code> 事件触发在点击的元素上, 事件参数为:被点击的节点和勾选后组件的整体勾选状态。<br>
@@ -4,7 +4,9 @@ test('手风琴', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('tree-menu#accordion')
6
6
 
7
- const treeMenu = page.locator('#preview .tiny-tree-menu')
7
+ const wrap = page.locator('#accordion')
8
+ const treeMenu = wrap.locator('.tiny-tree-menu')
9
+
8
10
  await treeMenu.getByTitle('指南').click()
9
11
  await expect(treeMenu.getByTitle('引入组件')).toBeVisible()
10
12
  await expect(treeMenu.getByTitle('构建部署')).toBeVisible()
@@ -4,7 +4,9 @@ test('基本使用,无数据场景', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('tree-menu#basic-usage')
6
6
 
7
- const treeMenu = page.locator('#preview .tiny-tree-menu')
8
- await expect(treeMenu.getByPlaceholder('请输入内容进行筛选').locator('input')).toBeVisible()
7
+ const wrap = page.locator('#basic-usage')
8
+ const treeMenu = wrap.locator('.tiny-tree-menu')
9
+
10
+ await expect(treeMenu.locator('.tiny-input__inner')).toBeVisible()
9
11
  await expect(treeMenu).toContainText('暂无数据')
10
12
  })
@@ -4,9 +4,13 @@
4
4
  <tiny-button @click="setCurrentKey" title="点击设置当前节点">setCurrentKey</tiny-button>
5
5
  <p>场景2:通过 setCurrentNode(node:ITreeNode) 设置当前节点</p>
6
6
  <tiny-button @click="setCurrentNode" title="点击设置当前节点">setCurrentNode</tiny-button>
7
- <p>场景3:通过 getCurrentKey() 获取当前节点的 key 为:{{ currentKey }}</p>
7
+ <p>
8
+ 场景3:通过 getCurrentKey() 获取当前节点的 key 为:<span class="current-node-key">{{ currentKey }}</span>
9
+ </p>
8
10
  <tiny-button @click="getCurrentKey" title="点击获取当前节点的 key">getCurrentKey</tiny-button>
9
- <p>场景4:通过 getCurrentNode() 获取当前节点的数据为:{{ currentNode }}</p>
11
+ <p>
12
+ 场景4:通过 getCurrentNode() 获取当前节点的数据为:<span class="current-node">{{ currentNode }}</span>
13
+ </p>
10
14
  <tiny-button @click="getCurrentNode" title="点击获取当前节点数据">getCurrentNode</tiny-button>
11
15
 
12
16
  <tiny-tree-menu
@@ -20,7 +24,7 @@
20
24
 
21
25
  <script setup>
22
26
  import { ref, reactive } from 'vue'
23
- import { TreeMenu as TinyTreeMenu, Button as TinyButton, Row as TinyRow, Col as TinyCol } from '@opentiny/vue'
27
+ import { TreeMenu as TinyTreeMenu, Button as TinyButton } from '@opentiny/vue'
24
28
 
25
29
  const treeMenu = ref(null)
26
30
  const treeData = reactive([
@@ -4,22 +4,29 @@ test('设置当前节点', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('tree-menu#current-node')
6
6
 
7
- const treeMenu = page.locator('#preview .tiny-tree-menu')
7
+ const wrap = page.locator('#current-node')
8
+ const treeMenu = wrap.locator('.tiny-tree-menu')
9
+ const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
10
+ const button = wrap.locator('.tiny-button')
8
11
  const currentCls = /is-current/
9
12
 
10
13
  // 通过key设置当前节点
11
- await page.getByRole('button', { name: '设置当前选中的节点的 key' }).click()
12
- await expect(treeMenu.locator('.tiny-tree-node').filter({ hasText: '按需引入' }).nth(2)).toHaveClass(currentCls)
13
- await page.getByRole('button', { name: '获取当前被选中节点的 key' }).click()
14
- await expect(page.locator('#current-node-key')).toHaveText('20101')
15
- await page.getByRole('button', { name: '获取当前选中的节点' }).click()
16
- await expect(page.locator('#current-node')).toHaveText('{ "id": 20101, "label": "按需引入" }')
14
+ await button.nth(0).click()
15
+ await expect(treeNode.filter({ hasText: /^按需引入$/ })).toHaveClass(currentCls)
16
+ // 获取当前被选中节点的 key
17
+ await button.nth(2).click()
18
+ await expect(wrap.locator('.current-node-key')).toHaveText('20101')
19
+ // 获取当前节点的数据
20
+ await button.nth(3).click()
21
+ await expect(wrap.locator('.current-node')).toHaveText('{ "id": 20101, "label": "按需引入" }')
17
22
 
18
23
  // 通过node设置当前节点
19
- await page.getByRole('button', { name: '设置当前选中的节点' }).nth(1).click()
20
- await expect(treeMenu.locator('.tiny-tree-node').filter({ hasText: '规范' })).toHaveClass(currentCls)
21
- await page.getByRole('button', { name: '获取当前被选中节点的 key' }).click()
22
- await expect(page.locator('#current-node-key')).toHaveText('500')
23
- await page.getByRole('button', { name: '获取当前选中的节点' }).click()
24
- await expect(page.locator('#current-node')).toHaveText('{ "id": 500, "label": "规范" }')
24
+ await button.nth(1).click()
25
+ await expect(treeNode.filter({ hasText: /^规范$/ })).toHaveClass(currentCls)
26
+ // 获取当前被选中节点的 key
27
+ await button.nth(2).click()
28
+ await expect(wrap.locator('.current-node-key')).toHaveText('500')
29
+ // 获取当前节点的数据
30
+ await button.nth(3).click()
31
+ await expect(wrap.locator('.current-node')).toHaveText('{ "id": 500, "label": "规范" }')
25
32
  })
@@ -4,9 +4,13 @@
4
4
  <tiny-button @click="setCurrentKey" title="点击设置当前节点">setCurrentKey</tiny-button>
5
5
  <p>场景2:通过 setCurrentNode(node:ITreeNode) 设置当前节点</p>
6
6
  <tiny-button @click="setCurrentNode" title="点击设置当前节点">setCurrentNode</tiny-button>
7
- <p>场景3:通过 getCurrentKey() 获取当前节点的 key 为:{{ currentKey }}</p>
7
+ <p>
8
+ 场景3:通过 getCurrentKey() 获取当前节点的 key 为:<span class="current-node-key">{{ currentKey }}</span>
9
+ </p>
8
10
  <tiny-button @click="getCurrentKey" title="点击获取当前节点的 key">getCurrentKey</tiny-button>
9
- <p>场景4:通过 getCurrentNode() 获取当前节点的数据为:{{ currentNode }}</p>
11
+ <p>
12
+ 场景4:通过 getCurrentNode() 获取当前节点的数据为:<span class="current-node">{{ currentNode }}</span>
13
+ </p>
10
14
  <tiny-button @click="getCurrentNode" title="点击获取当前节点数据">getCurrentNode</tiny-button>
11
15
 
12
16
  <tiny-tree-menu
@@ -19,14 +23,12 @@
19
23
  </template>
20
24
 
21
25
  <script>
22
- import { TreeMenu, Button, Row, Col } from '@opentiny/vue'
26
+ import { TreeMenu, Button } from '@opentiny/vue'
23
27
 
24
28
  export default {
25
29
  components: {
26
30
  TinyTreeMenu: TreeMenu,
27
- TinyButton: Button,
28
- TinyRow: Row,
29
- TinyCol: Col
31
+ TinyButton: Button
30
32
  },
31
33
  data() {
32
34
  return {
@@ -2,8 +2,18 @@ import { test, expect } from '@playwright/test'
2
2
 
3
3
  test('自定义搜索图标', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
- await page.goto('tree-menu#search-icon')
5
+ await page.goto('tree-menu#custom-icon')
6
+
7
+ const wrap = page.locator('#custom-icon')
8
+ const treeMenu = wrap.locator('.tiny-tree-menu')
6
9
 
7
- const treeMenu = page.locator('#preview .tiny-tree-menu')
8
10
  await expect(treeMenu.locator('.tiny-input__prefix .tiny-input__icon')).toBeVisible()
9
11
  })
12
+
13
+ test('自定义前置图标', async ({ page }) => {
14
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
15
+ await page.goto('tree-menu#custom-icon')
16
+
17
+ const wrap = page.locator('#custom-icon')
18
+ const treeMenu = wrap.locator('.tiny-tree-menu')
19
+ })