@opentiny/vue-docs 3.27.1 → 3.28.0

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 (419) hide show
  1. package/demos/apis/base-select.js +2 -2
  2. package/demos/apis/chart-attributes-demo.js +4 -4
  3. package/demos/apis/chart-demo.js +4 -4
  4. package/demos/apis/chart-docs.js +4 -4
  5. package/demos/apis/chart-events.js +4 -4
  6. package/demos/apis/chart-question.js +4 -4
  7. package/demos/apis/chart.js +4 -4
  8. package/demos/apis/color-picker.js +1 -1
  9. package/demos/apis/color-select-panel.js +1 -1
  10. package/demos/apis/drawer.js +14 -0
  11. package/demos/apis/dropdown.js +6 -2
  12. package/demos/apis/grid-select.js +20 -21
  13. package/demos/apis/grid.js +1 -1
  14. package/demos/apis/modal.js +15 -1
  15. package/demos/apis/select-wrapper.js +1067 -0
  16. package/demos/apis/select.js +25 -13
  17. package/demos/apis/switch.js +15 -0
  18. package/demos/apis/time-line.js +14 -0
  19. package/demos/apis/tree-menu.js +7 -4
  20. package/demos/apis/tree-select.js +41 -0
  21. package/demos/mobile-first/app/base-select/all-text.vue +43 -0
  22. package/demos/mobile-first/app/base-select/allow-create.vue +51 -0
  23. package/demos/mobile-first/app/base-select/automatic-dropdown.vue +60 -0
  24. package/demos/mobile-first/app/base-select/basic-usage.vue +47 -0
  25. package/demos/mobile-first/app/base-select/binding-obj.vue +44 -0
  26. package/demos/mobile-first/app/base-select/cache-usage.vue +55 -0
  27. package/demos/mobile-first/app/base-select/clear-no-match-value.vue +52 -0
  28. package/demos/mobile-first/app/base-select/clearable.vue +34 -0
  29. package/demos/mobile-first/app/base-select/collapse-tags.vue +49 -0
  30. package/demos/mobile-first/app/base-select/copy-multi.vue +55 -0
  31. package/demos/mobile-first/app/base-select/copy-single.vue +158 -0
  32. package/demos/mobile-first/app/base-select/disabled.vue +107 -0
  33. package/demos/mobile-first/app/base-select/events.vue +112 -0
  34. package/demos/mobile-first/app/base-select/filter-method.vue +83 -0
  35. package/demos/mobile-first/app/base-select/filter-mode.vue +57 -0
  36. package/demos/mobile-first/app/base-select/hide-drop.vue +34 -0
  37. package/demos/mobile-first/app/base-select/is-drop-inherit-width.vue +49 -0
  38. package/demos/mobile-first/app/base-select/manual-focus-blur.vue +90 -0
  39. package/demos/mobile-first/app/base-select/map-field.vue +42 -0
  40. package/demos/mobile-first/app/base-select/memoize-usage.vue +66 -0
  41. package/demos/mobile-first/app/base-select/multiple-mix.vue +156 -0
  42. package/demos/mobile-first/app/base-select/multiple.vue +98 -0
  43. package/demos/mobile-first/app/base-select/native-properties.vue +34 -0
  44. package/demos/mobile-first/app/base-select/no-data-text.vue +40 -0
  45. package/demos/mobile-first/app/base-select/optimization.vue +55 -0
  46. package/demos/mobile-first/app/base-select/option-group.vue +105 -0
  47. package/demos/mobile-first/app/base-select/popup-style-position.vue +40 -0
  48. package/demos/mobile-first/app/base-select/remote-method.vue +286 -0
  49. package/demos/mobile-first/app/base-select/show-alloption.vue +34 -0
  50. package/demos/mobile-first/app/base-select/show-tip.vue +34 -0
  51. package/demos/mobile-first/app/base-select/size.vue +48 -0
  52. package/demos/mobile-first/app/base-select/slot-default.vue +95 -0
  53. package/demos/mobile-first/app/base-select/slot-empty.vue +41 -0
  54. package/demos/mobile-first/app/base-select/slot-footer.vue +45 -0
  55. package/demos/mobile-first/app/base-select/slot-label.vue +85 -0
  56. package/demos/mobile-first/app/base-select/slot-panel.vue +155 -0
  57. package/demos/mobile-first/app/base-select/slot-prefix.vue +39 -0
  58. package/demos/mobile-first/app/base-select/slot-reference.vue +41 -0
  59. package/demos/mobile-first/app/base-select/tag-type.vue +36 -0
  60. package/demos/mobile-first/app/base-select/webdoc/base-select.cn.md +7 -0
  61. package/demos/mobile-first/app/base-select/webdoc/base-select.en.md +7 -0
  62. package/demos/mobile-first/app/base-select/webdoc/base-select.js +590 -0
  63. package/demos/mobile-first/app/button/webdoc/button.js +2 -2
  64. package/demos/mobile-first/app/file-upload/show-title.vue +2 -3
  65. package/demos/mobile-first/app/grid-select/basic-usage.vue +70 -0
  66. package/demos/mobile-first/app/grid-select/config.vue +88 -0
  67. package/demos/mobile-first/app/grid-select/extra-query-params.vue +126 -0
  68. package/demos/mobile-first/app/grid-select/init-query.vue +124 -0
  69. package/demos/mobile-first/app/grid-select/radio-bigdata.vue +46 -0
  70. package/demos/mobile-first/app/grid-select/remote.vue +90 -0
  71. package/demos/mobile-first/app/grid-select/webdoc/grid-select.cn.md +7 -0
  72. package/demos/mobile-first/app/grid-select/webdoc/grid-select.en.md +8 -0
  73. package/demos/mobile-first/app/grid-select/webdoc/grid-select.js +92 -0
  74. package/demos/mobile-first/app/select-wrapper/all-text.vue +43 -0
  75. package/demos/mobile-first/app/select-wrapper/allow-create.vue +77 -0
  76. package/demos/mobile-first/app/select-wrapper/automatic-dropdown.vue +62 -0
  77. package/demos/mobile-first/app/select-wrapper/basic-usage.vue +47 -0
  78. package/demos/mobile-first/app/select-wrapper/binding-obj.vue +44 -0
  79. package/demos/mobile-first/app/select-wrapper/cache-usage.vue +49 -0
  80. package/demos/mobile-first/app/select-wrapper/clear-no-match-value.vue +54 -0
  81. package/demos/mobile-first/app/select-wrapper/clearable.vue +34 -0
  82. package/demos/mobile-first/app/select-wrapper/collapse-tags.vue +58 -0
  83. package/demos/mobile-first/app/select-wrapper/copy-multi.vue +77 -0
  84. package/demos/mobile-first/app/select-wrapper/copy-single.vue +157 -0
  85. package/demos/mobile-first/app/select-wrapper/disabled.vue +108 -0
  86. package/demos/mobile-first/app/select-wrapper/events.vue +112 -0
  87. package/demos/mobile-first/app/select-wrapper/extra-query-params.vue +157 -0
  88. package/demos/mobile-first/app/select-wrapper/filter-method.vue +85 -0
  89. package/demos/mobile-first/app/select-wrapper/filter-mode.vue +46 -0
  90. package/demos/mobile-first/app/select-wrapper/hide-drop.vue +34 -0
  91. package/demos/mobile-first/app/select-wrapper/init-label.vue +74 -0
  92. package/demos/mobile-first/app/select-wrapper/is-drop-inherit-width.vue +51 -0
  93. package/demos/mobile-first/app/select-wrapper/manual-focus-blur.vue +90 -0
  94. package/demos/mobile-first/app/select-wrapper/map-field.vue +68 -0
  95. package/demos/mobile-first/app/select-wrapper/memoize-usage.vue +66 -0
  96. package/demos/mobile-first/app/select-wrapper/multiple-mix.vue +84 -0
  97. package/demos/mobile-first/app/select-wrapper/multiple.vue +133 -0
  98. package/demos/mobile-first/app/select-wrapper/native-properties.vue +34 -0
  99. package/demos/mobile-first/app/select-wrapper/nest-grid-disable.vue +122 -0
  100. package/demos/mobile-first/app/select-wrapper/nest-grid-init-query.vue +129 -0
  101. package/demos/mobile-first/app/select-wrapper/nest-grid-remote.vue +144 -0
  102. package/demos/mobile-first/app/select-wrapper/nest-grid.vue +106 -0
  103. package/demos/mobile-first/app/select-wrapper/nest-radio-grid-much-data.vue +50 -0
  104. package/demos/mobile-first/app/select-wrapper/nest-tree.vue +164 -0
  105. package/demos/mobile-first/app/select-wrapper/no-data-text.vue +48 -0
  106. package/demos/mobile-first/app/select-wrapper/optimization.vue +59 -0
  107. package/demos/mobile-first/app/select-wrapper/option-group.vue +105 -0
  108. package/demos/mobile-first/app/select-wrapper/popup-style-position.vue +40 -0
  109. package/demos/mobile-first/app/select-wrapper/remote-method.vue +286 -0
  110. package/demos/mobile-first/app/select-wrapper/show-alloption.vue +34 -0
  111. package/demos/mobile-first/app/select-wrapper/show-tip.vue +28 -0
  112. package/demos/mobile-first/app/select-wrapper/size.vue +57 -0
  113. package/demos/mobile-first/app/select-wrapper/slot-default.vue +95 -0
  114. package/demos/mobile-first/app/select-wrapper/slot-empty.vue +44 -0
  115. package/demos/mobile-first/app/select-wrapper/slot-header-footer.vue +55 -0
  116. package/demos/mobile-first/app/select-wrapper/slot-label.vue +85 -0
  117. package/demos/mobile-first/app/select-wrapper/slot-prefix.vue +39 -0
  118. package/demos/mobile-first/app/select-wrapper/slot-reference.vue +41 -0
  119. package/demos/mobile-first/app/select-wrapper/tag-type.vue +36 -0
  120. package/demos/mobile-first/app/select-wrapper/webdoc/select-wrapper.cn.md +7 -0
  121. package/demos/mobile-first/app/select-wrapper/webdoc/select-wrapper.en.md +7 -0
  122. package/demos/mobile-first/app/select-wrapper/webdoc/select-wrapper.js +695 -0
  123. package/demos/mobile-first/app/space/space-size.vue +1 -1
  124. package/demos/mobile-first/app/tree-select/basic-usage.vue +63 -0
  125. package/demos/mobile-first/app/tree-select/collapse-tags.vue +77 -0
  126. package/demos/mobile-first/app/tree-select/copy.vue +77 -0
  127. package/demos/mobile-first/app/tree-select/disabled.vue +76 -0
  128. package/demos/mobile-first/app/tree-select/lazy.vue +59 -0
  129. package/demos/mobile-first/app/tree-select/map-field.vue +63 -0
  130. package/demos/mobile-first/app/tree-select/multiple.vue +63 -0
  131. package/demos/mobile-first/app/tree-select/native-properties.vue +69 -0
  132. package/demos/mobile-first/app/tree-select/panel-style.vue +80 -0
  133. package/demos/mobile-first/app/tree-select/reference-style.vue +79 -0
  134. package/demos/mobile-first/app/tree-select/size.vue +78 -0
  135. package/demos/mobile-first/app/tree-select/webdoc/tree-select.cn.md +7 -0
  136. package/demos/mobile-first/app/tree-select/webdoc/tree-select.en.md +7 -0
  137. package/demos/mobile-first/app/tree-select/webdoc/tree-select.js +220 -0
  138. package/demos/mobile-first/menus.js +14 -0
  139. package/demos/pc/app/amount/custom-service.spec.js +4 -4
  140. package/demos/pc/app/base-select/all-text.spec.ts +2 -2
  141. package/demos/pc/app/base-select/allow-create.spec.ts +3 -3
  142. package/demos/pc/app/base-select/automatic-dropdown.spec.ts +2 -2
  143. package/demos/pc/app/base-select/basic-usage.spec.ts +4 -4
  144. package/demos/pc/app/base-select/binding-obj.spec.ts +2 -2
  145. package/demos/pc/app/base-select/cache-usage.spec.ts +2 -2
  146. package/demos/pc/app/base-select/clearable.spec.ts +2 -2
  147. package/demos/pc/app/base-select/input-box-type.spec.ts +0 -2
  148. package/demos/pc/app/base-select/multiple.spec.ts +1 -1
  149. package/demos/pc/app/base-select/searchable.spec.ts +1 -1
  150. package/demos/pc/app/base-select/slot-reference.spec.ts +1 -1
  151. package/demos/pc/app/base-select/webdoc/base-select.js +3 -3
  152. package/demos/pc/app/checkbox/checkbox-disabled-composition-api.vue +10 -0
  153. package/demos/pc/app/checkbox/checkbox-disabled.spec.ts +22 -0
  154. package/demos/pc/app/checkbox/checkbox-disabled.vue +18 -0
  155. package/demos/pc/app/checkbox/vertical-checkbox.spec.ts +4 -4
  156. package/demos/pc/app/checkbox/webdoc/checkbox.js +13 -0
  157. package/demos/pc/app/color-picker/webdoc/color-picker.js +2 -2
  158. package/demos/pc/app/color-select-panel/format.spec.ts +3 -3
  159. package/demos/pc/app/country/fields.spec.js +1 -1
  160. package/demos/pc/app/currency/basic-usage.spec.ts +1 -1
  161. package/demos/pc/app/currency/custom-service.spec.ts +3 -3
  162. package/demos/pc/app/date-panel/shortcuts.vue +23 -23
  163. package/demos/pc/app/date-panel/unlink-panels.spec.ts +12 -8
  164. package/demos/pc/app/dept/custom-service.spec.ts +6 -6
  165. package/demos/pc/app/directives/webdoc/directives-auto-tip.js +2 -0
  166. package/demos/pc/app/drawer/close-on-press-escape-composition-api.vue +29 -0
  167. package/demos/pc/app/drawer/close-on-press-escape.spec.ts +19 -0
  168. package/demos/pc/app/drawer/close-on-press-escape.vue +38 -0
  169. package/demos/pc/app/drawer/webdoc/drawer.js +12 -0
  170. package/demos/pc/app/drop-roles/custom-service.spec.ts +1 -1
  171. package/demos/pc/app/drop-times/basic-usage.spec.ts +2 -2
  172. package/demos/pc/app/drop-times/start-end-step.spec.ts +1 -1
  173. package/demos/pc/app/dropdown/trigger-composition-api.vue +13 -0
  174. package/demos/pc/app/dropdown/trigger.spec.ts +13 -0
  175. package/demos/pc/app/dropdown/trigger.vue +13 -0
  176. package/demos/pc/app/dropdown/webdoc/dropdown.js +4 -4
  177. package/demos/pc/app/file-upload/upload-file-list-saas.spec.ts +0 -2
  178. package/demos/pc/app/form/basic-usage.spec.ts +2 -2
  179. package/demos/pc/app/form/custom-validation-string-length.vue +38 -0
  180. package/demos/pc/app/form/webdoc/form.js +12 -0
  181. package/demos/pc/app/grid/custom/column-simple.spec.js +2 -2
  182. package/demos/pc/app/grid/data-source/undefined-field-defalut-value-composition-api.vue +51 -0
  183. package/demos/pc/app/grid/data-source/undefined-field-defalut-value.spec.js +52 -0
  184. package/demos/pc/app/grid/data-source/undefined-field-defalut-value.vue +61 -0
  185. package/demos/pc/app/grid/editor/custom-editor-select-composition-api.vue +6 -1
  186. package/demos/pc/app/grid/editor/custom-editor-select.spec.js +5 -4
  187. package/demos/pc/app/grid/editor/custom-editor-select.vue +5 -1
  188. package/demos/pc/app/grid/editor/mutil-render.spec.js +4 -1
  189. package/demos/pc/app/grid/filter/server-filter-composition-api.vue +1 -1
  190. package/demos/pc/app/grid/filter/server-filter.vue +1 -1
  191. package/demos/pc/app/grid/webdoc/grid-data-source.js +12 -0
  192. package/demos/pc/app/grid-select/basic-usage-composition-api.vue +29 -1
  193. package/demos/pc/app/grid-select/basic-usage.vue +30 -1
  194. package/demos/pc/app/grid-select/config.spec.ts +24 -0
  195. package/demos/pc/app/grid-select/config.vue +1 -1
  196. package/demos/pc/app/grid-select/extra-query-params-composition-api.vue +110 -0
  197. package/demos/pc/app/grid-select/extra-query-params.spec.ts +21 -0
  198. package/demos/pc/app/grid-select/extra-query-params.vue +129 -0
  199. package/demos/pc/app/grid-select/init-query-composition-api.vue +119 -0
  200. package/demos/pc/app/grid-select/init-query.spec.ts +30 -0
  201. package/demos/pc/app/grid-select/init-query.vue +127 -0
  202. package/demos/pc/app/grid-select/radio-bigdata-composition-api.vue +44 -0
  203. package/demos/pc/app/grid-select/radio-bigdata.spec.ts +19 -0
  204. package/demos/pc/app/grid-select/radio-bigdata.vue +52 -0
  205. package/demos/pc/app/grid-select/remote.spec.ts +23 -0
  206. package/demos/pc/app/grid-select/remote.vue +2 -1
  207. package/demos/pc/app/grid-select/webdoc/grid-select.js +48 -29
  208. package/demos/pc/app/guide/basic-usage-composition-api.vue +4 -1
  209. package/demos/pc/app/guide/basic-usage.vue +4 -1
  210. package/demos/pc/app/guide/callback-composition-api.vue +1 -0
  211. package/demos/pc/app/guide/callback.vue +1 -0
  212. package/demos/pc/app/icon/advance-icons.js +412 -0
  213. package/demos/pc/app/icon/advance-usage-composition-api.vue +174 -0
  214. package/demos/pc/app/icon/advance-usage.vue +200 -0
  215. package/demos/pc/app/icon/webdoc/icon.js +20 -0
  216. package/demos/pc/app/modal/modal-header.vue +16 -2
  217. package/demos/pc/app/modal/webdoc/modal.js +7 -6
  218. package/demos/pc/app/query-builder/webdoc/query-builder.js +17 -14
  219. package/demos/pc/app/scroll-text/scroll-direction.spec.ts +4 -4
  220. package/demos/pc/app/select/allow-create.spec.ts +3 -3
  221. package/demos/pc/app/select/automatic-dropdown.spec.ts +2 -2
  222. package/demos/pc/app/select/basic-usage.spec.ts +3 -3
  223. package/demos/pc/app/select/binding-obj.spec.ts +2 -2
  224. package/demos/pc/app/select/cache-usage.spec.ts +2 -2
  225. package/demos/pc/app/select/clearable.spec.ts +1 -1
  226. package/demos/pc/app/select/webdoc/select.js +17 -11
  227. package/demos/pc/app/select-wrapper/all-text-composition-api.vue +35 -0
  228. package/demos/pc/app/select-wrapper/all-text.spec.ts +13 -0
  229. package/demos/pc/app/select-wrapper/all-text.vue +43 -0
  230. package/demos/pc/app/select-wrapper/allow-create-composition-api.vue +102 -0
  231. package/demos/pc/app/select-wrapper/allow-create.spec.ts +50 -0
  232. package/demos/pc/app/select-wrapper/allow-create.vue +112 -0
  233. package/demos/pc/app/select-wrapper/automatic-dropdown-composition-api.vue +54 -0
  234. package/demos/pc/app/select-wrapper/automatic-dropdown.spec.ts +31 -0
  235. package/demos/pc/app/select-wrapper/automatic-dropdown.vue +62 -0
  236. package/demos/pc/app/select-wrapper/basic-usage-composition-api.vue +38 -0
  237. package/demos/pc/app/select-wrapper/basic-usage.spec.ts +47 -0
  238. package/demos/pc/app/select-wrapper/basic-usage.vue +47 -0
  239. package/demos/pc/app/select-wrapper/binding-obj-composition-api.vue +35 -0
  240. package/demos/pc/app/select-wrapper/binding-obj.spec.ts +21 -0
  241. package/demos/pc/app/select-wrapper/binding-obj.vue +44 -0
  242. package/demos/pc/app/select-wrapper/cache-usage-composition-api.vue +39 -0
  243. package/demos/pc/app/select-wrapper/cache-usage.spec.ts +19 -0
  244. package/demos/pc/app/select-wrapper/cache-usage.vue +49 -0
  245. package/demos/pc/app/select-wrapper/clear-no-match-value-composition-api.vue +46 -0
  246. package/demos/pc/app/select-wrapper/clear-no-match-value.spec.ts +24 -0
  247. package/demos/pc/app/select-wrapper/clear-no-match-value.vue +54 -0
  248. package/demos/pc/app/select-wrapper/clearable-composition-api.vue +25 -0
  249. package/demos/pc/app/select-wrapper/clearable.spec.ts +21 -0
  250. package/demos/pc/app/select-wrapper/clearable.vue +34 -0
  251. package/demos/pc/app/select-wrapper/collapse-tags-composition-api.vue +54 -0
  252. package/demos/pc/app/select-wrapper/collapse-tags.spec.ts +32 -0
  253. package/demos/pc/app/select-wrapper/collapse-tags.vue +62 -0
  254. package/demos/pc/app/select-wrapper/copy-multi-composition-api.vue +66 -0
  255. package/demos/pc/app/select-wrapper/copy-multi.spec.ts +65 -0
  256. package/demos/pc/app/select-wrapper/copy-multi.vue +77 -0
  257. package/demos/pc/app/select-wrapper/copy-single-composition-api.vue +150 -0
  258. package/demos/pc/app/select-wrapper/copy-single.spec.ts +76 -0
  259. package/demos/pc/app/select-wrapper/copy-single.vue +157 -0
  260. package/demos/pc/app/select-wrapper/disabled-composition-api.vue +101 -0
  261. package/demos/pc/app/select-wrapper/disabled.spec.ts +88 -0
  262. package/demos/pc/app/select-wrapper/disabled.vue +108 -0
  263. package/demos/pc/app/select-wrapper/events-composition-api.vue +109 -0
  264. package/demos/pc/app/select-wrapper/events.spec.ts +72 -0
  265. package/demos/pc/app/select-wrapper/events.vue +112 -0
  266. package/demos/pc/app/select-wrapper/extra-query-params-composition-api.vue +155 -0
  267. package/demos/pc/app/select-wrapper/extra-query-params.vue +157 -0
  268. package/demos/pc/app/select-wrapper/filter-method-composition-api.vue +75 -0
  269. package/demos/pc/app/select-wrapper/filter-method.spec.ts +89 -0
  270. package/demos/pc/app/select-wrapper/filter-method.vue +85 -0
  271. package/demos/pc/app/select-wrapper/filter-mode-composition-api.vue +37 -0
  272. package/demos/pc/app/select-wrapper/filter-mode.vue +46 -0
  273. package/demos/pc/app/select-wrapper/hide-drop-composition-api.vue +25 -0
  274. package/demos/pc/app/select-wrapper/hide-drop.spec.ts +12 -0
  275. package/demos/pc/app/select-wrapper/hide-drop.vue +34 -0
  276. package/demos/pc/app/select-wrapper/init-label-composition-api.vue +57 -0
  277. package/demos/pc/app/select-wrapper/init-label.vue +65 -0
  278. package/demos/pc/app/select-wrapper/input-box-type-composition-api.vue +49 -0
  279. package/demos/pc/app/select-wrapper/input-box-type.spec.ts +71 -0
  280. package/demos/pc/app/select-wrapper/input-box-type.vue +58 -0
  281. package/demos/pc/app/select-wrapper/is-drop-inherit-width-composition-api.vue +42 -0
  282. package/demos/pc/app/select-wrapper/is-drop-inherit-width.spec.ts +34 -0
  283. package/demos/pc/app/select-wrapper/is-drop-inherit-width.vue +51 -0
  284. package/demos/pc/app/select-wrapper/manual-focus-blur-composition-api.vue +88 -0
  285. package/demos/pc/app/select-wrapper/manual-focus-blur.spec.ts +18 -0
  286. package/demos/pc/app/select-wrapper/manual-focus-blur.vue +90 -0
  287. package/demos/pc/app/select-wrapper/map-field-composition-api.vue +61 -0
  288. package/demos/pc/app/select-wrapper/map-field.spec.ts +60 -0
  289. package/demos/pc/app/select-wrapper/map-field.vue +68 -0
  290. package/demos/pc/app/select-wrapper/memoize-usage-composition-api.vue +52 -0
  291. package/demos/pc/app/select-wrapper/memoize-usage.spec.ts +19 -0
  292. package/demos/pc/app/select-wrapper/memoize-usage.vue +66 -0
  293. package/demos/pc/app/select-wrapper/multiple-composition-api.vue +139 -0
  294. package/demos/pc/app/select-wrapper/multiple-mix-composition-api.vue +75 -0
  295. package/demos/pc/app/select-wrapper/multiple-mix.vue +84 -0
  296. package/demos/pc/app/select-wrapper/multiple.spec.ts +52 -0
  297. package/demos/pc/app/select-wrapper/multiple.vue +146 -0
  298. package/demos/pc/app/select-wrapper/native-properties-composition-api.vue +25 -0
  299. package/demos/pc/app/select-wrapper/native-properties.spec.ts +16 -0
  300. package/demos/pc/app/select-wrapper/native-properties.vue +34 -0
  301. package/demos/pc/app/select-wrapper/nest-grid-composition-api.vue +99 -0
  302. package/demos/pc/app/select-wrapper/nest-grid-disable-composition-api.vue +88 -0
  303. package/demos/pc/app/select-wrapper/nest-grid-disable.spec.ts +41 -0
  304. package/demos/pc/app/select-wrapper/nest-grid-disable.vue +122 -0
  305. package/demos/pc/app/select-wrapper/nest-grid-init-query-composition-api.vue +122 -0
  306. package/demos/pc/app/select-wrapper/nest-grid-init-query.vue +129 -0
  307. package/demos/pc/app/select-wrapper/nest-grid-remote-composition-api.vue +127 -0
  308. package/demos/pc/app/select-wrapper/nest-grid-remote.spec.ts +136 -0
  309. package/demos/pc/app/select-wrapper/nest-grid-remote.vue +144 -0
  310. package/demos/pc/app/select-wrapper/nest-grid.spec.ts +95 -0
  311. package/demos/pc/app/select-wrapper/nest-grid.vue +106 -0
  312. package/demos/pc/app/select-wrapper/nest-radio-grid-much-data-composition-api.vue +43 -0
  313. package/demos/pc/app/select-wrapper/nest-radio-grid-much-data.spec.ts +35 -0
  314. package/demos/pc/app/select-wrapper/nest-radio-grid-much-data.vue +50 -0
  315. package/demos/pc/app/select-wrapper/nest-tree-composition-api.vue +97 -0
  316. package/demos/pc/app/select-wrapper/nest-tree.spec.ts +84 -0
  317. package/demos/pc/app/select-wrapper/nest-tree.vue +164 -0
  318. package/demos/pc/app/select-wrapper/no-data-text-composition-api.vue +39 -0
  319. package/demos/pc/app/select-wrapper/no-data-text.spec.ts +39 -0
  320. package/demos/pc/app/select-wrapper/no-data-text.vue +48 -0
  321. package/demos/pc/app/select-wrapper/optimization-composition-api.vue +50 -0
  322. package/demos/pc/app/select-wrapper/optimization.spec.ts +46 -0
  323. package/demos/pc/app/select-wrapper/optimization.vue +59 -0
  324. package/demos/pc/app/select-wrapper/option-group-composition-api.vue +96 -0
  325. package/demos/pc/app/select-wrapper/option-group.spec.ts +22 -0
  326. package/demos/pc/app/select-wrapper/option-group.vue +105 -0
  327. package/demos/pc/app/select-wrapper/popup-style-position-composition-api.vue +31 -0
  328. package/demos/pc/app/select-wrapper/popup-style-position.spec.ts +16 -0
  329. package/demos/pc/app/select-wrapper/popup-style-position.vue +40 -0
  330. package/demos/pc/app/select-wrapper/remote-method-composition-api.vue +283 -0
  331. package/demos/pc/app/select-wrapper/remote-method.spec.ts +68 -0
  332. package/demos/pc/app/select-wrapper/remote-method.vue +286 -0
  333. package/demos/pc/app/select-wrapper/searchable-composition-api.vue +46 -0
  334. package/demos/pc/app/select-wrapper/searchable.spec.ts +66 -0
  335. package/demos/pc/app/select-wrapper/searchable.vue +55 -0
  336. package/demos/pc/app/select-wrapper/show-alloption-composition-api.vue +25 -0
  337. package/demos/pc/app/select-wrapper/show-alloption.spec.ts +15 -0
  338. package/demos/pc/app/select-wrapper/show-alloption.vue +34 -0
  339. package/demos/pc/app/select-wrapper/show-tip-composition-api.vue +19 -0
  340. package/demos/pc/app/select-wrapper/show-tip.vue +28 -0
  341. package/demos/pc/app/select-wrapper/size-composition-api.vue +49 -0
  342. package/demos/pc/app/select-wrapper/size.spec.ts +61 -0
  343. package/demos/pc/app/select-wrapper/size.vue +57 -0
  344. package/demos/pc/app/select-wrapper/slot-default-composition-api.vue +86 -0
  345. package/demos/pc/app/select-wrapper/slot-default.spec.ts +18 -0
  346. package/demos/pc/app/select-wrapper/slot-default.vue +95 -0
  347. package/demos/pc/app/select-wrapper/slot-empty-composition-api.vue +35 -0
  348. package/demos/pc/app/select-wrapper/slot-empty.spec.ts +16 -0
  349. package/demos/pc/app/select-wrapper/slot-empty.vue +44 -0
  350. package/demos/pc/app/select-wrapper/slot-header-footer-composition-api.vue +45 -0
  351. package/demos/pc/app/select-wrapper/slot-header-footer.spec.ts +17 -0
  352. package/demos/pc/app/select-wrapper/slot-header-footer.vue +55 -0
  353. package/demos/pc/app/select-wrapper/slot-label-composition-api.vue +77 -0
  354. package/demos/pc/app/select-wrapper/slot-label.vue +85 -0
  355. package/demos/pc/app/select-wrapper/slot-prefix-composition-api.vue +31 -0
  356. package/demos/pc/app/select-wrapper/slot-prefix.spec.ts +18 -0
  357. package/demos/pc/app/select-wrapper/slot-prefix.vue +39 -0
  358. package/demos/pc/app/select-wrapper/slot-reference-composition-api.vue +33 -0
  359. package/demos/pc/app/select-wrapper/slot-reference.spec.ts +16 -0
  360. package/demos/pc/app/select-wrapper/slot-reference.vue +41 -0
  361. package/demos/pc/app/select-wrapper/tag-type-composition-api.vue +27 -0
  362. package/demos/pc/app/select-wrapper/tag-type.spec.ts +13 -0
  363. package/demos/pc/app/select-wrapper/tag-type.vue +36 -0
  364. package/demos/pc/app/select-wrapper/webdoc/select-wrapper.cn.md +7 -0
  365. package/demos/pc/app/select-wrapper/webdoc/select-wrapper.en.md +7 -0
  366. package/demos/pc/app/select-wrapper/webdoc/select-wrapper.js +721 -0
  367. package/demos/pc/app/space/space-size.vue +1 -1
  368. package/demos/pc/app/switch/webdoc/switch.js +12 -0
  369. package/demos/pc/app/switch/width-composition-api.vue +29 -0
  370. package/demos/pc/app/switch/width.spec.ts +17 -0
  371. package/demos/pc/app/switch/width.vue +35 -0
  372. package/demos/pc/app/tabs/header-only-composition-api.vue +56 -0
  373. package/demos/pc/app/tabs/header-only.vue +40 -29
  374. package/demos/pc/app/time-picker/picker-options.spec.ts +3 -4
  375. package/demos/pc/app/time-picker/step.spec.ts +2 -2
  376. package/demos/pc/app/transfer/basic-usage.spec.ts +4 -4
  377. package/demos/pc/app/tree/filter-view.spec.ts +1 -1
  378. package/demos/pc/app/tree-menu/clearable.spec.ts +1 -5
  379. package/demos/pc/app/tree-select/collapse-tags.vue +2 -18
  380. package/demos/pc/app/tree-select/lazy-composition-api.vue +51 -0
  381. package/demos/pc/app/tree-select/lazy-multiple-composition-api.vue +58 -0
  382. package/demos/pc/app/tree-select/lazy-multiple.vue +66 -0
  383. package/demos/pc/app/tree-select/lazy.vue +59 -0
  384. package/demos/pc/app/tree-select/webdoc/tree-select.js +14 -0
  385. package/demos/pc/app/user/custom-service.spec.ts +1 -1
  386. package/demos/pc/menus.js +19 -10
  387. package/demos/pc/webdoc/architecture.png +0 -0
  388. package/demos/pc/webdoc/import-components-en.md +4 -2
  389. package/demos/pc/webdoc/import-components.md +4 -2
  390. package/demos/pc/webdoc/installation-en.md +5 -3
  391. package/demos/pc/webdoc/installation.md +5 -3
  392. package/demos/pc/webdoc/introduce.md +64 -0
  393. package/demos/pc/webdoc/motion-configuration-en.md +183 -0
  394. package/demos/pc/webdoc/motion-configuration.md +183 -0
  395. package/demos/pc/webdoc/theme-en.md +7 -5
  396. package/demos/pc/webdoc/theme.md +12 -7
  397. package/demos/saas/menus.js +14 -1
  398. package/env/.env.saaspages +1 -1
  399. package/package.json +20 -20
  400. package/playground/App.vue +270 -84
  401. package/playground/assets/icon-layout-vertical.svg +4 -0
  402. package/playground/icons/Github.vue +14 -2
  403. package/playground/icons/Layout.vue +18 -0
  404. package/playground/icons/Reverse.vue +115 -0
  405. package/playground/icons/Set.vue +80 -0
  406. package/playground/icons/Share.vue +103 -8
  407. package/playground/icons/Vertical.vue +19 -0
  408. package/public/static/css/design-common.css +1 -0
  409. package/src/assets/custom-block.less +2 -2
  410. package/src/components/anchor.vue +2 -1
  411. package/src/components/api-docs.vue +2 -2
  412. package/src/components/async-highlight.vue +6 -0
  413. package/src/components/header.vue +19 -0
  414. package/src/views/components-doc/common.vue +20 -3
  415. package/src/views/overview.vue +1 -1
  416. package/demos/pc/app/grid-select/filter-composition-api.vue +0 -49
  417. package/demos/pc/app/grid-select/filter.vue +0 -57
  418. package/demos/pc/app/grid-select/multiple-composition-api.vue +0 -38
  419. package/demos/pc/app/grid-select/multiple.vue +0 -45
package/demos/pc/menus.js CHANGED
@@ -53,6 +53,14 @@ const docMenusChildren = [
53
53
  theme: ['default']
54
54
  }
55
55
  },
56
+ {
57
+ 'title': '全局动效配置',
58
+ 'titleEn': 'motion-configuration',
59
+ 'key': 'motion-configuration',
60
+ showScene: {
61
+ theme: ['default']
62
+ }
63
+ },
56
64
  {
57
65
  'title': '智能化',
58
66
  'titleEn': 'mcp',
@@ -163,14 +171,7 @@ export const cmpMenus = [
163
171
  { 'nameCn': '文件上传', 'name': 'FileUpload', 'key': 'file-upload' },
164
172
  { 'nameCn': '富文本', 'name': 'FluentEditor', 'key': 'fluent-editor' },
165
173
  { 'nameCn': '表单', 'name': 'Form', 'key': 'form' },
166
- // {
167
- // 'nameCn': '下拉表格选择器',
168
- // 'name': 'GridSelect',
169
- // 'key': 'grid-select',
170
- // 'meta': {
171
- // 'experimental': '3.20.0'
172
- // }
173
- // },
174
+
174
175
  { 'nameCn': '输入框', 'name': 'Input', 'key': 'input' },
175
176
  { 'nameCn': ' IP地址输入框', 'name': 'IpAddress', 'key': 'ip-address' },
176
177
  { 'nameCn': '数字输入框', 'name': 'Numeric', 'key': 'numeric' },
@@ -189,6 +190,14 @@ export const cmpMenus = [
189
190
  'nameCn': '树形选择器',
190
191
  'name': 'TreeSelect',
191
192
  'key': 'tree-select'
193
+ },
194
+ {
195
+ 'nameCn': '下拉表格选择器',
196
+ 'name': 'GridSelect',
197
+ 'key': 'grid-select',
198
+ 'meta': {
199
+ 'experimental': '3.27.0'
200
+ }
192
201
  }
193
202
  ]
194
203
  },
@@ -338,8 +347,8 @@ export const cmpMenus = [
338
347
  { 'nameCn': '词云图', 'name': 'Wordcloud Chart', 'key': 'chart-wordcloud' },
339
348
  { 'nameCn': '旭日图', 'name': 'Sunburst Chart', 'key': 'chart-sunburst' },
340
349
  { 'nameCn': '拓扑图', 'name': 'Graph Chart', 'key': 'chart-graph' },
341
- { 'nameCn': '百度地图', 'name': 'BaiduMap Chart', 'key': 'chart-baidu-map' },
342
- { 'nameCn': '高德地图', 'name': 'Autonavi Chart', 'key': 'chart-autonavi-map' },
350
+ // { 'nameCn': '百度地图', 'name': 'BaiduMap Chart', 'key': 'chart-baidu-map' },
351
+ // { 'nameCn': '高德地图', 'name': 'Autonavi Chart', 'key': 'chart-autonavi-map' },
343
352
  { 'nameCn': '箱形图', 'name': 'Boxplot Chart', 'key': 'chart-boxplot' },
344
353
  { 'nameCn': '进度图', 'name': 'Process Chart', 'key': 'chart-process' }
345
354
  ]
Binary file
@@ -45,8 +45,10 @@ For more information about automatic on-demand imports, please refer to [unplugi
45
45
  ## Multi-component introduction
46
46
 
47
47
  <div class="tip custom-block">
48
- <p>Warm reminder: Exporting components with Tiny prefix is ​​supported since 3.17.0. If using previous versions, you need to use aliases.</p>
49
- <p>For example:<code>import { Button as TinyButton } from '@opentiny/vue'</code></p>
48
+ <div class="custom-block-content">
49
+ <p>Warm reminder: Exporting components with Tiny prefix is ​​supported since 3.17.0. If using previous versions, you need to use aliases.</p>
50
+ <p>For example:<code>import { Button as TinyButton } from '@opentiny/vue'</code></p>
51
+ </div>
50
52
  </div>
51
53
 
52
54
  Multi-component reference is from the dependency package.`@opentiny/vue`Multiple components are referenced in. The following is an example (in the following figure)`Button`and`Alert`Component as an example):
@@ -88,8 +88,10 @@ public-hoist-pattern[]=@opentiny/*
88
88
  ## 多组件引入
89
89
 
90
90
  <div class="tip custom-block">
91
- <p>温馨提示:带有 Tiny 前缀的组件导出自 3.17.0 开始支持。若使用之前版本,需使用别名。</p>
92
- <p>例如:<code>import { Button as TinyButton } from '@opentiny/vue'</code></p>
91
+ <div class="custom-block-content">
92
+ <p>温馨提示:带有 Tiny 前缀的组件导出自 3.17.0 开始支持。若使用之前版本,需使用别名。</p>
93
+ <p>例如:<code>import { Button as TinyButton } from '@opentiny/vue'</code></p>
94
+ </div>
93
95
  </div>
94
96
 
95
97
  多组件引用即从依赖包 `@opentiny/vue` 中引用多个组件,参考示例如下(以 `TinyButton` 和 `TinyAlert` 组件为例):
@@ -48,9 +48,11 @@ export default defineConfig({
48
48
  ```
49
49
 
50
50
  <div class="tip custom-block">
51
- <p> To avoid the uncertainty associated with monthly (minor) upgrades of <code> @opentiny/vue </code>, it is recommended to use ~ before relying on the version number of the package in <code> package.json </code> in your project.
52
- For example, <code>"@opentiny/vue": "~3.12.0</code>. </p>
53
- <p><code> @opentiny/vue </code> supports multiple modes. If your project is not a mobile project, you can declare the value of <code>TINY_MODE</code> in <code>process.env</code> in the above configuration code. In order to make the project during construction, the mobile side code can be shaken off and the volume of the packaged product can be optimized. For example, <code>'process.env': {... env,TINY_MODE:'pc'}</code>. </p>
51
+ <div class="custom-block-content">
52
+ <p> To avoid the uncertainty associated with monthly (minor) upgrades of <code> @opentiny/vue </code>, it is recommended to use ~ before relying on the version number of the package in <code> package.json </code> in your project.
53
+ For example, <code>"@opentiny/vue": "~3.12.0</code>. </p>
54
+ <p><code> @opentiny/vue </code> supports multiple modes. If your project is not a mobile project, you can declare the value of <code>TINY_MODE</code> in <code>process.env</code> in the above configuration code. In order to make the project during construction, the mobile side code can be shaken off and the volume of the packaged product can be optimized. For example, <code>'process.env': {... env,TINY_MODE:'pc'}</code>. </p>
55
+ </div>
54
56
  </div>
55
57
 
56
58
  ## Import through CDN
@@ -48,9 +48,11 @@ export default defineConfig({
48
48
  ```
49
49
 
50
50
  <div class="tip custom-block">
51
- <p>为了避免<code> @opentiny/vue </code> 的月度版本 (minor) 升级带来的不确定因素,因此推荐在您的工程中的<code> package.json </code> 中依赖包的版本号前使用 ~,
52
- 比如 <code>"@opentiny/vue": "~3.12.0</code>。</p>
53
- <p><code> @opentiny/vue </code> 支持多种模式。如果您的工程非移动端工程,可以在上面配置代码中的<code>process.env</code>中,声明<code>TINY_MODE</code>的值,以使工程在构建时,能将移动端模式的代码摇掉,优化打包产物的体积。比如 <code>'process.env': { TINY_MODE:'pc' }</code>。</p>
51
+ <div class="custom-block-content">
52
+ <p>为了避免<code> @opentiny/vue </code> 的月度版本 (minor) 升级带来的不确定因素,因此推荐在您的工程中的<code> package.json </code> 中依赖包的版本号前使用 ~,
53
+ 比如 <code>"@opentiny/vue": "~3.12.0</code>。</p>
54
+ <p><code> @opentiny/vue </code> 支持多种模式。如果您的工程非移动端工程,可以在上面配置代码中的<code>process.env</code>中,声明<code>TINY_MODE</code>的值,以使工程在构建时,能将移动端模式的代码摇掉,优化打包产物的体积。比如 <code>'process.env': { TINY_MODE:'pc' }</code>。</p>
55
+ </div>
54
56
  </div>
55
57
 
56
58
  ## 通过 CDN 方式引入 (v3.16.0 及之前的版本可用)
@@ -0,0 +1,64 @@
1
+ # TinyVue
2
+
3
+ TinyVue 是一个跨端、跨框架的企业级 UI 组件库,基于 OpenTiny Design 设计体系,支持 Vue 2 和 Vue 3,支持 PC 端和移动端。
4
+
5
+ 🌈 特性:
6
+
7
+ - 📦 包含 130 多个简洁、易用、功能强大的组件
8
+ - 🖖 一套代码同时支持 Vue 2 和 Vue 3
9
+ - 🖥️ 一套代码同时支持 PC 端和移动端
10
+ - 🌍 支持国际化
11
+ - 🎨 支持主题定制
12
+ - 📊 组件内部支持配置式开发,可支持低代码平台可视化组件配置
13
+ - 💡 采用模板、样式、逻辑分离的跨端、跨框架架构,保障灵活性和可移植性
14
+
15
+ ## 🛠️ 核心亮点
16
+
17
+ ### 1、一套代码同时支持 Vue 2 / Vue 3
18
+
19
+ 随着 Vue 3 的逐渐普及以及 Vue 3 开源生态的持续繁荣,未来将会有更多开发者投入 Vue 3 的怀抱,使用 Vue 3 开发新业务,同时存量的 Vue 2 项目也会逐渐迁移到 Vue 3 中来。
20
+
21
+ 目前业界主流的 Vue 组件库,要么只支持 Vue 3,要么分成 Vue 2 / Vue 3 两套组件库,比如饿了么的ElementUI,它的Element UI for Vue 2,而Element Plus for Vue 3。再比如 Ant Design of Vue,它的 1.x 版本 for Vue 2,而 3.x 版本 for Vue 3。
22
+
23
+ 由于 Vue 2 / Vue 3 两套组件库对应两套不同的代码,难免存在组件功能和 API 不同步的情况,开发者如果要从 Vue 2 组件库迁移到 Vue 3 组件库,将面临一定的成本和风险。
24
+
25
+ OpenTiny 采用组件与框架分离的设计理念(Renderless 架构),将组件拆分为三个构成部分:组件模板、组件样式和组件逻辑,并针对 Vue 2 和 Vue 3 实现了相应的版本适配器,抹平 Vue 2 和 Vue 3 的差异,实现一套代码同时支持 Vue 2 和 Vue 3。
26
+
27
+ 这样不管是 Vue 2 项目还是 Vue 3 项目,使用组件的方式都是一样的,可以实现无缝切换,极大地降低了 Vue 2 迁移到 Vue 3 的成本和风险。
28
+
29
+ ### 2、一套代码同时支持PC和移动端
30
+
31
+ 得益于 OpenTiny 的 Renderless 架构,我们不仅实现了一套代码同时支持 Vue 2 和 Vue 3,还实现了一套代码支持多端,这意味着:
32
+
33
+ 我们支持 PC 和移动端,同一个组件在不同终端表现不同
34
+
35
+ 在多端场景下组件的使用方式完全相同
36
+
37
+ ### 3、组件丰富,功能强大
38
+
39
+ 历经 9 年时间打磨,服务于公司内外部1500多个业务,稳定、可靠、安全。
40
+
41
+ PC 端包含 130 多个组件,移动端包含 30 多个组件,Table、Tree、Select 等高频组件均内置虚拟滚动,在大数据场景下保持丝滑体验。
42
+
43
+ 除了业界组件库都有的组件,我们也提供了一些 OpenTiny 独有的特色组件:
44
+
45
+ - Split 面板分隔器
46
+ - IpAddress IP 地址输入框
47
+ - CalendarView 日历
48
+ - Crop 图片裁切
49
+
50
+ 欢迎大家体验和使用!
51
+
52
+ ## 🤝 面向未来的技术架构
53
+
54
+ OpenTiny 采用组件和框架分离的设计理念,支持跨端跨技术栈跨版本 Web 组件只有一套 API 接口,Web 组件可拆分为三个构成部分:组件模板、组件样式和组件逻辑。
55
+
56
+ 组件模板借助 Renderless Component 无渲染组件的设计模式,分离出来的模板可以多样化,以适配不同的终端,比如 PC 端模板和 Mobile 端模板。
57
+
58
+ React 组件的业务逻辑借助 React Hooks API,Vue 组件的业务逻辑借助 Vue Composition API,实现面向业务逻辑编程,这样不同技术栈的相同业务逻辑代码就汇聚到一起。
59
+
60
+ 对于同一个技术栈的不同版本,比如 Vue 2.0 和 Vue 3.0 则可以做一个版本适配器,只要保证组件逻辑函数的输入输出保持统一即可。
61
+
62
+ 技术架构图:
63
+
64
+ <img src="./architecture.png" alt="TinyVue architecture diagram" />
@@ -0,0 +1,183 @@
1
+ # TinyVue Global Motion Configuration
2
+
3
+ This solution provides **global motion configuration** for TinyVue, based on **LESS and CSS variables**, with the following goals:
4
+
5
+ 1. **Unified Management**: All motions are centrally maintained to avoid scattered definitions and redundant work.
6
+ 2. **Global Control**: Use CSS variables to control motion duration, delay, speed, and other parameters.
7
+ 3. **Component Integration**: Components can directly use the unified motion class names or `@keyframes`.
8
+ 4. **Dynamic Adjustability**: Switch motion styles for different scenarios simply by overriding CSS variables.
9
+
10
+ ## Global Configuration
11
+
12
+ ### Global Variable Definition
13
+
14
+ Define motion variables in `/packages/theme/src/base/vars.less`:
15
+
16
+ ```less
17
+ :root {
18
+ /* Ants (marching border) related config */
19
+ --tv-motion-ants-shift: 8px;
20
+ --tv-motion-ants-speed: 0.8s;
21
+
22
+ /* Other motion parameters... */
23
+ }
24
+ ```
25
+
26
+ Developers can override these variables in the component theme file:
27
+
28
+ ```css
29
+ .copyed-borders {
30
+ --tv-motion-ants-shift: 12px;
31
+ --tv-motion-ants-speed: 1.2s;
32
+ }
33
+ ```
34
+
35
+ Or create a `motion-theme.less` file under `/packages/theme/src/base/` to switch global motion styles:
36
+
37
+ ```less
38
+ :root {
39
+ --tv-motion-ants-shift: 12px;
40
+ --tv-motion-ants-speed: 1.2s;
41
+ }
42
+ ```
43
+
44
+ ## Motion Categories & Directory Structure
45
+
46
+ All motions are stored in `/packages/theme/src/motion/`, organized by type:
47
+
48
+ ```
49
+ motion/
50
+ ├─ fade.less // Fade in/out
51
+ ├─ slide.less // Slide
52
+ ├─ zoom.less // Zoom
53
+ ├─ rotate.less // Rotate
54
+ ├─ bounce.less // Bounce
55
+ ├─ scroll.less // Scroll
56
+ ├─ stroke.less // Stroke
57
+ ├─ shine.less // Shine
58
+ ├─ ants.less // Ants (marching border)
59
+ ├─ arrow.less // Arrow
60
+ ├─ tab.less // Tab switching
61
+ ├─ progress.less // Progress bar
62
+ └─ index.less // Unified import
63
+ ```
64
+
65
+ ## Motion Examples
66
+
67
+ ### 1. Fade (fade.less)
68
+
69
+ ```less
70
+ @keyframes fade-in {
71
+ 0% { opacity: 0; }
72
+ 100% { opacity: 1; }
73
+ }
74
+
75
+ @keyframes fade-out {
76
+ 0% { opacity: 1; }
77
+ 100% { opacity: 0; }
78
+ }
79
+ ```
80
+
81
+ Component usage example:
82
+
83
+ ```less
84
+ .@{fade-prefix-cls} {
85
+ &-enter-active {
86
+ animation: var(--tv-motion-fade-speed) fade-in ease-out both;
87
+ }
88
+ &-leave-active {
89
+ animation: var(--tv-motion-fade-speed) fade-out ease-in both;
90
+ }
91
+ }
92
+ ```
93
+
94
+ ### 2. Slide (slide.less)
95
+
96
+ ```less
97
+ @keyframes slide-left-in {
98
+ 0% { opacity: 0; transform: translateX(var(--tv-motion-slide-offset-left)); }
99
+ 50% { opacity: var(--tv-motion-slide-opacity-mid); transform: translateX(var(--tv-motion-slide-offset-left-mid)); }
100
+ 100% { opacity: 1; transform: translateX(0%); }
101
+ }
102
+
103
+ @keyframes slide-left-out {
104
+ 0% { opacity: 1; transform: translateX(0%); }
105
+ 50% { opacity: var(--tv-motion-slide-opacity-mid); transform: translateX(var(--tv-motion-slide-offset-left-mid)); }
106
+ 100% { opacity: 0; transform: translateX(var(--tv-motion-slide-offset-left)); }
107
+ }
108
+ ```
109
+
110
+ Component usage example:
111
+
112
+ ```less
113
+ .drawer-slide-left-enter-active {
114
+ animation: slide-left-in var(--tv-motion-slide-speed) linear;
115
+ }
116
+ .drawer-slide-left-leave-active {
117
+ animation: slide-left-out var(--tv-motion-slide-speed) linear;
118
+ }
119
+ ```
120
+
121
+ ### 3. Ants (ants.less, configurable)
122
+
123
+ ```less
124
+ @keyframes ants-x {
125
+ 0% { background-position: 0 0; }
126
+ 100% { background-position: var(--tv-motion-ants-shift, 8px) 0; }
127
+ }
128
+
129
+ @keyframes ants-x-rev {
130
+ 0% { background-position: 0 0; }
131
+ 100% { background-position: calc(-1 * var(--tv-motion-ants-shift, 8px)) 0; }
132
+ }
133
+ ```
134
+
135
+ Component usage example:
136
+
137
+ ```less
138
+ .@{grid-prefix-cls}-copyed-borders {
139
+ --tv-motion-ants-shift: 13px;
140
+
141
+ .@{grid-prefix-cls}-border-top {
142
+ animation: ants-x var(--tv-motion-ants-speed) linear infinite;
143
+ }
144
+ .@{grid-prefix-cls}-border-right {
145
+ animation: ants-y var(--tv-motion-ants-speed) linear infinite;
146
+ }
147
+ .@{grid-prefix-cls}-border-bottom {
148
+ animation: ants-x-rev var(--tv-motion-ants-speed) linear infinite;
149
+ }
150
+ .@{grid-prefix-cls}-border-left {
151
+ animation: ants-y-rev var(--tv-motion-ants-speed) linear infinite;
152
+ }
153
+ }
154
+ ```
155
+
156
+ ## Component Integration
157
+
158
+ 1. **Global Import**
159
+ All `@keyframes` are maintained in `transition.less` and `motion/*`, and loaded together.
160
+
161
+ 2. **Local Usage**
162
+ Components can use the motions via `className` or `animation`.
163
+
164
+ 3. **Configurable Parameters**
165
+ Developers can override `:root` variables to adjust motion duration, speed, and other parameters.
166
+
167
+ ## Extension & Maintenance
168
+
169
+ 1. **Naming Convention**
170
+
171
+ * Use `{type}-{direction}-{state}` format, e.g., `slide-left-in`.
172
+ * Ensure global uniqueness to avoid conflicts.
173
+
174
+ 2. **Category Management**
175
+
176
+ * Motions must be written in the corresponding category file (e.g., slide → `slide.less`).
177
+ * New variables must be declared in `index.less` first, then used in the specific file.
178
+
179
+ 3. **Documentation & Comments**
180
+
181
+ * Each motion category should provide example code and usage instructions.
182
+ * Add comments before `@keyframes` to indicate purpose and source.
183
+ * Group related motions together for easier lookup and maintenance.
@@ -0,0 +1,183 @@
1
+ # TinyVue 全局动效配置
2
+
3
+ 为 TinyVue 提供 **全局动效配置能力**,基于 **LESS 与 CSS 变量**,实现以下目标:
4
+
5
+ 1. **统一管理**:所有动效集中维护,避免分散定义与重复工作。
6
+ 2. **全局可控**:通过 CSS 变量统一控制动效的持续时间、延迟、速度等参数。
7
+ 3. **组件集成**:组件可直接调用统一的动效类名或 `@keyframes`。
8
+ 4. **动态可调**:通过覆盖 CSS 变量即可在不同场景下切换动效风格。
9
+
10
+ ## 全局配置
11
+
12
+ ### 全局变量定义
13
+
14
+ 在 `/packages/theme/src/base/vars.less` 中统一定义动效变量:
15
+
16
+ ```less
17
+ :root {
18
+ /* 蚂蚁线相关配置 */
19
+ --tv-motion-ants-shift: 8px;
20
+ --tv-motion-ants-speed: 0.8s;
21
+
22
+ /* 其他动效参数... */
23
+ }
24
+ ```
25
+
26
+ 开发者可在组件主题文件中覆盖这些变量:
27
+
28
+ ```css
29
+ .copyed-borders {
30
+ --tv-motion-ants-shift: 12px;
31
+ --tv-motion-ants-speed: 1.2s;
32
+ }
33
+ ```
34
+
35
+ 也可通过在 `/packages/theme/src/base/` 下创建 `motion-theme.less` 来切换全局动效风格:
36
+
37
+ ```less
38
+ :root {
39
+ --tv-motion-ants-shift: 12px;
40
+ --tv-motion-ants-speed: 1.2s;
41
+ }
42
+ ```
43
+
44
+ ## 动效分类与目录结构
45
+
46
+ 所有动效存放在 `/packages/theme/src/motion/` 目录下,按类型拆分:
47
+
48
+ ```
49
+ motion/
50
+ ├─ fade.less // 淡入淡出
51
+ ├─ slide.less // 滑动
52
+ ├─ zoom.less // 缩放
53
+ ├─ rotate.less // 旋转
54
+ ├─ bounce.less // 弹跳
55
+ ├─ scroll.less // 滚动
56
+ ├─ stroke.less // 描边
57
+ ├─ shine.less // 闪烁
58
+ ├─ ants.less // 蚂蚁线
59
+ ├─ arrow.less // 箭头
60
+ ├─ tab.less // Tab 切换
61
+ ├─ progress.less // 进度条
62
+ └─ index.less // 统一引入
63
+ ```
64
+
65
+ ## 动效示例
66
+
67
+ ### 1. 淡入淡出 (fade.less)
68
+
69
+ ```less
70
+ @keyframes fade-in {
71
+ 0% { opacity: 0; }
72
+ 100% { opacity: 1; }
73
+ }
74
+
75
+ @keyframes fade-out {
76
+ 0% { opacity: 1; }
77
+ 100% { opacity: 0; }
78
+ }
79
+ ```
80
+
81
+ 组件调用示例:
82
+
83
+ ```less
84
+ .@{fade-prefix-cls} {
85
+ &-enter-active {
86
+ animation: var(--tv-motion-fade-speed) fade-in ease-out both;
87
+ }
88
+ &-leave-active {
89
+ animation: var(--tv-motion-fade-speed) fade-out ease-in both;
90
+ }
91
+ }
92
+ ```
93
+
94
+ ### 2. 滑动 (slide.less)
95
+
96
+ ```less
97
+ @keyframes slide-left-in {
98
+ 0% { opacity: 0; transform: translateX(var(--tv-motion-slide-offset-left)); }
99
+ 50% { opacity: var(--tv-motion-slide-opacity-mid); transform: translateX(var(--tv-motion-slide-offset-left-mid)); }
100
+ 100% { opacity: 1; transform: translateX(0%); }
101
+ }
102
+
103
+ @keyframes slide-left-out {
104
+ 0% { opacity: 1; transform: translateX(0%); }
105
+ 50% { opacity: var(--tv-motion-slide-opacity-mid); transform: translateX(var(--tv-motion-slide-offset-left-mid)); }
106
+ 100% { opacity: 0; transform: translateX(var(--tv-motion-slide-offset-left)); }
107
+ }
108
+ ```
109
+
110
+ 组件调用示例:
111
+
112
+ ```less
113
+ .drawer-slide-left-enter-active {
114
+ animation: slide-left-in var(--tv-motion-slide-speed) linear;
115
+ }
116
+ .drawer-slide-left-leave-active {
117
+ animation: slide-left-out var(--tv-motion-slide-speed) linear;
118
+ }
119
+ ```
120
+
121
+ ### 3. 蚂蚁线 (ants.less,可配置)
122
+
123
+ ```less
124
+ @keyframes ants-x {
125
+ 0% { background-position: 0 0; }
126
+ 100% { background-position: var(--tv-motion-ants-shift, 8px) 0; }
127
+ }
128
+
129
+ @keyframes ants-x-rev {
130
+ 0% { background-position: 0 0; }
131
+ 100% { background-position: calc(-1 * var(--tv-motion-ants-shift, 8px)) 0; }
132
+ }
133
+ ```
134
+
135
+ 组件调用示例:
136
+
137
+ ```less
138
+ .@{grid-prefix-cls}-copyed-borders {
139
+ --tv-motion-ants-shift: 13px;
140
+
141
+ .@{grid-prefix-cls}-border-top {
142
+ animation: ants-x var(--tv-motion-ants-speed) linear infinite;
143
+ }
144
+ .@{grid-prefix-cls}-border-right {
145
+ animation: ants-y var(--tv-motion-ants-speed) linear infinite;
146
+ }
147
+ .@{grid-prefix-cls}-border-bottom {
148
+ animation: ants-x-rev var(--tv-motion-ants-speed) linear infinite;
149
+ }
150
+ .@{grid-prefix-cls}-border-left {
151
+ animation: ants-y-rev var(--tv-motion-ants-speed) linear infinite;
152
+ }
153
+ }
154
+ ```
155
+
156
+ ## 组件集成方式
157
+
158
+ 1. **全局引入**
159
+ 所有 `@keyframes` 在 `transition.less` 与 `motion/*` 中集中维护,统一加载。
160
+
161
+ 2. **局部调用**
162
+ 组件可通过 `className` 或 `animation` 调用指定动效。
163
+
164
+ 3. **可配置参数**
165
+ 开发者可通过覆盖 `:root` 变量调整动效时长、速度等参数。
166
+
167
+ ## 扩展与维护
168
+
169
+ 1. **命名规范**
170
+
171
+ * 采用 `{type}-{direction}-{state}` 格式,例如 `slide-left-in`。
172
+ * 保证命名全局唯一,避免冲突。
173
+
174
+ 2. **分类管理**
175
+
176
+ * 动效必须写在对应分类文件中(如滑动类 → `slide.less`)。
177
+ * 新增变量需先在 `index.less` 中声明,再在具体文件中调用。
178
+
179
+ 3. **文档与注释**
180
+
181
+ * 每类动效提供示例代码和调用方式说明。
182
+ * 在 `@keyframes` 前添加注释,标注用途和来源。
183
+ * 同类动效按分组书写,便于快速查找与维护。
@@ -1,7 +1,9 @@
1
1
  # Theme configuration
2
2
 
3
3
  <div class="tip custom-block">
4
- This section of the document only supports theme customization after <code> @opentiny/vue@3.19.0 </code>. For historical theme configuration, see <a href='# Historical version of the theme configuration '> Archive information </a> at the bottom of the current document.
4
+ <div class="custom-block-content">
5
+ This section of the document only supports theme customization after <code> @opentiny/vue@3.19.0 </code>. For historical theme configuration, see <a href='# Historical version of the theme configuration '> Archive information </a> at the bottom of the current document.
6
+ </div>
5
7
  </div>
6
8
 
7
9
  537/5000
@@ -71,10 +73,10 @@ themeTool.changeTheme({
71
73
  ```
72
74
 
73
75
  <div class="info custom-block">
74
- In many historical projects, many developers will write component styles by <code>important</code> and <code>:deep()</code> to override certain component library styles. These styles are scattered throughout the components. When later versions of the component library are upgraded, the component structure or class name may be adjusted, resulting in an override failure. <br><br>
75
-
76
- You are advised to use <code>TinyThemeTool</code> to override component styles. In this way, modified CSS rules are centralized to facilitate subsequent maintenance. Users can also introduce 'CSS files' to override styles, but make sure that the styles in them take precedence over the component library.
77
-
76
+ <div class="custom-block-content">
77
+ In many historical projects, many developers will write component styles by <code>important</code> and <code>:deep()</code> to override certain component library styles. These styles are scattered throughout the components. When later versions of the component library are upgraded, the component structure or class name may be adjusted, resulting in an override failure. <br><br>
78
+ You are advised to use <code>TinyThemeTool</code> to override component styles. In this way, modified CSS rules are centralized to facilitate subsequent maintenance. Users can also introduce 'CSS files' to override styles, but make sure that the styles in them take precedence over the component library.
79
+ </div>
78
80
  </div>
79
81
 
80
82
  ## Micro Frontends scene
@@ -1,7 +1,9 @@
1
1
  # 主题配置
2
2
 
3
3
  <div class="warning custom-block">
4
- 本节文档仅支持 <code> @opentiny/vue@3.19.0 </code> 及其之后版本的主题定制,更早的历史版本的主题配置,请参阅当前文档底部的 <a href='#历史版本的主题配置'>历史版本的主题配置</a>
4
+ <div class="custom-block-content">
5
+ 本节文档仅支持 <code> @opentiny/vue@3.19.0 </code> 及其之后版本的主题定制,更早的历史版本的主题配置,请参阅当前文档底部的 <a href='#历史版本的主题配置'>历史版本的主题配置</a>
6
+ </div>
5
7
  </div>
6
8
 
7
9
  为了给开发者带来更好的用户体验,从 <code> @opentiny/vue@3.19.0 </code> 版本开始,组件库的整体风格切换为 `Opentiny Design` 新风格。
@@ -73,10 +75,10 @@ themeTool.changeTheme({
73
75
  ```
74
76
 
75
77
  <div class="tip custom-block">
76
- 在一些用户项目中,许多开发者会在编写组件和页面的样式时,通过<code>important</code> 和 <code>:deep()</code> 来覆盖某些组件库的样式,这些样式就会散落在各个组件里。在组件库后续版本升级时,可能会调整组件结构或类名,造成样式覆盖失效,不建议这样做。 <br><br>
77
-
78
- 我们建议用户使用 <code>TinyThemeTool</code> 的方法来覆盖组件样式,这样 CSS 规则会集中在一起,方便后续维护。除此之外,用户也可以将自定义样式统一写在一个 `CSS文件` 中并引入项目,但要保证其中的样式优先级高于组件库的优先级。
79
-
78
+ <div class="custom-block-content">
79
+ 在一些用户项目中,许多开发者会在编写组件和页面的样式时,通过<code>important</code> 和 <code>:deep()</code> 来覆盖某些组件库的样式,这些样式就会散落在各个组件里。在组件库后续版本升级时,可能会调整组件结构或类名,造成样式覆盖失效,不建议这样做。 <br><br>
80
+ 我们建议用户使用 <code>TinyThemeTool</code> 的方法来覆盖组件样式,这样 CSS 规则会集中在一起,方便后续维护。除此之外,用户也可以将自定义样式统一写在一个 `CSS文件` 中并引入项目,但要保证其中的样式优先级高于组件库的优先级。
81
+ </div>
80
82
  </div>
81
83
 
82
84
  ## 微前端场景
@@ -116,8 +118,11 @@ const themeTool = new TinyThemeTool(tinyOldTheme)
116
118
  ```
117
119
 
118
120
  <div class="warning custom-block">
119
- <p> 旧主题不能 100% 还原历史版本的所有细节,如果用户升级后有较大的影响,可以跟我们反馈,也可以回退使用<code> @opentiny/vue@3.18.0 </code> 版本。</p>
120
- <p> 如果需要切换 <code>Aurora</code> 主题,可以从上面导出 <code>tinyAuroraTheme</code> 的主题。 </p>
121
+ <div class="custom-block-content">
122
+ <p> 旧主题不能 100% 还原历史版本的所有细节,如果用户升级后有较大的影响,可以跟我们反馈,也可以回退使用<code> @opentiny/vue@3.18.0 </code> 版本。</p>
123
+ <br>
124
+ <p> 如果需要切换 <code>Aurora</code> 主题,可以从上面导出 <code>tinyAuroraTheme</code> 的主题。 </p>
125
+ </div>
121
126
  </div>
122
127
 
123
128
  ## 历史版本的主题配置
@@ -6,13 +6,26 @@ const noSaasComponents = [
6
6
  'ActionMenu',
7
7
  'ColorPicker',
8
8
  'ColorSelectPanel',
9
+ 'DatePanel',
9
10
  'DatePickerMobileFirst',
10
11
  'MindMap',
11
12
  'QrCode',
12
13
  'RichTextEditor',
13
14
  'TimelineItem',
14
15
  'Watermark',
15
- 'Statistic'
16
+ 'Statistic',
17
+ 'Space',
18
+ 'BaseSelect',
19
+ 'FluentEditor',
20
+ 'TreeSelect',
21
+ 'GridSelect',
22
+ 'TimeSelect',
23
+ 'Milestone',
24
+ 'ConfigProvider',
25
+ 'Skeleton',
26
+ 'BulletinBoard',
27
+ 'Crop',
28
+ 'PopEditor'
16
29
  ]
17
30
 
18
31
  // mobile-first上所有分类,pc上都有,因此可以用pc端menu分类进行合并
@@ -1,6 +1,6 @@
1
1
  # 1、声明一个变量
2
2
  VITE_CONTEXT=/tiny-vue-saas-web-doc/
3
- VITE_BUILD_TARGET='inner'
3
+ VITE_BUILD_TARGET='open'
4
4
  VITE_TINY_THEME='saas'
5
5
  # 官网应用类型:pc / mobile / mobile-first
6
6
  VITE_APP_MODE='pc'