@sdata/web-vue 4.4.0 → 4.4.2

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 (232) hide show
  1. package/dist/sd.css +20 -5
  2. package/dist/sd.min.css +2 -2
  3. package/es/_utils/global-config.js +9 -5
  4. package/es/anchor/anchor.vue_vue_type_script_setup_true_lang.js +5 -8
  5. package/es/anchor/utils.d.ts +1 -1
  6. package/es/anchor/utils.js +6 -1
  7. package/es/auto-complete/auto-complete.vue.d.ts +6 -6
  8. package/es/auto-complete/auto-complete.vue_vue_type_script_setup_true_lang.js +22 -6
  9. package/es/avatar/avatar-group.vue_vue_type_script_setup_true_lang.js +2 -1
  10. package/es/avatar/avatar.vue_vue_type_script_setup_true_lang.js +3 -3
  11. package/es/avatar/style/index.css +1 -1
  12. package/es/avatar/style/index.scss +2 -1
  13. package/es/badge/badge.vue_vue_type_script_setup_true_lang.js +59 -42
  14. package/es/basic-crud-table/basic-crud-modal.vue.d.ts +22 -22
  15. package/es/basic-crud-table/basic-crud-table.vue.d.ts +66 -66
  16. package/es/basic-crud-table/index.d.ts +198 -198
  17. package/es/bloom-menu/bloom-menu.vue.d.ts +1 -1
  18. package/es/bloom-menu/bloom-menu.vue_vue_type_script_setup_true_lang.js +16 -3
  19. package/es/border-beam/border-beam.vue_vue_type_script_setup_true_lang.js +32 -18
  20. package/es/breadcrumb/breadcrumb-item.vue_vue_type_script_setup_true_lang.js +3 -3
  21. package/es/button/button.vue_vue_type_script_setup_true_lang.js +1 -1
  22. package/es/calendar/components/cell.vue_vue_type_script_setup_true_lang.js +1 -1
  23. package/es/calendar/components/event.vue_vue_type_script_setup_true_lang.js +1 -1
  24. package/es/calendar/core/config.js +4 -1
  25. package/es/calendar/core/events.js +22 -2
  26. package/es/calendar/default-theme.scss +1 -1
  27. package/es/calendar/style/index.css +2 -2
  28. package/es/carousel/carousel.vue.d.ts +5 -1
  29. package/es/carousel/carousel.vue_vue_type_script_setup_true_lang.js +55 -12
  30. package/es/carousel/index.d.ts +15 -3
  31. package/es/cascader/cascader-panel.vue_vue_type_script_setup_true_lang.js +6 -3
  32. package/es/checkbox/checkbox.vue.d.ts +2 -0
  33. package/es/checkbox/checkbox.vue_vue_type_script_setup_true_lang.js +12 -6
  34. package/es/checkbox/index.d.ts +6 -0
  35. package/es/color-picker/color-picker.vue_vue_type_script_setup_true_lang.js +13 -5
  36. package/es/color-picker/control-bar.vue_vue_type_script_setup_true_lang.js +1 -1
  37. package/es/color-picker/hooks/use-control-block.d.ts +1 -1
  38. package/es/color-picker/hooks/use-control-block.js +6 -6
  39. package/es/color-picker/palette.vue_vue_type_script_setup_true_lang.js +1 -1
  40. package/es/comment/comment.vue_vue_type_script_setup_true_lang.js +7 -2
  41. package/es/config-provider/config-provider.vue_vue_type_script_setup_true_lang.js +7 -6
  42. package/es/config-provider/theme-provider.vue_vue_type_script_setup_true_lang.js +7 -1
  43. package/es/copy/copy.vue_vue_type_script_setup_true_lang.js +23 -8
  44. package/es/cropper/cropper.vue_vue_type_script_setup_true_lang.js +16 -7
  45. package/es/date-picker/hooks/use-range-header-value.js +1 -1
  46. package/es/drawer/drawer.vue.d.ts +2 -2
  47. package/es/drawer/drawer.vue_vue_type_script_setup_true_lang.js +5 -12
  48. package/es/drawer/index.d.ts +3 -3
  49. package/es/dropdown/dropdown-panel.vue.d.ts +0 -9
  50. package/es/dropdown/dropdown-panel.vue_vue_type_script_setup_true_lang.js +0 -4
  51. package/es/dropdown/dropdown.vue.d.ts +16 -3
  52. package/es/dropdown/dropdown.vue_vue_type_script_setup_true_lang.js +24 -3
  53. package/es/dropdown/index.d.ts +25 -0
  54. package/es/dropdown/interface.d.ts +2 -0
  55. package/es/ellipsis/ellipsis.vue.d.ts +2 -0
  56. package/es/ellipsis/ellipsis.vue_vue_type_script_setup_true_lang.js +37 -8
  57. package/es/ellipsis/index.d.ts +3 -0
  58. package/es/ellipsis/performant-ellipsis.vue_vue_type_script_setup_true_lang.js +3 -0
  59. package/es/empty/empty.vue_vue_type_script_setup_true_lang.js +1 -4
  60. package/es/file-previewer/file-previewer.vue.d.ts +0 -3
  61. package/es/file-previewer/file-previewer.vue_vue_type_script_setup_true_lang.js +3 -6
  62. package/es/file-previewer/index.d.ts +0 -9
  63. package/es/form/context.d.ts +1 -2
  64. package/es/form/form-item.vue_vue_type_script_setup_true_lang.js +6 -6
  65. package/es/form/form.vue.d.ts +3 -3
  66. package/es/form/form.vue_vue_type_script_setup_true_lang.js +5 -7
  67. package/es/form/index.d.ts +6 -6
  68. package/es/grid/grid-col.vue_vue_type_script_setup_true_lang.js +5 -4
  69. package/es/grid/hook/use-responsive-state.js +15 -4
  70. package/es/grid/hook/use-responsive-value.js +3 -2
  71. package/es/icon/icon-arrow-up/icon-arrow-up.vue_vue_type_script_setup_true_lang.js +4 -1
  72. package/es/icon/icon-calendar/icon-calendar.vue_vue_type_script_setup_true_lang.js +4 -1
  73. package/es/icon/icon-caret-down/icon-caret-down.vue_vue_type_script_setup_true_lang.js +4 -1
  74. package/es/icon/icon-caret-left/icon-caret-left.vue_vue_type_script_setup_true_lang.js +4 -1
  75. package/es/icon/icon-caret-right/icon-caret-right.vue_vue_type_script_setup_true_lang.js +4 -1
  76. package/es/icon/icon-caret-up/icon-caret-up.vue_vue_type_script_setup_true_lang.js +4 -1
  77. package/es/icon/icon-check/icon-check.vue_vue_type_script_setup_true_lang.js +4 -1
  78. package/es/icon/icon-check-circle-fill/icon-check-circle-fill.vue_vue_type_script_setup_true_lang.js +4 -1
  79. package/es/icon/icon-clock-circle/icon-clock-circle.vue_vue_type_script_setup_true_lang.js +4 -1
  80. package/es/icon/icon-close/icon-close.vue_vue_type_script_setup_true_lang.js +4 -1
  81. package/es/icon/icon-close-circle-fill/icon-close-circle-fill.vue_vue_type_script_setup_true_lang.js +4 -1
  82. package/es/icon/icon-components.d.ts +1 -1
  83. package/es/icon/icon-copy/icon-copy.vue_vue_type_script_setup_true_lang.js +4 -1
  84. package/es/icon/icon-delete/icon-delete.vue_vue_type_script_setup_true_lang.js +4 -1
  85. package/es/icon/icon-double-left/icon-double-left.vue_vue_type_script_setup_true_lang.js +4 -1
  86. package/es/icon/icon-double-right/icon-double-right.vue_vue_type_script_setup_true_lang.js +4 -1
  87. package/es/icon/icon-down/icon-down.vue_vue_type_script_setup_true_lang.js +4 -1
  88. package/es/icon/icon-drag-dot/icon-drag-dot.vue_vue_type_script_setup_true_lang.js +4 -1
  89. package/es/icon/icon-drag-dot-vertical/icon-drag-dot-vertical.vue_vue_type_script_setup_true_lang.js +4 -1
  90. package/es/icon/icon-edit/icon-edit.vue_vue_type_script_setup_true_lang.js +4 -1
  91. package/es/icon/icon-empty/icon-empty.vue_vue_type_script_setup_true_lang.js +4 -1
  92. package/es/icon/icon-exclamation/icon-exclamation.vue_vue_type_script_setup_true_lang.js +4 -1
  93. package/es/icon/icon-exclamation-circle-fill/icon-exclamation-circle-fill.vue_vue_type_script_setup_true_lang.js +4 -1
  94. package/es/icon/icon-eye/icon-eye.vue_vue_type_script_setup_true_lang.js +4 -1
  95. package/es/icon/icon-eye-invisible/icon-eye-invisible.vue_vue_type_script_setup_true_lang.js +4 -1
  96. package/es/icon/icon-face-frown-fill/icon-face-frown-fill.vue_vue_type_script_setup_true_lang.js +4 -1
  97. package/es/icon/icon-face-meh-fill/icon-face-meh-fill.vue_vue_type_script_setup_true_lang.js +4 -1
  98. package/es/icon/icon-face-smile-fill/icon-face-smile-fill.vue_vue_type_script_setup_true_lang.js +4 -1
  99. package/es/icon/{icon-faceBook-circle-fill → icon-facebook-circle-fill}/index.d.ts +5 -5
  100. package/es/icon/icon-file/icon-file.vue_vue_type_script_setup_true_lang.js +4 -1
  101. package/es/icon/icon-file-audio/icon-file-audio.vue_vue_type_script_setup_true_lang.js +4 -1
  102. package/es/icon/icon-file-image/icon-file-image.vue_vue_type_script_setup_true_lang.js +4 -1
  103. package/es/icon/icon-file-pdf/icon-file-pdf.vue_vue_type_script_setup_true_lang.js +4 -1
  104. package/es/icon/icon-file-video/icon-file-video.vue_vue_type_script_setup_true_lang.js +4 -1
  105. package/es/icon/icon-filter/icon-filter.vue_vue_type_script_setup_true_lang.js +4 -1
  106. package/es/icon/icon-fullscreen/icon-fullscreen.vue_vue_type_script_setup_true_lang.js +4 -1
  107. package/es/icon/icon-image-close/icon-image-close.vue_vue_type_script_setup_true_lang.js +4 -1
  108. package/es/icon/icon-info/icon-info.vue_vue_type_script_setup_true_lang.js +4 -1
  109. package/es/icon/icon-info-circle-fill/icon-info-circle-fill.vue_vue_type_script_setup_true_lang.js +4 -1
  110. package/es/icon/icon-left/icon-left.vue_vue_type_script_setup_true_lang.js +4 -1
  111. package/es/icon/icon-link/icon-link.vue_vue_type_script_setup_true_lang.js +4 -1
  112. package/es/icon/icon-list/icon-list.vue_vue_type_script_setup_true_lang.js +4 -1
  113. package/es/icon/icon-loading/icon-loading.vue_vue_type_script_setup_true_lang.js +4 -1
  114. package/es/icon/icon-menu/icon-menu.vue_vue_type_script_setup_true_lang.js +4 -1
  115. package/es/icon/icon-menu-fold/icon-menu-fold.vue_vue_type_script_setup_true_lang.js +4 -1
  116. package/es/icon/icon-menu-unfold/icon-menu-unfold.vue_vue_type_script_setup_true_lang.js +4 -1
  117. package/es/icon/icon-minus/icon-minus.vue_vue_type_script_setup_true_lang.js +4 -1
  118. package/es/icon/icon-more/icon-more.vue_vue_type_script_setup_true_lang.js +4 -1
  119. package/es/icon/icon-mute/icon-mute.vue_vue_type_script_setup_true_lang.js +4 -1
  120. package/es/icon/icon-oblique-line/icon-oblique-line.vue_vue_type_script_setup_true_lang.js +4 -1
  121. package/es/icon/icon-original-size/icon-original-size.vue_vue_type_script_setup_true_lang.js +4 -1
  122. package/es/icon/icon-pause/icon-pause.vue_vue_type_script_setup_true_lang.js +4 -1
  123. package/es/icon/icon-play-arrow-fill/icon-play-arrow-fill.vue_vue_type_script_setup_true_lang.js +4 -1
  124. package/es/icon/icon-plus/icon-plus.vue_vue_type_script_setup_true_lang.js +4 -1
  125. package/es/icon/icon-question-circle/icon-question-circle.vue_vue_type_script_setup_true_lang.js +4 -1
  126. package/es/icon/icon-right/icon-right.vue_vue_type_script_setup_true_lang.js +4 -1
  127. package/es/icon/icon-rotate-left/icon-rotate-left.vue_vue_type_script_setup_true_lang.js +4 -1
  128. package/es/icon/icon-rotate-right/icon-rotate-right.vue_vue_type_script_setup_true_lang.js +4 -1
  129. package/es/icon/icon-search/icon-search.vue_vue_type_script_setup_true_lang.js +4 -1
  130. package/es/icon/icon-star-fill/icon-star-fill.vue_vue_type_script_setup_true_lang.js +4 -1
  131. package/es/icon/icon-to-top/icon-to-top.vue_vue_type_script_setup_true_lang.js +4 -1
  132. package/es/icon/icon-up/icon-up.vue_vue_type_script_setup_true_lang.js +4 -1
  133. package/es/icon/icon-upload/icon-upload.vue_vue_type_script_setup_true_lang.js +4 -1
  134. package/es/icon/icon-voice/icon-voice.vue_vue_type_script_setup_true_lang.js +4 -1
  135. package/es/icon/icon-zoom-in/icon-zoom-in.vue_vue_type_script_setup_true_lang.js +4 -1
  136. package/es/icon/icon-zoom-out/icon-zoom-out.vue_vue_type_script_setup_true_lang.js +4 -1
  137. package/es/icon/index.d.ts +1 -1
  138. package/es/icon.js +1162 -300
  139. package/es/image/image.vue_vue_type_script_setup_true_lang.js +5 -3
  140. package/es/image/preview.vue_vue_type_script_setup_true_lang.js +1 -1
  141. package/es/index.css +20 -5
  142. package/es/input/input-password.vue_vue_type_script_setup_true_lang.js +4 -4
  143. package/es/input-mask/input-mask.vue_vue_type_script_setup_true_lang.js +25 -11
  144. package/es/input-mask/mask-engine.d.ts +4 -0
  145. package/es/input-mask/mask-engine.js +12 -1
  146. package/es/input-number/index.d.ts +15 -0
  147. package/es/input-number/input-number.vue.d.ts +9 -0
  148. package/es/input-number/input-number.vue_vue_type_script_setup_true_lang.js +47 -14
  149. package/es/json-form/index.d.ts +11 -11
  150. package/es/json-form/json-form-item.vue.d.ts +3 -6
  151. package/es/json-form/json-form-item.vue_vue_type_script_setup_true_lang.js +14 -15
  152. package/es/json-form/json-form.vue.d.ts +7 -10
  153. package/es/json-form/json-form.vue_vue_type_script_setup_true_lang.js +17 -16
  154. package/es/json-form/style/index.css +15 -0
  155. package/es/json-form/style/index.scss +21 -0
  156. package/es/json-form/types.d.ts +1 -0
  157. package/es/json-form/utils.d.ts +1 -1
  158. package/es/json-form/utils.js +20 -13
  159. package/es/kv-list/kv-list.vue_vue_type_script_setup_true_lang.js +1 -0
  160. package/es/layout/hooks/use-has-sider.js +23 -2
  161. package/es/layout/interface.d.ts +1 -1
  162. package/es/layout/sider.vue_vue_type_script_setup_true_lang.js +1 -1
  163. package/es/list/list-item-meta.vue_vue_type_script_setup_true_lang.js +3 -3
  164. package/es/locale/interface.d.ts +7 -0
  165. package/es/locale/lang/en-us.js +5 -0
  166. package/es/locale/lang/zh-cn.js +5 -0
  167. package/es/mention/index.d.ts +15 -0
  168. package/es/mention/mention.vue.d.ts +10 -1
  169. package/es/mention/mention.vue_vue_type_script_setup_true_lang.js +16 -9
  170. package/es/message/index.js +1 -1
  171. package/es/modal/index.js +9 -1
  172. package/es/modal/modal.vue_vue_type_script_setup_true_lang.js +15 -16
  173. package/es/model-selector/model-selector-input.vue_vue_type_script_setup_true_lang.js +4 -1
  174. package/es/model-selector/model-selector-item.vue_vue_type_script_setup_true_lang.js +27 -3
  175. package/es/model-selector/model-selector.vue_vue_type_script_setup_true_lang.js +15 -3
  176. package/es/notification/index.js +5 -2
  177. package/es/notification/notification-list.vue_vue_type_script_setup_true_lang.js +5 -5
  178. package/es/number-flow/number-flow.vue_vue_type_script_setup_true_lang.js +27 -8
  179. package/es/page-header/page-header.vue_vue_type_script_setup_true_lang.js +2 -1
  180. package/es/pagination/page-item-ellipsis.vue.d.ts +9 -0
  181. package/es/pagination/page-item-ellipsis.vue_vue_type_script_setup_true_lang.js +19 -3
  182. package/es/pagination/page-jumper.vue_vue_type_script_setup_true_lang.js +3 -2
  183. package/es/pagination/pagination.vue_vue_type_script_setup_true_lang.js +10 -0
  184. package/es/popconfirm/popconfirm.vue_vue_type_script_setup_true_lang.js +4 -11
  185. package/es/popover/index.d.ts +2 -0
  186. package/es/popover/popover.vue.d.ts +4 -2
  187. package/es/popover/popover.vue_vue_type_script_setup_true_lang.js +10 -3
  188. package/es/qr-code/qr-code.vue_vue_type_script_setup_true_lang.js +1 -0
  189. package/es/rate/rate.vue_vue_type_script_setup_true_lang.js +1 -2
  190. package/es/resize-box/resize-box.vue_vue_type_script_setup_true_lang.js +10 -10
  191. package/es/result/result.vue_vue_type_script_setup_true_lang.js +6 -4
  192. package/es/skeleton/line.vue_vue_type_script_setup_true_lang.js +16 -13
  193. package/es/slider/slider-button.vue_vue_type_script_setup_true_lang.js +2 -0
  194. package/es/slider/slider.vue_vue_type_script_setup_true_lang.js +20 -9
  195. package/es/slider/utils.js +1 -1
  196. package/es/spin/spin.vue_vue_type_script_setup_true_lang.js +1 -1
  197. package/es/split/split.vue_vue_type_script_setup_true_lang.js +3 -1
  198. package/es/statistic/countdown.vue_vue_type_script_setup_true_lang.js +7 -0
  199. package/es/statistic/index.d.ts +0 -3
  200. package/es/statistic/statistic.vue.d.ts +0 -2
  201. package/es/statistic/statistic.vue_vue_type_script_setup_true_lang.js +0 -5
  202. package/es/style/icon.scss +2 -2
  203. package/es/switch/switch.vue_vue_type_script_setup_true_lang.js +1 -1
  204. package/es/table/table-td.vue_vue_type_script_setup_true_lang.js +6 -6
  205. package/es/table/table-th.vue_vue_type_script_setup_true_lang.js +6 -6
  206. package/es/tag/index.d.ts +8 -8
  207. package/es/tag/tag.vue.d.ts +4 -4
  208. package/es/tag/tag.vue_vue_type_script_setup_true_lang.js +1 -2
  209. package/es/timeline/timeline.vue_vue_type_script_setup_true_lang.js +2 -2
  210. package/es/tour/tour.vue_vue_type_script_setup_true_lang.js +14 -8
  211. package/es/transfer/transfer-view.vue_vue_type_script_setup_true_lang.js +1 -1
  212. package/es/tree/base-node.vue_vue_type_script_setup_true_lang.js +1 -1
  213. package/es/tree-select/tree-select.vue_vue_type_script_setup_true_lang.js +10 -3
  214. package/es/trigger/index.d.ts +0 -6
  215. package/es/trigger/interface.d.ts +1 -2
  216. package/es/trigger/trigger.vue.d.ts +0 -2
  217. package/es/trigger/trigger.vue_vue_type_script_setup_true_lang.js +0 -4
  218. package/es/typography/base.vue_vue_type_script_setup_true_lang.js +1 -0
  219. package/es/typography/interface.d.ts +0 -4
  220. package/es/typography/utils/getInnerText.js +11 -10
  221. package/es/upload/upload-list-item.vue_vue_type_script_setup_true_lang.js +1 -1
  222. package/es/upload/upload.vue_vue_type_script_setup_true_lang.js +7 -5
  223. package/es/upload/utils.d.ts +1 -2
  224. package/es/verification-code/index.d.ts +12 -3
  225. package/es/verification-code/verification-code.vue.d.ts +6 -1
  226. package/es/verification-code/verification-code.vue_vue_type_script_setup_true_lang.js +29 -5
  227. package/es/watermark/watermark.vue_vue_type_script_setup_true_lang.js +4 -2
  228. package/json/vetur-attributes.json +22 -10
  229. package/json/vetur-tags.json +10 -4
  230. package/json/web-types.json +43 -17
  231. package/package.json +1 -1
  232. /package/es/icon/{icon-faceBook-circle-fill/icon-faceBook-circle-fill.vue.d.ts → icon-facebook-circle-fill/icon-facebook-circle-fill.vue.d.ts} +0 -0
@@ -171,8 +171,8 @@ var image_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
171
171
  {
172
172
  [`${prefixCls}-loading`]: isLoading.value,
173
173
  [`${prefixCls}-loading-error`]: isError.value,
174
- [`${prefixCls}-with-footer-inner`]: isLoaded && showFooter && footerPosition.value === "inner",
175
- [`${prefixCls}-with-footer-outer`]: isLoaded && showFooter && footerPosition.value === "outer"
174
+ [`${prefixCls}-with-footer-inner`]: isLoaded.value && showFooter.value && footerPosition.value === "inner",
175
+ [`${prefixCls}-with-footer-outer`]: isLoaded.value && showFooter.value && footerPosition.value === "outer"
176
176
  },
177
177
  attrs.class
178
178
  ]);
@@ -187,6 +187,7 @@ var image_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
187
187
  const mergePreview = computed(() => !(groupContext === null || groupContext === void 0 ? void 0 : groupContext.preview) && preview.value);
188
188
  watchEffect(() => {
189
189
  if (isServerRendering || !refImg.value) return;
190
+ if (!(src === null || src === void 0 ? void 0 : src.value)) return;
190
191
  refImg.value.src = src === null || src === void 0 ? void 0 : src.value;
191
192
  setLoadStatus("loading");
192
193
  });
@@ -226,6 +227,7 @@ var image_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
226
227
  onPreviewClose
227
228
  });
228
229
  return (_ctx, _cache) => {
230
+ var _props$alt;
229
231
  return openBlock(), createElementBlock("div", {
230
232
  class: normalizeClass(wrapperClassNames.value),
231
233
  style: normalizeStyle(wrapperStyles.value)
@@ -237,7 +239,7 @@ var image_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
237
239
  }, imgProps.value, {
238
240
  style: _objectSpread2(_objectSpread2({}, unref(imgStyle)), fitStyle.value),
239
241
  title: unref(title),
240
- alt: __props.alt,
242
+ alt: (_props$alt = __props.alt) !== null && _props$alt !== void 0 ? _props$alt : unref(description),
241
243
  onLoad: onImgLoaded,
242
244
  onError: onImgLoadError,
243
245
  onClick: onImgClick
@@ -249,7 +249,7 @@ var preview_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
249
249
  setLoadStatus("loading");
250
250
  addGlobalKeyDownListener();
251
251
  } else removeGlobalKeyDownListener();
252
- });
252
+ }, { immediate: true });
253
253
  function close() {
254
254
  if (mergedVisible.value) {
255
255
  emit("close");
package/es/index.css CHANGED
@@ -928,10 +928,10 @@ html[data-overlayscrollbars-viewport~=scrollbarHidden] > body::-webkit-scrollbar
928
928
 
929
929
  @keyframes sd-loading-circle {
930
930
  0% {
931
- transform: rotate(0);
931
+ transform: rotate(var(--icon-rotate, 0deg));
932
932
  }
933
933
  100% {
934
- transform: rotate(360deg);
934
+ transform: rotate(calc(var(--icon-rotate, 0deg) + 360deg));
935
935
  }
936
936
  }
937
937
  @media (prefers-reduced-motion: reduce) {
@@ -16330,6 +16330,21 @@ body.sd-tour-active .sd-tour-popover * {
16330
16330
  min-width: 0;
16331
16331
  border-radius: 4px;
16332
16332
  }
16333
+ .sd-json-form-chips {
16334
+ display: inline-flex;
16335
+ flex-wrap: wrap;
16336
+ gap: 4px;
16337
+ align-items: center;
16338
+ }
16339
+ .sd-json-form-chips .sd-checkbox {
16340
+ margin-right: 0;
16341
+ padding: 2px 6px;
16342
+ border: 1px solid var(--sd-color-neutral-3);
16343
+ border-radius: 4px;
16344
+ }
16345
+ .sd-json-form-chips .sd-checkbox-checked {
16346
+ border-color: rgb(var(--sd-primary-6));
16347
+ }
16333
16348
 
16334
16349
  .sd-ellipsis {
16335
16350
  display: inline-block;
@@ -19884,8 +19899,8 @@ body.sd-tour-active .sd-tour-popover * {
19884
19899
  [sd-theme=light] [class$=-calendar--default-theme]:is(.sd-calendar--sm, .sd-calendar--lg) .sd-calendar__scrollable--month-view .sd-calendar__cell--selected .sd-calendar__cell-date {
19885
19900
  background-color: color-mix(in srgb, var(--sd-calendar-primary-color) 40%, transparent);
19886
19901
  }
19887
- .sd-calendar--default-theme .sd-calendar__cell--out-of-scope .sd-calendar__cell-date,
19888
- [class$=-calendar--default-theme] .sd-calendar__cell--out-of-scope .sd-calendar__cell-date {
19902
+ .sd-calendar--default-theme .sd-calendar__cell--out-of-range .sd-calendar__cell-date,
19903
+ [class$=-calendar--default-theme] .sd-calendar__cell--out-of-range .sd-calendar__cell-date {
19889
19904
  opacity: 0.4;
19890
19905
  }
19891
19906
  .sd-calendar--default-theme .sd-calendar__scrollable--month-view .sd-calendar__cell-events,
@@ -22318,7 +22333,7 @@ body.sd-tour-active .sd-tour-popover * {
22318
22333
  margin-left: -10px;
22319
22334
  }
22320
22335
  .sd-avatar-group-popover .sd-avatar:not(:first-child) {
22321
- margin-left: 4px;
22336
+ margin-left: 4px !important;
22322
22337
  }
22323
22338
 
22324
22339
  /**********************************************
@@ -10,8 +10,8 @@ var input_password_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
10
10
  __name: "input-password",
11
11
  props: {
12
12
  /**
13
- * @zh 是否可见,受控属性
14
- * @en Whether is visible
13
+ * @zh 是否为掩码(隐藏)状态,受控属性。true 表示输入框显示为密码掩码态(type=password,显示 eye-invisible 图标)
14
+ * @en Whether the input is in the masked (hidden) state. `true` renders the input masked (type=password, shows the eye-invisible icon)
15
15
  * @vModel
16
16
  */
17
17
  visibility: {
@@ -19,8 +19,8 @@ var input_password_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
19
19
  default: void 0
20
20
  },
21
21
  /**
22
- * @zh 默认是否可见,非受控
23
- * @en Default visibility
22
+ * @zh 默认是否为掩码状态,非受控
23
+ * @en Whether the input is masked by default
24
24
  */
25
25
  defaultVisibility: {
26
26
  type: Boolean,
@@ -1,7 +1,7 @@
1
1
  import _objectSpread2 from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/objectSpread2.js";
2
2
  import { getPrefixCls } from "../_utils/global-config.js";
3
3
  import Input from "../input/index.js";
4
- import { formatInputMask, resolveDeletion } from "./mask-engine.js";
4
+ import { formatInputMask, resolveDeletion, stripMaskPlaceholders } from "./mask-engine.js";
5
5
  import { inputMaskPresets } from "./presets.js";
6
6
  import { computed, createBlock, createSlots, defineComponent, mergeProps, nextTick, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, unref, useAttrs, watch, withCtx } from "vue";
7
7
  //#region components/input-mask/input-mask.vue?vue&type=script&setup=true&lang.ts
@@ -148,6 +148,13 @@ var input_mask_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
148
148
  if (nextComplete && !complete.value) emit("complete", value);
149
149
  complete.value = nextComplete;
150
150
  };
151
+ const toCommittedValue = (value) => {
152
+ if (!effectiveMask.value) return value;
153
+ return stripMaskPlaceholders(value, effectiveMask.value, {
154
+ maskChar: effectiveMaskChar.value,
155
+ formatChars: effectiveFormatChars.value
156
+ });
157
+ };
151
158
  const commitValue = (rawValue) => {
152
159
  var _input$selectionStart, _props$beforeMaskedVa, _props$beforeMaskedVa2;
153
160
  const input = getInputElement();
@@ -183,7 +190,8 @@ var input_mask_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
183
190
  }
184
191
  } else {
185
192
  const value = normalizePresetValue(rawValue, innerValue.value);
186
- const cursor = rawCursor === rawValue.length ? value.length : Math.min(rawCursor, value.length);
193
+ const rejectedInsertion = value === innerValue.value && rawValue.length === innerValue.value.length + 1;
194
+ const cursor = rawCursor === rawValue.length ? value.length : Math.min(Math.max(rawCursor - (rejectedInsertion ? 1 : 0), 0), value.length);
187
195
  nextState = {
188
196
  value,
189
197
  selection: {
@@ -195,11 +203,14 @@ var input_mask_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
195
203
  nextState = (_props$beforeMaskedVa = (_props$beforeMaskedVa2 = props.beforeMaskedValueChange) === null || _props$beforeMaskedVa2 === void 0 ? void 0 : _props$beforeMaskedVa2.call(props, nextState, previousState)) !== null && _props$beforeMaskedVa !== void 0 ? _props$beforeMaskedVa : nextState;
196
204
  innerValue.value = nextState.value;
197
205
  lastSelection.value = nextState.selection;
198
- emit("update:modelValue", nextState.value);
199
- syncComplete(nextState.value, nextComplete);
206
+ const committedValue = toCommittedValue(nextState.value);
207
+ emit("update:modelValue", committedValue);
208
+ syncComplete(committedValue, nextComplete);
200
209
  nextTick(() => {
201
- const element = getInputElement();
202
- if (focused.value && element && nextState.selection) element.setSelectionRange(nextState.selection.start, nextState.selection.end);
210
+ nextTick(() => {
211
+ const element = getInputElement();
212
+ if (focused.value && element && nextState.selection) element.setSelectionRange(nextState.selection.start, nextState.selection.end);
213
+ });
203
214
  });
204
215
  };
205
216
  const handleModelUpdate = (value) => commitValue(value);
@@ -234,6 +245,10 @@ var input_mask_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
234
245
  const input = getInputElement();
235
246
  if (input) trackedEvents.forEach((event) => input.addEventListener(event, updateSelectionFromDom));
236
247
  document.addEventListener("selectionchange", updateSelectionFromDom);
248
+ if (effectiveMask.value) {
249
+ const { complete: initialComplete } = applyNormalization(innerValue.value);
250
+ syncComplete(toCommittedValue(innerValue.value), initialComplete);
251
+ }
237
252
  });
238
253
  onBeforeUnmount(() => {
239
254
  const input = getInputElement();
@@ -241,11 +256,10 @@ var input_mask_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
241
256
  document.removeEventListener("selectionchange", updateSelectionFromDom);
242
257
  });
243
258
  watch(() => props.modelValue, (value) => {
244
- if (value === void 0) return;
245
259
  const { value: next, complete: nextComplete } = applyNormalization(value !== null && value !== void 0 ? value : "");
246
260
  innerValue.value = next;
247
- if (next !== value) emit("update:modelValue", next);
248
- syncComplete(next, nextComplete);
261
+ if (next !== value) emit("update:modelValue", toCommittedValue(next));
262
+ syncComplete(toCommittedValue(next), nextComplete);
249
263
  });
250
264
  watch([
251
265
  effectiveMask,
@@ -256,8 +270,8 @@ var input_mask_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
256
270
  const { value: next, complete: nextComplete } = applyNormalization(innerValue.value);
257
271
  const changed = next !== innerValue.value;
258
272
  innerValue.value = next;
259
- if (changed) emit("update:modelValue", next);
260
- syncComplete(next, nextComplete);
273
+ if (changed) emit("update:modelValue", toCommittedValue(next));
274
+ syncComplete(toCommittedValue(next), nextComplete);
261
275
  });
262
276
  __expose({
263
277
  get inputRef() {
@@ -10,6 +10,10 @@ export interface FormatMaskResult {
10
10
  complete: boolean;
11
11
  }
12
12
  export declare const defaultInputMaskFormatChars: Readonly<Record<string, RegExp>>;
13
+ export declare function stripMaskPlaceholders(value: string, mask: InputMaskPattern, options?: {
14
+ maskChar?: string | null;
15
+ formatChars?: Readonly<Record<string, RegExp>>;
16
+ }): string;
13
17
  export declare function formatInputMask(rawValue: string, rawCursor: number | null, mask: InputMaskPattern, options: FormatMaskOptions): FormatMaskResult;
14
18
  export declare function resolveDeletion(previousValue: string, previousSelection: InputMaskSelection | null, rawValue: string, rawCursor: number, mask: InputMaskPattern, formatChars?: Readonly<Record<string, RegExp>>, maskChar?: string | null): {
15
19
  value: string;
@@ -92,6 +92,17 @@ var renderMask = (tokens, values, maskChar, showMask) => {
92
92
  if (!values.length && !showMask) return "";
93
93
  return buildLayout(tokens, values, maskChar, showMask).map((position) => position.char).join("");
94
94
  };
95
+ /**
96
+ * Removes unfilled placeholder characters from a rendered fixed-mask value,
97
+ * keeping only the filled editable characters plus literals. This mirrors the
98
+ * value react-input-mask consumers read back: the committed value never
99
+ * contains placeholder characters.
100
+ */
101
+ function stripMaskPlaceholders(value, mask, options = {}) {
102
+ var _options$maskChar;
103
+ const tokens = parseMask(mask, mergeFormatChars(options.formatChars));
104
+ return renderMask(tokens, readEditableCharacters(value, tokens, (_options$maskChar = options.maskChar) !== null && _options$maskChar !== void 0 ? _options$maskChar : null), null, true);
105
+ }
95
106
  var sliceToGraphemeBoundary = (value, cursor) => {
96
107
  const graphemeIndex = codeUnitToGraphemeIndex(value, cursor);
97
108
  return value.slice(0, graphemeIndexToCodeUnit(value, graphemeIndex));
@@ -173,4 +184,4 @@ function resolveDeletion(previousValue, previousSelection, rawValue, rawCursor,
173
184
  };
174
185
  }
175
186
  //#endregion
176
- export { defaultInputMaskFormatChars, formatInputMask, resolveDeletion };
187
+ export { defaultInputMaskFormatChars, formatInputMask, resolveDeletion, stripMaskPlaceholders };
@@ -50,6 +50,10 @@ declare const InputNumber: {
50
50
  type: BooleanConstructor;
51
51
  default: boolean;
52
52
  };
53
+ stringMode: {
54
+ type: BooleanConstructor;
55
+ default: boolean;
56
+ };
53
57
  size: import("vue").PropType<import("../index.ts").Size>;
54
58
  allowClear: {
55
59
  type: BooleanConstructor;
@@ -626,6 +630,7 @@ declare const InputNumber: {
626
630
  step: number;
627
631
  min: number;
628
632
  hideButton: boolean;
633
+ stringMode: boolean;
629
634
  modelEvent: "change" | "input";
630
635
  }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
631
636
  P: {};
@@ -677,6 +682,10 @@ declare const InputNumber: {
677
682
  type: BooleanConstructor;
678
683
  default: boolean;
679
684
  };
685
+ stringMode: {
686
+ type: BooleanConstructor;
687
+ default: boolean;
688
+ };
680
689
  size: import("vue").PropType<import("../index.ts").Size>;
681
690
  allowClear: {
682
691
  type: BooleanConstructor;
@@ -1245,6 +1254,7 @@ declare const InputNumber: {
1245
1254
  step: number;
1246
1255
  min: number;
1247
1256
  hideButton: boolean;
1257
+ stringMode: boolean;
1248
1258
  modelEvent: "change" | "input";
1249
1259
  }>;
1250
1260
  __isFragment?: never;
@@ -1293,6 +1303,10 @@ declare const InputNumber: {
1293
1303
  type: BooleanConstructor;
1294
1304
  default: boolean;
1295
1305
  };
1306
+ stringMode: {
1307
+ type: BooleanConstructor;
1308
+ default: boolean;
1309
+ };
1296
1310
  size: import("vue").PropType<import("../index.ts").Size>;
1297
1311
  allowClear: {
1298
1312
  type: BooleanConstructor;
@@ -1869,6 +1883,7 @@ declare const InputNumber: {
1869
1883
  step: number;
1870
1884
  min: number;
1871
1885
  hideButton: boolean;
1886
+ stringMode: boolean;
1872
1887
  modelEvent: "change" | "input";
1873
1888
  }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
1874
1889
  $slots: {
@@ -63,6 +63,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
63
63
  type: BooleanConstructor;
64
64
  default: boolean;
65
65
  };
66
+ stringMode: {
67
+ type: BooleanConstructor;
68
+ default: boolean;
69
+ };
66
70
  size: PropType<Size>;
67
71
  allowClear: {
68
72
  type: BooleanConstructor;
@@ -662,6 +666,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
662
666
  type: BooleanConstructor;
663
667
  default: boolean;
664
668
  };
669
+ stringMode: {
670
+ type: BooleanConstructor;
671
+ default: boolean;
672
+ };
665
673
  size: PropType<Size>;
666
674
  allowClear: {
667
675
  type: BooleanConstructor;
@@ -696,6 +704,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
696
704
  step: number;
697
705
  min: number;
698
706
  hideButton: boolean;
707
+ stringMode: boolean;
699
708
  modelEvent: "change" | "input";
700
709
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
701
710
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -64,6 +64,14 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
64
64
  type: Boolean,
65
65
  default: false
66
66
  },
67
+ /**
68
+ * @zh 开启高精度小数支持,update:modelValue 返回 string 类型;内部不再把值转换为 Number,避免超过 2^53 丢失精度
69
+ * @en Enables high-precision decimal support; update:modelValue emits string values. The accepted digit string is kept verbatim instead of being converted to Number, avoiding precision loss beyond Number.MAX_SAFE_INTEGER
70
+ */
71
+ stringMode: {
72
+ type: Boolean,
73
+ default: false
74
+ },
67
75
  size: String,
68
76
  allowClear: {
69
77
  type: Boolean,
@@ -90,6 +98,7 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
90
98
  },
91
99
  setup(__props, { expose: __expose, emit: __emit }) {
92
100
  var _props$modelValue, _props$modelValue2;
101
+ const DECIMAL_PATTERN = /^[-+]?(\d+(\.\d*)?|\.\d+)$/;
93
102
  NP.enableBoundaryChecking(false);
94
103
  const props = __props;
95
104
  const emit = __emit;
@@ -103,7 +112,7 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
103
112
  });
104
113
  const { mergedSize } = useSize(formSize);
105
114
  const { mergedAllowClear } = useAllowClear(toRef(props, "allowClear"));
106
- const valueMode = ref(typeof ((_props$modelValue = props.modelValue) !== null && _props$modelValue !== void 0 ? _props$modelValue : props.defaultValue) === "string" ? "string" : "number");
115
+ const valueMode = ref(props.stringMode || typeof ((_props$modelValue = props.modelValue) !== null && _props$modelValue !== void 0 ? _props$modelValue : props.defaultValue) === "string" ? "string" : "number");
107
116
  const mergedPrecision = computed(() => {
108
117
  if (isNumber(props.precision)) {
109
118
  const decimal = `${props.step}`.split(".")[1];
@@ -113,29 +122,35 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
113
122
  const getNumberValue = (value) => {
114
123
  var _props$parser, _props$parser2;
115
124
  if (isUndefined(value) || value === null || value === "") return void 0;
116
- if (typeof value === "number") return Number.isNaN(value) ? void 0 : value;
125
+ if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
117
126
  const normalizedValue = value.trim();
118
127
  if (!normalizedValue || /^[-.]$/.test(normalizedValue)) return void 0;
119
128
  const parsed = Number((_props$parser = (_props$parser2 = props.parser) === null || _props$parser2 === void 0 ? void 0 : _props$parser2.call(props, normalizedValue)) !== null && _props$parser !== void 0 ? _props$parser : normalizedValue);
120
- return Number.isNaN(parsed) ? void 0 : parsed;
129
+ return Number.isFinite(parsed) ? parsed : void 0;
130
+ };
131
+ const toPlainString = (number) => {
132
+ if (!isNumber(number)) return "";
133
+ return mergedPrecision.value ? number.toFixed(mergedPrecision.value) : String(number);
121
134
  };
122
135
  const getStringValue = (number) => {
123
136
  var _props$formatter, _props$formatter2;
124
- if (!isNumber(number)) return "";
125
- const value = mergedPrecision.value ? number.toFixed(mergedPrecision.value) : String(number);
137
+ const value = toPlainString(number);
126
138
  return (_props$formatter = (_props$formatter2 = props.formatter) === null || _props$formatter2 === void 0 ? void 0 : _props$formatter2.call(props, value)) !== null && _props$formatter !== void 0 ? _props$formatter : value;
127
139
  };
128
140
  const getDisplayValue = (value) => {
129
141
  if (typeof value === "string") {
130
142
  const normalizedValue = value.trim();
131
143
  if (!normalizedValue || /^[-.]$/.test(normalizedValue)) return value;
144
+ if (props.stringMode && DECIMAL_PATTERN.test(normalizedValue)) return normalizedValue;
132
145
  const parsed = getNumberValue(value);
133
- return isNumber(parsed) ? getStringValue(parsed) : value;
146
+ return isNumber(parsed) ? getStringValue(parsed) : "";
134
147
  }
148
+ if (typeof value === "number" && !Number.isFinite(value)) return "";
135
149
  return getStringValue(value !== null && value !== void 0 ? value : void 0);
136
150
  };
137
151
  const getModelValue = (value) => valueMode.value === "string" ? isUndefined(value) ? "" : String(value) : value;
138
152
  const innerValue = ref(getDisplayValue((_props$modelValue2 = props.modelValue) !== null && _props$modelValue2 !== void 0 ? _props$modelValue2 : props.defaultValue));
153
+ const rawText = ref(DECIMAL_PATTERN.test(innerValue.value) ? innerValue.value : "");
139
154
  const valueNumber = computed(() => getNumberValue(innerValue.value));
140
155
  const isMin = ref(isNumber(valueNumber.value) && valueNumber.value <= props.min);
141
156
  const isMax = ref(isNumber(valueNumber.value) && valueNumber.value >= props.max);
@@ -158,9 +173,16 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
158
173
  };
159
174
  const handleExceedRange = () => {
160
175
  const finalValue = getLegalValue(valueNumber.value);
161
- const stringValue = getStringValue(finalValue);
162
- if (finalValue !== valueNumber.value || innerValue.value !== stringValue) innerValue.value = stringValue;
163
- emit("update:modelValue", getModelValue(finalValue));
176
+ const clamped = finalValue !== valueNumber.value;
177
+ const keepRaw = props.stringMode && !clamped && DECIMAL_PATTERN.test(rawText.value);
178
+ if (!keepRaw) {
179
+ const stringValue = getStringValue(finalValue);
180
+ if (clamped || innerValue.value !== stringValue) innerValue.value = stringValue;
181
+ rawText.value = isNumber(finalValue) ? toPlainString(finalValue) : "";
182
+ }
183
+ const emitted = keepRaw ? rawText.value : getModelValue(finalValue);
184
+ emit("update:modelValue", emitted);
185
+ return emitted;
164
186
  };
165
187
  watch(() => [props.max, props.min], () => {
166
188
  handleExceedRange();
@@ -170,6 +192,7 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
170
192
  if (mergedDisabled.value || method === "plus" && isMax.value || method === "minus" && isMin.value) return;
171
193
  const nextValue = isNumber(valueNumber.value) ? getLegalValue(NP[method](valueNumber.value, props.step)) : props.min === -Infinity ? 0 : props.min;
172
194
  innerValue.value = getStringValue(nextValue);
195
+ rawText.value = toPlainString(nextValue);
173
196
  updateNumberStatus(nextValue);
174
197
  const emittedValue = getModelValue(nextValue);
175
198
  emit("update:modelValue", emittedValue);
@@ -179,6 +202,7 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
179
202
  var _inputRef$value;
180
203
  event.preventDefault();
181
204
  if (props.readonly) return;
205
+ if (mergedDisabled.value || method === "plus" && isMax.value || method === "minus" && isMin.value) return;
182
206
  (_inputRef$value = inputRef.value) === null || _inputRef$value === void 0 || _inputRef$value.focus();
183
207
  nextStep(method, event);
184
208
  if (needRepeat) repeatTimer = window.setTimeout(() => event.target.dispatchEvent(event), repeatTimer ? SPEED : FIRST_DELAY);
@@ -187,11 +211,12 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
187
211
  var _props$parser3, _props$parser4;
188
212
  const normalizedValue = value.trim().replace(/。/g, ".");
189
213
  const parsedValue = (_props$parser3 = (_props$parser4 = props.parser) === null || _props$parser4 === void 0 ? void 0 : _props$parser4.call(props, normalizedValue)) !== null && _props$parser3 !== void 0 ? _props$parser3 : normalizedValue;
190
- if (isNumber(Number(parsedValue)) || /^[-.]$/.test(String(parsedValue))) {
214
+ if (parsedValue === "" || Number.isFinite(Number(parsedValue)) || /^[-.]$/.test(String(parsedValue))) {
191
215
  var _props$formatter3, _props$formatter4;
216
+ rawText.value = String(parsedValue);
192
217
  innerValue.value = (_props$formatter3 = (_props$formatter4 = props.formatter) === null || _props$formatter4 === void 0 ? void 0 : _props$formatter4.call(props, parsedValue)) !== null && _props$formatter3 !== void 0 ? _props$formatter3 : String(parsedValue);
193
218
  updateNumberStatus(valueNumber.value);
194
- const emittedValue = getModelValue(valueNumber.value);
219
+ const emittedValue = getEmittedValue();
195
220
  emit("input", emittedValue, innerValue.value, event);
196
221
  if (props.modelEvent === "input") {
197
222
  emit("update:modelValue", emittedValue);
@@ -199,16 +224,21 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
199
224
  }
200
225
  }
201
226
  };
227
+ const getEmittedValue = () => {
228
+ if (props.stringMode && DECIMAL_PATTERN.test(rawText.value)) return rawText.value;
229
+ return getModelValue(valueNumber.value);
230
+ };
202
231
  const handleFocus = (event) => emit("focus", event);
203
232
  const handleChange = (value, event) => {
204
233
  if (event instanceof MouseEvent && !value) return;
205
- handleExceedRange();
206
- emit("change", getModelValue(valueNumber.value), event);
234
+ const emitted = handleExceedRange();
235
+ emit("change", emitted, event);
207
236
  };
208
237
  const handleBlur = (event) => emit("blur", event);
209
238
  const handleClear = (event) => {
210
239
  var _eventHandlers$value, _eventHandlers$value$;
211
240
  innerValue.value = "";
241
+ rawText.value = "";
212
242
  const emittedValue = getModelValue(void 0);
213
243
  emit("update:modelValue", emittedValue);
214
244
  emit("change", emittedValue, event);
@@ -227,14 +257,17 @@ var input_number_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
227
257
  if (!event.defaultPrevented) keyDownHandler(event);
228
258
  };
229
259
  watch(() => props.modelValue, (value) => {
230
- if (typeof value === "string") valueMode.value = "string";
260
+ if (props.stringMode) valueMode.value = "string";
261
+ else if (typeof value === "string") valueMode.value = "string";
231
262
  else if (typeof value === "number") valueMode.value = "number";
232
263
  const nextNumberValue = getNumberValue(value);
233
264
  if (value !== innerValue.value && nextNumberValue !== valueNumber.value) {
234
265
  innerValue.value = getDisplayValue(value);
266
+ rawText.value = DECIMAL_PATTERN.test(innerValue.value) ? innerValue.value : "";
235
267
  updateNumberStatus(nextNumberValue);
236
268
  } else if (value === "" && innerValue.value !== "") {
237
269
  innerValue.value = "";
270
+ rawText.value = "";
238
271
  updateNumberStatus(void 0);
239
272
  }
240
273
  });
@@ -4,16 +4,15 @@ import _JsonForm from './json-form.vue';
4
4
  declare const JsonForm: {
5
5
  new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<{
6
6
  schemas: import("./types").JsonFormA2UI_0_9_1ComponentNode[] | import("./types").JsonFormSchema<import("./types").JsonFormComponentType<{}>, {}>[];
7
+ modelValue?: import("./types").JsonFormModel;
7
8
  adapter?: import("./types").JsonFormAdapter;
8
9
  model?: import("./types").JsonFormModel;
9
10
  hideLabel?: boolean;
10
11
  hideAsterisk?: boolean;
11
12
  showColon?: boolean;
12
13
  component?: string | import("vue").Component;
13
- } & {
14
- modelValue?: import("./types").JsonFormModel | undefined;
15
14
  }> & Readonly<{
16
- "onUpdate:modelValue"?: ((value: import("./types").JsonFormModel | undefined) => any) | undefined;
15
+ "onUpdate:modelValue"?: ((value: import("./types").JsonFormModel) => any) | undefined;
17
16
  }>, {
18
17
  validate: (callback?: ((errors: undefined | Record<string, import("../index.ts").ValidatedError>) => void) | undefined) => Promise<Record<string, import("../index.ts").ValidatedError> | undefined> | undefined;
19
18
  validateField: (field: string | string[], callback?: ((errors: undefined | Record<string, import("../index.ts").ValidatedError>) => void) | undefined) => Promise<Record<string, import("../index.ts").ValidatedError> | undefined> | undefined;
@@ -22,9 +21,10 @@ declare const JsonForm: {
22
21
  setFields: (data: Record<string, import("../form/interface.ts").FieldData>) => void | undefined;
23
22
  scrollToField: (field: string) => void | undefined;
24
23
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
25
- "update:modelValue": (value: import("./types").JsonFormModel | undefined) => any;
24
+ "update:modelValue": (value: import("./types").JsonFormModel) => any;
26
25
  }, import("vue").PublicProps, {
27
26
  component: string | import("vue").Component;
27
+ modelValue: import("./types").JsonFormModel;
28
28
  showColon: boolean;
29
29
  hideLabel: boolean;
30
30
  hideAsterisk: boolean;
@@ -39,16 +39,15 @@ declare const JsonForm: {
39
39
  Defaults: {};
40
40
  }, Readonly<{
41
41
  schemas: import("./types").JsonFormA2UI_0_9_1ComponentNode[] | import("./types").JsonFormSchema<import("./types").JsonFormComponentType<{}>, {}>[];
42
+ modelValue?: import("./types").JsonFormModel;
42
43
  adapter?: import("./types").JsonFormAdapter;
43
44
  model?: import("./types").JsonFormModel;
44
45
  hideLabel?: boolean;
45
46
  hideAsterisk?: boolean;
46
47
  showColon?: boolean;
47
48
  component?: string | import("vue").Component;
48
- } & {
49
- modelValue?: import("./types").JsonFormModel | undefined;
50
49
  }> & Readonly<{
51
- "onUpdate:modelValue"?: ((value: import("./types").JsonFormModel | undefined) => any) | undefined;
50
+ "onUpdate:modelValue"?: ((value: import("./types").JsonFormModel) => any) | undefined;
52
51
  }>, {
53
52
  validate: (callback?: ((errors: undefined | Record<string, import("../index.ts").ValidatedError>) => void) | undefined) => Promise<Record<string, import("../index.ts").ValidatedError> | undefined> | undefined;
54
53
  validateField: (field: string | string[], callback?: ((errors: undefined | Record<string, import("../index.ts").ValidatedError>) => void) | undefined) => Promise<Record<string, import("../index.ts").ValidatedError> | undefined> | undefined;
@@ -58,6 +57,7 @@ declare const JsonForm: {
58
57
  scrollToField: (field: string) => void | undefined;
59
58
  }, {}, {}, {}, {
60
59
  component: string | import("vue").Component;
60
+ modelValue: import("./types").JsonFormModel;
61
61
  showColon: boolean;
62
62
  hideLabel: boolean;
63
63
  hideAsterisk: boolean;
@@ -69,16 +69,15 @@ declare const JsonForm: {
69
69
  __isSuspense?: never;
70
70
  } & import("vue").ComponentOptionsBase<Readonly<{
71
71
  schemas: import("./types").JsonFormA2UI_0_9_1ComponentNode[] | import("./types").JsonFormSchema<import("./types").JsonFormComponentType<{}>, {}>[];
72
+ modelValue?: import("./types").JsonFormModel;
72
73
  adapter?: import("./types").JsonFormAdapter;
73
74
  model?: import("./types").JsonFormModel;
74
75
  hideLabel?: boolean;
75
76
  hideAsterisk?: boolean;
76
77
  showColon?: boolean;
77
78
  component?: string | import("vue").Component;
78
- } & {
79
- modelValue?: import("./types").JsonFormModel | undefined;
80
79
  }> & Readonly<{
81
- "onUpdate:modelValue"?: ((value: import("./types").JsonFormModel | undefined) => any) | undefined;
80
+ "onUpdate:modelValue"?: ((value: import("./types").JsonFormModel) => any) | undefined;
82
81
  }>, {
83
82
  validate: (callback?: ((errors: undefined | Record<string, import("../index.ts").ValidatedError>) => void) | undefined) => Promise<Record<string, import("../index.ts").ValidatedError> | undefined> | undefined;
84
83
  validateField: (field: string | string[], callback?: ((errors: undefined | Record<string, import("../index.ts").ValidatedError>) => void) | undefined) => Promise<Record<string, import("../index.ts").ValidatedError> | undefined> | undefined;
@@ -87,9 +86,10 @@ declare const JsonForm: {
87
86
  setFields: (data: Record<string, import("../form/interface.ts").FieldData>) => void | undefined;
88
87
  scrollToField: (field: string) => void | undefined;
89
88
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
90
- "update:modelValue": (value: import("./types").JsonFormModel | undefined) => any;
89
+ "update:modelValue": (value: import("./types").JsonFormModel) => any;
91
90
  }, string, {
92
91
  component: string | import("vue").Component;
92
+ modelValue: import("./types").JsonFormModel;
93
93
  showColon: boolean;
94
94
  hideLabel: boolean;
95
95
  hideAsterisk: boolean;
@@ -1,5 +1,6 @@
1
1
  import { type JsonFormAdapter, type JsonFormModel, type JsonFormSchema } from './types';
2
2
  type __VLS_Props = {
3
+ modelValue: JsonFormModel;
3
4
  schema: JsonFormSchema<string>;
4
5
  adapter: JsonFormAdapter;
5
6
  components: Record<string, unknown>;
@@ -9,13 +10,9 @@ type __VLS_Props = {
9
10
  showColon?: boolean;
10
11
  };
11
12
  type __VLS_Slots = Record<string, (props?: Record<string, unknown>) => unknown>;
12
- type __VLS_ModelProps = {
13
- modelValue: JsonFormModel;
14
- };
15
- type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
16
- declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
14
  "update:modelValue": (value: JsonFormModel) => any;
18
- }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
15
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
16
  "onUpdate:modelValue"?: ((value: JsonFormModel) => any) | undefined;
20
17
  }>, {
21
18
  showColon: boolean;