niuma-ui 2.0.2 → 2.0.4

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 (242) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +2 -0
  3. package/README.zh-CN.md +2 -0
  4. package/dist/components/_shared/src/reka.d.ts +1 -1
  5. package/dist/components/_shared/src/reka.js +2 -2
  6. package/dist/components/anchor/index.d.ts +1 -1
  7. package/dist/components/anchor/src/RsAnchor.css +63 -32
  8. package/dist/components/anchor/src/RsAnchor.d.ts +29 -2
  9. package/dist/components/anchor/src/RsAnchor.impl.js +199 -81
  10. package/dist/components/anchor/src/RsAnchor.js +1 -1
  11. package/dist/components/anchor/src/anchor-utils.d.ts +36 -4
  12. package/dist/components/anchor/src/anchor-utils.js +81 -19
  13. package/dist/components/auto-complete/index.d.ts +2 -0
  14. package/dist/components/auto-complete/src/RsAutoComplete.css +122 -0
  15. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +47 -7
  16. package/dist/components/auto-complete/src/RsAutoComplete.impl.js +180 -72
  17. package/dist/components/auto-complete/src/RsAutoComplete.js +4 -1
  18. package/dist/components/auto-complete/src/auto-complete-utils.d.ts +7 -0
  19. package/dist/components/auto-complete/src/auto-complete-utils.js +17 -0
  20. package/dist/components/avatar/index.d.ts +1 -0
  21. package/dist/components/avatar/src/RsAvatar.css +36 -19
  22. package/dist/components/avatar/src/RsAvatar.d.ts +9 -3
  23. package/dist/components/avatar/src/RsAvatar.impl.js +57 -33
  24. package/dist/components/avatar/src/RsAvatar.js +2 -1
  25. package/dist/components/avatar/src/avatar-utils.d.ts +16 -7
  26. package/dist/components/avatar/src/avatar-utils.js +41 -3
  27. package/dist/components/badge/index.d.ts +1 -0
  28. package/dist/components/badge/src/RsBadge.css +61 -8
  29. package/dist/components/badge/src/RsBadge.d.ts +19 -3
  30. package/dist/components/badge/src/RsBadge.impl.js +46 -3
  31. package/dist/components/badge/src/RsBadge.js +1 -1
  32. package/dist/components/badge/src/badge-utils.d.ts +11 -0
  33. package/dist/components/badge/src/badge-utils.js +32 -0
  34. package/dist/components/breadcrumb/index.d.ts +1 -1
  35. package/dist/components/breadcrumb/src/RsBreadcrumb.css +50 -17
  36. package/dist/components/breadcrumb/src/RsBreadcrumb.d.ts +45 -6
  37. package/dist/components/breadcrumb/src/RsBreadcrumb.impl.js +111 -12
  38. package/dist/components/breadcrumb/src/RsBreadcrumb.js +2 -1
  39. package/dist/components/breadcrumb/src/breadcrumb-utils.d.ts +37 -5
  40. package/dist/components/breadcrumb/src/breadcrumb-utils.js +70 -9
  41. package/dist/components/button/src/RsButton.css +87 -71
  42. package/dist/components/button/src/RsButton.d.ts +7 -3
  43. package/dist/components/button/src/RsButton.impl.js +43 -31
  44. package/dist/components/button/src/RsButton.js +1 -1
  45. package/dist/components/button/src/button-utils.d.ts +17 -0
  46. package/dist/components/button/src/button-utils.js +14 -1
  47. package/dist/components/calendar-grid/index.d.ts +2 -0
  48. package/dist/components/calendar-grid/src/RsCalendarGrid.css +105 -45
  49. package/dist/components/calendar-grid/src/RsCalendarGrid.d.ts +62 -2
  50. package/dist/components/calendar-grid/src/RsCalendarGrid.impl.js +265 -94
  51. package/dist/components/calendar-grid/src/RsCalendarGrid.js +1 -1
  52. package/dist/components/calendar-grid/src/calendar-grid-utils.d.ts +72 -0
  53. package/dist/components/calendar-grid/src/calendar-grid-utils.js +122 -0
  54. package/dist/components/card/index.d.ts +1 -1
  55. package/dist/components/card/src/RsCard.css +108 -98
  56. package/dist/components/card/src/RsCard.d.ts +3 -12
  57. package/dist/components/card/src/RsCard.impl.js +29 -25
  58. package/dist/components/card/src/RsCard.js +2 -1
  59. package/dist/components/card/src/card-utils.d.ts +25 -0
  60. package/dist/components/card/src/card-utils.js +10 -0
  61. package/dist/components/cascader/index.d.ts +1 -0
  62. package/dist/components/cascader/src/RsCascader.css +175 -30
  63. package/dist/components/cascader/src/RsCascader.d.ts +14 -2
  64. package/dist/components/cascader/src/RsCascader.impl.js +277 -48
  65. package/dist/components/cascader/src/RsCascader.js +1 -1
  66. package/dist/components/cascader/src/cascader-utils.d.ts +2 -0
  67. package/dist/components/cascader/src/cascader-utils.js +8 -1
  68. package/dist/components/checkbox/index.d.ts +1 -0
  69. package/dist/components/checkbox/src/RsCheckbox.css +46 -23
  70. package/dist/components/checkbox/src/RsCheckbox.d.ts +11 -1
  71. package/dist/components/checkbox/src/RsCheckbox.impl.js +37 -9
  72. package/dist/components/checkbox/src/RsCheckbox.js +2 -1
  73. package/dist/components/checkbox/src/checkbox-utils.d.ts +4 -0
  74. package/dist/components/checkbox/src/checkbox-utils.js +12 -0
  75. package/dist/components/container/index.d.ts +1 -1
  76. package/dist/components/container/src/RsContainer.css +11 -11
  77. package/dist/components/container/src/RsContainer.d.ts +2 -12
  78. package/dist/components/container/src/RsContainer.impl.js +10 -57
  79. package/dist/components/container/src/RsContainer.js +1 -1
  80. package/dist/components/container/src/container-utils.d.ts +23 -0
  81. package/dist/components/container/src/container-utils.js +51 -0
  82. package/dist/components/date-picker/index.d.ts +4 -2
  83. package/dist/components/date-picker/src/RsDatePicker.css +42 -22
  84. package/dist/components/date-picker/src/RsDatePicker.d.ts +44 -20
  85. package/dist/components/date-picker/src/RsDatePicker.impl.js +484 -222
  86. package/dist/components/date-picker/src/RsDatePicker.js +1 -3
  87. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +33 -6
  88. package/dist/components/date-picker/src/RsDateTimePicker.impl.js +47 -6
  89. package/dist/components/date-picker/src/date-picker-utils.d.ts +19 -0
  90. package/dist/components/date-picker/src/date-picker-utils.js +33 -10
  91. package/dist/components/divider/index.d.ts +1 -0
  92. package/dist/components/divider/src/RsDivider.css +37 -22
  93. package/dist/components/divider/src/RsDivider.d.ts +4 -2
  94. package/dist/components/divider/src/RsDivider.impl.js +26 -12
  95. package/dist/components/divider/src/RsDivider.js +1 -1
  96. package/dist/components/divider/src/divider-utils.d.ts +4 -0
  97. package/dist/components/dynamic-tags/index.d.ts +1 -1
  98. package/dist/components/dynamic-tags/src/RsDynamicTags.css +115 -38
  99. package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +59 -18
  100. package/dist/components/dynamic-tags/src/RsDynamicTags.impl.js +269 -106
  101. package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
  102. package/dist/components/dynamic-tags/src/dynamic-tags-utils.d.ts +19 -0
  103. package/dist/components/dynamic-tags/src/dynamic-tags-utils.js +60 -0
  104. package/dist/components/fieldset/src/RsFieldset.css +71 -41
  105. package/dist/components/fieldset/src/RsFieldset.d.ts +21 -2
  106. package/dist/components/fieldset/src/RsFieldset.impl.js +93 -26
  107. package/dist/components/fieldset/src/RsFieldset.js +1 -1
  108. package/dist/components/fieldset/src/fieldset-utils.d.ts +4 -0
  109. package/dist/components/fieldset/src/fieldset-utils.js +9 -1
  110. package/dist/components/form/index.d.ts +1 -0
  111. package/dist/components/form/src/RsForm.css +15 -12
  112. package/dist/components/form/src/RsForm.d.ts +20 -22
  113. package/dist/components/form/src/RsForm.impl.js +33 -20
  114. package/dist/components/form/src/RsForm.js +1 -1
  115. package/dist/components/form/src/form-utils.d.ts +7 -0
  116. package/dist/components/form/src/form-utils.js +28 -1
  117. package/dist/components/icon/src/RsIcon.css +9 -4
  118. package/dist/components/icon/src/RsIcon.d.ts +4 -3
  119. package/dist/components/icon/src/RsIcon.impl.js +9 -32
  120. package/dist/components/icon/src/RsIcon.js +1 -1
  121. package/dist/components/icon/src/icon-utils.d.ts +17 -0
  122. package/dist/components/icon/src/icon-utils.js +39 -0
  123. package/dist/components/input/index.d.ts +1 -1
  124. package/dist/components/input/src/RsInput.css +78 -260
  125. package/dist/components/input/src/RsInput.d.ts +5 -3
  126. package/dist/components/input/src/RsInput.impl.js +8 -16
  127. package/dist/components/input/src/RsInput.js +1 -1
  128. package/dist/components/input/src/input-utils.d.ts +11 -0
  129. package/dist/components/input/src/input-utils.js +22 -0
  130. package/dist/components/input-number/index.d.ts +1 -0
  131. package/dist/components/input-number/src/RsInputNumber.css +31 -31
  132. package/dist/components/input-number/src/RsInputNumber.d.ts +15 -13
  133. package/dist/components/input-number/src/RsInputNumber.impl.js +17 -4
  134. package/dist/components/input-number/src/RsInputNumber.js +1 -1
  135. package/dist/components/label/src/RsLabel.css +30 -11
  136. package/dist/components/label/src/RsLabel.d.ts +18 -1
  137. package/dist/components/label/src/RsLabel.impl.js +63 -10
  138. package/dist/components/label/src/RsLabel.js +1 -1
  139. package/dist/components/label/src/label-utils.d.ts +6 -0
  140. package/dist/components/label/src/label-utils.js +16 -0
  141. package/dist/components/link/index.d.ts +1 -0
  142. package/dist/components/link/src/RsLink.css +58 -17
  143. package/dist/components/link/src/RsLink.d.ts +12 -4
  144. package/dist/components/link/src/RsLink.impl.js +26 -25
  145. package/dist/components/link/src/RsLink.js +2 -1
  146. package/dist/components/link/src/link-utils.d.ts +9 -0
  147. package/dist/components/link/src/link-utils.js +15 -0
  148. package/dist/components/loading/src/RsLoading.d.ts +2 -2
  149. package/dist/components/mentions/index.d.ts +2 -1
  150. package/dist/components/mentions/src/RsMentions.css +119 -3
  151. package/dist/components/mentions/src/RsMentions.d.ts +56 -4
  152. package/dist/components/mentions/src/RsMentions.impl.js +298 -79
  153. package/dist/components/mentions/src/RsMentions.js +1 -3
  154. package/dist/components/mentions/src/mentions-utils.d.ts +5 -1
  155. package/dist/components/mentions/src/mentions-utils.js +28 -9
  156. package/dist/components/popover/src/RsPopover.d.ts +1 -1
  157. package/dist/components/radio/index.d.ts +1 -1
  158. package/dist/components/radio/src/RsRadio.css +7 -6
  159. package/dist/components/radio/src/RsRadio.d.ts +8 -5
  160. package/dist/components/radio/src/RsRadio.impl.js +34 -24
  161. package/dist/components/radio/src/RsRadio.js +2 -1
  162. package/dist/components/radio/src/RsRadioItem.css +61 -44
  163. package/dist/components/radio/src/RsRadioItem.d.ts +2 -2
  164. package/dist/components/radio/src/RsRadioItem.impl.js +53 -20
  165. package/dist/components/radio/src/RsRadioItem.js +2 -1
  166. package/dist/components/radio/src/radio-utils.d.ts +12 -1
  167. package/dist/components/radio/src/radio-utils.js +15 -1
  168. package/dist/components/scrollbar/src/RsScrollbar.css +71 -24
  169. package/dist/components/scrollbar/src/RsScrollbar.d.ts +9 -5
  170. package/dist/components/scrollbar/src/RsScrollbar.impl.js +372 -47
  171. package/dist/components/scrollbar/src/RsScrollbar.js +2 -1
  172. package/dist/components/scrollbar/src/scrollbar-utils.d.ts +34 -2
  173. package/dist/components/scrollbar/src/scrollbar-utils.js +64 -1
  174. package/dist/components/select/index.d.ts +1 -0
  175. package/dist/components/select/src/RsSelect.css +54 -42
  176. package/dist/components/select/src/RsSelect.d.ts +19 -2
  177. package/dist/components/select/src/RsSelect.impl.js +727 -312
  178. package/dist/components/select/src/RsSelect.js +1 -1
  179. package/dist/components/select/src/select-utils.d.ts +4 -2
  180. package/dist/components/select/src/select-utils.js +8 -3
  181. package/dist/components/select/src/use-rs-select.d.ts +1 -0
  182. package/dist/components/select/src/use-rs-select.js +23 -17
  183. package/dist/components/switch/index.d.ts +2 -1
  184. package/dist/components/switch/src/RsSwitch.css +36 -18
  185. package/dist/components/switch/src/RsSwitch.d.ts +18 -5
  186. package/dist/components/switch/src/RsSwitch.impl.js +61 -29
  187. package/dist/components/switch/src/RsSwitch.js +2 -1
  188. package/dist/components/switch/src/switch-utils.d.ts +4 -0
  189. package/dist/components/switch/src/switch-utils.js +9 -0
  190. package/dist/components/tag/index.d.ts +1 -1
  191. package/dist/components/tag/src/RsTag.css +42 -38
  192. package/dist/components/tag/src/RsTag.d.ts +3 -2
  193. package/dist/components/tag/src/RsTag.impl.js +18 -9
  194. package/dist/components/tag/src/RsTag.js +1 -1
  195. package/dist/components/tag/src/tag-utils.d.ts +8 -0
  196. package/dist/components/terminal/src/RsTerminal.d.ts +1 -1
  197. package/dist/components/textarea/src/RsTextarea.css +23 -23
  198. package/dist/components/textarea/src/RsTextarea.d.ts +6 -12
  199. package/dist/components/textarea/src/RsTextarea.impl.js +37 -46
  200. package/dist/components/textarea/src/RsTextarea.js +1 -1
  201. package/dist/components/textarea/src/textarea-utils.d.ts +27 -0
  202. package/dist/components/textarea/src/textarea-utils.js +61 -0
  203. package/dist/components/time-picker/index.d.ts +3 -2
  204. package/dist/components/time-picker/src/RsTimePicker.css +41 -24
  205. package/dist/components/time-picker/src/RsTimePicker.d.ts +52 -7
  206. package/dist/components/time-picker/src/RsTimePicker.impl.js +520 -156
  207. package/dist/components/time-picker/src/RsTimePicker.js +1 -3
  208. package/dist/components/time-picker/src/RsTimePickerColumns.css +26 -18
  209. package/dist/components/time-picker/src/RsTimePickerColumns.d.ts +3 -1
  210. package/dist/components/time-picker/src/RsTimePickerColumns.impl.js +62 -9
  211. package/dist/components/time-picker/src/RsTimePickerColumns.js +1 -1
  212. package/dist/components/time-picker/src/time-picker-utils.d.ts +38 -0
  213. package/dist/components/time-picker/src/time-picker-utils.js +97 -5
  214. package/dist/components/toaster/src/RsToaster.d.ts +1 -1
  215. package/dist/components/tooltip/src/RsTooltip.d.ts +1 -1
  216. package/dist/components/tree/src/RsTree.d.ts +3 -3
  217. package/dist/components/tree-select/index.d.ts +2 -0
  218. package/dist/components/tree-select/src/RsTreeSelect.css +100 -25
  219. package/dist/components/tree-select/src/RsTreeSelect.d.ts +91 -7
  220. package/dist/components/tree-select/src/RsTreeSelect.impl.js +464 -79
  221. package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
  222. package/dist/components/tree-select/src/tree-select-utils.d.ts +20 -0
  223. package/dist/components/tree-select/src/tree-select-utils.js +60 -0
  224. package/dist/components/upload/index.d.ts +2 -1
  225. package/dist/components/upload/src/RsUpload.css +223 -75
  226. package/dist/components/upload/src/RsUpload.d.ts +77 -1
  227. package/dist/components/upload/src/RsUpload.impl.js +404 -90
  228. package/dist/components/upload/src/RsUpload.js +1 -1
  229. package/dist/components/upload/src/upload-utils.d.ts +21 -2
  230. package/dist/components/upload/src/upload-utils.js +139 -9
  231. package/dist/index.d.ts +24 -11
  232. package/dist/index.js +6 -0
  233. package/dist/locale/messages.js +46 -2
  234. package/dist/styles.css +518 -154
  235. package/dist/theme/brand.example.css +1 -1
  236. package/package.json +9 -8
  237. package/dist/components/breadcrumb/src/RsBreadcrumbItems.d.ts +0 -8
  238. package/dist/components/breadcrumb/src/RsBreadcrumbItems.impl.js +0 -40
  239. package/dist/components/breadcrumb/src/RsBreadcrumbItems.js +0 -5
  240. package/dist/components/date-picker/src/RsDatePicker-1.css +0 -157
  241. package/dist/components/mentions/src/RsMentions-1.css +0 -29
  242. package/dist/components/time-picker/src/RsTimePicker-1.css +0 -98
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsSelect_vue_vue_type_script_setup_true_lang_default from "./RsSelect.impl.js";
4
4
 
5
5
  //#region src/components/select/src/RsSelect.vue
6
- var RsSelect_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsSelect_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-6b3a7fed"]]);
6
+ var RsSelect_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsSelect_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-be97668a"]]);
7
7
  //#endregion
8
8
  export { RsSelect_default as default };
@@ -53,10 +53,12 @@ export type RsSelectModelValue = RsSelectValue | RsSelectValue[] | RsSelectLabel
53
53
  */
54
54
  export type RsSelectResolvedModel<Value extends RsSelectValue = string, Multiple extends boolean = false, LabelInValue extends boolean = false> = LabelInValue extends true ? Multiple extends true ? RsSelectLabeledValue[] : Multiple extends false ? RsSelectLabeledValue | '' : RsSelectLabeledValue | RsSelectLabeledValue[] | '' : Multiple extends true ? Value[] : Multiple extends false ? Value | '' : Value | Value[] | '';
55
55
  /**
56
- * Reka ComboboxItem 禁止 value 为空串(空串表示未选中 / placeholder)。
57
- * 选项若传入 value: '',对内映射为此哨兵,避免崩溃;对外读写仍为 ''。
56
+ * 选项 value 为空串时,对内映射为此哨兵(空串对外仍表示「未选」)。
57
+ * 读写 v-model 时再还原成 ''。
58
58
  */
59
59
  export declare const RS_SELECT_EMPTY_VALUE = "__rs_select_empty__";
60
+ /** 本地过滤:大小写不敏感包含。宿主要做 locale 匹配请传 filterOption。 */
61
+ export declare function selectContains(text: string, search: string): boolean;
60
62
  /**
61
63
  * Vue 对泛型 boolean prop 不会按 Boolean 收口。
62
64
  * 模板写 `multiple` 时运行时可能是 '';个别版本还会落到 attrs 变成 'true' / 'multiple'。
@@ -28,10 +28,15 @@ function splitSelectLabelHighlight(label, keyword) {
28
28
  return parts;
29
29
  }
30
30
  /**
31
- * Reka ComboboxItem 禁止 value 为空串(空串表示未选中 / placeholder)。
32
- * 选项若传入 value: '',对内映射为此哨兵,避免崩溃;对外读写仍为 ''。
31
+ * 选项 value 为空串时,对内映射为此哨兵(空串对外仍表示「未选」)。
32
+ * 读写 v-model 时再还原成 ''。
33
33
  */
34
34
  var RS_SELECT_EMPTY_VALUE = "__rs_select_empty__";
35
+ /** 本地过滤:大小写不敏感包含。宿主要做 locale 匹配请传 filterOption。 */
36
+ function selectContains(text, search) {
37
+ if (!search) return true;
38
+ return text.toLowerCase().includes(search.toLowerCase());
39
+ }
35
40
  /**
36
41
  * Vue 对泛型 boolean prop 不会按 Boolean 收口。
37
42
  * 模板写 `multiple` 时运行时可能是 '';个别版本还会落到 attrs 变成 'true' / 'multiple'。
@@ -244,4 +249,4 @@ function splitByTokenSeparators(raw, separators) {
244
249
  return raw.split(found);
245
250
  }
246
251
  //#endregion
247
- export { RS_SELECT_EMPTY_VALUE, buildOptionDisabledMap, buildOptionLabelMap, comboboxBindingToTokens, filterSelectOptions, findSelectOption, flattenSelectOptions, flattenSelectValues, fromComboboxValue, isSelectLabeledValue, isSelectMultiple, isSelectOptionGroup, normalizeSelectOptions, optionDisplayLabel, packSelectModel, restoreSelectValue, restoreSelectValues, selectModelEntries, sortSelectOptions, splitByTokenSeparators, splitSelectLabelHighlight, toComboboxValue, toLabeledValue, toSelectedTokens, unwrapSelectEntry };
252
+ export { RS_SELECT_EMPTY_VALUE, buildOptionDisabledMap, buildOptionLabelMap, comboboxBindingToTokens, filterSelectOptions, findSelectOption, flattenSelectOptions, flattenSelectValues, fromComboboxValue, isSelectLabeledValue, isSelectMultiple, isSelectOptionGroup, normalizeSelectOptions, optionDisplayLabel, packSelectModel, restoreSelectValue, restoreSelectValues, selectContains, selectModelEntries, sortSelectOptions, splitByTokenSeparators, splitSelectLabelHighlight, toComboboxValue, toLabeledValue, toSelectedTokens, unwrapSelectEntry };
@@ -66,6 +66,7 @@ export declare function useRsSelect<T extends RsSelectModelValue = RsSelectModel
66
66
  omittedTagTitle: import("vue").ComputedRef<string>;
67
67
  singleDisplayLabel: import("vue").ComputedRef<string>;
68
68
  comboboxModel: import("vue").WritableComputedRef<string | string[] | undefined, string | string[] | undefined>;
69
+ pickToken: (token: string) => void;
69
70
  tokenLabel: (token: string) => string;
70
71
  truncateTagLabel: (label: string) => string;
71
72
  optionFromToken: (token: string) => RsSelectOption | undefined;
@@ -1,13 +1,11 @@
1
- import { useFilter } from "../../_shared/src/reka.js";
2
- import { buildOptionDisabledMap, buildOptionLabelMap, comboboxBindingToTokens, filterSelectOptions, findSelectOption, flattenSelectOptions, flattenSelectValues, fromComboboxValue, isSelectLabeledValue, isSelectMultiple, normalizeSelectOptions, optionDisplayLabel, packSelectModel, restoreSelectValue, restoreSelectValues, selectModelEntries, sortSelectOptions, splitByTokenSeparators, toComboboxValue, toSelectedTokens } from "./select-utils.js";
3
- import { computed, nextTick, onUnmounted, watch } from "vue";
1
+ import { buildOptionDisabledMap, buildOptionLabelMap, comboboxBindingToTokens, filterSelectOptions, findSelectOption, flattenSelectOptions, flattenSelectValues, fromComboboxValue, isSelectLabeledValue, isSelectMultiple, normalizeSelectOptions, optionDisplayLabel, packSelectModel, restoreSelectValue, restoreSelectValues, selectContains, selectModelEntries, sortSelectOptions, splitByTokenSeparators, toComboboxValue, toSelectedTokens } from "./select-utils.js";
2
+ import { computed, onUnmounted, watch } from "vue";
4
3
  //#region src/components/select/src/use-rs-select.ts
5
4
  /**
6
5
  * Select 过滤、选中、多选 tag、creatable / 分隔符提交。
7
6
  * 组件模板只消费返回值;表单校验仍留在 SFC。
8
7
  */
9
8
  function useRsSelect(props, model, open, searchQuery, emit, t) {
10
- const { contains } = useFilter({ sensitivity: "base" });
11
9
  const isMultiple = computed(() => isSelectMultiple(props.multiple));
12
10
  const normalizedOptions = computed(() => normalizeSelectOptions(props.options, props.fieldNames));
13
11
  const resolvedPlaceholder = computed(() => props.placeholder ?? t("select.placeholder"));
@@ -20,16 +18,12 @@ function useRsSelect(props, model, open, searchQuery, emit, t) {
20
18
  const flatOptions = computed(() => flattenSelectOptions(normalizedOptions.value));
21
19
  const flatCount = computed(() => flatOptions.value.length);
22
20
  const useVirtual = computed(() => Boolean(props.virtual) || flatCount.value > (props.virtualThreshold ?? 50));
23
- /**
24
- * 可搜索时一律走本地过滤,并关掉 Reka 内置 filter。
25
- * Reka 的 filterSearch 与搜索框 searchQuery 不同步(打开时会被清空),
26
- * 默认依赖内置过滤时会出现:手输「NVA」已出「使用 NVA」,但 NVARCHAR 仍被整表挡住。
27
- */
21
+ /** 可搜索 / 远程 / 自定义过滤一律走本函数,不再依赖外部 headless filter。 */
28
22
  const useManualFilter = computed(() => Boolean(props.remote) || useVirtual.value || isSearchable.value || typeof props.filterOption === "function" || props.filterOption === false || Boolean(props.optionFilterProp && props.optionFilterProp !== "label") || Boolean(props.filterSort) || Boolean(props.fieldNames));
29
23
  const displayOptions = computed(() => {
30
24
  let next = normalizedOptions.value;
31
25
  if (!props.remote && props.filterOption !== false) {
32
- if (useManualFilter.value || props.filterOption) next = filterSelectOptions(normalizedOptions.value, searchQuery.value, contains, props.filterOption, props.optionFilterProp);
26
+ if (useManualFilter.value || props.filterOption) next = filterSelectOptions(normalizedOptions.value, searchQuery.value, selectContains, props.filterOption, props.optionFilterProp);
33
27
  }
34
28
  return sortSelectOptions(next, props.filterSort);
35
29
  });
@@ -183,18 +177,29 @@ function useRsSelect(props, model, open, searchQuery, emit, t) {
183
177
  onUnmounted(() => {
184
178
  if (searchTimer) clearTimeout(searchTimer);
185
179
  });
186
- watch(open, async (isOpen) => {
180
+ watch(open, (isOpen) => {
187
181
  if (isOpen) {
188
- const pending = searchQuery.value;
189
- await nextTick();
190
- await nextTick();
191
- if (pending) searchQuery.value = pending;
192
- else if (props.fillSearchWithValue && !isMultiple.value && hasValue.value) searchQuery.value = singleDisplayLabel.value;
193
- else searchQuery.value = "";
182
+ if (searchQuery.value) return;
183
+ if (props.fillSearchWithValue && !isMultiple.value && hasValue.value) searchQuery.value = singleDisplayLabel.value;
194
184
  return;
195
185
  }
196
186
  if (props.autoClearSearchValue) searchQuery.value = "";
197
187
  });
188
+ function pickToken(token) {
189
+ if (isTokenDisabled(token)) return;
190
+ if (canCreate.value && token === createValue.value) {
191
+ commitCreatedValue(token);
192
+ return;
193
+ }
194
+ if (isMultiple.value) {
195
+ const prev = selectedValues.value;
196
+ const next = prev.includes(token) ? prev.filter((item) => item !== token) : [...prev, token];
197
+ comboboxModel.value = next;
198
+ return;
199
+ }
200
+ comboboxModel.value = token;
201
+ open.value = false;
202
+ }
198
203
  function onSearchKeydown(event) {
199
204
  if (event.key !== "Enter" || event.isComposing) return;
200
205
  if (!canCreate.value) return;
@@ -258,6 +263,7 @@ function useRsSelect(props, model, open, searchQuery, emit, t) {
258
263
  omittedTagTitle,
259
264
  singleDisplayLabel,
260
265
  comboboxModel,
266
+ pickToken,
261
267
  tokenLabel,
262
268
  truncateTagLabel,
263
269
  optionFromToken,
@@ -1,2 +1,3 @@
1
1
  export { default as RsSwitch } from './src/RsSwitch.js';
2
- export type { RsSwitchValue } from './src/RsSwitch.js';
2
+ export type { RsSwitchExpose, RsSwitchInstance } from './src/RsSwitch.js';
3
+ export type { RsSwitchValue } from './src/switch-utils';
@@ -1,13 +1,14 @@
1
1
 
2
2
  /**
3
- * 轨道高度 = control-height * 2/3(对齐 Ant:Input SM 24 / Switch SM 16)。
3
+ * 轨道高度 = control-height * 2/3(与 Input SM 24 / Switch SM 16 同比例)。
4
4
  * 宽高、内边距、滑块均由 token / calc 推导,不写死档位 px。
5
5
  * 外层 min-height = control-height,保证与同排输入垂直居中对齐。
6
6
  */
7
- .rs-switch {
7
+ .rs-switch[data-v-ba0ee1d6] {
8
8
  --rs-switch-pad: calc(var(--rs-switch-track-h) * 0.12);
9
9
  --rs-switch-track-w: calc(var(--rs-switch-track-h) * 1.75);
10
10
  --rs-switch-thumb: calc(var(--rs-switch-track-h) - var(--rs-switch-pad) * 2 - 2px);
11
+ position: relative;
11
12
  display: inline-flex;
12
13
  align-items: center;
13
14
  gap: var(--rs-space-xs);
@@ -17,11 +18,22 @@
17
18
  user-select: none;
18
19
  color: var(--rs-text);
19
20
  }
20
- .rs-switch--disabled {
21
+ .rs-switch--disabled[data-v-ba0ee1d6] {
21
22
  cursor: not-allowed;
22
23
  opacity: 0.55;
23
24
  }
24
- .rs-switch__root {
25
+ .rs-switch__input[data-v-ba0ee1d6] {
26
+ position: absolute;
27
+ width: 1px;
28
+ height: 1px;
29
+ margin: -1px;
30
+ padding: 0;
31
+ overflow: hidden;
32
+ clip: rect(0, 0, 0, 0);
33
+ white-space: nowrap;
34
+ border: 0;
35
+ }
36
+ .rs-switch__root[data-v-ba0ee1d6] {
25
37
  position: relative;
26
38
  display: inline-flex;
27
39
  flex-shrink: 0;
@@ -39,36 +51,36 @@
39
51
  background-color var(--rs-transition-fast),
40
52
  border-color var(--rs-transition-fast);
41
53
  }
42
- .rs-switch--disabled .rs-switch__root {
54
+ .rs-switch--disabled .rs-switch__root[data-v-ba0ee1d6] {
43
55
  cursor: not-allowed;
44
56
  }
45
- .rs-switch:hover:not(.rs-switch--disabled):not(.rs-switch--checked) .rs-switch__root {
57
+ .rs-switch:hover:not(.rs-switch--disabled):not(.rs-switch--checked) .rs-switch__root[data-v-ba0ee1d6] {
46
58
  border-color: var(--rs-primary);
47
59
  }
48
- .rs-switch__root:focus-visible {
60
+ .rs-switch__input:focus-visible + .rs-switch__root[data-v-ba0ee1d6] {
49
61
  box-shadow: 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
50
62
  }
51
- .rs-switch--checked .rs-switch__root {
63
+ .rs-switch--checked .rs-switch__root[data-v-ba0ee1d6] {
52
64
  background: var(--rs-primary);
53
65
  border-color: var(--rs-primary);
54
66
  }
55
- .rs-switch--ssm {
67
+ .rs-switch--ssm[data-v-ba0ee1d6] {
56
68
  --rs-switch-track-h: calc(var(--rs-control-height-ssm) * 2 / 3);
57
69
  min-height: var(--rs-control-height-ssm);
58
70
  }
59
- .rs-switch--sm {
71
+ .rs-switch--sm[data-v-ba0ee1d6] {
60
72
  --rs-switch-track-h: calc(var(--rs-control-height-sm) * 2 / 3);
61
73
  min-height: var(--rs-control-height-sm);
62
74
  }
63
- .rs-switch--md {
75
+ .rs-switch--md[data-v-ba0ee1d6] {
64
76
  --rs-switch-track-h: calc(var(--rs-control-height-md) * 2 / 3);
65
77
  min-height: var(--rs-control-height-md);
66
78
  }
67
- .rs-switch--lg {
79
+ .rs-switch--lg[data-v-ba0ee1d6] {
68
80
  --rs-switch-track-h: calc(var(--rs-control-height-lg) * 2 / 3);
69
81
  min-height: var(--rs-control-height-lg);
70
82
  }
71
- .rs-switch__thumb {
83
+ .rs-switch__thumb[data-v-ba0ee1d6] {
72
84
  position: absolute;
73
85
  top: 50%;
74
86
  inset-inline-start: var(--rs-switch-pad);
@@ -81,19 +93,25 @@
81
93
  transform: translateY(-50%);
82
94
  transition: inset-inline var(--rs-transition-fast);
83
95
  }
84
- .rs-switch--checked .rs-switch__thumb {
96
+ .rs-switch--checked .rs-switch__thumb[data-v-ba0ee1d6] {
85
97
  inset-inline-start: auto;
86
98
  inset-inline-end: var(--rs-switch-pad);
87
99
  }
88
- .rs-switch__label {
100
+ .rs-switch__label[data-v-ba0ee1d6] {
89
101
  font-size: var(--rs-font-size-sm);
90
102
  line-height: var(--rs-line-height-normal);
91
103
  cursor: pointer;
92
104
  }
93
- .rs-switch--disabled .rs-switch__label {
105
+ .rs-switch--disabled .rs-switch__label[data-v-ba0ee1d6] {
94
106
  cursor: not-allowed;
95
107
  }
96
- .rs-switch--ssm .rs-switch__label,
97
- .rs-switch--sm .rs-switch__label {
108
+ .rs-switch--ssm .rs-switch__label[data-v-ba0ee1d6],
109
+ .rs-switch--sm .rs-switch__label[data-v-ba0ee1d6] {
98
110
  font-size: var(--rs-font-size-xs);
99
111
  }
112
+ @media (prefers-reduced-motion: reduce) {
113
+ .rs-switch__root[data-v-ba0ee1d6],
114
+ .rs-switch__thumb[data-v-ba0ee1d6] {
115
+ transition: none;
116
+ }
117
+ }
@@ -1,12 +1,25 @@
1
1
  import type { RsComponentSize } from '../../../theme/types';
2
- /** Switch v-model 取值:默认 boolean,也可为业务码如 'Y'/'N'、1/0 */
3
- export type RsSwitchValue = boolean | string | number;
2
+ import { type RsSwitchValue } from './switch-utils';
3
+ export type { RsSwitchValue };
4
+ /**
5
+ * RsSwitch 模板 ref 请用此类型。
6
+ * 不要写 `InstanceType<typeof RsSwitch>`:组件实例类型过深,vue-tsc 会报 Excessive stack depth。
7
+ */
8
+ export interface RsSwitchExpose {
9
+ focus: () => void;
10
+ }
11
+ /** 模板 ref 实例:expose + 根节点 */
12
+ export type RsSwitchInstance = RsSwitchExpose & {
13
+ $el: HTMLElement;
14
+ };
4
15
  type __VLS_Props = {
5
16
  disabled?: boolean;
6
17
  size?: RsComponentSize;
7
18
  /** 无障碍名称;有默认插槽文案时可省略 */
8
19
  ariaLabel?: string;
9
20
  id?: string;
21
+ /** 原生 name,供表单提交 */
22
+ name?: string;
10
23
  /** 打开时写入 v-model 的值,默认 true */
11
24
  checkedValue?: RsSwitchValue;
12
25
  /** 关闭时写入 v-model 的值,默认 false */
@@ -16,11 +29,11 @@ type __VLS_ModelProps = {
16
29
  modelValue?: RsSwitchValue;
17
30
  };
18
31
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
19
- declare var __VLS_14: {};
32
+ declare var __VLS_1: {};
20
33
  type __VLS_Slots = {} & {
21
- default?: (props: typeof __VLS_14) => any;
34
+ default?: (props: typeof __VLS_1) => any;
22
35
  };
23
- declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
36
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, RsSwitchExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
24
37
  change: (value: RsSwitchValue) => any;
25
38
  "update:modelValue": (value: RsSwitchValue) => any;
26
39
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
@@ -1,9 +1,22 @@
1
- import { SwitchRoot, SwitchThumb } from "../../_shared/src/reka.js";
1
+ import { useRsFormContext } from "../../form/src/form-utils.js";
2
2
  import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
3
- import { computed, createCommentVNode, createElementBlock, createVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderSlot, unref, useId, useModel, withCtx } from "vue";
3
+ import { resolveRsSwitchChecked, resolveRsSwitchNext } from "./switch-utils.js";
4
+ import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderSlot, useId, useModel, useTemplateRef, withModifiers } from "vue";
4
5
  //#region src/components/switch/src/RsSwitch.vue?vue&type=script&setup=true&lang.ts
5
- var _hoisted_1 = ["for"];
6
+ var _hoisted_1 = [
7
+ "id",
8
+ "name",
9
+ "checked",
10
+ "disabled",
11
+ "aria-checked",
12
+ "aria-label"
13
+ ];
14
+ var _hoisted_2 = {
15
+ key: 0,
16
+ class: "rs-switch__label"
17
+ };
6
18
  var RsSwitch_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
19
+ name: "RsSwitch",
7
20
  __name: "RsSwitch",
8
21
  props: /*@__PURE__*/ mergeModels({
9
22
  disabled: {
@@ -13,6 +26,7 @@ var RsSwitch_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
13
26
  size: {},
14
27
  ariaLabel: {},
15
28
  id: {},
29
+ name: {},
16
30
  checkedValue: {
17
31
  type: [
18
32
  Boolean,
@@ -41,50 +55,68 @@ var RsSwitch_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
41
55
  "modelModifiers": {}
42
56
  }),
43
57
  emits: /*@__PURE__*/ mergeModels(["change"], ["update:modelValue"]),
44
- setup(__props, { emit: __emit }) {
58
+ setup(__props, { expose: __expose, emit: __emit }) {
45
59
  const model = useModel(__props, "modelValue");
46
60
  const props = __props;
47
61
  const emit = __emit;
62
+ const formContext = useRsFormContext();
48
63
  const autoId = useId();
49
64
  const inputId = computed(() => props.id || autoId);
65
+ const inputRef = useTemplateRef("inputRef");
50
66
  const resolvedSize = useResolvedRsComponentSize(() => props.size);
51
- /** Reka Switch 只吃 boolean;对外 v-model 按 checkedValue / uncheckedValue 映射 */
52
- const isChecked = computed(() => Object.is(model.value, props.checkedValue));
67
+ const resolvedDisabled = computed(() => props.disabled || Boolean(formContext?.disabled.value));
68
+ const isChecked = computed(() => resolveRsSwitchChecked(model.value, props.checkedValue));
53
69
  const rootClass = computed(() => [
54
70
  "rs-switch",
55
71
  `rs-switch--${resolvedSize.value}`,
56
72
  {
57
73
  "rs-switch--checked": isChecked.value,
58
- "rs-switch--disabled": props.disabled
74
+ "rs-switch--disabled": resolvedDisabled.value
59
75
  }
60
76
  ]);
61
- function onUpdate(checked) {
62
- const next = checked ? props.checkedValue : props.uncheckedValue;
77
+ function writeChecked(checked) {
78
+ const next = resolveRsSwitchNext(checked, props.checkedValue, props.uncheckedValue);
63
79
  if (Object.is(model.value, next)) return;
64
80
  model.value = next;
65
81
  emit("change", next);
66
82
  }
83
+ function onNativeChange(event) {
84
+ if (resolvedDisabled.value) return;
85
+ writeChecked(event.target.checked);
86
+ }
87
+ function onTrackClick(event) {
88
+ event.preventDefault();
89
+ event.stopPropagation();
90
+ if (resolvedDisabled.value) return;
91
+ writeChecked(!isChecked.value);
92
+ }
93
+ __expose({ focus: () => {
94
+ inputRef.value?.focus();
95
+ } });
67
96
  return (_ctx, _cache) => {
68
- return openBlock(), createElementBlock("div", { class: normalizeClass(rootClass.value) }, [createVNode(unref(SwitchRoot), {
69
- id: inputId.value,
70
- class: "rs-switch__root",
71
- "model-value": isChecked.value,
72
- disabled: __props.disabled,
73
- "aria-label": __props.ariaLabel,
74
- "onUpdate:modelValue": onUpdate
75
- }, {
76
- default: withCtx(() => [createVNode(unref(SwitchThumb), { class: "rs-switch__thumb" })]),
77
- _: 1
78
- }, 8, [
79
- "id",
80
- "model-value",
81
- "disabled",
82
- "aria-label"
83
- ]), _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
84
- key: 0,
85
- class: "rs-switch__label",
86
- for: inputId.value
87
- }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_1)) : createCommentVNode("", true)], 2);
97
+ return openBlock(), createElementBlock("label", { class: normalizeClass(rootClass.value) }, [
98
+ createElementVNode("input", {
99
+ id: inputId.value,
100
+ ref_key: "inputRef",
101
+ ref: inputRef,
102
+ class: "rs-switch__input",
103
+ type: "checkbox",
104
+ role: "switch",
105
+ name: __props.name,
106
+ checked: isChecked.value,
107
+ disabled: resolvedDisabled.value,
108
+ "aria-checked": isChecked.value ? "true" : "false",
109
+ "aria-label": __props.ariaLabel,
110
+ onChange: onNativeChange,
111
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
112
+ }, null, 40, _hoisted_1),
113
+ createElementVNode("span", {
114
+ class: "rs-switch__root",
115
+ "aria-hidden": "true",
116
+ onClick: onTrackClick
117
+ }, [..._cache[1] || (_cache[1] = [createElementVNode("span", { class: "rs-switch__thumb" }, null, -1)])]),
118
+ _ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_2, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])) : createCommentVNode("", true)
119
+ ], 2);
88
120
  };
89
121
  }
90
122
  });
@@ -1,7 +1,8 @@
1
1
  import './RsSwitch.css'
2
+ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
2
3
  import RsSwitch_vue_vue_type_script_setup_true_lang_default from "./RsSwitch.impl.js";
3
4
 
4
5
  //#region src/components/switch/src/RsSwitch.vue
5
- var RsSwitch_default = RsSwitch_vue_vue_type_script_setup_true_lang_default;
6
+ var RsSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsSwitch_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-ba0ee1d6"]]);
6
7
  //#endregion
7
8
  export { RsSwitch_default as default };
@@ -0,0 +1,4 @@
1
+ /** Switch v-model 取值:默认 boolean,也可为业务码如 'Y'/'N'、1/0 */
2
+ export type RsSwitchValue = boolean | string | number;
3
+ export declare function resolveRsSwitchChecked(value: RsSwitchValue, checkedValue: RsSwitchValue): boolean;
4
+ export declare function resolveRsSwitchNext(checked: boolean, checkedValue: RsSwitchValue, uncheckedValue: RsSwitchValue): RsSwitchValue;
@@ -0,0 +1,9 @@
1
+ //#region src/components/switch/src/switch-utils.ts
2
+ function resolveRsSwitchChecked(value, checkedValue) {
3
+ return Object.is(value, checkedValue);
4
+ }
5
+ function resolveRsSwitchNext(checked, checkedValue, uncheckedValue) {
6
+ return checked ? checkedValue : uncheckedValue;
7
+ }
8
+ //#endregion
9
+ export { resolveRsSwitchChecked, resolveRsSwitchNext };
@@ -1,2 +1,2 @@
1
1
  export { default as RsTag } from './src/RsTag.js';
2
- export type { RsTagVariant } from './src/RsTag.js';
2
+ export type { RsTagVariant } from './src/tag-utils';
@@ -1,5 +1,9 @@
1
1
 
2
- .rs-tag[data-v-0140d810] {
2
+ .rs-tag[data-v-d8327085] {
3
+ --rs-tag-pad-y-sm: 0.0625rem;
4
+ --rs-tag-pad-y-md: 0.125rem;
5
+ --rs-tag-disabled-opacity: 0.55;
6
+ --rs-tag-close-opacity: 0.75;
3
7
  display: inline-flex;
4
8
  align-items: center;
5
9
  gap: var(--rs-space-xs);
@@ -10,85 +14,85 @@
10
14
  box-sizing: border-box;
11
15
  vertical-align: middle;
12
16
  }
13
- .rs-tag--ssm[data-v-0140d810] {
14
- padding: 0 var(--rs-space-xs);
17
+ .rs-tag--ssm[data-v-d8327085] {
18
+ padding-block: 0;
19
+ padding-inline: var(--rs-space-xs);
15
20
  font-size: var(--rs-font-size-xs);
16
21
  }
17
- .rs-tag--sm[data-v-0140d810] {
18
- padding: 0.0625rem var(--rs-space-xs);
22
+ .rs-tag--sm[data-v-d8327085] {
23
+ padding-block: var(--rs-tag-pad-y-sm);
24
+ padding-inline: var(--rs-space-xs);
19
25
  font-size: var(--rs-font-size-xs);
20
26
  }
21
- .rs-tag--md[data-v-0140d810] {
22
- padding: 0.125rem var(--rs-space-sm);
27
+ .rs-tag--md[data-v-d8327085] {
28
+ padding-block: var(--rs-tag-pad-y-md);
29
+ padding-inline: var(--rs-space-sm);
23
30
  font-size: var(--rs-font-size-xs);
24
31
  }
25
- .rs-tag--lg[data-v-0140d810] {
26
- padding: var(--rs-space-xs) var(--rs-space-sm);
32
+ .rs-tag--lg[data-v-d8327085] {
33
+ padding-block: var(--rs-space-xs);
34
+ padding-inline: var(--rs-space-sm);
27
35
  font-size: var(--rs-font-size-sm);
28
36
  }
29
- .rs-tag--round[data-v-0140d810] {
37
+ .rs-tag--round[data-v-d8327085] {
30
38
  border-radius: var(--rs-radius-full);
31
39
  }
32
- .rs-tag--disabled[data-v-0140d810] {
33
- opacity: 0.55;
40
+ .rs-tag--disabled[data-v-d8327085] {
41
+ opacity: var(--rs-tag-disabled-opacity);
34
42
  cursor: not-allowed;
35
43
  }
36
- .rs-tag__content[data-v-0140d810] {
44
+ .rs-tag__content[data-v-d8327085] {
37
45
  overflow: hidden;
38
46
  text-overflow: ellipsis;
39
47
  white-space: nowrap;
40
48
  }
41
- .rs-tag__close[data-v-0140d810] {
42
- display: inline-flex;
43
- align-items: center;
44
- justify-content: center;
45
- margin: 0;
49
+ .rs-tag__close[data-v-d8327085] {
50
+ min-width: 0;
51
+ min-height: 0;
52
+ width: 1em;
53
+ height: 1em;
46
54
  padding: 0;
47
- border: 0;
48
- border-radius: var(--rs-radius-full);
49
- background: transparent;
50
55
  color: inherit;
51
- cursor: pointer;
52
- opacity: 0.75;
53
- outline: none;
56
+ opacity: var(--rs-tag-close-opacity);
54
57
  }
55
- .rs-tag__close[data-v-0140d810]:hover:not(:disabled) {
58
+ .rs-tag__close[data-v-d8327085]:hover:not(:disabled) {
56
59
  opacity: 1;
60
+ color: inherit;
57
61
  background: color-mix(in srgb, currentColor 12%, transparent);
58
62
  }
59
- .rs-tag__close[data-v-0140d810]:focus-visible {
60
- box-shadow: 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
61
- }
62
- .rs-tag__close[data-v-0140d810]:disabled {
63
- cursor: not-allowed;
64
- }
65
- .rs-tag--default[data-v-0140d810] {
63
+ .rs-tag--default[data-v-d8327085] {
66
64
  background: var(--rs-surface-hover);
67
- color: var(--rs-text);
65
+ color: var(--rs-text-primary);
68
66
  border: 1px solid var(--rs-border);
69
67
  }
70
- .rs-tag--primary[data-v-0140d810] {
68
+ .rs-tag--primary[data-v-d8327085] {
71
69
  background: var(--rs-primary-container);
72
70
  color: var(--rs-on-primary-container);
73
71
  border: 1px solid color-mix(in srgb, var(--rs-primary) var(--rs-tag-border-alpha, 40%), transparent);
74
72
  }
75
- .rs-tag--success[data-v-0140d810] {
73
+ .rs-tag--success[data-v-d8327085] {
76
74
  background: var(--rs-success-container);
77
75
  color: var(--rs-on-success-container);
78
76
  border: 1px solid color-mix(in srgb, var(--rs-success) var(--rs-tag-border-alpha, 40%), transparent);
79
77
  }
80
- .rs-tag--warning[data-v-0140d810] {
78
+ .rs-tag--warning[data-v-d8327085] {
81
79
  background: var(--rs-warning-container);
82
80
  color: var(--rs-on-warning-container);
83
81
  border: 1px solid color-mix(in srgb, var(--rs-warning) var(--rs-tag-border-alpha, 40%), transparent);
84
82
  }
85
- .rs-tag--danger[data-v-0140d810] {
83
+ .rs-tag--danger[data-v-d8327085] {
86
84
  background: var(--rs-danger-container);
87
85
  color: var(--rs-on-danger-container);
88
86
  border: 1px solid color-mix(in srgb, var(--rs-danger) var(--rs-tag-border-alpha, 40%), transparent);
89
87
  }
90
- .rs-tag--info[data-v-0140d810] {
88
+ .rs-tag--info[data-v-d8327085] {
91
89
  background: var(--rs-info-container);
92
90
  color: var(--rs-on-info-container);
93
91
  border: 1px solid color-mix(in srgb, var(--rs-info) var(--rs-tag-border-alpha, 40%), transparent);
94
92
  }
93
+ @media (forced-colors: active) {
94
+ .rs-tag[data-v-d8327085] {
95
+ border: 1px solid CanvasText;
96
+ forced-color-adjust: none;
97
+ }
98
+ }
@@ -1,5 +1,6 @@
1
- import type { RsComponentSize, RsRadius } from '../../../theme/types';
2
- export type RsTagVariant = 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
1
+ import { type RsComponentSize, type RsRadius } from '../../../theme/types';
2
+ import type { RsTagVariant } from './tag-utils';
3
+ export type { RsTagVariant };
3
4
  type __VLS_Props = {
4
5
  variant?: RsTagVariant;
5
6
  closable?: boolean;