@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,33 +1,38 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('尝试拖拽左侧某一项至右侧面板', async ({ page }) => {
3
+ test('尝试拖拽', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('transfer#drop-config')
6
- const preview = page.locator('#preview')
6
+ const preview = page.locator('.pc-demo-container')
7
7
  const transferPanels = preview.locator('.tiny-transfer-panel')
8
8
  const leftPanel = transferPanels.first()
9
9
  const rightPanel = transferPanels.nth(1)
10
- const dragDiv = leftPanel.locator('label:nth-child(2)').first()
11
- await dragDiv.hover()
10
+ const dragDiv1 = leftPanel.locator('label:nth-child(2)').first()
11
+
12
+ // 尝试拖拽左侧某一项至右侧面板
13
+ await page.waitForTimeout(100)
14
+ await dragDiv1.hover()
15
+ await page.waitForTimeout(100)
12
16
  await page.mouse.down()
17
+ await page.waitForTimeout(100)
13
18
  await rightPanel.hover()
19
+ await page.waitForTimeout(100)
14
20
  await page.mouse.up()
21
+ await page.waitForTimeout(100)
15
22
  await expect(rightPanel.locator('.tiny-transfer-panel__header').filter({ hasText: '列表 2 0 / 5' })).toHaveCount(1)
16
23
  await expect(leftPanel.locator('.tiny-transfer-panel__header').filter({ hasText: '列表 1 0 / 11' })).toHaveCount(1)
17
- })
18
24
 
19
- test('尝试拖拽右侧某一项至左侧面板', async ({ page }) => {
20
- page.on('pageerror', (exception) => expect(exception).toBeNull())
21
- await page.goto('transfer#drop-config')
22
- const preview = page.locator('#preview')
23
- const transferPanels = preview.locator('.tiny-transfer-panel')
24
- const leftPanel = transferPanels.first()
25
- const rightPanel = transferPanels.nth(1)
26
- const dragDiv = rightPanel.locator('label').filter({ hasText: '备选项 3' })
27
- await dragDiv.hover()
25
+ //尝试拖拽右侧某一项至左侧面板
26
+ const dragDiv2 = rightPanel.locator('label').filter({ hasText: '备选项 3' })
27
+ await page.waitForTimeout(100)
28
+ await dragDiv2.hover()
29
+ await page.waitForTimeout(100)
28
30
  await page.mouse.down()
31
+ await page.waitForTimeout(100)
29
32
  await leftPanel.hover()
33
+ await page.waitForTimeout(100)
30
34
  await page.mouse.up()
31
- await expect(leftPanel.locator('.tiny-transfer-panel__header').filter({ hasText: '列表 1 0 / 13' })).toHaveCount(1)
32
- await expect(rightPanel.locator('.tiny-transfer-panel__header').filter({ hasText: '列表 2 0 / 3' })).toHaveCount(1)
35
+ await page.waitForTimeout(100)
36
+ await expect(leftPanel.locator('.tiny-transfer-panel__header').filter({ hasText: '列表 1 0 / 12' })).toHaveCount(1)
37
+ await expect(rightPanel.locator('.tiny-transfer-panel__header').filter({ hasText: '列表 2 0 / 4' })).toHaveCount(1)
33
38
  })
@@ -3,8 +3,8 @@ import { test, expect } from '@playwright/test'
3
3
  test('判断是否可以清除搜索内容', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('transfer#manual-clear-query')
6
- const preview = page.locator('#preview')
7
- const input = preview.getByPlaceholder('请输入搜索内容').first()
6
+ const preview = page.locator('.pc-demo-container')
7
+ const input = preview.locator('.tiny-input-display-only input').first()
8
8
  await input.click()
9
9
  await input.fill('1')
10
10
  await preview.getByRole('button', { name: '重置查询' }).click()
@@ -1,48 +1,25 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('判断是否可以将左侧数据交换到右侧面板', async ({ page }) => {
3
+ test('判断数据交换', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('transfer#nested-table')
6
- const preview = page.locator('#preview')
6
+ const preview = page.locator('.pc-demo-container')
7
7
  const transferPanels = preview.locator('.tiny-transfer-panel')
8
+ const leftPanel = transferPanels.first()
8
9
  const rightPanel = transferPanels.nth(1)
9
- await preview.locator('.tiny-button').first().click()
10
+ const toRightBtn = preview.locator('.tiny-button').first()
11
+
12
+ // 判断是否可以将左侧数据交换到右侧面板
13
+ await toRightBtn.click()
10
14
  await expect(rightPanel.getByText('列表 2 1 / 8')).toHaveCount(1)
11
- })
15
+ await page.waitForTimeout(50)
12
16
 
13
- test('判断是否可以将右侧数据交换到左侧面板', async ({ page }) => {
14
- page.on('pageerror', (exception) => expect(exception).toBeNull())
15
- await page.goto('transfer#nested-table')
16
- const preview = page.locator('#preview')
17
- const transferPanels = preview.locator('.tiny-transfer-panel')
18
- const leftPanel = transferPanels.first()
17
+ //判断是否可以将右侧数据交换到左侧面板
19
18
  await preview.locator('.defaultButton > button:nth-child(2)').click()
20
- await expect(leftPanel.getByText('列表 1 1 / 14')).toHaveCount(1)
21
- })
19
+ await expect(leftPanel.getByText('列表 1 0 / 13')).toHaveCount(1)
20
+ await page.waitForTimeout(50)
22
21
 
23
- test('判断是否可以切换分页页码', async ({ page }) => {
24
- page.on('pageerror', (exception) => expect(exception).toBeNull())
25
- await page.goto('transfer#nested-table')
26
- const preview = page.locator('#preview')
27
- const transferPanels = preview.locator('.tiny-transfer-panel')
28
- const leftPanel = transferPanels.first()
22
+ // 判断是否可以切换分页页码
29
23
  await preview.getByRole('listitem').filter({ hasText: '2' }).click()
30
24
  await expect(leftPanel.getByRole('table').locator('tbody > tr')).toHaveCount(3)
31
25
  })
32
-
33
- test('判断搜索功能是否正常', async ({ page }) => {
34
- page.on('pageerror', (exception) => expect(exception).toBeNull())
35
- await page.goto('transfer#nested-table')
36
- const preview = page.locator('#preview')
37
- const transferPanels = preview.locator('.tiny-transfer-panel')
38
- const leftPanel = transferPanels.first()
39
- const input = preview.getByPlaceholder('请输入城市拼音')
40
- await input.first().click()
41
- await input.first().fill('1')
42
- const count = leftPanel.getByRole('table').locator('tbody > tr')
43
- await expect(count).toHaveCount(7)
44
- // 清空搜索内容
45
- await input.first().click()
46
- await input.first().fill('')
47
- await expect(count).toHaveCount(10)
48
- })
@@ -1,39 +1,12 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('判断是否可以将左侧数据交换至右侧面板', async ({ page }) => {
3
+ test('嵌套树', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('transfer#nested-tree')
6
- const preview = page.locator('#preview')
6
+ const preview = page.locator('.pc-demo-container')
7
7
  await preview.getByRole('treeitem', { name: '一级 1' }).locator('svg').first().click()
8
8
  await preview.getByRole('treeitem', { name: '一级 1' }).getByText('二级 1-1').click()
9
9
  await preview.getByRole('treeitem', { name: '三级 1-1-1' }).locator('span').nth(2).click()
10
- await preview.getByRole('button').first().click()
11
- const transferPanels = preview.locator('.tiny-transfer-panel')
12
- const rightPanel = transferPanels.nth(1)
13
- await expect(
14
- rightPanel.locator(
15
- 'div:nth-child(3) > div:nth-child(4) > .tiny-tree-node > .tiny-tree-node__content > span.tiny-tree-node__label'
16
- )
17
- ).toHaveText('三级 1-1-1')
18
- })
19
10
 
20
- test('置顶和置底功能', async ({ page }) => {
21
- page.on('pageerror', (exception) => expect(exception).toBeNull())
22
- await page.goto('transfer#nested-tree')
23
- const preview = page.locator('#preview')
24
- const buttons = await preview.getByRole('paragraph').filter({ hasText: '列表 2 1 / 3' }).locator('div')
25
- await buttons.nth(1).click()
26
- const transferPanels = preview.locator('.tiny-transfer-panel')
27
- const rightPanel = transferPanels.nth(1)
28
- await expect(
29
- rightPanel.locator(
30
- 'div:nth-child(3) > div:nth-child(1) > .tiny-tree-node > .tiny-tree-node__content > span.tiny-tree-node__label'
31
- )
32
- ).toHaveText('二级 2-1')
33
- await buttons.nth(2).click()
34
- await expect(
35
- rightPanel.locator(
36
- 'div:nth-child(3) > div:nth-child(3) > .tiny-tree-node > .tiny-tree-node__content > span.tiny-tree-node__label'
37
- )
38
- ).toHaveText('二级 2-1')
11
+ await expect(preview.getByText('三级 1-1-1')).toHaveCount(1)
39
12
  })
@@ -3,12 +3,13 @@ import { test, expect } from '@playwright/test'
3
3
  test('判断交换左侧备选项后是否位于右侧面板首位', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('transfer#target-order')
6
- const preview = page.locator('#preview')
6
+ const preview = page.locator('.pc-demo-container')
7
7
  const buttons = preview.getByRole('button')
8
8
  const transferPanels = preview.locator('.tiny-transfer-panel')
9
9
  const leftPanel = transferPanels.first()
10
10
  await leftPanel.locator('label').filter({ hasText: '备选项 2' }).click()
11
11
  await buttons.first().click()
12
+
12
13
  const rightPanel = transferPanels.nth(1)
13
14
  await expect(rightPanel.locator('label').filter({ hasText: '备选项 2' })).toHaveCount(1)
14
15
  await leftPanel.locator('label').filter({ hasText: '备选项 3' }).click()
@@ -3,13 +3,14 @@ import { test, expect } from '@playwright/test'
3
3
  test('判断是否触发了不同事件', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('transfer#transfer-events')
6
- const preview = page.locator('#preview')
6
+ const preview = page.locator('.pc-demo-container')
7
7
  const transferPanels = preview.locator('.tiny-transfer-panel')
8
8
  const leftPanel = transferPanels.first()
9
9
  await leftPanel.locator('label').filter({ hasText: '备选项 2' }).click()
10
10
  await expect(page.getByText(/^left-check-change 事件/)).toBeVisible()
11
11
  await preview.getByRole('button').first().click()
12
12
  await expect(page.getByText(/^change 事件/)).toBeVisible()
13
+
13
14
  const rightPanel = transferPanels.nth(1)
14
15
  await rightPanel.locator('label').first().click()
15
16
  await expect(page.getByText(/^right-check-change 事件/)).toBeVisible()
@@ -4,20 +4,30 @@ test('tree组件基本使用', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('tree#basic-usage')
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 showLineBtn = preview.locator('.tiny-radio').nth(0)
10
+ const miniBtn = preview.locator('.tiny-radio').nth(2)
11
+ const offsetBtn = preview.locator('.tiny-radio').nth(6)
12
+ const indentSpan = preview.locator('.tiny-tree-node__content-indent').nth(1)
13
+
14
+ // 测试渲染出数据
15
+ await expect(tree.getByText('数据 1-1-1')).toHaveCount(1)
16
+
17
+ // 测试连接线 有连线时,show-line
18
+ await showLineBtn.click()
19
+ await page.waitForTimeout(20)
20
+ expect(await tree.locator('.show-line').count()).toBeGreaterThan(1)
21
+
22
+ // 测试字体
23
+ await expect(tree.getByText('数据 1-1-1')).toHaveCSS('font-size', '14px')
24
+ await miniBtn.click()
25
+ await page.waitForTimeout(20)
26
+ await expect(tree.getByText('数据 1-1-1')).toHaveCSS('font-size', '12px')
27
+
28
+ // 测试偏移 18px + 8 padding
29
+ await expect(indentSpan).toHaveCSS('width', '26px')
30
+ await offsetBtn.click()
31
+ await page.waitForTimeout(20)
32
+ await expect(indentSpan).toHaveCSS('width', '46px')
23
33
  })
@@ -1,23 +1,41 @@
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#check-op')
6
+
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 btn1 = preview.getByText('查询勾选状态')
11
+ const btn2 = preview.getByText('清除全部勾选')
12
+ const btn3 = preview.getByText('根据节点数据勾选')
13
+ const btn4 = preview.getByText('根据node-key勾选')
14
+ const btn5 = preview.getByText('根据node-key,多值勾选')
15
+ const btn6 = preview.getByText('根据node,多值勾选')
16
+
17
+ await expect(tree.getByText('数据 1-1-1')).toHaveCount(1)
18
+ await expect(treeChecked).toHaveCount(0)
19
+
20
+ await btn3.click()
21
+ await expect(treeChecked).toHaveCount(4)
22
+ await page.waitForTimeout(20)
23
+
24
+ await btn4.click()
25
+ await expect(treeChecked).toHaveCount(1)
26
+ await page.waitForTimeout(20)
27
+
28
+ await btn5.click()
29
+ await expect(treeChecked).toHaveCount(6)
30
+ await page.waitForTimeout(20)
31
+
32
+ await btn6.click()
33
+ await expect(treeChecked).toHaveCount(3)
34
+ await page.waitForTimeout(20)
35
+
36
+ await btn2.click()
37
+ await expect(treeChecked).toHaveCount(0)
38
+ await page.waitForTimeout(20)
39
+
40
+ await btn1.click()
23
41
  })
@@ -1,23 +1,28 @@
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#checkbox')
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 tree1Checked = tree1.locator('label.is-checked')
12
+ const tree2Checked = tree2.locator('label.is-checked')
13
+
14
+ await expect(tree1.getByText('数据 1-1-1')).toHaveCount(1)
15
+ await page.waitForTimeout(50)
16
+
17
+ // 测试左树
18
+ await expect(tree1Checked).toHaveCount(3)
19
+ await tree1.getByText('数据 3').nth(0).click()
20
+ await page.waitForTimeout(50)
21
+ await expect(tree1Checked).toHaveCount(5)
22
+
23
+ // 测试右树
24
+ await expect(tree2Checked).toHaveCount(1)
25
+ await tree2.locator('.tiny-checkbox__inner').nth(5).click()
26
+ await page.waitForTimeout(50)
27
+ await expect(tree2Checked).toHaveCount(2)
23
28
  })
@@ -1,14 +1,15 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('可自定义右键菜单内容', async ({ page }) => {
3
+ test('右键菜单', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('tree#contextmenu')
6
6
 
7
- await page.getByText('三级 1-1-1').first().click({
8
- button: 'right'
9
- })
10
- const menu = page.locator('#preview .tiny-tree-node__menu')
11
- await expect(menu).toBeVisible()
12
- await page.locator('.context-menu li').first().click()
13
- await expect(menu).not.toBeVisible()
7
+ const preview = page.locator('.pc-demo-container')
8
+ const tree = preview.locator('.tiny-tree').nth(0)
9
+ const node = tree.getByText('数据 1-1-1')
10
+ await expect(node).toHaveCount(1)
11
+
12
+ await node.click({ button: 'right' })
13
+ await page.waitForTimeout(20)
14
+ await expect(tree.getByText('更新')).toHaveCount(1)
14
15
  })
@@ -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#drag')
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
+ await expect(tree.getByText('数据 1-1-1')).toHaveCount(1)
10
+
11
+ await tree.getByText('数据 2-1').dragTo(tree.getByText('数据 1-1-1'))
12
+ await page.waitForTimeout(100)
13
+ await tree.getByText('数据 1-1-1').dragTo(tree.getByText('数据 2-2'))
14
+ await page.waitForTimeout(100)
23
15
  })
@@ -1,106 +1,27 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test.describe('节点编辑', () => {
4
- test('编辑节点内容', async ({ page }) => {
5
- page.on('pageerror', (exception) => expect(exception).toBeNull())
6
- await page.goto('tree#edit')
7
-
8
- const tree = page.locator('#preview .tiny-tree')
9
- const node = tree.locator('.tiny-tree-node').first()
10
- const nodeLeft = node.locator('.tiny-tree-node__content-left').first()
11
- const nodeRight = node.locator('.tiny-tree-node__content-right').first()
12
-
13
- await page.getByRole('button', { name: '进入编辑' }).click()
14
- await expect(nodeRight.getByTitle('编辑')).toBeVisible()
15
- await nodeRight.getByTitle('编辑').click()
16
- await expect(nodeLeft.locator('.tiny-input')).toBeVisible()
17
- await expect(nodeLeft.locator('.tiny-input input')).toHaveValue('一级 1')
18
- await nodeLeft.locator('.tiny-input input').fill('aaa')
19
- await nodeLeft.locator('.tiny-input input').blur()
20
- await expect(node.locator('.tiny-tree-node__label').first()).toHaveText('aaa')
21
- })
22
-
23
- test('进入编辑状态后删除节点', async ({ page }) => {
24
- page.on('pageerror', (exception) => expect(exception).toBeNull())
25
- await page.goto('tree#edit')
26
-
27
- const tree = page.locator('#preview .tiny-tree')
28
- const node = tree.locator('.tiny-tree-node').first()
29
- const delBtn = node.locator('.tiny-tree-node__content-right > span:nth-child(2) > .tiny-svg').first()
30
- const delPopover = page.locator('.tiny-tree__del-popover').nth(1)
31
- await page.getByRole('button', { name: '进入编辑' }).click()
32
- await delBtn.click()
33
- await expect(delPopover).toBeVisible()
34
-
35
- // 连同子孙节点一起删除
36
- await delPopover.getByRole('button', { name: '确定' }).click()
37
- await expect(node).not.toContainText('一级 1')
38
- await expect(tree.locator('.tiny-tree-node')).toHaveCount(2)
39
-
40
- // 保留子孙节点
41
- await delBtn.click()
42
- await delPopover.locator('.tiny-checkbox').click()
43
- await delPopover.getByRole('button', { name: '确定' }).click()
44
- await expect(node.locator('.tiny-tree-node__label')).toHaveText('一级 3')
45
- await expect(tree.locator('.tiny-tree-node')).toHaveCount(3)
46
- })
47
-
48
- test('进入编辑状态后新增子节点', async ({ page }) => {
49
- page.on('pageerror', (exception) => expect(exception).toBeNull())
50
- await page.goto('tree#edit')
51
-
52
- const tree = page.locator('#preview .tiny-tree')
53
- const nodes = tree.locator('.tiny-tree-node')
54
- const node = nodes.first()
55
- const newNode = nodes.filter({ hasText: 'aaa' }).first()
56
-
57
- await page.getByRole('button', { name: '进入编辑' }).click()
58
- await node.getByTitle('新增下级').first().click()
59
- await node.getByRole('textbox').fill('aaa')
60
- await node.getByRole('textbox').blur()
61
- await expect(newNode).toBeVisible()
62
- })
63
-
64
- test('取消编辑', async ({ page }) => {
65
- page.on('pageerror', (exception) => expect(exception).toBeNull())
66
- await page.goto('tree#edit')
67
-
68
- const tree = page.locator('#preview .tiny-tree')
69
- const nodes = tree.locator('.tiny-tree-node')
70
- const node = nodes.first()
71
- const delBtn = node.locator('.tiny-tree-node__content-right > span:nth-child(2) > .tiny-svg').first()
72
- const delPopover = page.locator('.tiny-tree__del-popover').nth(1)
73
-
74
- await expect(nodes).toHaveCount(6)
75
-
76
- // 删除一些节点
77
- await page.getByRole('button', { name: '进入编辑' }).click()
78
- await delBtn.click()
79
- await delPopover.getByRole('button', { name: '确定' }).click()
80
- await expect(nodes).toHaveCount(2)
81
-
82
- // 取消编辑后已删除节点重新恢复
83
- await page.getByRole('button', { name: '取消编辑' }).click()
84
- await expect(nodes).toHaveCount(6)
85
- })
86
-
87
- test('保存编辑', async ({ page }) => {
88
- page.on('pageerror', (exception) => expect(exception).toBeNull())
89
- await page.goto('tree#edit')
90
-
91
- const tree = page.locator('#preview .tiny-tree')
92
- const node = tree.locator('.tiny-tree-node').first()
93
- const nodeLeft = node.locator('.tiny-tree-node__content-left').first()
94
- const nodeRight = node.locator('.tiny-tree-node__content-right').first()
95
-
96
- // 编辑节点内容
97
- await page.getByRole('button', { name: '进入编辑' }).click()
98
- await nodeRight.getByTitle('编辑').click()
99
- await nodeLeft.locator('.tiny-input input').fill('aaa')
100
- await nodeLeft.locator('.tiny-input input').blur()
101
-
102
- // 保存编辑, 检查是否正确保存
103
- await page.getByRole('button', { name: '保存编辑' }).click()
104
- await expect(node.locator('.tiny-tree-node__label').first()).toHaveText('aaa')
105
- })
3
+ test('编辑', async ({ page }) => {
4
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
5
+ await page.goto('tree#edit')
6
+
7
+ const preview = page.locator('.pc-demo-container')
8
+ const tree = preview.locator('.tiny-tree').nth(0)
9
+ const btn1 = preview.getByText('进入编辑')
10
+ const btn2 = preview.getByText('取消编辑')
11
+ const btn3 = preview.getByText('新建子节点')
12
+ const editIcons = tree.locator('[title="编辑"]')
13
+ const input = tree.locator('.tiny-input input')
14
+
15
+ await expect(tree.getByText('数据 1-1-1')).toHaveCount(1)
16
+ await btn1.click()
17
+ await expect(editIcons).toHaveCount(8)
18
+ await page.waitForTimeout(20)
19
+
20
+ await btn2.click()
21
+ await expect(editIcons).toHaveCount(0)
22
+ await page.waitForTimeout(20)
23
+
24
+ await btn3.click()
25
+ await expect(input).toHaveCount(1)
26
+ input.fill('123')
106
27
  })
@@ -1,23 +1,27 @@
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#expand-control')
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
+ const allBtn = preview.getByText('切换全部展开收起')
11
+ const openBtn = preview.getByText('展开高亮')
12
+ const closeBtn = preview.getByText('收起高亮')
13
+
14
+ // 测试全部收起
15
+ await expect(tree1.locator('.is-expanded')).toHaveCount(8) // 叶子节点也有这个类
16
+ await allBtn.click()
17
+ await expect(tree1.locator('.is-expanded')).toHaveCount(0)
18
+
19
+ // 测试收起/展开
20
+ await page.waitForTimeout(50)
21
+ await expect(tree2.locator('.is-expanded')).toHaveCount(1)
22
+ await closeBtn.click()
23
+ await expect(tree2.locator('.is-expanded')).toHaveCount(0)
24
+ await page.waitForTimeout(50)
25
+ await openBtn.click()
26
+ await expect(tree2.locator('.is-expanded')).toHaveCount(1)
23
27
  })