@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,8 +5,9 @@ test('照片墙', async ({ page }) => {
5
5
  await page.goto('file-upload#picture-card')
6
6
 
7
7
  const upload = page.locator('.tiny-upload')
8
- const lists = page.locator('.tiny-upload-list__item')
9
- const first = lists.nth(0)
8
+ const li = page.locator('.tiny-upload-list__li')
9
+ const items = li.locator('.tiny-upload-list__item')
10
+ const first = items.nth(0)
10
11
  const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
11
12
  const delButton = page
12
13
  .getByRole('listitem')
@@ -24,14 +25,14 @@ test('照片墙', async ({ page }) => {
24
25
 
25
26
  await expect(width).toEqual(148)
26
27
  await expect(height).toEqual(148)
27
- await expect(lists).toHaveCount(1)
28
+ await expect(li).toHaveCount(1)
28
29
  await fileChooser.setFiles(currentPath)
29
- await expect(lists).toHaveCount(2)
30
+ await expect(li).toHaveCount(2)
30
31
  await first.hover()
31
32
  await prevPic.click()
32
33
  await expect(prevImg).toHaveAttribute('src', '/static/images/fruit.jpg')
33
34
  await dialogClose.click()
34
35
  await first.hover()
35
36
  await delButton.click()
36
- await expect(lists).toHaveCount(1)
37
+ await expect(items).toHaveCount(1)
37
38
  })
@@ -7,7 +7,6 @@ test('图片列表缩略图', async ({ page }) => {
7
7
  const upload = page.locator('.tiny-upload')
8
8
  const lists = page.locator('.tiny-upload-list__item')
9
9
  const item1 = page.getByText('test1按 delete 键可删除')
10
- const item2 = page.getByText('test2按 delete 键可删除')
11
10
  const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
12
11
  const { width, height } = await item1.boundingBox()
13
12
  const images = page.locator('.tiny-upload-list__item-thumbnail')
@@ -16,8 +15,8 @@ test('图片列表缩略图', async ({ page }) => {
16
15
  const path = require('node:path')
17
16
  const currentPath = path.resolve(__dirname, '测试.jpg')
18
17
 
19
- await expect(width).toEqual(771)
20
- await expect(height).toEqual(56)
18
+ await expect(width).toBeGreaterThanOrEqual(708)
19
+ await expect(height).toBeGreaterThanOrEqual(56)
21
20
  await expect(lists).toHaveCount(2)
22
21
  await fileChooser.setFiles(currentPath)
23
22
  await expect(images.nth(0)).toHaveCSS('width', '56px')
@@ -13,7 +13,7 @@ test('阻止删除文件', async ({ page }) => {
13
13
  await expect(lists).toHaveText(/test1/)
14
14
  await lists.hover()
15
15
  await close.click()
16
- await modal.waitFor({ state: 'attached', timeout: 100 })
16
+ await modal.nth(1).waitFor({ state: 'attached', timeout: 100 })
17
17
  await modalCancel.click()
18
18
  await expect(lists).toHaveCount(1)
19
19
  await expect(lists).toHaveText(/test1/)
@@ -5,7 +5,7 @@ test('阻止上传文件', async ({ page }) => {
5
5
  await page.goto('file-upload#prevent-upload-file')
6
6
 
7
7
  const upload = page.getByRole('button', { name: '选取文件' })
8
- const modal = page.locator('.tiny-modal')
8
+ const modal = page.locator('.tiny-modal').nth(1)
9
9
  const modalCancel = page.getByRole('button', { name: '取消' })
10
10
  const lists = page.locator('.tiny-upload-list__item')
11
11
  const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
@@ -18,12 +18,14 @@ test('事件', async ({ page }) => {
18
18
  const currentPath = path.resolve(__dirname, '测试.jpg')
19
19
 
20
20
  await fileChooser.setFiles(currentPath)
21
- await expect(modals).toHaveCount(3)
22
- await expect(modals).toHaveText(['触发上传文件改变回调事件', '文件上传失败回调', '触发上传文件改变回调事件'])
21
+ await page.getByText('文件上传失败回调').isVisible()
22
+ await expect(page.getByText('触发上传文件改变回调事件')).toHaveCount(2)
23
+ await page.waitForTimeout(100)
24
+
23
25
  await lists.nth(0).hover()
24
26
  await delButton.click()
25
- await expect(modals.nth(3)).toHaveText('触发删除文件回调事件')
27
+ await page.getByText('触发删除文件回调事件').isVisible()
26
28
 
27
29
  await fileChooser.setFiles([currentPath, currentPath, currentPath, currentPath])
28
- await expect(modals.nth(3)).toHaveText('触发文件超出个数限制回调事件')
30
+ await page.getByText('触发文件超出个数限制回调事件').isVisible()
29
31
  })
@@ -0,0 +1,18 @@
1
+ import { test, expect } from '@playwright/test'
2
+
3
+ test('定义文件列表', async ({ page }) => {
4
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
5
+ await page.goto('file-upload#upload-file-list-slot')
6
+
7
+ const upload = page.getByRole('button', { name: '点击上传' })
8
+ const lists = page.locator('.tiny-upload-list__item')
9
+ const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
10
+
11
+ const path = require('node:path')
12
+ const currentPath = path.resolve(__dirname, '测试.jpg')
13
+
14
+ await expect(lists).toHaveCount(2)
15
+ await expect(lists).toHaveText([/test1/, /test2/])
16
+ await fileChooser.setFiles(currentPath)
17
+ await page.getByText('测试.jpg').isVisible()
18
+ })
@@ -23,9 +23,10 @@ const options = ref({
23
23
  showDel: true,
24
24
  showTooltip: false,
25
25
  popperClass: 'my-thumb-name',
26
- downloadFile: (file) => {
27
- console.log('file', file)
28
- },
26
+ // 取消以下注释自定义下载
27
+ // downloadFile: (file) => {
28
+ // console.log('file', file)
29
+ // },
29
30
  icon: iconEditorListNum()
30
31
  })
31
32
  const fileList = ref([
@@ -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#upload-file-list-thumb')
6
6
 
@@ -12,7 +12,7 @@ test('上传的文件列表弹出显示', async ({ page }) => {
12
12
  await expect(thumb).toHaveText('2')
13
13
  await thumb.hover()
14
14
  await popList.isVisible()
15
- await delItem1.locator('svg').dblclick()
15
+ await delItem1.locator('svg').click()
16
16
  await expect(thumb).toHaveText('1')
17
17
  const page3Promise = page.waitForEvent('popup')
18
18
  await downloadItem2.locator('svg').click()
@@ -29,9 +29,10 @@ export default {
29
29
  showDel: true,
30
30
  showTooltip: false,
31
31
  popperClass: 'my-thumb-name',
32
- downloadFile: (file) => {
33
- console.log('file', file)
34
- },
32
+ // 取消以下注释自定义下载
33
+ // downloadFile: (file) => {
34
+ // console.log('file', file)
35
+ // },
35
36
  icon: iconEditorListNum()
36
37
  },
37
38
  fileList: [
@@ -1,22 +1,22 @@
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#upload-file-list')
6
6
 
7
7
  const upload = page.getByRole('button', { name: '点击上传' })
8
- const lists = page.locator('.tiny-upload-list__item')
8
+ const items = page.locator('.tiny-upload-list__item')
9
9
  const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
10
- const { width, height } = await lists.nth(0).boundingBox()
10
+ const { width, height } = await items.nth(0).boundingBox()
11
11
 
12
12
  const path = require('node:path')
13
13
  const currentPath = path.resolve(__dirname, '测试.jpg')
14
14
 
15
- await expect(width).toEqual(771)
16
- await expect(height).toBeCloseTo(25, 0)
17
- await expect(lists).toHaveCount(2)
18
- await expect(lists).toHaveText([/test1/, /test2/])
15
+ await expect(width).toBeGreaterThanOrEqual(708)
16
+ await expect(height).toBeGreaterThanOrEqual(25, 0)
17
+ await expect(items).toHaveCount(2)
18
+ await expect(items).toHaveText([/test1/, /test2/])
19
19
  await fileChooser.setFiles(currentPath)
20
- await expect(lists).toHaveCount(3)
21
- await expect(lists).toHaveText([/test1/, /test2/, /测试.jpg/])
20
+ await page.getByText('测试.jpg').isVisible()
21
+ await expect(items).toHaveText([/test1/, /test2/])
22
22
  })
@@ -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#upload-limit')
6
6
 
@@ -13,11 +13,8 @@ test('最大上传限制', async ({ page }) => {
13
13
  const path2 = path.resolve(__dirname, '测试.svg')
14
14
  const path3 = path.resolve(__dirname, '测试.png')
15
15
 
16
- await fileChooser.setFiles(path1)
17
- await expect(lists).toHaveCount(1)
18
- await fileChooser.setFiles(path2)
19
- await expect(lists).toHaveCount(1)
20
- await fileChooser.setFiles(path3)
21
- await expect(lists).toHaveCount(1)
22
- await expect(lists).toHaveText(/测试.jpg/)
16
+ fileChooser.setFiles(path1)
17
+ fileChooser.setFiles(path2)
18
+ fileChooser.setFiles(path3)
19
+ await expect(lists).toHaveCount(0)
23
20
  })
@@ -16,7 +16,7 @@ test.describe('设置上传请求', () => {
16
16
 
17
17
  test('支持发送 cookie 凭证信息', async ({ page }) => {
18
18
  page.on('pageerror', (exception) => expect(exception).toBeNull())
19
- await page.goto('file-upload#upload-request1')
19
+ await page.goto('file-upload#upload-request')
20
20
 
21
21
  const upload = page.getByRole('button', { name: '选取文件' })
22
22
  const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
@@ -5,7 +5,7 @@ test('用户头像上传', async ({ page }) => {
5
5
  await page.goto('file-upload#upload-user-head')
6
6
 
7
7
  const upload = page.locator('.tiny-upload')
8
- const addIcon = page.locator('#preview svg').nth(1)
8
+ const addIcon = page.locator('#upload-user-head svg')
9
9
 
10
10
  await expect(upload).toHaveCSS('width', '87px')
11
11
  await expect(upload).toHaveCSS('height', '87px')
@@ -212,12 +212,12 @@ export default {
212
212
  'demoId': 'upload-events',
213
213
  'name': { 'zh-CN': '事件', 'en-US': 'Event' },
214
214
  'desc': {
215
- 'zh-CN': `<div class="tip custom-block"><p class="custom-block-title"> <code>preview</code> 监听文件点击事件;<br/> <code>remove</code> 监听文件移除事件;<br/> <code>error</code> 监听文件上传失败事件;<br/>
215
+ 'zh-CN': `<div class="tip custom-block"><code>preview</code> 监听文件点击事件;<br/> <code>remove</code> 监听文件移除事件;<br/> <code>error</code> 监听文件上传失败事件;<br/>
216
216
  <code>exceed</code> 监听文件超出个数限制事件;<br/> <code>progress</code> 监听文件上传过程事件;<br/> <code>change</code> 监听文件改变事件(文件改变涵盖文件添加、上传成功和上传失败);<br/>
217
- <code>success</code> 监听文件上传成功事件;<br/> <code>hash-progress</code> 监听文件上传生成hash值事件。</p></div>`,
218
- 'en-US': `<div class="tip custom-block"><p class="custom-block-title"> <code>preview</code> Listen for file click events; <br /> <code>remove</code> Listen for file removal events; <br /> <code>error</code> Listen for file upload failure events;<br />
217
+ <code>success</code> 监听文件上传成功事件;<br/> <code>hash-progress</code> 监听文件上传生成hash值事件。</div>`,
218
+ 'en-US': `<div class="tip custom-block"><code>preview</code> Listen for file click events; <br /> <code>remove</code> Listen for file removal events; <br /> <code>error</code> Listen for file upload failure events;<br />
219
219
  <code>exceeded</code> Listen for events where the number of files exceeds the limit; <br/> <code>progress</code> Listen for file upload process events;<br/> <code>change</code> Listen for file change events (file changes include file addition, successful upload, and failed upload);<br />
220
- <code>success</code> Listen for file upload success events;<br/> <code>hash-progress</code> Listen for file upload to generate hash value events.</p></div>`
220
+ <code>success</code> Listen for file upload success events;<br/> <code>hash-progress</code> Listen for file upload to generate hash value events.</div>`
221
221
  },
222
222
  'codeFiles': ['upload-events.vue']
223
223
  },
@@ -0,0 +1 @@
1
+ 测试txt文件
@@ -1,12 +1,6 @@
1
1
  <template>
2
2
  <div class="demo-form">
3
- <tiny-form
4
- ref="ruleFormRef"
5
- :model="createData"
6
- :rules="rules"
7
- :validate-on-rule-change="isValidate"
8
- @validate="validate"
9
- >
3
+ <tiny-form ref="ruleFormRef" :model="createData" :rules="rules" :validate-on-rule-change="isValidate">
10
4
  <tiny-form-item label="用户名" prop="username">
11
5
  <tiny-input v-model="createData.username"></tiny-input>
12
6
  </tiny-form-item>
@@ -23,13 +17,7 @@
23
17
 
24
18
  <script setup>
25
19
  import { ref, reactive } from 'vue'
26
- import {
27
- Form as TinyForm,
28
- FormItem as TinyFormItem,
29
- Input as TinyInput,
30
- Button as TinyButton,
31
- Modal
32
- } from '@opentiny/vue'
20
+ import { Form as TinyForm, FormItem as TinyFormItem, Input as TinyInput, Button as TinyButton } from '@opentiny/vue'
33
21
 
34
22
  const ruleFormRef = ref()
35
23
  const createData = reactive({
@@ -1,12 +1,6 @@
1
1
  <template>
2
2
  <div class="demo-form">
3
- <tiny-form
4
- ref="ruleFormRef"
5
- :model="createData"
6
- :rules="rules"
7
- :validate-on-rule-change="isValidate"
8
- @validate="validate"
9
- >
3
+ <tiny-form ref="ruleFormRef" :model="createData" :rules="rules" :validate-on-rule-change="isValidate">
10
4
  <tiny-form-item label="用户名" prop="username">
11
5
  <tiny-input v-model="createData.username"></tiny-input>
12
6
  </tiny-form-item>
@@ -22,7 +16,7 @@
22
16
  </template>
23
17
 
24
18
  <script>
25
- import { Form, FormItem, Input, Button, Modal } from '@opentiny/vue'
19
+ import { Form, FormItem, Input, Button } from '@opentiny/vue'
26
20
 
27
21
  export default {
28
22
  components: {
@@ -8,7 +8,7 @@
8
8
  label-width="100px"
9
9
  show-message
10
10
  >
11
- <tiny-form-item label="姓名" prop="users" required :validate-icon="validateIcon">
11
+ <tiny-form-item label="姓名" prop="users" required>
12
12
  <tiny-input v-model="createData.users"></tiny-input>
13
13
  </tiny-form-item>
14
14
  <tiny-form-item label="日期" prop="datepicker">
@@ -62,7 +62,7 @@ export default {
62
62
  }
63
63
  })
64
64
  if (errArray.length > 0) {
65
- console.log(errArray)
65
+ // empty
66
66
  } else {
67
67
  Modal.alert('日期和url通过校验')
68
68
  }
@@ -7,20 +7,40 @@ test('测试表单尺寸', async ({ page }) => {
7
7
  const demo = page.locator('#size')
8
8
  const form = demo.locator('.tiny-form')
9
9
  const getBtnByText = (text: string) => demo.locator('.tiny-button-group').getByRole('button', { name: text })
10
+ const submitBtn = form.getByRole('button', { name: '提交' })
11
+ const input = form.locator('.tiny-numeric__input')
12
+ const firstLabel = form.locator('.tiny-form-item__label').first()
10
13
 
11
14
  // mini表单
15
+ const miniHeight = '24px'
12
16
  await getBtnByText('mini').click()
13
17
  await expect(form.locator('.tiny-form-item--mini')).toHaveCount(7)
14
- await expect(form.getByRole('button', { name: '提交' })).toHaveClass(/tiny-button--mini/)
15
- await expect(form.locator('.tiny-numeric__input')).toHaveClass(/tiny-input-mini/)
18
+ await expect(submitBtn).toHaveClass(/tiny-button--mini/)
19
+ await expect(input).toHaveClass(/tiny-input-mini/)
20
+ await expect(submitBtn).toHaveCSS('height', miniHeight)
21
+ await expect(input).toHaveCSS('height', miniHeight)
22
+ await expect(firstLabel).toHaveCSS('height', miniHeight)
23
+ await expect(firstLabel).toHaveCSS('line-height', miniHeight)
24
+
16
25
  // small表单
26
+ const smallHeight = '32px'
17
27
  await getBtnByText('small').click()
18
28
  await expect(form.locator('.tiny-form-item--small')).toHaveCount(7)
19
- await expect(form.getByRole('button', { name: '提交' })).toHaveClass(/tiny-button--small/)
20
- await expect(form.locator('.tiny-numeric__input')).toHaveClass(/tiny-input-small/)
29
+ await expect(submitBtn).toHaveClass(/tiny-button--small/)
30
+ await expect(input).toHaveClass(/tiny-input-small/)
31
+ await expect(submitBtn).toHaveCSS('height', smallHeight)
32
+ await expect(input).toHaveCSS('height', smallHeight)
33
+ await expect(firstLabel).toHaveCSS('height', smallHeight)
34
+ await expect(firstLabel).toHaveCSS('line-height', smallHeight)
35
+
21
36
  // medium表单
37
+ const mediumHeight = '40px'
22
38
  await getBtnByText('medium').click()
23
39
  await expect(form.locator('.tiny-form-item--medium')).toHaveCount(7)
24
- await expect(form.getByRole('button', { name: '提交' })).toHaveClass(/tiny-button--medium/)
25
- await expect(form.locator('.tiny-numeric__input')).toHaveClass(/tiny-input-medium/)
40
+ await expect(submitBtn).toHaveClass(/tiny-button--medium/)
41
+ await expect(input).toHaveClass(/tiny-input-medium/)
42
+ await expect(submitBtn).toHaveCSS('height', mediumHeight)
43
+ await expect(input).toHaveCSS('height', mediumHeight)
44
+ await expect(firstLabel).toHaveCSS('height', mediumHeight)
45
+ await expect(firstLabel).toHaveCSS('line-height', mediumHeight)
26
46
  })
@@ -102,7 +102,7 @@ const cellClassName = ({ rowIndex, columnIndex }) => {
102
102
  color: palevioletred;
103
103
  }
104
104
  .grid-cell-style .tiny-grid-body__column.col-orange {
105
- background-color: #f60;
105
+ background-color: pink;
106
106
  color: #fff;
107
107
  }
108
108
  </style>
@@ -1,19 +1,38 @@
1
1
  <template>
2
- <tiny-grid
3
- class="grid-footer-cell-style"
4
- :data="tableData"
5
- show-footer
6
- :footer-method="footerMethod"
7
- border
8
- :footer-cell-class-name="footerCellClassName"
9
- >
10
- <tiny-grid-column type="index" width="60"></tiny-grid-column>
11
- <tiny-grid-column type="selection" width="60"></tiny-grid-column>
12
- <tiny-grid-column field="name" title="公司名称"></tiny-grid-column>
13
- <tiny-grid-column field="employees" title="员工数"></tiny-grid-column>
14
- <tiny-grid-column field="createdDate" title="创建日期"></tiny-grid-column>
15
- <tiny-grid-column field="city" title="城市"></tiny-grid-column>
16
- </tiny-grid>
2
+ <div>
3
+ <h4 class="title">自定义表尾行样式:</h4>
4
+ <tiny-grid
5
+ class="grid-footer-row-style"
6
+ :data="tableData"
7
+ show-footer
8
+ :footer-method="footerMethod"
9
+ border
10
+ :footer-row-class-name="footerRowClassName"
11
+ >
12
+ <tiny-grid-column type="index" width="60"></tiny-grid-column>
13
+ <tiny-grid-column type="selection" width="60"></tiny-grid-column>
14
+ <tiny-grid-column field="name" title="公司名称"></tiny-grid-column>
15
+ <tiny-grid-column field="employees" title="员工数"></tiny-grid-column>
16
+ <tiny-grid-column field="createdDate" title="创建日期"></tiny-grid-column>
17
+ <tiny-grid-column field="city" title="城市"></tiny-grid-column>
18
+ </tiny-grid>
19
+ <h4 class="title">自定义表尾单元格样式:</h4>
20
+ <tiny-grid
21
+ class="grid-footer-cell-style"
22
+ :data="tableData"
23
+ show-footer
24
+ :footer-method="footerMethod"
25
+ border
26
+ :footer-cell-class-name="footerCellClassName"
27
+ >
28
+ <tiny-grid-column type="index" width="60"></tiny-grid-column>
29
+ <tiny-grid-column type="selection" width="60"></tiny-grid-column>
30
+ <tiny-grid-column field="name" title="公司名称"></tiny-grid-column>
31
+ <tiny-grid-column field="employees" title="员工数"></tiny-grid-column>
32
+ <tiny-grid-column field="createdDate" title="创建日期"></tiny-grid-column>
33
+ <tiny-grid-column field="city" title="城市"></tiny-grid-column>
34
+ </tiny-grid>
35
+ </div>
17
36
  </template>
18
37
 
19
38
  <script setup lang="jsx">
@@ -79,7 +98,7 @@ const tableData = ref([
79
98
  }
80
99
  ])
81
100
 
82
- function footerMethod({ columns, data }) {
101
+ const footerMethod = ({ columns, data }) => {
83
102
  return [
84
103
  columns.map((column, columnIndex) => {
85
104
  if (columnIndex === 0) {
@@ -105,12 +124,20 @@ function footerMethod({ columns, data }) {
105
124
  })
106
125
  ]
107
126
  }
108
-
109
- function footerCellClassName({ $rowIndex }) {
110
- if ($rowIndex === 0) {
127
+ const footerCellClassName = ({ column, $rowIndex }) => {
128
+ if ($rowIndex === 0 && column.property === 'employees') {
111
129
  return 'footer__cell--blue'
112
130
  }
113
131
  }
132
+ const footerRowClassName = ({ $rowIndex }) => {
133
+ if ($rowIndex === 0) {
134
+ return 'footer__row--red'
135
+ }
136
+
137
+ if ($rowIndex === 1) {
138
+ return 'footer__row--green'
139
+ }
140
+ }
114
141
  </script>
115
142
 
116
143
  <style>
@@ -118,4 +145,22 @@ function footerCellClassName({ $rowIndex }) {
118
145
  background-color: #2db7f5;
119
146
  color: #fff;
120
147
  }
148
+
149
+ .grid-footer-row-style .tiny-grid-footer__row.footer__row--red {
150
+ background-color: palevioletred;
151
+ color: #fff;
152
+ }
153
+ .grid-footer-row-style .tiny-grid-footer__row.footer__row--green {
154
+ background-color: green;
155
+ color: #fff;
156
+ }
157
+ </style>
158
+
159
+ <style scoped>
160
+ .title {
161
+ font-size: 16px;
162
+ padding: 15px;
163
+ font-weight: bolder;
164
+ color: #444;
165
+ }
121
166
  </style>
@@ -2,8 +2,8 @@
2
2
  <tiny-grid :row-class-name="rowClassName" :data="tableData" row-key :drop-config="dropConfig">
3
3
  <tiny-grid-column field="id" width="60"></tiny-grid-column>
4
4
  <tiny-grid-column field="name" title="触发源" width="100">
5
- <template #default>
6
- <div class="only-me-can-drag">拖拽触发源</div>
5
+ <template #default="{ row }">
6
+ <div class="only-me-can-drag">拖拽触发源{{ row.id }}</div>
7
7
  </template>
8
8
  </tiny-grid-column>
9
9
  <tiny-grid-column field="name" title="公司名称"></tiny-grid-column>
@@ -18,7 +18,7 @@ import { ref } from 'vue'
18
18
  import { Grid as TinyGrid, GridColumn as TinyGridColumn } from '@opentiny/vue'
19
19
  import Sortable from 'sortablejs'
20
20
 
21
- const dropConfig = ref({
21
+ const dropConfig = {
22
22
  plugin: Sortable,
23
23
  row: true,
24
24
  trigger: '.only-me-can-drag', // 触发源控制
@@ -27,7 +27,7 @@ const dropConfig = ref({
27
27
  if (row.id === '8') return false // return false 时取消拖动
28
28
  },
29
29
  column: false // 取消列拖拽
30
- })
30
+ }
31
31
  const tableData = ref([
32
32
  {
33
33
  id: '1',
@@ -23,7 +23,7 @@
23
23
  ></tiny-grid-column>
24
24
  <tiny-grid-column title="操作" width="200" align="center">
25
25
  <template #default="data">
26
- <template v-if="$refs.theGrid && $refs.theGrid.hasActiveRow(data.row)">
26
+ <template v-if="$refs.theGridRef && $refs.theGridRef.hasActiveRow(data.row)">
27
27
  <tiny-button size="mini" @click="saveRowEvent(data.row)"> 保存 </tiny-button>
28
28
  <tiny-button size="mini" @click="cancelRowEvent(data.row)"> 取消 </tiny-button>
29
29
  </template>
@@ -90,7 +90,7 @@ const tableData = ref([
90
90
  introduction: '公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。'
91
91
  }
92
92
  ])
93
- const theGridRef = ref()
93
+ const theGridRef = ref('theGridRef')
94
94
 
95
95
  function editRowEvent(row) {
96
96
  theGridRef.value.setActiveRow(row).then(() => {
@@ -36,7 +36,7 @@
36
36
  </div>
37
37
  </template>
38
38
 
39
- <script lang="jsx">
39
+ <script>
40
40
  import { Grid, GridColumn, Button } from '@opentiny/vue'
41
41
 
42
42
  export default {
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div>
3
- <tiny-grid :data="tableData" @cell-mouseenter="cellMouseenterEvent">
3
+ <tiny-grid :data="tableData" @cell-mouseenter="cellMouseenterEvent" @cell-mouseleave="cellMouseleaveEvent">
4
4
  <tiny-grid-column type="index" title="序号" width="100"></tiny-grid-column>
5
5
  <tiny-grid-column field="name" title="名称"></tiny-grid-column>
6
6
  <tiny-grid-column field="area" title="区域"></tiny-grid-column>
@@ -2,6 +2,7 @@
2
2
  <div>
3
3
  <tiny-grid
4
4
  :data="tableData"
5
+ @header-cell-context-menu="headerMenuClick"
5
6
  @footer-cell-context-menu="footerMenuClick"
6
7
  :context-menu="{
7
8
  header: { options: headerMenus },
@@ -5,7 +5,7 @@
5
5
  @edit-closed="editClosed"
6
6
  @edit-disabled="editDisabled"
7
7
  seq-serial
8
- :edit-config="{ trigger: 'click', mode: 'cell', showStatus: true }"
8
+ :edit-config="{ trigger: 'click', mode: 'cell', showStatus: true, activeMethod }"
9
9
  >
10
10
  <tiny-grid-column type="index" width="60"></tiny-grid-column>
11
11
  <tiny-grid-column field="name" title="名称" :editor="{ component: 'input', autoselect: true }"></tiny-grid-column>
@@ -6,7 +6,12 @@
6
6
  <tiny-button @click="toggleRowExpansion">手动切换展开行</tiny-button>
7
7
  </div>
8
8
  <br />
9
- <tiny-grid :data="tableData" ref="grid" border :edit-config="{ trigger: 'click', mode: 'cell', showStatus: true }">
9
+ <tiny-grid
10
+ :data="tableData"
11
+ ref="gridRef"
12
+ border
13
+ :edit-config="{ trigger: 'click', mode: 'cell', showStatus: true }"
14
+ >
10
15
  <tiny-grid-column type="index" width="60"></tiny-grid-column>
11
16
  <tiny-grid-column type="selection" width="60"></tiny-grid-column>
12
17
  <tiny-grid-column type="expand" title="操作" width="60">
@@ -82,11 +87,11 @@ const tableData = ref([
82
87
  boole: true
83
88
  }
84
89
  ])
85
- const gridRef = ref()
90
+ const gridRef = ref('gridRef')
86
91
 
87
92
  const setRowExpansion = () => {
88
93
  gridRef.value.clearRowExpand()
89
- gridRef.value.setRowExpansion([this.tableData[1], this.tableData[0]], true)
94
+ gridRef.value.setRowExpansion([tableData.value[1], tableData.value[0]], true)
90
95
  }
91
96
 
92
97
  const setAllRowExpansion = () => {
@@ -94,7 +99,7 @@ const setAllRowExpansion = () => {
94
99
  }
95
100
 
96
101
  const toggleRowExpansion = () => {
97
- gridRef.value.toggleRowExpansion(this.tableData[1])
102
+ gridRef.value.toggleRowExpansion(tableData.value[1])
98
103
  }
99
104
 
100
105
  const checkboxEdit = (h, { row, column }) => {