@sdata/web-vue 1.11.0 → 1.12.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 (292) hide show
  1. package/dist/sd.css +177 -6
  2. package/dist/sd.min.css +1 -1
  3. package/es/_components/select-view/style/index.css +13 -6
  4. package/es/_components/virtual-list/virtual-list.vue_vue_type_script_lang.js +2 -2
  5. package/es/_hooks/use-allow-search.d.ts +10 -0
  6. package/es/_hooks/use-allow-search.js +31 -0
  7. package/es/_hooks/use-scrollbar.js +1 -1
  8. package/es/_utils/color.js +1 -1
  9. package/es/_utils/date.js +7 -1
  10. package/es/_utils/dom.js +1 -1
  11. package/es/_utils/global-config.js +1 -1
  12. package/es/_utils/omit.js +1 -1
  13. package/es/_utils/responsive-observe.js +1 -1
  14. package/es/_utils/virtual-dropdown.js +1 -1
  15. package/es/_utils/vue-utils.js +4 -18
  16. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/asyncToGenerator.js +1 -1
  17. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/defineProperty.js +1 -1
  18. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/extends.js +1 -1
  19. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/objectDestructuringEmpty.js +1 -1
  20. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/objectSpread2.js +1 -1
  21. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/objectWithoutProperties.js +1 -1
  22. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/objectWithoutPropertiesLoose.js +1 -1
  23. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/toPrimitive.js +1 -1
  24. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/toPropertyKey.js +1 -1
  25. package/es/_virtual/{_@oxc-project_runtime@0.124.0 → _@oxc-project_runtime@0.130.0}/helpers/typeof.js +1 -1
  26. package/es/affix/affix.vue_vue_type_script_lang.js +31 -3
  27. package/es/alert/alert.vue_vue_type_script_lang.js +55 -0
  28. package/es/anchor/anchor-link.vue_vue_type_script_lang.js +8 -0
  29. package/es/anchor/anchor.vue_vue_type_script_lang.js +32 -0
  30. package/es/auto-complete/auto-complete.js +102 -0
  31. package/es/avatar/avatar-group.js +31 -0
  32. package/es/avatar/avatar.vue_vue_type_script_lang.js +51 -1
  33. package/es/back-top/back-top.vue_vue_type_script_lang.js +16 -0
  34. package/es/badge/badge.js +34 -1
  35. package/es/breadcrumb/breadcrumb-item.js +27 -0
  36. package/es/breadcrumb/breadcrumb.js +39 -0
  37. package/es/button/button-group.vue_vue_type_script_lang.js +22 -0
  38. package/es/button/button.vue_vue_type_script_lang.js +58 -1
  39. package/es/calendar/calendar.js +47 -0
  40. package/es/calendar/month.js +1 -1
  41. package/es/calendar/year.js +1 -1
  42. package/es/card/card-grid.vue_vue_type_script_lang.js +6 -1
  43. package/es/card/card-meta.js +23 -0
  44. package/es/card/card.js +54 -0
  45. package/es/carousel/carousel.js +68 -1
  46. package/es/cascader/cascader-panel.js +2 -28
  47. package/es/cascader/cascader-panel.vue.d.ts +24 -306
  48. package/es/cascader/{cascader-panel.vue_vue_type_script_lang.js → cascader-panel.vue_vue_type_script_setup_true_lang.js} +92 -101
  49. package/es/cascader/cascader.js +2 -145
  50. package/es/cascader/cascader.vue.d.ts +53 -1289
  51. package/es/cascader/{cascader.vue_vue_type_script_lang.js → cascader.vue_vue_type_script_setup_true_lang.js} +236 -172
  52. package/es/cascader/index.d.ts +4 -2986
  53. package/es/cascader/types.d.ts +79 -0
  54. package/es/checkbox/checkbox-group.js +48 -0
  55. package/es/checkbox/checkbox.js +35 -0
  56. package/es/collapse/collapse-item.js +36 -0
  57. package/es/collapse/collapse.vue_vue_type_script_lang.js +47 -0
  58. package/es/color-picker/color-picker.js +90 -1
  59. package/es/color-picker/panel.js +5 -2
  60. package/es/color-picker/utils.js +1 -1
  61. package/es/comment/comment.js +47 -1
  62. package/es/components.d.ts +132 -127
  63. package/es/config-provider/config-provider.vue.d.ts +9 -0
  64. package/es/config-provider/config-provider.vue_vue_type_script_lang.js +72 -1
  65. package/es/config-provider/context.d.ts +1 -0
  66. package/es/config-provider/index.d.ts +15 -0
  67. package/es/config-provider/theme-provider.vue_vue_type_script_setup_true_lang.js +1 -1
  68. package/es/config-provider/theme.js +1 -1
  69. package/es/copy/copy.js +5 -0
  70. package/es/copy/copy.vue.d.ts +15 -0
  71. package/es/copy/copy.vue_vue_type_script_setup_true_lang.js +95 -0
  72. package/es/copy/index.d.ts +15 -0
  73. package/es/copy/index.js +10 -0
  74. package/es/copy/style/css.js +2 -0
  75. package/es/copy/style/index.css +25 -0
  76. package/es/copy/style/index.d.ts +2 -0
  77. package/es/copy/style/index.js +2 -0
  78. package/es/copy/style/index.scss +15 -0
  79. package/es/copy/style/token.scss +3 -0
  80. package/es/copy/types.d.ts +21 -0
  81. package/es/cropper/cropper.js +5 -0
  82. package/es/cropper/cropper.vue.d.ts +45 -0
  83. package/es/cropper/cropper.vue_vue_type_script_setup_true_lang.js +266 -0
  84. package/es/cropper/index.d.ts +130 -0
  85. package/es/cropper/index.js +10 -0
  86. package/es/cropper/interface.d.ts +59 -0
  87. package/es/cropper/style/css.js +2 -0
  88. package/es/cropper/style/index.css +51 -0
  89. package/es/cropper/style/index.d.ts +2 -0
  90. package/es/cropper/style/index.js +2 -0
  91. package/es/cropper/style/index.scss +43 -0
  92. package/es/cropper/style/token.scss +8 -0
  93. package/es/date-picker/hooks/use-range-time-picker-value.js +1 -1
  94. package/es/date-picker/index.d.ts +54 -576
  95. package/es/date-picker/panels/date/index.js +1 -1
  96. package/es/date-picker/panels/date/index.vue_vue_type_script_lang.js +1 -1
  97. package/es/date-picker/panels/footer.vue.d.ts +55 -577
  98. package/es/date-picker/panels/footer.vue_vue_type_script_lang.js +1 -1
  99. package/es/date-picker/panels/month/index.js +1 -1
  100. package/es/date-picker/panels/quarter/index.js +1 -1
  101. package/es/date-picker/panels/year/index.js +1 -1
  102. package/es/date-picker/picker-panel.vue.d.ts +54 -576
  103. package/es/date-picker/picker.js +1 -1
  104. package/es/date-picker/picker.vue.d.ts +54 -576
  105. package/es/date-picker/picker.vue_vue_type_script_lang.js +193 -1
  106. package/es/date-picker/pickers/date-picker.js +42 -0
  107. package/es/date-picker/pickers/month-picker.js +12 -0
  108. package/es/date-picker/pickers/quarter-picker.js +17 -0
  109. package/es/date-picker/pickers/week-picker.js +23 -0
  110. package/es/date-picker/pickers/year-picker.js +12 -0
  111. package/es/date-picker/range-picker-panel.vue.d.ts +54 -576
  112. package/es/date-picker/range-picker-panel.vue_vue_type_script_lang.js +1 -1
  113. package/es/date-picker/range-picker.js +1 -1
  114. package/es/date-picker/range-picker.vue.d.ts +54 -576
  115. package/es/date-picker/range-picker.vue_vue_type_script_lang.js +120 -1
  116. package/es/descriptions/descriptions-item.vue_vue_type_script_lang.js +16 -0
  117. package/es/descriptions/descriptions.js +65 -1
  118. package/es/divider/divider.js +24 -0
  119. package/es/drawer/drawer.vue_vue_type_script_lang.js +161 -2
  120. package/es/drawer/index.js +2 -2
  121. package/es/dropdown/dropdown-button.vue_vue_type_script_lang.js +70 -0
  122. package/es/dropdown/dropdown-group.vue_vue_type_script_lang.js +12 -1
  123. package/es/dropdown/dropdown-option.vue_vue_type_script_lang.js +20 -1
  124. package/es/dropdown/dropdown-submenu.vue_vue_type_script_lang.js +57 -0
  125. package/es/dropdown/dropdown.vue_vue_type_script_lang.js +55 -0
  126. package/es/ellipsis/ellipsis.vue_vue_type_script_lang.js +25 -2
  127. package/es/ellipsis/performant-ellipsis.vue_vue_type_script_lang.js +24 -1
  128. package/es/empty/empty.js +18 -0
  129. package/es/form/form-item.vue_vue_type_script_lang.js +146 -3
  130. package/es/form/form.vue_vue_type_script_lang.js +108 -0
  131. package/es/grid/grid-col.vue_vue_type_script_lang.js +42 -1
  132. package/es/grid/grid-item.vue_vue_type_script_lang.js +13 -1
  133. package/es/grid/grid-row.vue_vue_type_script_lang.js +21 -0
  134. package/es/grid/grid.vue_vue_type_script_lang.js +20 -0
  135. package/es/icon.js +5 -5
  136. package/es/image/image.js +1 -1
  137. package/es/image/image.vue_vue_type_script_lang.js +82 -0
  138. package/es/image/preview-action.js +8 -0
  139. package/es/image/preview-group.js +1 -1
  140. package/es/image/preview-group.vue_vue_type_script_lang.js +48 -0
  141. package/es/image/preview-toolbar.vue_vue_type_script_lang.js +1 -0
  142. package/es/image/preview.vue_vue_type_script_lang.js +56 -1
  143. package/es/index.css +177 -6
  144. package/es/index.d.ts +9 -1
  145. package/es/index.js +6 -2
  146. package/es/index.scss +4 -0
  147. package/es/input/input-password.vue_vue_type_script_lang.js +13 -0
  148. package/es/input/input-search.js +35 -1
  149. package/es/input/input.js +129 -1
  150. package/es/input-number/index.d.ts +35 -23
  151. package/es/input-number/input-number.d.ts +19 -10
  152. package/es/input-number/input-number.js +205 -23
  153. package/es/input-tag/input-tag.js +137 -1
  154. package/es/input-tag/style/index.css +13 -6
  155. package/es/input-tag/utils.js +1 -1
  156. package/es/layout/content.js +5 -0
  157. package/es/layout/footer.js +5 -0
  158. package/es/layout/header.js +5 -0
  159. package/es/layout/layout.vue_vue_type_script_lang.js +6 -1
  160. package/es/layout/sider.vue_vue_type_script_lang.js +46 -0
  161. package/es/link/index.d.ts +44 -564
  162. package/es/link/interface.d.ts +15 -0
  163. package/es/link/link.js +2 -17
  164. package/es/link/link.vue.d.ts +31 -286
  165. package/es/link/link.vue_vue_type_script_setup_true_lang.js +112 -0
  166. package/es/link/style/index.css +6 -0
  167. package/es/link/style/index.scss +10 -0
  168. package/es/list/list-item-meta.vue_vue_type_script_lang.js +23 -0
  169. package/es/list/list-item.js +21 -1
  170. package/es/list/list.js +104 -2
  171. package/es/mention/mention.js +87 -1
  172. package/es/menu/base-menu.vue_vue_type_script_lang.js +102 -0
  173. package/es/menu/item-group.vue_vue_type_script_lang.js +11 -1
  174. package/es/menu/item.d.ts +1 -1
  175. package/es/menu/item.js +13 -2
  176. package/es/menu/menu.js +2 -1
  177. package/es/menu/sub-menu-pop.vue.d.ts +1 -1
  178. package/es/menu/sub-menu.js +40 -1
  179. package/es/message/index.js +1 -1
  180. package/es/modal/index.js +2 -2
  181. package/es/modal/modal.vue_vue_type_script_lang.js +193 -2
  182. package/es/notification/index.js +1 -1
  183. package/es/overflow-list/overflow-list.js +25 -1
  184. package/es/page-header/page-header.vue_vue_type_script_lang.js +38 -0
  185. package/es/pagination/page-jumper.vue.d.ts +35 -22
  186. package/es/pagination/pagination.js +122 -0
  187. package/es/popconfirm/popconfirm.vue_vue_type_script_lang.js +95 -1
  188. package/es/popover/popover.vue_vue_type_script_lang.js +62 -0
  189. package/es/progress/line.vue_vue_type_script_lang.js +1 -1
  190. package/es/progress/progress.vue_vue_type_script_lang.js +48 -0
  191. package/es/radio/radio-group.js +53 -0
  192. package/es/radio/radio.js +36 -0
  193. package/es/rate/rate.js +54 -0
  194. package/es/resize-box/resize-box.vue_vue_type_script_lang.js +47 -1
  195. package/es/result/result.vue_vue_type_script_lang.js +40 -0
  196. package/es/scrollbar/scrollbar.vue_vue_type_script_lang.js +108 -2
  197. package/es/sd-vue.js +10 -2
  198. package/es/secret/index.d.ts +48 -0
  199. package/es/secret/index.js +10 -0
  200. package/es/secret/secret.js +5 -0
  201. package/es/secret/secret.vue.d.ts +17 -0
  202. package/es/secret/secret.vue_vue_type_script_setup_true_lang.js +64 -0
  203. package/es/secret/style/css.js +2 -0
  204. package/es/secret/style/index.css +54 -0
  205. package/es/secret/style/index.d.ts +2 -0
  206. package/es/secret/style/index.js +2 -0
  207. package/es/secret/style/index.scss +48 -0
  208. package/es/secret/style/token.scss +9 -0
  209. package/es/select/hooks/use-options.js +1 -1
  210. package/es/select/optgroup.vue_vue_type_script_lang.js +12 -1
  211. package/es/select/option.vue_vue_type_script_lang.js +27 -0
  212. package/es/select/select.js +8 -6
  213. package/es/select/utils.js +1 -1
  214. package/es/skeleton/line.vue_vue_type_script_lang.js +16 -0
  215. package/es/skeleton/shape.vue_vue_type_script_lang.js +10 -0
  216. package/es/skeleton/skeleton.vue_vue_type_script_lang.js +8 -0
  217. package/es/slider/index.d.ts +66 -42
  218. package/es/slider/slider-input.vue.d.ts +33 -21
  219. package/es/slider/slider.vue.d.ts +33 -21
  220. package/es/slider/slider.vue_vue_type_script_lang.js +55 -0
  221. package/es/space/space.js +27 -0
  222. package/es/spin/spin.js +35 -0
  223. package/es/split/split.vue_vue_type_script_lang.js +62 -1
  224. package/es/statistic/countdown.vue_vue_type_script_lang.js +36 -1
  225. package/es/statistic/statistic.vue_vue_type_script_lang.js +74 -0
  226. package/es/steps/step.vue_vue_type_script_lang.js +36 -0
  227. package/es/steps/steps.vue_vue_type_script_lang.js +47 -0
  228. package/es/switch/switch.vue_vue_type_script_lang.js +98 -1
  229. package/es/table/table-column.js +115 -0
  230. package/es/table/table-operation-td.js +1 -1
  231. package/es/table/table-operation-th.js +1 -1
  232. package/es/table/table-td.js +1 -1
  233. package/es/table/table-th.js +1 -1
  234. package/es/table/table.js +442 -3
  235. package/es/table/utils.js +1 -1
  236. package/es/tabs/tab-pane.vue_vue_type_script_lang.js +23 -1
  237. package/es/tabs/tabs.js +104 -0
  238. package/es/tag/index.d.ts +29237 -74
  239. package/es/tag/interface.d.ts +9 -1
  240. package/es/tag/style/index.css +13 -6
  241. package/es/tag/style/index.scss +16 -4
  242. package/es/tag/tag.js +26 -5
  243. package/es/tag/tag.vue.d.ts +11688 -7
  244. package/es/tag/tag.vue_vue_type_script_lang.js +139 -3
  245. package/es/tag-group/index.d.ts +64 -0
  246. package/es/tag-group/index.js +10 -0
  247. package/es/tag-group/interface.d.ts +18 -0
  248. package/es/tag-group/style/css.js +2 -0
  249. package/es/tag-group/style/index.css +92 -0
  250. package/es/tag-group/style/index.d.ts +2 -0
  251. package/es/tag-group/style/index.js +2 -0
  252. package/es/tag-group/style/index.scss +108 -0
  253. package/es/tag-group/style/token.scss +6 -0
  254. package/es/tag-group/tag-group.js +5 -0
  255. package/es/tag-group/tag-group.vue.d.ts +46 -0
  256. package/es/tag-group/tag-group.vue_vue_type_script_setup_true_lang.js +360 -0
  257. package/es/textarea/textarea.vue_vue_type_script_lang.js +90 -1
  258. package/es/time-picker/range-panel.js +1 -1
  259. package/es/time-picker/time-picker.js +1 -1
  260. package/es/time-picker/time-picker.vue_vue_type_script_lang.js +132 -0
  261. package/es/timeline/item.vue_vue_type_script_lang.js +38 -1
  262. package/es/timeline/timeline.js +28 -0
  263. package/es/tooltip/tooltip.vue_vue_type_script_lang.js +61 -1
  264. package/es/transfer/transfer.vue_vue_type_script_lang.js +136 -0
  265. package/es/tree/base-node.vue_vue_type_script_lang.js +7 -0
  266. package/es/tree/node.js +1 -1
  267. package/es/tree/tree.vue_vue_type_script_lang.js +287 -2
  268. package/es/tree/utils/tree-data.js +1 -1
  269. package/es/tree-select/hooks/use-selected-state.js +1 -1
  270. package/es/tree-select/panel.js +1 -1
  271. package/es/tree-select/tree-select.js +1 -1
  272. package/es/tree-select/tree-select.vue_vue_type_script_lang.js +281 -8
  273. package/es/trigger/trigger.js +161 -1
  274. package/es/trigger/utils.js +1 -1
  275. package/es/typography/base.d.ts +7 -0
  276. package/es/typography/base.js +127 -3
  277. package/es/typography/interface.d.ts +2 -0
  278. package/es/typography/operations.js +30 -0
  279. package/es/typography/paragraph.js +8 -0
  280. package/es/typography/title.js +6 -1
  281. package/es/upload/upload.js +279 -2
  282. package/es/verification-code/verification-code.js +59 -0
  283. package/es/watermark/hooks/use-mutation-observer.js +1 -1
  284. package/es/watermark/watermark.js +58 -1
  285. package/es/web-vue.css +24 -24
  286. package/json/vetur-attributes.json +134 -218
  287. package/json/vetur-tags.json +58 -67
  288. package/json/web-types.json +304 -493
  289. package/package.json +9 -7
  290. package/es/_utils/clipboard.d.ts +0 -1
  291. package/es/_utils/clipboard.js +0 -35
  292. package/es/link/link.vue_vue_type_script_lang.js +0 -56
@@ -4,52 +4,149 @@ import icon_hover_default from "../_components/icon-hover.js";
4
4
  import IconClose from "../icon/icon-close/index.js";
5
5
  import IconLoading from "../icon/icon-loading/index.js";
6
6
  import { useSize } from "../_hooks/use-size.js";
7
+ import Ellipsis, { PerformantEllipsis } from "../ellipsis/index.js";
7
8
  import { TAG_COLORS } from "./interface.js";
8
9
  import { computed, defineComponent, inject, ref, toRefs } from "vue";
9
10
  //#region components/tag/tag.vue?vue&type=script&lang.ts
10
11
  var tag_vue_vue_type_script_lang_default = defineComponent({
11
12
  name: "Tag",
12
13
  components: {
14
+ Ellipsis,
13
15
  IconHover: icon_hover_default,
14
16
  IconClose,
15
- IconLoading
17
+ IconLoading,
18
+ PerformantEllipsis
16
19
  },
17
20
  props: {
21
+ /**
22
+ * @zh 标签的颜色
23
+ * @en Label color
24
+ * @values 'red','orangered','orange','gold','lime','green','cyan','blue','sdblue','purple','pinkpurple','magenta','gray'
25
+ */
18
26
  color: { type: String },
27
+ /**
28
+ * @zh 标签的大小
29
+ * @en Label size
30
+ * @values 'small','medium','large'
31
+ * @defaultValue 'medium'
32
+ */
19
33
  size: { type: String },
34
+ /**
35
+ * @zh 是否显示边框
36
+ * @en Whether the tag is bordered
37
+ * @version 2.33.0
38
+ */
20
39
  bordered: {
21
40
  type: Boolean,
22
41
  default: false
23
42
  },
43
+ /**
44
+ * @zh 标签是否可见
45
+ * @en Whether the tag is visible
46
+ * @vModel
47
+ */
24
48
  visible: {
25
49
  type: Boolean,
26
50
  default: void 0
27
51
  },
52
+ /**
53
+ * @zh 标签默认是否可见
54
+ * @en Whether the tag is visible by default
55
+ */
28
56
  defaultVisible: {
29
57
  type: Boolean,
30
58
  default: true
31
59
  },
60
+ /**
61
+ * @zh 标签是否为加载中状态
62
+ * @en Whether the tag is loading state
63
+ */
32
64
  loading: {
33
65
  type: Boolean,
34
66
  default: false
35
67
  },
68
+ /**
69
+ * @zh 标签是否可关闭
70
+ * @en Whether the tag can be closed
71
+ */
36
72
  closable: {
37
73
  type: Boolean,
38
74
  default: false
39
75
  },
76
+ /**
77
+ * @zh 标签是否可选中
78
+ * @en Whether the tag can be checked
79
+ */
40
80
  checkable: {
41
81
  type: Boolean,
42
82
  default: false
43
83
  },
84
+ /**
85
+ * @zh 标签是否选中(标签可选中时可用)
86
+ * @en Whether the tag is checked (available when the tag is checkable)
87
+ * @vModel
88
+ */
44
89
  checked: {
45
90
  type: Boolean,
46
91
  default: void 0
47
92
  },
93
+ /**
94
+ * @zh 标签默认选中状态(标签可选中时可用)
95
+ * @en Whether the tag is checked by default (available when the tag is checkable)
96
+ */
48
97
  defaultChecked: {
49
98
  type: Boolean,
50
99
  default: true
51
100
  },
101
+ /**
102
+ * @zh 标签内容不换行
103
+ * @en Tag content does not wrap
104
+ * @version 2.56.1
105
+ */
52
106
  nowrap: {
107
+ type: Boolean,
108
+ default: void 0
109
+ },
110
+ /**
111
+ * @zh 是否开启默认内容省略
112
+ * @en Whether to enable ellipsis for the default slot content
113
+ * @defaultValue true
114
+ */
115
+ ellipsis: {
116
+ type: Boolean,
117
+ default: void 0
118
+ },
119
+ /**
120
+ * @zh 默认内容省略的最大显示行数
121
+ * @en Maximum number of displayed lines for ellipsis content
122
+ */
123
+ ellipsisLineClamp: {
124
+ type: [Number, String],
125
+ default: void 0
126
+ },
127
+ /**
128
+ * @zh 省略内容的展开触发方式
129
+ * @en Trigger mode for ellipsis expansion
130
+ * @values 'click'
131
+ */
132
+ ellipsisExpandTrigger: {
133
+ type: String,
134
+ default: void 0
135
+ },
136
+ /**
137
+ * @zh 省略时是否展示提示。可传入 Tooltip 属性。
138
+ * @en Whether to show a tooltip when ellipsis is active. Tooltip props are supported.
139
+ * @defaultValue true
140
+ */
141
+ ellipsisTooltip: {
142
+ type: [Boolean, Object],
143
+ default: true
144
+ },
145
+ /**
146
+ * @zh 是否使用高性能省略实现
147
+ * @en Whether to use the performant ellipsis implementation
148
+ */
149
+ ellipsisPerformant: {
53
150
  type: Boolean,
54
151
  default: false
55
152
  }
@@ -57,10 +154,31 @@ var tag_vue_vue_type_script_lang_default = defineComponent({
57
154
  emits: {
58
155
  "update:visible": (_visible) => true,
59
156
  "update:checked": (_checked) => true,
157
+ /**
158
+ * @zh 点击关闭按钮时触发
159
+ * @en Emitted when the close button is clicked
160
+ * @param {MouseEvent | KeyboardEvent} ev
161
+ */
60
162
  "close": (_ev) => true,
163
+ /**
164
+ * @zh 用户选中时触发(仅在可选中模式下触发)
165
+ * @en Emitted when the user check (emit only in the checkable mode)
166
+ * @param {boolean} checked
167
+ * @param {MouseEvent} ev
168
+ */
61
169
  "check": (_checked, _ev) => true
62
170
  },
63
- setup(props, { emit }) {
171
+ /**
172
+ * @zh 图标
173
+ * @en Icon
174
+ * @slot icon
175
+ */
176
+ /**
177
+ * @zh 关闭按钮的图标
178
+ * @en Close button icon
179
+ * @slot close-icon
180
+ */
181
+ setup(props, { emit, slots }) {
64
182
  const { size } = toRefs(props);
65
183
  const prefixCls = getPrefixCls("tag");
66
184
  const isBuiltInColor = computed(() => props.color && TAG_COLORS.includes(props.color));
@@ -80,11 +198,23 @@ var tag_vue_vue_type_script_lang_default = defineComponent({
80
198
  if (_mergedSize.value === "mini") return "small";
81
199
  return _mergedSize.value;
82
200
  });
201
+ const hasDefaultSlot = computed(() => Boolean(slots.default));
202
+ const resolvedEllipsis = computed(() => {
203
+ var _ref, _props$ellipsis;
204
+ return (_ref = (_props$ellipsis = props.ellipsis) !== null && _props$ellipsis !== void 0 ? _props$ellipsis : props.nowrap) !== null && _ref !== void 0 ? _ref : true;
205
+ });
206
+ const shouldRenderEllipsis = computed(() => resolvedEllipsis.value && hasDefaultSlot.value);
207
+ const hasLineClampEllipsis = computed(() => shouldRenderEllipsis.value && props.ellipsisLineClamp !== void 0);
208
+ const ellipsisComponent = computed(() => props.ellipsisPerformant ? PerformantEllipsis : Ellipsis);
83
209
  const handleClose = (ev) => {
84
210
  _visible.value = false;
85
211
  emit("update:visible", false);
86
212
  emit("close", ev);
87
213
  };
214
+ const handleCloseKeydown = (ev) => {
215
+ if (ev.key !== "Enter" && ev.key !== " ") return;
216
+ handleClose(ev);
217
+ };
88
218
  const handleClick = (ev) => {
89
219
  if (props.checkable) {
90
220
  const newChecked = !computedChecked.value;
@@ -104,8 +234,11 @@ var tag_vue_vue_type_script_lang_default = defineComponent({
104
234
  prefixCls,
105
235
  `${prefixCls}-size-${mergedSize.value}`,
106
236
  {
237
+ [`${prefixCls}-ellipsis`]: shouldRenderEllipsis.value,
238
+ [`${prefixCls}-ellipsis-line-clamp`]: hasLineClampEllipsis.value,
107
239
  [`${prefixCls}-loading`]: props.loading,
108
240
  [`${prefixCls}-hide`]: !computedVisible.value,
241
+ [`${prefixCls}-no-ellipsis`]: !shouldRenderEllipsis.value,
109
242
  [`${prefixCls}-${props.color}`]: isBuiltInColor.value,
110
243
  [`${prefixCls}-bordered`]: props.bordered,
111
244
  [`${prefixCls}-checkable`]: props.checkable,
@@ -119,8 +252,11 @@ var tag_vue_vue_type_script_lang_default = defineComponent({
119
252
  }),
120
253
  computedVisible,
121
254
  computedChecked,
255
+ ellipsisComponent,
122
256
  handleClick,
123
- handleClose
257
+ handleClose,
258
+ handleCloseKeydown,
259
+ shouldRenderEllipsis
124
260
  };
125
261
  }
126
262
  });
@@ -0,0 +1,64 @@
1
+ import type { App } from 'vue';
2
+ import type { SDOptions } from '../_utils/types';
3
+ import _TagGroup from './tag-group.vue';
4
+ declare const TagGroup: {
5
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("./interface").TagGroupProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
6
+ options: import("./interface").TagGroupOption[];
7
+ fieldNames: import("./interface").TagGroupFieldNames;
8
+ maxCount: number | "responsive";
9
+ }, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
10
+ P: {};
11
+ B: {};
12
+ D: {};
13
+ C: {};
14
+ M: {};
15
+ Defaults: {};
16
+ }, Readonly<import("./interface").TagGroupProps> & Readonly<{}>, {}, {}, {}, {}, {
17
+ options: import("./interface").TagGroupOption[];
18
+ fieldNames: import("./interface").TagGroupFieldNames;
19
+ maxCount: number | "responsive";
20
+ }>;
21
+ __isFragment?: never;
22
+ __isTeleport?: never;
23
+ __isSuspense?: never;
24
+ } & import("vue").ComponentOptionsBase<Readonly<import("./interface").TagGroupProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
25
+ options: import("./interface").TagGroupOption[];
26
+ fieldNames: import("./interface").TagGroupFieldNames;
27
+ maxCount: number | "responsive";
28
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
29
+ $slots: {
30
+ item?: (props: {
31
+ data: import("./interface").TagGroupObjectOption;
32
+ option: import("./interface").TagGroupObjectOption;
33
+ label: string | number;
34
+ value: string | number;
35
+ index: number;
36
+ itemClass: (string | {
37
+ [x: string]: boolean;
38
+ })[];
39
+ itemStyle: import("vue").CSSProperties | undefined;
40
+ isOverflow: boolean;
41
+ measure: boolean;
42
+ }) => any;
43
+ } & {
44
+ label?: (props: {
45
+ data: import("./interface").TagGroupObjectOption;
46
+ option: import("./interface").TagGroupObjectOption;
47
+ }) => any;
48
+ } & {
49
+ counter?: (props: {
50
+ label: string | number;
51
+ value: string | number;
52
+ hiddenCount: number;
53
+ measure: boolean;
54
+ counterClass: string;
55
+ }) => any;
56
+ } & {
57
+ default?: (props: {}) => any;
58
+ };
59
+ }) & {
60
+ install: (app: App, options?: SDOptions) => void;
61
+ };
62
+ export type TagGroupInstance = InstanceType<typeof _TagGroup>;
63
+ export type { TagGroupFieldNames, TagGroupObjectOption, TagGroupOption, TagGroupOptionLabel, TagGroupProps, } from './interface';
64
+ export default TagGroup;
@@ -0,0 +1,10 @@
1
+ import { getComponentPrefix, setGlobalConfig } from "../_utils/global-config.js";
2
+ import tag_group_default from "./tag-group.js";
3
+ //#region components/tag-group/index.ts
4
+ var TagGroup = Object.assign(tag_group_default, { install: (app, options) => {
5
+ setGlobalConfig(app, options);
6
+ const componentPrefix = getComponentPrefix(options);
7
+ app.component(componentPrefix + tag_group_default.name, tag_group_default);
8
+ } });
9
+ //#endregion
10
+ export { TagGroup as default };
@@ -0,0 +1,18 @@
1
+ import type { Merge } from 'type-fest';
2
+ import type { TagProps } from '../tag';
3
+ export type TagGroupOptionLabel = string | number | (() => string | number);
4
+ export type TagGroupObjectOption = Merge<Partial<TagProps>, {
5
+ label: TagGroupOptionLabel;
6
+ value: string | number;
7
+ itemProps?: Record<string, unknown>;
8
+ }> & Record<string, unknown>;
9
+ export type TagGroupOption = string | number | TagGroupObjectOption;
10
+ export interface TagGroupFieldNames {
11
+ label?: string;
12
+ value?: string;
13
+ }
14
+ export interface TagGroupProps {
15
+ maxCount?: number | 'responsive';
16
+ options?: TagGroupOption[];
17
+ fieldNames?: TagGroupFieldNames;
18
+ }
@@ -0,0 +1,2 @@
1
+ import "../../style/index.css";
2
+ import "./index.css";
@@ -0,0 +1,92 @@
1
+ /******** borderSize *******/
2
+ /******** borderStyle *******/
3
+ /******** radius *******/
4
+ /******** shadow distance *******/
5
+ /******** size *******/
6
+ /******** spacing *******/
7
+ /******** shadow *******/
8
+ /******** opacity *******/
9
+ /******** fontSize *******/
10
+ /******** fontWeight ********/
11
+ /******** Primary *******/
12
+ /******** success *******/
13
+ /******** warning *******/
14
+ /******** danger *******/
15
+ /******** link *******/
16
+ /******** radius *******/
17
+ /********* icon hover *********/
18
+ .sd-tag-group {
19
+ position: relative;
20
+ display: inline-flex;
21
+ min-width: 0;
22
+ max-width: 100%;
23
+ vertical-align: middle;
24
+ }
25
+ .sd-tag-group-responsive {
26
+ display: block;
27
+ width: 100%;
28
+ }
29
+ .sd-tag-group-inner, .sd-tag-group-popover {
30
+ display: inline-flex;
31
+ gap: 4px;
32
+ align-items: center;
33
+ min-width: 0;
34
+ margin: 0;
35
+ padding: 0;
36
+ list-style: none;
37
+ }
38
+ .sd-tag-group-responsive .sd-tag-group-inner {
39
+ display: flex;
40
+ width: 100%;
41
+ }
42
+ .sd-tag-group-popover {
43
+ flex-wrap: wrap;
44
+ max-width: 320px;
45
+ }
46
+ .sd-tag-group-item {
47
+ display: inline-flex;
48
+ flex: 0 1 auto;
49
+ min-width: 0;
50
+ max-width: 100%;
51
+ }
52
+ .sd-tag-group-item-counter > .sd-tag {
53
+ cursor: pointer;
54
+ }
55
+ .sd-tag-group-item-content {
56
+ max-width: 100%;
57
+ }
58
+ .sd-tag-group-counter-content {
59
+ max-width: 100%;
60
+ }
61
+ .sd-tag-group-item-content-overflow {
62
+ min-width: 0;
63
+ }
64
+ .sd-tag-group-item-content > .sd-tag, .sd-tag-group-counter-content > .sd-tag, .sd-tag-group-item-content > .sd-link, .sd-tag-group-counter-content > .sd-link, .sd-tag-group-item-content > a, .sd-tag-group-counter-content > a, .sd-tag-group-item-content > span, .sd-tag-group-counter-content > span {
65
+ max-width: 100%;
66
+ }
67
+ .sd-tag-group-item-ellipsis {
68
+ max-width: 100%;
69
+ }
70
+ .sd-tag-group-measure {
71
+ position: absolute;
72
+ top: 0;
73
+ left: 0;
74
+ z-index: -1;
75
+ display: inline-flex;
76
+ gap: 4px;
77
+ align-items: center;
78
+ height: 0;
79
+ overflow: hidden;
80
+ white-space: nowrap;
81
+ visibility: hidden;
82
+ pointer-events: none;
83
+ }
84
+ .sd-tag-group-measure .sd-tag-group-item {
85
+ flex: 0 0 auto;
86
+ max-width: none;
87
+ }
88
+ .sd-tag-group-resize-observer {
89
+ position: absolute;
90
+ inset: 0;
91
+ pointer-events: none;
92
+ }
@@ -0,0 +1,2 @@
1
+ import '../../style/index.scss';
2
+ import './index.scss';
@@ -0,0 +1,2 @@
1
+ import "../../style/index.scss";
2
+ import "./index.scss";
@@ -0,0 +1,108 @@
1
+ @use '@style/theme/index.scss' as theme;
2
+ @use 'sass:string';
3
+
4
+ @forward '@components/tag-group/style/token.scss';
5
+
6
+ @use '@components/tag-group/style/token.scss' as *;
7
+
8
+ $tag-group-prefix-cls: string.unquote('#{theme.$prefix}-tag-group');
9
+ $tag-prefix-cls: string.unquote('#{theme.$prefix}-tag');
10
+ $link-prefix-cls: string.unquote('#{theme.$prefix}-link');
11
+
12
+ .#{$tag-group-prefix-cls} {
13
+ position: relative;
14
+ display: inline-flex;
15
+ min-width: 0;
16
+ max-width: 100%;
17
+ vertical-align: middle;
18
+
19
+ &-responsive {
20
+ display: block;
21
+ width: 100%;
22
+ }
23
+
24
+ &-inner,
25
+ &-popover {
26
+ display: inline-flex;
27
+ gap: $tag-group-gap;
28
+ align-items: center;
29
+ min-width: 0;
30
+ margin: 0;
31
+ padding: 0;
32
+ list-style: none;
33
+ }
34
+
35
+ &-responsive &-inner {
36
+ display: flex;
37
+ width: 100%;
38
+ }
39
+
40
+ &-popover {
41
+ flex-wrap: wrap;
42
+ max-width: $tag-group-popover-max-width;
43
+ }
44
+
45
+ &-item {
46
+ display: inline-flex;
47
+ flex: 0 1 auto;
48
+ min-width: 0;
49
+ max-width: 100%;
50
+ }
51
+
52
+ &-item-counter > .#{$tag-prefix-cls} {
53
+ cursor: pointer;
54
+ }
55
+
56
+ &-item-content {
57
+ max-width: 100%;
58
+ }
59
+
60
+ &-counter-content {
61
+ max-width: 100%;
62
+ }
63
+
64
+ &-item-content-overflow {
65
+ min-width: 0;
66
+ }
67
+
68
+ &-item-content > .#{$tag-prefix-cls},
69
+ &-counter-content > .#{$tag-prefix-cls},
70
+ &-item-content > .#{$link-prefix-cls},
71
+ &-counter-content > .#{$link-prefix-cls},
72
+ &-item-content > a,
73
+ &-counter-content > a,
74
+ &-item-content > span,
75
+ &-counter-content > span {
76
+ max-width: 100%;
77
+ }
78
+
79
+ &-item-ellipsis {
80
+ max-width: 100%;
81
+ }
82
+
83
+ &-measure {
84
+ position: absolute;
85
+ top: 0;
86
+ left: 0;
87
+ z-index: -1;
88
+ display: inline-flex;
89
+ gap: $tag-group-gap;
90
+ align-items: center;
91
+ height: 0;
92
+ overflow: hidden;
93
+ white-space: nowrap;
94
+ visibility: hidden;
95
+ pointer-events: none;
96
+ }
97
+
98
+ &-measure &-item {
99
+ flex: 0 0 auto;
100
+ max-width: none;
101
+ }
102
+
103
+ &-resize-observer {
104
+ position: absolute;
105
+ inset: 0;
106
+ pointer-events: none;
107
+ }
108
+ }
@@ -0,0 +1,6 @@
1
+ @use '@style/theme/index.scss' as global;
2
+
3
+ @forward '@style/theme/index.scss';
4
+
5
+ $tag-group-gap: global.$spacing-2;
6
+ $tag-group-popover-max-width: 320px;
@@ -0,0 +1,5 @@
1
+ import tag_group_vue_vue_type_script_setup_true_lang_default from "./tag-group.vue_vue_type_script_setup_true_lang.js";
2
+ //#region components/tag-group/tag-group.vue
3
+ var tag_group_default = tag_group_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { tag_group_default as default };
@@ -0,0 +1,46 @@
1
+ import type { CSSProperties } from 'vue';
2
+ import type { TagGroupObjectOption, TagGroupOption, TagGroupProps } from './interface';
3
+ declare var __VLS_13: {
4
+ data: TagGroupObjectOption;
5
+ option: TagGroupObjectOption;
6
+ label: string | number;
7
+ value: string | number;
8
+ index: number;
9
+ itemClass: (string | {
10
+ [x: string]: boolean;
11
+ })[];
12
+ itemStyle: CSSProperties | undefined;
13
+ isOverflow: boolean;
14
+ measure: boolean;
15
+ }, __VLS_21: {
16
+ data: TagGroupObjectOption;
17
+ option: TagGroupObjectOption;
18
+ }, __VLS_41: {
19
+ label: string | number;
20
+ value: string | number;
21
+ hiddenCount: number;
22
+ measure: boolean;
23
+ counterClass: string;
24
+ }, __VLS_49: {};
25
+ type __VLS_Slots = {} & {
26
+ item?: (props: typeof __VLS_13) => any;
27
+ } & {
28
+ label?: (props: typeof __VLS_21) => any;
29
+ } & {
30
+ counter?: (props: typeof __VLS_41) => any;
31
+ } & {
32
+ default?: (props: typeof __VLS_49) => any;
33
+ };
34
+ declare const __VLS_base: import("vue").DefineComponent<TagGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TagGroupProps> & Readonly<{}>, {
35
+ options: TagGroupOption[];
36
+ fieldNames: import("./interface").TagGroupFieldNames;
37
+ maxCount: number | "responsive";
38
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
39
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
40
+ declare const _default: typeof __VLS_export;
41
+ export default _default;
42
+ type __VLS_WithSlots<T, S> = T & {
43
+ new (): {
44
+ $slots: S;
45
+ };
46
+ };