@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
@@ -5,22 +5,27 @@ test('多级菜单,使用 menu-options', async ({ page }) => {
5
5
  await page.goto('dropdown#multi-level')
6
6
 
7
7
  const wrap = page.locator('#multi-level')
8
- const dropDown = wrap.locator('.tiny-dropdown').first()
8
+ const dropDown = wrap.locator('.tiny-dropdown').nth(0)
9
9
  const dropDownMenu = page.locator('body > .tiny-dropdown-menu')
10
10
  const dropDownMenuItem = dropDownMenu.locator('.tiny-dropdown-item')
11
- const notify = page.locator('.tiny-notify')
12
11
 
13
- await page.waitForTimeout(1500)
12
+ await page.waitForTimeout(2000)
14
13
  await dropDown.hover()
15
14
  await expect(dropDownMenu).toBeVisible()
15
+ await page.waitForTimeout(500)
16
16
  await dropDownMenuItem.first().hover()
17
+ await page.waitForTimeout(500)
17
18
  await dropDownMenuItem.getByText('老友粉2.1').hover()
19
+ await expect(dropDownMenuItem.getByText('狮子头3.1')).toBeVisible()
18
20
  await dropDownMenuItem.getByText('狮子头3.1').click()
21
+ await page.waitForTimeout(1000)
22
+
19
23
  await expect(
20
- notify.filter({
24
+ page.locator('.tiny-modal').filter({
21
25
  hasText: '配置式可以通过 data.itemData 获取配置数据:{"label":"狮子头3.1"}'
22
26
  })
23
- ).toBeVisible()
27
+ ).toHaveCount(1)
28
+ await page.waitForTimeout(500)
24
29
  })
25
30
 
26
31
  test('多级菜单,使用 options', async ({ page }) => {
@@ -31,17 +36,19 @@ test('多级菜单,使用 options', async ({ page }) => {
31
36
  const dropDown = wrap.locator('.tiny-dropdown').nth(1)
32
37
  const dropDownMenu = page.locator('body > .tiny-dropdown-menu')
33
38
  const dropDownMenuItem = dropDownMenu.locator('.tiny-dropdown-item')
34
- const notify = page.locator('.tiny-notify')
35
39
 
36
- await page.waitForTimeout(1500)
40
+ await page.waitForTimeout(2000)
37
41
  await dropDown.hover()
38
42
  await expect(dropDownMenu).toBeVisible()
43
+ await page.waitForTimeout(500)
39
44
  await dropDownMenuItem.first().hover()
45
+ await page.waitForTimeout(500)
40
46
  await dropDownMenuItem.getByText('老友粉2.1').hover()
41
47
  await dropDownMenuItem.getByText('狮子头3.1').click()
48
+ await page.waitForTimeout(1000)
42
49
  await expect(
43
- notify.filter({
50
+ page.locator('.tiny-modal').filter({
44
51
  hasText: '配置式可以通过 data.itemData 获取配置数据:{"label":"狮子头3.1"}'
45
52
  })
46
- ).toBeVisible()
53
+ ).toHaveCount(1)
47
54
  })
@@ -13,7 +13,7 @@
13
13
 
14
14
  <script>
15
15
  import { iconStarDisable } from '@opentiny/vue-icon'
16
- import { Dropdown, DropdownMenu, Notify } from '@opentiny/vue'
16
+ import { Dropdown, DropdownMenu, Modal } from '@opentiny/vue'
17
17
 
18
18
  export default {
19
19
  components: {
@@ -73,12 +73,8 @@ export default {
73
73
  },
74
74
  methods: {
75
75
  itemClick(data) {
76
- Notify({
77
- type: 'info',
78
- title: 'itemData',
79
- message: `配置式可以通过 data.itemData 获取配置数据:${JSON.stringify(data.itemData)}`,
80
- position: 'top-right',
81
- duration: 2000
76
+ Modal.message({
77
+ message: `配置式可以通过 data.itemData 获取配置数据:${JSON.stringify(data.itemData)}`
82
78
  })
83
79
  }
84
80
  }
@@ -1,26 +1,49 @@
1
1
  <template>
2
- <tiny-dropdown :show-icon="false">
3
- <template #dropdown>
4
- <tiny-dropdown-menu>
5
- <tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
6
- <tiny-dropdown-item>黄金糕</tiny-dropdown-item>
7
- <tiny-dropdown-item>狮子头</tiny-dropdown-item>
8
- <tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
9
- <tiny-dropdown-item>双皮奶</tiny-dropdown-item>
10
- <tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
11
- </tiny-dropdown-menu>
12
- </template>
13
- </tiny-dropdown>
2
+ <div>
3
+ <p>场景1: 只显示文本</p>
4
+ <tiny-dropdown :show-icon="false">
5
+ <template #dropdown>
6
+ <tiny-dropdown-menu>
7
+ <tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
8
+ <tiny-dropdown-item>黄金糕</tiny-dropdown-item>
9
+ <tiny-dropdown-item>狮子头</tiny-dropdown-item>
10
+ <tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
11
+ <tiny-dropdown-item>双皮奶</tiny-dropdown-item>
12
+ <tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
13
+ </tiny-dropdown-menu>
14
+ </template>
15
+ </tiny-dropdown>
16
+ <p>场景2:自定义图且只显示图标</p>
17
+ <tiny-dropdown title="" :suffix-icon="tinyIconEllipsis">
18
+ <template #dropdown>
19
+ <tiny-dropdown-menu>
20
+ <tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
21
+ <tiny-dropdown-item>黄金糕</tiny-dropdown-item>
22
+ <tiny-dropdown-item>狮子头</tiny-dropdown-item>
23
+ <tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
24
+ <tiny-dropdown-item>双皮奶</tiny-dropdown-item>
25
+ <tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
26
+ </tiny-dropdown-menu>
27
+ </template>
28
+ </tiny-dropdown>
29
+ </div>
14
30
  </template>
15
31
 
16
- <script>
17
- import { Dropdown, DropdownMenu, DropdownItem } from '@opentiny/vue'
32
+ <script setup>
33
+ import {
34
+ Dropdown as TinyDropdown,
35
+ DropdownMenu as TinyDropdownMenu,
36
+ DropdownItem as TinyDropdownItem
37
+ } from '@opentiny/vue'
38
+ import { iconEllipsis } from '@opentiny/vue-icon'
18
39
 
19
- export default {
20
- components: {
21
- TinyDropdown: Dropdown,
22
- TinyDropdownMenu: DropdownMenu,
23
- TinyDropdownItem: DropdownItem
24
- }
25
- }
40
+ const tinyIconEllipsis = iconEllipsis()
26
41
  </script>
42
+
43
+ <style lang="less" scoped>
44
+ p {
45
+ line-height: 1.5;
46
+ font-size: 14px;
47
+ margin-top: 30px;
48
+ }
49
+ </style>
@@ -1,26 +1,56 @@
1
1
  <template>
2
- <tiny-dropdown :show-icon="false">
3
- <template #dropdown>
4
- <tiny-dropdown-menu>
5
- <tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
6
- <tiny-dropdown-item>黄金糕</tiny-dropdown-item>
7
- <tiny-dropdown-item>狮子头</tiny-dropdown-item>
8
- <tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
9
- <tiny-dropdown-item>双皮奶</tiny-dropdown-item>
10
- <tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
11
- </tiny-dropdown-menu>
12
- </template>
13
- </tiny-dropdown>
2
+ <div>
3
+ <p>场景1: 只显示文本</p>
4
+ <tiny-dropdown :show-icon="false">
5
+ <template #dropdown>
6
+ <tiny-dropdown-menu>
7
+ <tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
8
+ <tiny-dropdown-item>黄金糕</tiny-dropdown-item>
9
+ <tiny-dropdown-item>狮子头</tiny-dropdown-item>
10
+ <tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
11
+ <tiny-dropdown-item>双皮奶</tiny-dropdown-item>
12
+ <tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
13
+ </tiny-dropdown-menu>
14
+ </template>
15
+ </tiny-dropdown>
16
+ <p>场景2:自定义图且只显示图标</p>
17
+ <tiny-dropdown class="custom-icon" title="" :suffix-icon="tinyIconEllipsis">
18
+ <template #dropdown>
19
+ <tiny-dropdown-menu>
20
+ <tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
21
+ <tiny-dropdown-item>黄金糕</tiny-dropdown-item>
22
+ <tiny-dropdown-item>狮子头</tiny-dropdown-item>
23
+ <tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
24
+ <tiny-dropdown-item>双皮奶</tiny-dropdown-item>
25
+ <tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
26
+ </tiny-dropdown-menu>
27
+ </template>
28
+ </tiny-dropdown>
29
+ </div>
14
30
  </template>
15
31
 
16
32
  <script>
17
33
  import { Dropdown, DropdownMenu, DropdownItem } from '@opentiny/vue'
34
+ import { iconEllipsis } from '@opentiny/vue-icon'
18
35
 
19
36
  export default {
20
37
  components: {
21
38
  TinyDropdown: Dropdown,
22
39
  TinyDropdownMenu: DropdownMenu,
23
40
  TinyDropdownItem: DropdownItem
41
+ },
42
+ data() {
43
+ return {
44
+ tinyIconEllipsis: iconEllipsis()
45
+ }
24
46
  }
25
47
  }
26
48
  </script>
49
+
50
+ <style lang="less" scoped>
51
+ p {
52
+ line-height: 1.5;
53
+ font-size: 14px;
54
+ margin-top: 30px;
55
+ }
56
+ </style>
@@ -33,11 +33,12 @@ export default {
33
33
  },
34
34
  {
35
35
  'demoId': 'show-icon',
36
- 'name': { 'zh-CN': '隐藏图标', 'en-US': 'Show icons' },
36
+ 'name': { 'zh-CN': '图标', 'en-US': 'Show icons' },
37
37
  'desc': {
38
- 'zh-CN': '<p>通过 <code>show-icon</code> 属性设置触发源的图标显示或隐藏,默认显示,设置为 false 时隐藏。</p>\n',
38
+ 'zh-CN':
39
+ '<p>通过 <code>show-icon</code> 属性设置是否显示下拉触发源图标,<code>suffix-icon</code> 设置下拉触发源图标。</p>\n',
39
40
  'en-US':
40
- '<p>Additional sizes: <code>medium</code>, <code>small</code>, <code>mini</code>, configured by setting the <code>size</code> property. </p>\n'
41
+ '<p> Set whether to display the dropdown trigger source icon through the <code>show-icon</code> attribute, and set the dropdown trigger source icon through the <code>suffix-icon</code> setting. </p>\n'
41
42
  },
42
43
  'codeFiles': ['show-icon.vue']
43
44
  },
@@ -237,6 +238,16 @@ export default {
237
238
  },
238
239
  'demoId': 'trigger'
239
240
  },
241
+ {
242
+ 'name': 'size',
243
+ 'type': '"medium" | "small" | "mini"',
244
+ 'defaultValue': '',
245
+ 'desc': {
246
+ 'zh-CN': '菜单尺寸。注意:只在 split-button为 true 的情况下生效',
247
+ 'en-US': 'Menu size. Note: Only takes effect when split-button is true'
248
+ },
249
+ 'demoId': 'size'
250
+ },
240
251
  {
241
252
  'name': 'split-button',
242
253
  'type': 'boolean',
@@ -248,14 +259,24 @@ export default {
248
259
  'demoId': 'split-button'
249
260
  },
250
261
  {
251
- 'name': 'size',
252
- 'type': '"medium" | "small" | "mini"',
262
+ 'name': 'show-icon',
263
+ 'type': 'boolean',
264
+ 'defaultValue': 'true',
265
+ 'desc': {
266
+ 'zh-CN': '是否显示下拉触发源图标',
267
+ 'en-US': 'Is the dropdown trigger source icon displayed'
268
+ },
269
+ 'demoId': 'show-icon'
270
+ },
271
+ {
272
+ 'name': 'suffix-icon',
273
+ 'type': 'VueComponent',
253
274
  'defaultValue': '',
254
275
  'desc': {
255
- 'zh-CN': '菜单尺寸。注意:只在 split-button为 true 的情况下生效',
256
- 'en-US': 'Menu size. Note: Only takes effect when split-button is true'
276
+ 'zh-CN': '下拉触发源图标',
277
+ 'en-US': 'Dropdown trigger source icon'
257
278
  },
258
- 'demoId': 'size'
279
+ 'demoId': 'show-icon'
259
280
  },
260
281
  {
261
282
  'name': 'type',
@@ -3,18 +3,15 @@ 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('fall-menu#custom-menuitem')
6
- const preview = page.locator('#preview')
7
6
  // 子菜单列表容器
8
- const fallMenuBox = preview.locator('.tiny-fall-menu__box')
7
+ const preview = page.locator('.tiny-fall-menu__wrap')
9
8
  // 父菜单列表
10
- const fallMenuList = preview.locator('.tiny-fall-menu__list')
11
- await page.getByText('首页level1').hover()
12
- await expect(fallMenuBox).toBeHidden()
13
- await page.getByText('指南level1').hover()
14
- await expect(fallMenuBox).toBeVisible()
9
+ const fallMenuList = page.locator('.tiny-fall-menu__list')
10
+ await preview.getByText('指南 level1').hover()
11
+ await page.waitForTimeout(1000)
15
12
  // 点击左、右侧图标切换列表
16
- await preview.locator('.icon-slot-right').click()
13
+ await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-right').click()
17
14
  await expect(fallMenuList).toHaveCSS('left', /^-\d+px/)
18
- await preview.locator('.icon-slot-left').click()
15
+ await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-left').click()
19
16
  await expect(fallMenuList).toHaveCSS('left', '0px')
20
17
  })
@@ -1,28 +1,17 @@
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
- await page.goto('fall-menu#custom-slider-icon')
6
- const preview = page.locator('#preview')
7
- // 右侧插槽图标
8
- const rightSlotIcon = preview.locator('.icon-slot-right')
5
+ await page.goto('fall-menu#custom-menuitem')
6
+ // 子菜单列表容器
7
+ const preview = page.locator('.tiny-fall-menu__wrap')
9
8
  // 父菜单列表
10
- const fallMenuList = preview.locator('.tiny-fall-menu__list')
11
- // 是否是默认图标
12
- await expect(rightSlotIcon.locator('svg path').getAttribute('d')).not.toContain(
13
- 'M7 21c.2 0 .5-.1.6-.2l9.9-8c.2-.2.4-.5.4-.8'
14
- )
15
- // 点击右侧更多切换图标
16
- await rightSlotIcon.click()
17
- // 向左移动
9
+ const fallMenuList = page.locator('.tiny-fall-menu__list')
10
+ await preview.getByText('组件 level1').hover()
11
+ await page.waitForTimeout(1000)
12
+ // 点击左、右侧图标切换列表
13
+ await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-right').click()
18
14
  await expect(fallMenuList).toHaveCSS('left', /^-\d+px/)
19
- // 左侧插槽图标
20
- const leftSlotIcon = preview.locator('.icon-slot-left')
21
- await expect(leftSlotIcon.locator('svg path').getAttribute('d')).not.toContain(
22
- 'M17 21c-.2 0-.5-.1-.6-.2l-9.9-8c-.4-.2-.5-.5-.5-.8'
23
- )
24
- // 点击左侧更多切换图标
25
- await leftSlotIcon.click()
26
- // 向右移动
15
+ await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-left').click()
27
16
  await expect(fallMenuList).toHaveCSS('left', '0px')
28
17
  })
@@ -4,22 +4,19 @@ import { test, expect } from '@playwright/test'
4
4
  test('基础用法、数据源', async ({ page }) => {
5
5
  page.on('pageerror', (exception) => expect(exception).toBeNull())
6
6
  await page.goto('fall-menu#data-resource')
7
- const preview = page.locator('#preview')
8
- await preview.getByRole('link', { name: '指南' }).hover()
9
- const fallMenuBox = preview.locator('.tiny-fall-menu__box')
7
+ const preview = page.locator('.tiny-fall-menu__wrap')
10
8
  // 父菜单列表
11
- const fallMenuList = preview.locator('.tiny-fall-menu__list')
9
+ const fallMenuList = page.locator('.tiny-fall-menu__list')
12
10
  // 菜单列表应该可见
13
- await expect(fallMenuBox).toBeVisible()
14
- await preview.getByRole('link', { name: '规范' }).hover()
11
+ await preview.getByText(/^指南*$/i).hover()
12
+ await page.waitForTimeout(1000)
15
13
  // 菜单列表应该不可见
16
- await expect(fallMenuBox).toBeHidden()
17
14
  // 点击右侧更多切换图标
18
- await preview.getByRole('img').nth(1).click()
15
+ await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-right').click()
19
16
  // 向左移动
20
17
  await expect(fallMenuList).toHaveCSS('left', /^-\d+px/)
21
18
  // 点击左侧更多切换图标
22
- await preview.getByRole('img').nth(1).click()
19
+ await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-left').click()
23
20
  // 向右移动
24
21
  await expect(fallMenuList).toHaveCSS('left', '0px')
25
22
  })
@@ -4,8 +4,8 @@ test('手动取消上传请求', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('file-upload#abort-quest')
6
6
 
7
- const upload = page.locator('.tiny-upload')
8
- const lists = page.locator('.tiny-upload-list__item')
7
+ const upload = page.getByRole('button', { name: '点击上传' })
8
+ const item = page.locator('.tiny-upload-list__li').nth(0)
9
9
  const modal = page.locator('.tiny-modal')
10
10
  const button = page.locator('button').filter({ hasText: '取消上传' })
11
11
  const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
@@ -13,9 +13,10 @@ test('手动取消上传请求', async ({ page }) => {
13
13
  const path = require('node:path')
14
14
  const currentPath = path.resolve(__dirname, '测试.jpg')
15
15
 
16
- await button.click()
17
- await expect(modal).toHaveText('手动取消上传')
18
16
  await fileChooser.setFiles(currentPath)
17
+ await item.isVisible()
18
+ await button.click()
19
+ await expect(modal.nth(1)).toHaveText('手动取消上传')
20
+ await item.isHidden()
19
21
  await expect(fileChooser.isMultiple()).toBe(false)
20
- await expect(lists).toHaveCount(1)
21
22
  })
@@ -1,21 +1,26 @@
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('file-upload#accept-file-image')
6
6
 
7
7
  const upload = page.getByRole('button', { name: '点击上传' })
8
- const lists = page.locator('.tiny-upload-list__item')
8
+ const lists = page.locator('.tiny-upload-list__li')
9
9
  const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
10
10
 
11
11
  const path = require('node:path')
12
12
  const path1 = path.resolve(__dirname, '测试.jpg')
13
13
  const path2 = path.resolve(__dirname, '测试.svg')
14
14
  const path3 = path.resolve(__dirname, '测试.png')
15
+ const path4 = path.resolve(__dirname, '测试.txt')
15
16
 
16
17
  await fileChooser.setFiles(path1)
17
18
  await fileChooser.setFiles(path2)
18
19
  await fileChooser.setFiles(path3)
19
- await expect(lists).toHaveCount(3)
20
- await expect(lists).toHaveText([/测试.jpg/, /测试.svg/, /测试.png/])
20
+ await fileChooser.setFiles(path4)
21
+ await page.getByText('格式(.txt)暂不支持').isVisible()
22
+
23
+ await page.getByText('测试.jpg').isVisible()
24
+ await page.getByText('测试.svg').isVisible()
25
+ await page.getByText('测试.png').isVisible()
21
26
  })
@@ -1,6 +1,6 @@
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('file-upload#custom-trigger')
6
6
 
@@ -1,11 +1,10 @@
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
- await page.goto('http://localhost:7130/pc/file-upload/disabled')
5
+ await page.goto('file-upload#disabled')
6
6
 
7
- const upload = page.getByRole('button', { name: '点击上传' })
8
- const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
7
+ const upload = page.locator('.tiny-upload')
9
8
 
10
- await expect(fileChooser).toBeUndefined()
9
+ await expect(upload).toHaveClass(/is-disabled/)
11
10
  })
@@ -15,6 +15,6 @@ test('是否可以拖拽上传', async ({ page }) => {
15
15
  await expect(drag).toHaveCSS('width', '360px')
16
16
  await expect(drag).toHaveCSS('height', '180px')
17
17
  await fileChooser.setFiles(currentPath)
18
- await expect(lists).toHaveText(/测试.jpg/)
18
+ await expect(lists.nth(0)).toHaveText(/测试.jpg/)
19
19
  await expect(input).toHaveAttribute('accept', '.png,.jpeg,.jpg')
20
20
  })
@@ -1,17 +1,17 @@
1
1
  import { test, expect } from '@playwright/test'
2
2
 
3
- test('文件缩略图', async ({ page, context }) => {
3
+ test('照片墙的预览、下载与删除', async ({ page, context }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('file-upload#file-picture-card')
6
6
 
7
7
  const upload = page.locator('.tiny-upload')
8
8
  const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
9
9
  const lists = page.locator('.tiny-upload-list__item')
10
- const prevPic = page.locator('#preview').getByRole('listitem').locator('svg').first()
10
+ const prevPic = page.locator('#file-picture-card svg').first()
11
11
  const prevImg = page.locator('.tiny-dialog-box__body > img')
12
12
  const dialogClose = page.getByRole('button', { name: 'Close' })
13
- const dowPic = page.locator('#preview').getByRole('listitem').locator('svg').nth(1)
14
- const delbutton = page.locator('#preview').getByRole('listitem').locator('svg').nth(2)
13
+ const dowPic = page.locator('#file-picture-card svg').nth(1)
14
+ const delbutton = page.locator('#file-picture-card svg').nth(2)
15
15
 
16
16
  const path = require('node:path')
17
17
  const currentPath = path.resolve(__dirname, '测试.jpg')
@@ -19,17 +19,18 @@ test('文件缩略图', async ({ page, context }) => {
19
19
  await expect(lists).toHaveCount(0)
20
20
  await fileChooser.setFiles(currentPath)
21
21
  await expect(lists).toHaveCount(1)
22
+ await lists.first().hover()
22
23
  const [newPage] = await Promise.all([context.waitForEvent('page'), dowPic.click()])
23
24
  await expect(newPage.url()).toContain('blob:http://localhost:')
24
25
  await newPage.close()
25
- await lists.hover()
26
+ await lists.first().hover()
26
27
  await prevPic.click()
27
28
  await prevImg.isVisible()
28
29
  const { width, height } = await lists.boundingBox()
29
30
  await expect(width).toEqual(148)
30
31
  await expect(height).toEqual(148)
31
32
  await dialogClose.click()
32
- await lists.hover()
33
+ await lists.first().hover()
33
34
  await delbutton.click()
34
35
  await expect(lists).toHaveCount(0)
35
36
  })
@@ -2,9 +2,9 @@ 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('http://localhost:7130/pc/file-upload/form-validation')
5
+ await page.goto('file-upload#form-validation')
6
6
 
7
- const button = page.locator('.tiny-button')
7
+ const button = page.locator('button').filter({ hasText: '提交' })
8
8
  const tip = page.locator('.tiny-form-item__validate-message')
9
9
 
10
10
  await button.click()
@@ -1,6 +1,6 @@
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('file-upload#image-size')
6
6
 
@@ -12,5 +12,5 @@ test('获取上传的片的原始尺寸', async ({ page }) => {
12
12
  const currentPath = path.resolve(__dirname, '测试.jpg')
13
13
 
14
14
  await fileChooser.setFiles(currentPath)
15
- await expect(modal).toHaveText(/宽:\d+ 高:\d+/)
15
+ await expect(modal.nth(1)).toHaveText(/宽:\d+ 高:\d+/)
16
16
  })
@@ -1,21 +1,21 @@
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('file-upload#max-file-count')
6
6
 
7
7
  const upload = page.getByRole('button', { name: '点击上传' })
8
- const lists = page.locator('.tiny-upload-list__item')
8
+ const lists = page.locator('.tiny-upload-list__li')
9
9
  const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
10
- const modal = page.locator('.tiny-modal')
10
+ const modal = page.locator('.tiny-modal').getByText(/文件数不能超过/)
11
11
 
12
12
  const path = require('node:path')
13
13
  const path1 = path.resolve(__dirname, '测试.jpg')
14
14
  const path2 = path.resolve(__dirname, '测试.png')
15
15
 
16
+ await fileChooser.setFiles([path1, path2])
17
+ await modal.isVisible()
16
18
  await fileChooser.setFiles(path1)
17
19
  await expect(lists).toHaveCount(1)
18
- await fileChooser.setFiles(path2)
19
- await expect(lists).toHaveCount(1)
20
- await modal.waitFor({ state: 'attached', timeout: 100 })
20
+ await upload.isHidden()
21
21
  })
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <tiny-file-upload drag accept=".png,.jpeg,.jpg" action="#" paste-upload :auto-upload="false" :max-name-length="3">
3
- <icon-fileupload class="tiny-svg-size icon-fileupload"></icon-fileupload>
3
+ <icon-file-upload class="tiny-svg-size icon-fileupload"></icon-file-upload>
4
4
  </tiny-file-upload>
5
5
  </template>
6
6
 
@@ -8,5 +8,5 @@
8
8
  import { FileUpload as TinyFileUpload } from '@opentiny/vue'
9
9
  import { iconFileupload } from '@opentiny/vue-icon'
10
10
 
11
- const IconFileupload = iconFileupload()
11
+ const IconFileUpload = iconFileupload()
12
12
  </script>
@@ -1,10 +1,27 @@
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
- await page.goto('http://localhost:7130/pc/file-upload/paste-upload')
5
+ await page.goto('file-upload#paste-upload')
6
6
 
7
7
  const drag = page.locator('.tiny-upload-dragger')
8
8
  await expect(drag).toHaveCSS('width', '360px')
9
9
  await expect(drag).toHaveCSS('height', '180px')
10
+
11
+ const path = require('node:path')
12
+ const pathJpg = path.resolve(__dirname, '测试.jpg')
13
+
14
+ await page.goto(pathJpg)
15
+
16
+ await page.keyboard.down('Control')
17
+ await page.keyboard.press('KeyC')
18
+ await page.keyboard.up('Control')
19
+
20
+ await page.goto('file-upload#paste-upload')
21
+
22
+ await page.focus('div.tiny-upload-dragger')
23
+
24
+ await page.keyboard.down('Control')
25
+ await page.keyboard.press('KeyV')
26
+ await page.keyboard.up('Control')
10
27
  })