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 RsForm_vue_vue_type_script_setup_true_lang_default from "./RsForm.impl.js";
4
4
 
5
5
  //#region src/components/form/src/RsForm.vue
6
- var RsForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-2243abc5"]]);
6
+ var RsForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-0cdc7aeb"]]);
7
7
  //#endregion
8
8
  export { RsForm_default as default };
@@ -118,3 +118,10 @@ export declare function useRsFormField(getExpose: () => RsFormFieldExpose | unde
118
118
  export declare function resolveRsFormSize(size?: RsFormSize, form?: RsFormContext | null): ComputedRef<RsFormSize>;
119
119
  /** 供 Form 内部解析某字段 rules */
120
120
  export declare function resolveFieldRules(rules: RsFormRules | undefined, name?: string): RsFormRuleItem[];
121
+ /** clearValidation / resetFields 的 names 过滤。不传则清全部。 */
122
+ export declare function normalizeRsFormNameFilter(names?: string | string[]): Set<string> | null;
123
+ export declare function escapeRsFormSelectorValue(value: string): string;
124
+ export declare function prefersRsReducedMotion(): boolean;
125
+ /** 在本表根内找 data-rs-form-item,避免两张同名字段的表滚错。 */
126
+ export declare function queryRsFormItem(root: ParentNode | null | undefined, name: RsFormNamePath): HTMLElement | null;
127
+ export declare function scrollRsFormField(root: ParentNode | null | undefined, name: RsFormNamePath): void;
@@ -63,5 +63,32 @@ function resolveFieldRules(rules, name) {
63
63
  if (!name || !rules) return [];
64
64
  return normalizeFormRules(rules[name]);
65
65
  }
66
+ /** clearValidation / resetFields 的 names 过滤。不传则清全部。 */
67
+ function normalizeRsFormNameFilter(names) {
68
+ if (!names) return null;
69
+ return new Set(Array.isArray(names) ? names : [names]);
70
+ }
71
+ function escapeRsFormSelectorValue(value) {
72
+ if (typeof CSS !== "undefined" && typeof CSS.escape === "function") return CSS.escape(value);
73
+ return value.replace(/["\\]/g, (ch) => `\\${ch}`);
74
+ }
75
+ function prefersRsReducedMotion() {
76
+ return typeof matchMedia === "function" && matchMedia("(prefers-reduced-motion: reduce)").matches;
77
+ }
78
+ /** 在本表根内找 data-rs-form-item,避免两张同名字段的表滚错。 */
79
+ function queryRsFormItem(root, name) {
80
+ if (!root || typeof root.querySelector !== "function") return null;
81
+ const key = namePathKey(name);
82
+ const el = root.querySelector(`[data-rs-form-item="${escapeRsFormSelectorValue(key)}"]`);
83
+ return el instanceof HTMLElement ? el : null;
84
+ }
85
+ function scrollRsFormField(root, name) {
86
+ const el = queryRsFormItem(root, name);
87
+ if (!el) return;
88
+ el.scrollIntoView({
89
+ block: "nearest",
90
+ behavior: prefersRsReducedMotion() ? "auto" : "smooth"
91
+ });
92
+ }
66
93
  //#endregion
67
- export { RS_FORM_INJECTION_KEY, RS_FORM_ITEM_INJECTION_KEY, RS_FORM_LIST_INJECTION_KEY, cloneFormFieldValue, isRsFormItemBoundControl, provideRsFormContext, provideRsFormItemContext, provideRsFormListContext, resolveFieldRules, useRsFormContext, useRsFormField, useRsFormItemContext, useRsFormListContext };
94
+ export { RS_FORM_INJECTION_KEY, RS_FORM_ITEM_INJECTION_KEY, RS_FORM_LIST_INJECTION_KEY, cloneFormFieldValue, escapeRsFormSelectorValue, isRsFormItemBoundControl, normalizeRsFormNameFilter, prefersRsReducedMotion, provideRsFormContext, provideRsFormItemContext, provideRsFormListContext, queryRsFormItem, resolveFieldRules, scrollRsFormField, useRsFormContext, useRsFormField, useRsFormItemContext, useRsFormListContext };
@@ -1,14 +1,19 @@
1
1
 
2
- .rs-icon[data-v-ba79ea00] {
2
+ .rs-icon[data-v-260b0681] {
3
3
  display: inline-block;
4
4
  flex-shrink: 0;
5
5
  vertical-align: middle;
6
6
  }
7
- .rs-icon--spin[data-v-ba79ea00] {
8
- animation: rs-icon-spin-ba79ea00 0.8s linear infinite;
7
+ .rs-icon--spin[data-v-260b0681] {
8
+ animation: rs-icon-spin-260b0681 0.8s linear infinite;
9
9
  }
10
- @keyframes rs-icon-spin-ba79ea00 {
10
+ @keyframes rs-icon-spin-260b0681 {
11
11
  to {
12
12
  transform: rotate(360deg);
13
13
  }
14
14
  }
15
+ @media (prefers-reduced-motion: reduce) {
16
+ .rs-icon--spin[data-v-260b0681] {
17
+ animation: none;
18
+ }
19
+ }
@@ -1,8 +1,9 @@
1
1
  import type { RsComponentSize } from '../../../theme/types';
2
+ import { type RsIconFlip } from './icon-utils';
2
3
  type __VLS_Props = {
3
- /** Lucide 图标名(kebab-case,如 `house`、`trash-2`) */
4
+ /** Lucide kebab-case 名称(如 `house`、`trash-2`),或内置品牌 mark */
4
5
  name: string;
5
- /** 数字 px、CSS 长度或 sm / md / lg 预设 */
6
+ /** 数字 px、CSS 长度,或与控件同一套 ssm / sm / md / lg */
6
7
  size?: number | string | RsComponentSize;
7
8
  /** 无障碍名称;有值时作为语义图标,无值时为装饰性图标 */
8
9
  label?: string;
@@ -10,7 +11,7 @@ type __VLS_Props = {
10
11
  /** 覆盖颜色,默认继承 currentColor */
11
12
  color?: string;
12
13
  /** 水平 / 垂直 / 双向翻转 */
13
- flip?: 'horizontal' | 'vertical' | 'both';
14
+ flip?: RsIconFlip;
14
15
  /** 旋转角度(度),与 spin 不宜同时使用 */
15
16
  rotate?: number;
16
17
  /** 旋转动画,适合 loader 等加载态 */
@@ -1,8 +1,10 @@
1
1
  import { resolveLucideIcon } from "../../../icons/lucide.js";
2
2
  import { isRsBrandIconName } from "../../../icons/brand.js";
3
+ import { buildRsIconStyle, resolveRsIconPixelSize } from "./icon-utils.js";
3
4
  import { computed, createBlock, createCommentVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, resolveDynamicComponent } from "vue";
4
5
  //#region src/components/icon/src/RsIcon.vue?vue&type=script&setup=true&lang.ts
5
6
  var RsIcon_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
+ name: "RsIcon",
6
8
  __name: "RsIcon",
7
9
  props: {
8
10
  name: {},
@@ -15,41 +17,16 @@ var RsIcon_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
15
17
  spin: { type: Boolean }
16
18
  },
17
19
  setup(__props) {
18
- const SIZE_PRESET = {
19
- ssm: 12,
20
- sm: 14,
21
- md: 16,
22
- lg: 20
23
- };
24
20
  const props = __props;
25
21
  const iconComponent = computed(() => resolveLucideIcon(props.name));
26
- const usesCustomSize = computed(() => {
27
- const { size } = props;
28
- return typeof size === "string" && !(size in SIZE_PRESET) && !/^\d+$/.test(size);
29
- });
30
- const lucideSize = computed(() => {
31
- if (usesCustomSize.value) return void 0;
32
- const { size } = props;
33
- if (typeof size === "number") return size;
34
- if (size in SIZE_PRESET) return SIZE_PRESET[size];
35
- return Number.parseInt(String(size), 10) || SIZE_PRESET.md;
36
- });
22
+ const lucideSize = computed(() => resolveRsIconPixelSize(props.size));
37
23
  const isBrand = computed(() => isRsBrandIconName(props.name));
38
- const iconStyle = computed(() => {
39
- const style = {};
40
- if (props.color) style.color = props.color;
41
- const transforms = [];
42
- if (props.flip === "horizontal") transforms.push("scaleX(-1)");
43
- else if (props.flip === "vertical") transforms.push("scaleY(-1)");
44
- else if (props.flip === "both") transforms.push("scale(-1)");
45
- if (props.rotate) transforms.push(`rotate(${props.rotate}deg)`);
46
- if (transforms.length) style.transform = transforms.join(" ");
47
- if (usesCustomSize.value && typeof props.size === "string") {
48
- style.width = props.size;
49
- style.height = props.size;
50
- }
51
- return Object.keys(style).length ? style : void 0;
52
- });
24
+ const iconStyle = computed(() => buildRsIconStyle({
25
+ color: props.color,
26
+ flip: props.flip,
27
+ rotate: props.rotate,
28
+ size: props.size
29
+ }));
53
30
  const isSemantic = computed(() => Boolean(props.label));
54
31
  return (_ctx, _cache) => {
55
32
  return iconComponent.value ? (openBlock(), createBlock(resolveDynamicComponent(iconComponent.value), {
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsIcon_vue_vue_type_script_setup_true_lang_default from "./RsIcon.impl.js";
4
4
 
5
5
  //#region src/components/icon/src/RsIcon.vue
6
- var RsIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsIcon_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-ba79ea00"]]);
6
+ var RsIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsIcon_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-260b0681"]]);
7
7
  //#endregion
8
8
  export { RsIcon_default as default };
@@ -0,0 +1,17 @@
1
+ import { type RsComponentSize } from '../../../theme/types';
2
+ export type RsIconFlip = 'horizontal' | 'vertical' | 'both';
3
+ /** 数字 px、CSS 长度,或 ssm / sm / md / lg 档位字符串。 */
4
+ export type RsIconSize = number | string;
5
+ /** 与控件档位同一套边长(ssm 12 / sm 14 / md 16 / lg 18)。 */
6
+ export declare function isRsIconSizePreset(size: unknown): size is RsComponentSize;
7
+ /** CSS 长度(如 `1.5rem`)不走 Lucide 的 size 数字。 */
8
+ export declare function rsIconUsesCssSize(size: RsIconSize | undefined): boolean;
9
+ /** 解析成 Lucide / 自定义 mark 的像素边长;CSS 长度返回 undefined。 */
10
+ export declare function resolveRsIconPixelSize(size: RsIconSize | undefined): number | undefined;
11
+ export declare function buildRsIconTransform(flip?: RsIconFlip, rotate?: number): string | undefined;
12
+ export declare function buildRsIconStyle(options: {
13
+ color?: string;
14
+ flip?: RsIconFlip;
15
+ rotate?: number;
16
+ size?: RsIconSize;
17
+ }): Record<string, string> | undefined;
@@ -0,0 +1,39 @@
1
+ import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
2
+ //#region src/components/icon/src/icon-utils.ts
3
+ /** 与控件档位同一套边长(ssm 12 / sm 14 / md 16 / lg 18)。 */
4
+ function isRsIconSizePreset(size) {
5
+ return typeof size === "string" && size in RS_COMPONENT_SIZE_ICON_PX;
6
+ }
7
+ /** CSS 长度(如 `1.5rem`)不走 Lucide 的 size 数字。 */
8
+ function rsIconUsesCssSize(size) {
9
+ return typeof size === "string" && !isRsIconSizePreset(size) && !/^\d+$/.test(size);
10
+ }
11
+ /** 解析成 Lucide / 自定义 mark 的像素边长;CSS 长度返回 undefined。 */
12
+ function resolveRsIconPixelSize(size) {
13
+ if (size == null) return RS_COMPONENT_SIZE_ICON_PX.md;
14
+ if (rsIconUsesCssSize(size)) return void 0;
15
+ if (typeof size === "number" && Number.isFinite(size)) return size;
16
+ if (isRsIconSizePreset(size)) return RS_COMPONENT_SIZE_ICON_PX[size];
17
+ return Number.parseInt(String(size), 10) || RS_COMPONENT_SIZE_ICON_PX.md;
18
+ }
19
+ function buildRsIconTransform(flip, rotate) {
20
+ const transforms = [];
21
+ if (flip === "horizontal") transforms.push("scaleX(-1)");
22
+ else if (flip === "vertical") transforms.push("scaleY(-1)");
23
+ else if (flip === "both") transforms.push("scale(-1)");
24
+ if (rotate) transforms.push(`rotate(${rotate}deg)`);
25
+ return transforms.length ? transforms.join(" ") : void 0;
26
+ }
27
+ function buildRsIconStyle(options) {
28
+ const style = {};
29
+ if (options.color) style.color = options.color;
30
+ const transform = buildRsIconTransform(options.flip, options.rotate);
31
+ if (transform) style.transform = transform;
32
+ if (rsIconUsesCssSize(options.size) && typeof options.size === "string") {
33
+ style.width = options.size;
34
+ style.height = options.size;
35
+ }
36
+ return Object.keys(style).length ? style : void 0;
37
+ }
38
+ //#endregion
39
+ export { buildRsIconStyle, buildRsIconTransform, isRsIconSizePreset, resolveRsIconPixelSize, rsIconUsesCssSize };
@@ -1,4 +1,4 @@
1
1
  export { default as RsInput } from './src/RsInput.js';
2
- export type { RsInputExpose, RsInputInstance } from './src/RsInput.js';
2
+ export type { RsInputExpose, RsInputInstance, RsInputType } from './src/RsInput.js';
3
3
  export type { RsInputRule, RsInputValidateTrigger, RsInputValidateResult, } from './src/input-rules';
4
4
  export { validateInputRule, runInputValidation, getInputRuleMessage, inputRuleMessageKeys, } from './src/input-rules';