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
@@ -4,6 +4,7 @@ import { buildLocalInputRules, runFormFieldRules } from "../../form/src/form-rul
4
4
  import { isRsFormItemBoundControl, useRsFormContext, useRsFormField, useRsFormItemContext } from "../../form/src/form-utils.js";
5
5
  import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
6
6
  import { rsRadiusCss, useResolvedRsRadius } from "../../_shared/src/resolve-radius.js";
7
+ import { hasRsInputAddonAfterContent, normalizeRsInputValue, resolveRsInputAutocomplete, resolveRsInputControlType } from "./input-utils.js";
7
8
  import RsVNodeHost_default from "../../vnode-host/src/RsVNodeHost.js";
8
9
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeClass, normalizeProps, normalizeStyle, openBlock, ref, renderSlot, toDisplayString, unref, useAttrs, useId, useModel, useSlots, withModifiers } from "vue";
9
10
  //#region src/components/input/src/RsInput.vue?vue&type=script&setup=true&lang.ts
@@ -64,6 +65,7 @@ var _hoisted_15 = {
64
65
  class: "rs-field__hint"
65
66
  };
66
67
  var RsInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
68
+ name: "RsInput",
67
69
  inheritAttrs: false,
68
70
  __name: "RsInput",
69
71
  props: /*@__PURE__*/ mergeModels({
@@ -140,10 +142,10 @@ var RsInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
140
142
  */
141
143
  const model = useModel(__props, "modelValue", {
142
144
  get(value) {
143
- return value == null ? "" : String(value);
145
+ return normalizeRsInputValue(value);
144
146
  },
145
147
  set(value) {
146
- return value == null ? "" : String(value);
148
+ return normalizeRsInputValue(value);
147
149
  }
148
150
  });
149
151
  const props = __props;
@@ -167,15 +169,11 @@ var RsInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
167
169
  const hasCustomSuffix = computed(() => Boolean(props.suffix || slots.suffix));
168
170
  const hasAddonBefore = computed(() => Boolean(props.addonBefore || slots.addonBefore));
169
171
  /** 插槽或文本 addonAfter 内容(优先于图标按钮) */
170
- const hasAddonAfterContent = computed(() => Boolean(slots.addonAfter) || props.addonAfter != null && props.addonAfter !== "");
172
+ const hasAddonAfterContent = computed(() => hasRsInputAddonAfterContent(Boolean(slots.addonAfter), props.addonAfter));
171
173
  const hasAddonAfter = computed(() => hasAddonAfterContent.value || Boolean(props.addonAfterIcon));
172
174
  const hasAddon = computed(() => hasAddonBefore.value || hasAddonAfter.value);
173
175
  const resolvedId = computed(() => props.id ?? fieldId);
174
- /** 未显式传 autocomplete 时关闭快捷填充;密码框用 new-password 更稳 */
175
- const resolvedAutocomplete = computed(() => {
176
- if (props.autocomplete != null && props.autocomplete !== "") return props.autocomplete;
177
- return props.type === "password" ? "new-password" : "off";
178
- });
176
+ const resolvedAutocomplete = computed(() => resolveRsInputAutocomplete(props.autocomplete, props.type));
179
177
  const resolvedLabelPosition = computed(() => props.labelPosition ?? formContext?.labelPosition.value ?? "top");
180
178
  const resolvedLabelAlign = computed(() => formContext?.labelAlign.value ?? "start");
181
179
  const errorId = computed(() => `${resolvedId.value}-error`);
@@ -209,10 +207,7 @@ var RsInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
209
207
  const resolvedRadius = useResolvedRsRadius(() => props.radius, "sm");
210
208
  const radiusStyle = computed(() => ({ "--rs-input-radius": rsRadiusCss(resolvedRadius.value) }));
211
209
  const resolvedShowPassword = computed(() => props.type === "password" && props.visibilityToggle);
212
- const resolvedInputType = computed(() => {
213
- if (props.type === "password" && passwordVisible.value) return "text";
214
- return props.type;
215
- });
210
+ const resolvedInputType = computed(() => resolveRsInputControlType(props.type, passwordVisible.value));
216
211
  const hasValue = computed(() => model.value.length > 0);
217
212
  const showClearButton = computed(() => props.clearable && hasValue.value && !resolvedDisabled.value && !resolvedReadonly.value);
218
213
  const showPasswordToggle = computed(() => props.type === "password" && resolvedShowPassword.value && !resolvedDisabled.value);
@@ -221,9 +216,6 @@ var RsInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
221
216
  /** 无 addonAfter 内容时用组件自绘的后置图标按钮 */
222
217
  const showAddonAfterIcon = computed(() => Boolean(props.addonAfterIcon) && !hasAddonAfterContent.value);
223
218
  const hasSuffix = computed(() => Boolean(hasCustomSuffix.value || showClearButton.value || showPasswordToggle.value || showCountDisplay.value));
224
- /**
225
- * 点击框外后置图标按钮
226
- */
227
219
  function onAddonAfterIconClick(event) {
228
220
  if (resolvedDisabled.value || resolvedReadonly.value) return;
229
221
  emit("addonAfterClick", event);
@@ -300,7 +292,7 @@ var RsInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
300
292
  passwordVisible.value = !passwordVisible.value;
301
293
  }
302
294
  function setValue(value) {
303
- model.value = String(value ?? "");
295
+ model.value = normalizeRsInputValue(value);
304
296
  }
305
297
  function clearValidation() {
306
298
  touched.value = false;
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsInput_vue_vue_type_script_setup_true_lang_default from "./RsInput.impl.js";
4
4
 
5
5
  //#region src/components/input/src/RsInput.vue
6
- var RsInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsInput_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-a3292d1e"]]);
6
+ var RsInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsInput_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-ecc31779"]]);
7
7
  //#endregion
8
8
  export { RsInput_default as default };
@@ -0,0 +1,11 @@
1
+ export declare const RS_INPUT_TYPES: readonly ["text", "email", "password", "search", "tel", "url", "number", "date", "datetime-local"];
2
+ export type RsInputType = (typeof RS_INPUT_TYPES)[number];
3
+ export declare function isRsInputType(value: unknown): value is RsInputType;
4
+ export declare function resolveRsInputType(type?: string | null): RsInputType;
5
+ /** modelValue 契约恒为 string;兜住外部误传 number / null。 */
6
+ export declare function normalizeRsInputValue(value: unknown): string;
7
+ /** 未显式传 autocomplete 时关闭快捷填充;密码框用 new-password 更稳。 */
8
+ export declare function resolveRsInputAutocomplete(autocomplete: string | undefined, type: string): string;
9
+ /** 密码显隐:可见时原生 type 改成 text,其余跟 prop。 */
10
+ export declare function resolveRsInputControlType(type: string, passwordVisible: boolean): string;
11
+ export declare function hasRsInputAddonAfterContent(hasSlot: boolean, addonAfter?: string | null): boolean;
@@ -0,0 +1,22 @@
1
+ //#region src/components/input/src/input-utils.ts
2
+ /** modelValue 契约恒为 string;兜住外部误传 number / null。 */
3
+ function normalizeRsInputValue(value) {
4
+ if (typeof value === "string") return value;
5
+ if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") return `${value}`;
6
+ return "";
7
+ }
8
+ /** 未显式传 autocomplete 时关闭快捷填充;密码框用 new-password 更稳。 */
9
+ function resolveRsInputAutocomplete(autocomplete, type) {
10
+ if (autocomplete != null && autocomplete !== "") return autocomplete;
11
+ return type === "password" ? "new-password" : "off";
12
+ }
13
+ /** 密码显隐:可见时原生 type 改成 text,其余跟 prop。 */
14
+ function resolveRsInputControlType(type, passwordVisible) {
15
+ if (type === "password" && passwordVisible) return "text";
16
+ return type;
17
+ }
18
+ function hasRsInputAddonAfterContent(hasSlot, addonAfter) {
19
+ return hasSlot || addonAfter != null && addonAfter !== "";
20
+ }
21
+ //#endregion
22
+ export { hasRsInputAddonAfterContent, normalizeRsInputValue, resolveRsInputAutocomplete, resolveRsInputControlType };
@@ -1,3 +1,4 @@
1
1
  export { default as RsInputNumber } from './src/RsInputNumber.js';
2
+ export type { RsInputNumberExpose, RsInputNumberInstance } from './src/RsInputNumber.js';
2
3
  export type { RsInputNumberValue } from './src/input-number-utils';
3
4
  export { clampNumber, formatNumberValue, fromModelValue, isNumberInputInterim, normalizeCommittedNumber, parseNumberInput, resolveNumberPrecision, roundToPrecision, stepNumberValue, toModelValue, } from './src/input-number-utils';
@@ -1,29 +1,29 @@
1
1
 
2
- .rs-input-number-field[data-v-30abc660] {
2
+ .rs-input-number-field[data-v-d46f1e7f] {
3
3
  width: 100%;
4
4
  }
5
- .rs-field--label-left .rs-input-number-field[data-v-30abc660] {
5
+ .rs-field--label-left .rs-input-number-field[data-v-d46f1e7f] {
6
6
  grid-column: 2;
7
7
  min-width: 0;
8
8
  }
9
- .rs-field--label-left .rs-input-number-field__error[data-v-30abc660] {
9
+ .rs-field--label-left .rs-input-number-field__error[data-v-d46f1e7f] {
10
10
  grid-column: 2;
11
11
  }
12
- .rs-field--label-left .rs-field__label[data-v-30abc660] {
12
+ .rs-field--label-left .rs-field__label[data-v-d46f1e7f] {
13
13
  display: flex;
14
14
  align-items: center;
15
15
  min-height: var(--rs-control-height-md);
16
16
  }
17
- .rs-input-number-field--ssm.rs-field--label-left .rs-field__label[data-v-30abc660] {
17
+ .rs-input-number-field--ssm.rs-field--label-left .rs-field__label[data-v-d46f1e7f] {
18
18
  min-height: var(--rs-control-height-ssm);
19
19
  }
20
- .rs-input-number-field--sm.rs-field--label-left .rs-field__label[data-v-30abc660] {
20
+ .rs-input-number-field--sm.rs-field--label-left .rs-field__label[data-v-d46f1e7f] {
21
21
  min-height: var(--rs-control-height-sm);
22
22
  }
23
- .rs-input-number-field--lg.rs-field--label-left .rs-field__label[data-v-30abc660] {
23
+ .rs-input-number-field--lg.rs-field--label-left .rs-field__label[data-v-d46f1e7f] {
24
24
  min-height: var(--rs-control-height-lg);
25
25
  }
26
- .rs-input-number[data-v-30abc660] {
26
+ .rs-input-number[data-v-d46f1e7f] {
27
27
  display: flex;
28
28
  align-items: stretch;
29
29
  box-sizing: border-box;
@@ -40,44 +40,44 @@
40
40
  background var(--rs-transition-fast);
41
41
  overflow: hidden;
42
42
  }
43
- .rs-input-number--ssm[data-v-30abc660] {
43
+ .rs-input-number--ssm[data-v-d46f1e7f] {
44
44
  height: var(--rs-control-height-ssm);
45
45
  min-height: var(--rs-control-height-ssm);
46
46
  }
47
- .rs-input-number--sm[data-v-30abc660] {
47
+ .rs-input-number--sm[data-v-d46f1e7f] {
48
48
  height: var(--rs-control-height-sm);
49
49
  min-height: var(--rs-control-height-sm);
50
50
  }
51
- .rs-input-number--lg[data-v-30abc660] {
51
+ .rs-input-number--lg[data-v-d46f1e7f] {
52
52
  height: var(--rs-control-height-lg);
53
53
  min-height: var(--rs-control-height-lg);
54
54
  }
55
- .rs-input-number[data-v-30abc660]:hover:not(.rs-input-number--disabled):not(.rs-input-number--readonly):not(
55
+ .rs-input-number[data-v-d46f1e7f]:hover:not(.rs-input-number--disabled):not(.rs-input-number--readonly):not(
56
56
  :focus-within
57
57
  ) {
58
58
  border-color: var(--rs-input-border-hover, var(--rs-border));
59
59
  }
60
- .rs-input-number[data-v-30abc660]:focus-within {
60
+ .rs-input-number[data-v-d46f1e7f]:focus-within {
61
61
  border-color: var(--rs-focus-border, var(--rs-primary));
62
62
  box-shadow:
63
63
  var(--rs-input-shadow, none),
64
64
  0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
65
65
  }
66
- .rs-input-number--invalid[data-v-30abc660] {
66
+ .rs-input-number--invalid[data-v-d46f1e7f] {
67
67
  border-color: var(--rs-danger);
68
68
  }
69
- .rs-input-number--invalid[data-v-30abc660]:focus-within {
69
+ .rs-input-number--invalid[data-v-d46f1e7f]:focus-within {
70
70
  border-color: var(--rs-danger);
71
71
  box-shadow:
72
72
  var(--rs-input-shadow, none),
73
73
  0 0 0 var(--rs-focus-ring-width, 2px) color-mix(in srgb, var(--rs-danger) 14%, transparent);
74
74
  }
75
- .rs-input-number--disabled[data-v-30abc660] {
75
+ .rs-input-number--disabled[data-v-d46f1e7f] {
76
76
  opacity: 0.55;
77
77
  cursor: not-allowed;
78
78
  background: var(--rs-surface-hover);
79
79
  }
80
- .rs-input-number__control[data-v-30abc660] {
80
+ .rs-input-number__control[data-v-d46f1e7f] {
81
81
  flex: 1;
82
82
  align-self: stretch;
83
83
  min-width: 0;
@@ -95,27 +95,27 @@
95
95
  appearance: textfield;
96
96
  -moz-appearance: textfield;
97
97
  }
98
- .rs-input-number__control--ssm[data-v-30abc660] {
98
+ .rs-input-number__control--ssm[data-v-d46f1e7f] {
99
99
  padding: 0 var(--rs-space-xs);
100
100
  font-size: var(--rs-font-size-xs);
101
101
  }
102
- .rs-input-number__control--sm[data-v-30abc660] {
102
+ .rs-input-number__control--sm[data-v-d46f1e7f] {
103
103
  padding: 0 var(--rs-space-sm);
104
104
  font-size: var(--rs-font-size-xs);
105
105
  }
106
- .rs-input-number__control--lg[data-v-30abc660] {
106
+ .rs-input-number__control--lg[data-v-d46f1e7f] {
107
107
  padding: 0 var(--rs-space-lg);
108
108
  font-size: var(--rs-font-size-base);
109
109
  }
110
- .rs-input-number__control[data-v-30abc660]:disabled {
110
+ .rs-input-number__control[data-v-d46f1e7f]:disabled {
111
111
  cursor: not-allowed;
112
112
  }
113
- .rs-input-number__control[data-v-30abc660]::-webkit-outer-spin-button,
114
- .rs-input-number__control[data-v-30abc660]::-webkit-inner-spin-button {
113
+ .rs-input-number__control[data-v-d46f1e7f]::-webkit-outer-spin-button,
114
+ .rs-input-number__control[data-v-d46f1e7f]::-webkit-inner-spin-button {
115
115
  -webkit-appearance: none;
116
116
  margin: 0;
117
117
  }
118
- .rs-input-number__handlers[data-v-30abc660] {
118
+ .rs-input-number__handlers[data-v-d46f1e7f] {
119
119
  display: flex;
120
120
  flex-direction: column;
121
121
  flex-shrink: 0;
@@ -126,11 +126,11 @@
126
126
  overflow: hidden;
127
127
  border-inline-start: 1px solid var(--rs-input-border, var(--rs-border));
128
128
  }
129
- .rs-input-number--ssm .rs-input-number__handlers[data-v-30abc660],
130
- .rs-input-number--sm .rs-input-number__handlers[data-v-30abc660] {
129
+ .rs-input-number--ssm .rs-input-number__handlers[data-v-d46f1e7f],
130
+ .rs-input-number--sm .rs-input-number__handlers[data-v-d46f1e7f] {
131
131
  width: 18px;
132
132
  }
133
- .rs-input-number__handler[data-v-30abc660] {
133
+ .rs-input-number__handler[data-v-d46f1e7f] {
134
134
  flex: 1 1 0;
135
135
  min-height: 0;
136
136
  display: inline-flex;
@@ -144,18 +144,18 @@
144
144
  cursor: pointer;
145
145
  line-height: 1;
146
146
  }
147
- .rs-input-number__handler[data-v-30abc660]:hover:not(:disabled) {
147
+ .rs-input-number__handler[data-v-d46f1e7f]:hover:not(:disabled) {
148
148
  color: var(--rs-text);
149
149
  background: var(--rs-surface-hover);
150
150
  }
151
- .rs-input-number__handler[data-v-30abc660]:disabled {
151
+ .rs-input-number__handler[data-v-d46f1e7f]:disabled {
152
152
  opacity: 0.35;
153
153
  cursor: not-allowed;
154
154
  }
155
- .rs-input-number__handler--up[data-v-30abc660] {
155
+ .rs-input-number__handler--up[data-v-d46f1e7f] {
156
156
  border-bottom: 1px solid var(--rs-input-border, var(--rs-border));
157
157
  }
158
- .rs-input-number-field__error[data-v-30abc660] {
158
+ .rs-input-number-field__error[data-v-d46f1e7f] {
159
159
  margin: 4px 0 0;
160
160
  font-size: var(--rs-font-size-xs);
161
161
  color: var(--rs-danger);
@@ -1,6 +1,17 @@
1
1
  import type { RsComponentSize, RsRadius } from '../../../theme/types';
2
2
  import { type RsFormLabelPosition } from '../../form/src/form-utils';
3
3
  import { type RsInputNumberValue } from './input-number-utils';
4
+ export interface RsInputNumberExpose {
5
+ focus: () => void;
6
+ blur: () => void;
7
+ commit: (raw?: string) => void;
8
+ setValue: (value: unknown) => void;
9
+ step: (direction: 1 | -1) => void;
10
+ }
11
+ /** 模板 ref 实例:expose + 根节点 */
12
+ export type RsInputNumberInstance = RsInputNumberExpose & {
13
+ $el: HTMLElement;
14
+ };
4
15
  type __VLS_Props = {
5
16
  id?: string;
6
17
  min?: number;
@@ -44,41 +55,32 @@ type __VLS_Props = {
44
55
  /** 解析展示值(对齐 Ant parser) */
45
56
  parser?: (display: string) => string;
46
57
  };
47
- declare function commitDraft(raw?: string): void;
48
- declare function applyStep(direction: 1 | -1): void;
49
- declare function setValue(value: unknown): void;
50
58
  type __VLS_ModelProps = {
51
59
  modelValue?: RsInputNumberValue;
52
60
  };
53
61
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
54
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
55
- focus: () => void;
56
- blur: () => void;
57
- commit: typeof commitDraft;
58
- setValue: typeof setValue;
59
- step: typeof applyStep;
60
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
62
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, RsInputNumberExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
61
63
  blur: (event: FocusEvent) => any;
62
64
  focus: (event: FocusEvent) => any;
63
65
  "update:modelValue": (value: RsInputNumberValue) => any;
64
- pressEnter: (event: KeyboardEvent) => any;
65
66
  step: (value: RsInputNumberValue, info: {
66
67
  offset: number;
67
68
  }) => any;
69
+ pressEnter: (event: KeyboardEvent) => any;
68
70
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
69
71
  onBlur?: ((event: FocusEvent) => any) | undefined;
70
72
  onFocus?: ((event: FocusEvent) => any) | undefined;
71
73
  "onUpdate:modelValue"?: ((value: RsInputNumberValue) => any) | undefined;
72
- onPressEnter?: ((event: KeyboardEvent) => any) | undefined;
73
74
  onStep?: ((value: RsInputNumberValue, info: {
74
75
  offset: number;
75
76
  }) => any) | undefined;
77
+ onPressEnter?: ((event: KeyboardEvent) => any) | undefined;
76
78
  }>, {
77
79
  required: boolean;
78
80
  disabled: boolean;
81
+ step: number | string;
79
82
  readonly: boolean;
80
83
  autocomplete: string;
81
- step: number | string;
82
84
  stringMode: boolean;
83
85
  controls: boolean;
84
86
  keyboard: boolean;
@@ -5,7 +5,7 @@ import { isRsFormItemBoundControl, useRsFormContext, useRsFormField, useRsFormIt
5
5
  import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
6
6
  import { rsRadiusCss, useResolvedRsRadius } from "../../_shared/src/resolve-radius.js";
7
7
  import { formatNumberValue, fromModelValue, isNumberInputInterim, normalizeCommittedNumber, stepNumberValue, toModelValue } from "./input-number-utils.js";
8
- import { computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeModels, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, toDisplayString, unref, useId, useModel, watch, withModifiers } from "vue";
8
+ import { computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeModels, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, toDisplayString, unref, useAttrs, useId, useModel, useTemplateRef, watch, withModifiers } from "vue";
9
9
  //#region src/components/input-number/src/RsInputNumber.vue?vue&type=script&setup=true&lang.ts
10
10
  var _hoisted_1 = {
11
11
  key: 0,
@@ -26,6 +26,7 @@ var _hoisted_5 = [
26
26
  "placeholder",
27
27
  "disabled",
28
28
  "readonly",
29
+ "aria-required",
29
30
  "aria-invalid",
30
31
  "aria-describedby",
31
32
  "aria-valuemin",
@@ -46,6 +47,7 @@ var _hoisted_10 = {
46
47
  class: "rs-field__hint"
47
48
  };
48
49
  var RsInputNumber_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
50
+ name: "RsInputNumber",
49
51
  inheritAttrs: false,
50
52
  __name: "RsInputNumber",
51
53
  props: /*@__PURE__*/ mergeModels({
@@ -114,6 +116,8 @@ var RsInputNumber_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
114
116
  * - 输入过程用文本草稿,允许中间态;blur / step / Enter 再规范化
115
117
  */
116
118
  const { t } = useRsI18n();
119
+ const attrs = useAttrs();
120
+ const controlRef = useTemplateRef("controlRef");
117
121
  const model = useModel(__props, "modelValue");
118
122
  const props = __props;
119
123
  const emit = __emit;
@@ -234,6 +238,7 @@ var RsInputNumber_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
234
238
  emit("blur", event);
235
239
  }
236
240
  function onKeydown(event) {
241
+ if (event.isComposing || event.key === "Process") return;
237
242
  if (event.key === "Enter") {
238
243
  commitDraft();
239
244
  emit("pressEnter", event);
@@ -254,6 +259,10 @@ var RsInputNumber_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
254
259
  event.preventDefault();
255
260
  applyStep(event.deltaY < 0 ? 1 : -1);
256
261
  }
262
+ const controlBinds = computed(() => props.changeOnWheel ? {
263
+ ...attrs,
264
+ onWheel
265
+ } : attrs);
257
266
  function setValue(value) {
258
267
  if (value == null || value === "") {
259
268
  model.value = null;
@@ -290,10 +299,10 @@ var RsInputNumber_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
290
299
  }));
291
300
  __expose({
292
301
  focus: () => {
293
- document.getElementById(resolvedId.value)?.focus();
302
+ controlRef.value?.focus();
294
303
  },
295
304
  blur: () => {
296
- document.getElementById(resolvedId.value)?.blur();
305
+ controlRef.value?.blur();
297
306
  },
298
307
  commit: commitDraft,
299
308
  setValue,
@@ -316,6 +325,9 @@ var RsInputNumber_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
316
325
  "rs-input-number--controls": __props.controls,
317
326
  [`rs-input-number--${unref(resolvedSize)}`]: true
318
327
  }]) }, [createElementVNode("input", mergeProps({
328
+ ref_key: "controlRef",
329
+ ref: controlRef
330
+ }, controlBinds.value, {
319
331
  id: resolvedId.value,
320
332
  class: ["rs-input-number__control", `rs-input-number__control--${unref(resolvedSize)}`],
321
333
  type: "text",
@@ -327,6 +339,7 @@ var RsInputNumber_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
327
339
  placeholder: __props.placeholder,
328
340
  disabled: resolvedDisabled.value,
329
341
  readonly: resolvedReadonly.value,
342
+ "aria-required": __props.required || void 0,
330
343
  "aria-invalid": isInvalid.value || void 0,
331
344
  "aria-describedby": displayMessage.value ? errorId.value : void 0,
332
345
  "aria-valuemin": __props.min,
@@ -337,7 +350,7 @@ var RsInputNumber_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
337
350
  onFocus,
338
351
  onBlur,
339
352
  onKeydown
340
- }, __props.changeOnWheel ? { onWheel } : {}), null, 16, _hoisted_5), __props.controls ? (openBlock(), createElementBlock("div", _hoisted_6, [createElementVNode("button", {
353
+ }), null, 16, _hoisted_5), __props.controls ? (openBlock(), createElementBlock("div", _hoisted_6, [createElementVNode("button", {
341
354
  type: "button",
342
355
  class: "rs-input-number__handler rs-input-number__handler--up",
343
356
  tabindex: "-1",
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsInputNumber_vue_vue_type_script_setup_true_lang_default from "./RsInputNumber.impl.js";
4
4
 
5
5
  //#region src/components/input-number/src/RsInputNumber.vue
6
- var RsInputNumber_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsInputNumber_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-30abc660"]]);
6
+ var RsInputNumber_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsInputNumber_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-d46f1e7f"]]);
7
7
  //#endregion
8
8
  export { RsInputNumber_default as default };
@@ -1,33 +1,52 @@
1
1
 
2
2
  /*
3
3
  * 消费全局 token(styles.css):
4
- * --rs-label-font-size / --rs-label-font-weight / --rs-label-color / --rs-label-line-height
4
+ * --rs-label-font-size / font-weight / color / line-height / gap / mark-gap / disabled-opacity
5
5
  * 与 .rs-field__label 共用;父级覆盖即可,无需 :deep。
6
6
  */
7
- .rs-label[data-v-e4daa758] {
7
+ .rs-label[data-v-dc8b2069] {
8
8
  display: flex;
9
9
  flex-direction: column;
10
- gap: 0.25rem;
10
+ gap: var(--rs-label-gap);
11
11
  font-size: var(--rs-label-font-size);
12
12
  line-height: var(--rs-label-line-height);
13
13
  color: var(--rs-label-color);
14
14
  }
15
- .rs-label--disabled[data-v-e4daa758] {
16
- opacity: 0.5;
15
+ .rs-label--disabled[data-v-dc8b2069] {
16
+ opacity: var(--rs-label-disabled-opacity);
17
17
  cursor: not-allowed;
18
18
  }
19
- .rs-label--nowrap .rs-label__text[data-v-e4daa758] {
19
+ .rs-label--nowrap .rs-label__text[data-v-dc8b2069] {
20
20
  white-space: nowrap;
21
21
  }
22
- .rs-label__text[data-v-e4daa758] {
22
+ .rs-label__text[data-v-dc8b2069] {
23
23
  font-weight: var(--rs-label-font-weight);
24
24
  }
25
- .rs-label__required[data-v-e4daa758] {
26
- margin-inline-start: 0.125rem;
25
+ .rs-label__required[data-v-dc8b2069] {
26
+ margin-inline-start: var(--rs-label-mark-gap);
27
27
  color: var(--rs-danger);
28
28
  }
29
- .rs-label__hint[data-v-e4daa758] {
29
+ .rs-label__optional[data-v-dc8b2069] {
30
+ margin-inline-start: var(--rs-label-mark-gap);
31
+ font-weight: var(--rs-font-weight-regular);
32
+ color: var(--rs-text-secondary);
33
+ }
34
+ .rs-label__colon[data-v-dc8b2069] {
35
+ margin-inline-start: var(--rs-label-mark-gap);
36
+ }
37
+ .rs-label__hint[data-v-dc8b2069] {
30
38
  font-size: var(--rs-font-size-xs);
31
39
  font-weight: var(--rs-font-weight-regular);
32
- color: var(--rs-muted);
40
+ color: var(--rs-text-secondary);
41
+ }
42
+ .rs-label__sr[data-v-dc8b2069] {
43
+ position: absolute;
44
+ width: 1px;
45
+ height: 1px;
46
+ padding: 0;
47
+ margin: -1px;
48
+ overflow: hidden;
49
+ clip: rect(0, 0, 0, 0);
50
+ white-space: nowrap;
51
+ border: 0;
33
52
  }
@@ -1,19 +1,36 @@
1
1
  type __VLS_Props = {
2
+ /** 关联控件 id。国际用法也可写 htmlFor / for。 */
2
3
  forId?: string;
4
+ /** forId 别名(React / 国际文档常见)。 */
5
+ htmlFor?: string;
6
+ /** 原生 HTML for。forId / htmlFor 的别名。 */
7
+ for?: string;
8
+ /** 标签自身 id,供 aria-labelledby。 */
9
+ id?: string;
3
10
  required?: boolean;
11
+ /** 非必填标记。与 required 同时传时只显示必填。 */
12
+ optional?: boolean;
4
13
  hint?: string;
14
+ /** hint 节点 id。未传且有说明时自动生成。 */
15
+ hintId?: string;
5
16
  disabled?: boolean;
6
17
  /** 文案单行不换行(表单左侧标签等场景) */
7
18
  nowrap?: boolean;
19
+ /** 在文案后追加本地化冒号。默认关闭,避免改变旧版式。 */
20
+ colon?: boolean;
8
21
  };
9
- declare var __VLS_1: {};
22
+ declare var __VLS_1: {}, __VLS_3: {};
10
23
  type __VLS_Slots = {} & {
11
24
  default?: (props: typeof __VLS_1) => any;
25
+ } & {
26
+ hint?: (props: typeof __VLS_3) => any;
12
27
  };
13
28
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
29
  required: boolean;
15
30
  disabled: boolean;
31
+ optional: boolean;
16
32
  nowrap: boolean;
33
+ colon: boolean;
17
34
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
35
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
36
  declare const _default: typeof __VLS_export;