@element-plus/nightly 0.0.20260323 → 0.0.20260324

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 (312) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.full.js +92 -19
  3. package/dist/index.full.min.js +4 -4
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +4 -4
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +92 -19
  8. package/dist/locale/af.js +1 -1
  9. package/dist/locale/af.min.js +1 -1
  10. package/dist/locale/af.min.mjs +1 -1
  11. package/dist/locale/af.mjs +1 -1
  12. package/dist/locale/ar-eg.js +1 -1
  13. package/dist/locale/ar-eg.min.js +1 -1
  14. package/dist/locale/ar-eg.min.mjs +1 -1
  15. package/dist/locale/ar-eg.mjs +1 -1
  16. package/dist/locale/ar.js +1 -1
  17. package/dist/locale/ar.min.js +1 -1
  18. package/dist/locale/ar.min.mjs +1 -1
  19. package/dist/locale/ar.mjs +1 -1
  20. package/dist/locale/az.js +1 -1
  21. package/dist/locale/az.min.js +1 -1
  22. package/dist/locale/az.min.mjs +1 -1
  23. package/dist/locale/az.mjs +1 -1
  24. package/dist/locale/bg.js +1 -1
  25. package/dist/locale/bg.min.js +1 -1
  26. package/dist/locale/bg.min.mjs +1 -1
  27. package/dist/locale/bg.mjs +1 -1
  28. package/dist/locale/bn.js +1 -1
  29. package/dist/locale/bn.min.js +1 -1
  30. package/dist/locale/bn.min.mjs +1 -1
  31. package/dist/locale/bn.mjs +1 -1
  32. package/dist/locale/ca.js +1 -1
  33. package/dist/locale/ca.min.js +1 -1
  34. package/dist/locale/ca.min.mjs +1 -1
  35. package/dist/locale/ca.mjs +1 -1
  36. package/dist/locale/ckb.js +1 -1
  37. package/dist/locale/ckb.min.js +1 -1
  38. package/dist/locale/ckb.min.mjs +1 -1
  39. package/dist/locale/ckb.mjs +1 -1
  40. package/dist/locale/cs.js +1 -1
  41. package/dist/locale/cs.min.js +1 -1
  42. package/dist/locale/cs.min.mjs +1 -1
  43. package/dist/locale/cs.mjs +1 -1
  44. package/dist/locale/da.js +1 -1
  45. package/dist/locale/da.min.js +1 -1
  46. package/dist/locale/da.min.mjs +1 -1
  47. package/dist/locale/da.mjs +1 -1
  48. package/dist/locale/de.js +1 -1
  49. package/dist/locale/de.min.js +1 -1
  50. package/dist/locale/de.min.mjs +1 -1
  51. package/dist/locale/de.mjs +1 -1
  52. package/dist/locale/el.js +1 -1
  53. package/dist/locale/el.min.js +1 -1
  54. package/dist/locale/el.min.mjs +1 -1
  55. package/dist/locale/el.mjs +1 -1
  56. package/dist/locale/en.js +1 -1
  57. package/dist/locale/en.min.js +1 -1
  58. package/dist/locale/en.min.mjs +1 -1
  59. package/dist/locale/en.mjs +1 -1
  60. package/dist/locale/eo.js +1 -1
  61. package/dist/locale/eo.min.js +1 -1
  62. package/dist/locale/eo.min.mjs +1 -1
  63. package/dist/locale/eo.mjs +1 -1
  64. package/dist/locale/es.js +1 -1
  65. package/dist/locale/es.min.js +1 -1
  66. package/dist/locale/es.min.mjs +1 -1
  67. package/dist/locale/es.mjs +1 -1
  68. package/dist/locale/et.js +1 -1
  69. package/dist/locale/et.min.js +1 -1
  70. package/dist/locale/et.min.mjs +1 -1
  71. package/dist/locale/et.mjs +1 -1
  72. package/dist/locale/eu.js +1 -1
  73. package/dist/locale/eu.min.js +1 -1
  74. package/dist/locale/eu.min.mjs +1 -1
  75. package/dist/locale/eu.mjs +1 -1
  76. package/dist/locale/fa.js +1 -1
  77. package/dist/locale/fa.min.js +1 -1
  78. package/dist/locale/fa.min.mjs +1 -1
  79. package/dist/locale/fa.mjs +1 -1
  80. package/dist/locale/fi.js +1 -1
  81. package/dist/locale/fi.min.js +1 -1
  82. package/dist/locale/fi.min.mjs +1 -1
  83. package/dist/locale/fi.mjs +1 -1
  84. package/dist/locale/fr.js +1 -1
  85. package/dist/locale/fr.min.js +1 -1
  86. package/dist/locale/fr.min.mjs +1 -1
  87. package/dist/locale/fr.mjs +1 -1
  88. package/dist/locale/he.js +1 -1
  89. package/dist/locale/he.min.js +1 -1
  90. package/dist/locale/he.min.mjs +1 -1
  91. package/dist/locale/he.mjs +1 -1
  92. package/dist/locale/hi.js +1 -1
  93. package/dist/locale/hi.min.js +1 -1
  94. package/dist/locale/hi.min.mjs +1 -1
  95. package/dist/locale/hi.mjs +1 -1
  96. package/dist/locale/hr.js +1 -1
  97. package/dist/locale/hr.min.js +1 -1
  98. package/dist/locale/hr.min.mjs +1 -1
  99. package/dist/locale/hr.mjs +1 -1
  100. package/dist/locale/hu.js +1 -1
  101. package/dist/locale/hu.min.js +1 -1
  102. package/dist/locale/hu.min.mjs +1 -1
  103. package/dist/locale/hu.mjs +1 -1
  104. package/dist/locale/hy-am.js +1 -1
  105. package/dist/locale/hy-am.min.js +1 -1
  106. package/dist/locale/hy-am.min.mjs +1 -1
  107. package/dist/locale/hy-am.mjs +1 -1
  108. package/dist/locale/id.js +1 -1
  109. package/dist/locale/id.min.js +1 -1
  110. package/dist/locale/id.min.mjs +1 -1
  111. package/dist/locale/id.mjs +1 -1
  112. package/dist/locale/it.js +1 -1
  113. package/dist/locale/it.min.js +1 -1
  114. package/dist/locale/it.min.mjs +1 -1
  115. package/dist/locale/it.mjs +1 -1
  116. package/dist/locale/ja.js +1 -1
  117. package/dist/locale/ja.min.js +1 -1
  118. package/dist/locale/ja.min.mjs +1 -1
  119. package/dist/locale/ja.mjs +1 -1
  120. package/dist/locale/kk.js +1 -1
  121. package/dist/locale/kk.min.js +1 -1
  122. package/dist/locale/kk.min.mjs +1 -1
  123. package/dist/locale/kk.mjs +1 -1
  124. package/dist/locale/km.js +1 -1
  125. package/dist/locale/km.min.js +1 -1
  126. package/dist/locale/km.min.mjs +1 -1
  127. package/dist/locale/km.mjs +1 -1
  128. package/dist/locale/ko.js +1 -1
  129. package/dist/locale/ko.min.js +1 -1
  130. package/dist/locale/ko.min.mjs +1 -1
  131. package/dist/locale/ko.mjs +1 -1
  132. package/dist/locale/ku.js +1 -1
  133. package/dist/locale/ku.min.js +1 -1
  134. package/dist/locale/ku.min.mjs +1 -1
  135. package/dist/locale/ku.mjs +1 -1
  136. package/dist/locale/ky.js +1 -1
  137. package/dist/locale/ky.min.js +1 -1
  138. package/dist/locale/ky.min.mjs +1 -1
  139. package/dist/locale/ky.mjs +1 -1
  140. package/dist/locale/lo.js +1 -1
  141. package/dist/locale/lo.min.js +1 -1
  142. package/dist/locale/lo.min.mjs +1 -1
  143. package/dist/locale/lo.mjs +1 -1
  144. package/dist/locale/lt.js +1 -1
  145. package/dist/locale/lt.min.js +1 -1
  146. package/dist/locale/lt.min.mjs +1 -1
  147. package/dist/locale/lt.mjs +1 -1
  148. package/dist/locale/lv.js +1 -1
  149. package/dist/locale/lv.min.js +1 -1
  150. package/dist/locale/lv.min.mjs +1 -1
  151. package/dist/locale/lv.mjs +1 -1
  152. package/dist/locale/mg.js +1 -1
  153. package/dist/locale/mg.min.js +1 -1
  154. package/dist/locale/mg.min.mjs +1 -1
  155. package/dist/locale/mg.mjs +1 -1
  156. package/dist/locale/mn.js +1 -1
  157. package/dist/locale/mn.min.js +1 -1
  158. package/dist/locale/mn.min.mjs +1 -1
  159. package/dist/locale/mn.mjs +1 -1
  160. package/dist/locale/ms.js +1 -1
  161. package/dist/locale/ms.min.js +1 -1
  162. package/dist/locale/ms.min.mjs +1 -1
  163. package/dist/locale/ms.mjs +1 -1
  164. package/dist/locale/my.js +1 -1
  165. package/dist/locale/my.min.js +1 -1
  166. package/dist/locale/my.min.mjs +1 -1
  167. package/dist/locale/my.mjs +1 -1
  168. package/dist/locale/nb-no.js +1 -1
  169. package/dist/locale/nb-no.min.js +1 -1
  170. package/dist/locale/nb-no.min.mjs +1 -1
  171. package/dist/locale/nb-no.mjs +1 -1
  172. package/dist/locale/nl.js +1 -1
  173. package/dist/locale/nl.min.js +1 -1
  174. package/dist/locale/nl.min.mjs +1 -1
  175. package/dist/locale/nl.mjs +1 -1
  176. package/dist/locale/no.js +1 -1
  177. package/dist/locale/no.min.js +1 -1
  178. package/dist/locale/no.min.mjs +1 -1
  179. package/dist/locale/no.mjs +1 -1
  180. package/dist/locale/pa.js +1 -1
  181. package/dist/locale/pa.min.js +1 -1
  182. package/dist/locale/pa.min.mjs +1 -1
  183. package/dist/locale/pa.mjs +1 -1
  184. package/dist/locale/pl.js +1 -1
  185. package/dist/locale/pl.min.js +1 -1
  186. package/dist/locale/pl.min.mjs +1 -1
  187. package/dist/locale/pl.mjs +1 -1
  188. package/dist/locale/pt-br.js +1 -1
  189. package/dist/locale/pt-br.min.js +1 -1
  190. package/dist/locale/pt-br.min.mjs +1 -1
  191. package/dist/locale/pt-br.mjs +1 -1
  192. package/dist/locale/pt.js +1 -1
  193. package/dist/locale/pt.min.js +1 -1
  194. package/dist/locale/pt.min.mjs +1 -1
  195. package/dist/locale/pt.mjs +1 -1
  196. package/dist/locale/ro.js +1 -1
  197. package/dist/locale/ro.min.js +1 -1
  198. package/dist/locale/ro.min.mjs +1 -1
  199. package/dist/locale/ro.mjs +1 -1
  200. package/dist/locale/ru.js +1 -1
  201. package/dist/locale/ru.min.js +1 -1
  202. package/dist/locale/ru.min.mjs +1 -1
  203. package/dist/locale/ru.mjs +1 -1
  204. package/dist/locale/sk.js +1 -1
  205. package/dist/locale/sk.min.js +1 -1
  206. package/dist/locale/sk.min.mjs +1 -1
  207. package/dist/locale/sk.mjs +1 -1
  208. package/dist/locale/sl.js +1 -1
  209. package/dist/locale/sl.min.js +1 -1
  210. package/dist/locale/sl.min.mjs +1 -1
  211. package/dist/locale/sl.mjs +1 -1
  212. package/dist/locale/sr.js +1 -1
  213. package/dist/locale/sr.min.js +1 -1
  214. package/dist/locale/sr.min.mjs +1 -1
  215. package/dist/locale/sr.mjs +1 -1
  216. package/dist/locale/sv.js +1 -1
  217. package/dist/locale/sv.min.js +1 -1
  218. package/dist/locale/sv.min.mjs +1 -1
  219. package/dist/locale/sv.mjs +1 -1
  220. package/dist/locale/sw.js +1 -1
  221. package/dist/locale/sw.min.js +1 -1
  222. package/dist/locale/sw.min.mjs +1 -1
  223. package/dist/locale/sw.mjs +1 -1
  224. package/dist/locale/ta.js +1 -1
  225. package/dist/locale/ta.min.js +1 -1
  226. package/dist/locale/ta.min.mjs +1 -1
  227. package/dist/locale/ta.mjs +1 -1
  228. package/dist/locale/te.js +1 -1
  229. package/dist/locale/te.min.js +1 -1
  230. package/dist/locale/te.min.mjs +1 -1
  231. package/dist/locale/te.mjs +1 -1
  232. package/dist/locale/th.js +1 -1
  233. package/dist/locale/th.min.js +1 -1
  234. package/dist/locale/th.min.mjs +1 -1
  235. package/dist/locale/th.mjs +1 -1
  236. package/dist/locale/tk.js +1 -1
  237. package/dist/locale/tk.min.js +1 -1
  238. package/dist/locale/tk.min.mjs +1 -1
  239. package/dist/locale/tk.mjs +1 -1
  240. package/dist/locale/tr.js +1 -1
  241. package/dist/locale/tr.min.js +1 -1
  242. package/dist/locale/tr.min.mjs +1 -1
  243. package/dist/locale/tr.mjs +1 -1
  244. package/dist/locale/ug-cn.js +1 -1
  245. package/dist/locale/ug-cn.min.js +1 -1
  246. package/dist/locale/ug-cn.min.mjs +1 -1
  247. package/dist/locale/ug-cn.mjs +1 -1
  248. package/dist/locale/uk.js +1 -1
  249. package/dist/locale/uk.min.js +1 -1
  250. package/dist/locale/uk.min.mjs +1 -1
  251. package/dist/locale/uk.mjs +1 -1
  252. package/dist/locale/uz-uz.js +1 -1
  253. package/dist/locale/uz-uz.min.js +1 -1
  254. package/dist/locale/uz-uz.min.mjs +1 -1
  255. package/dist/locale/uz-uz.mjs +1 -1
  256. package/dist/locale/vi.js +1 -1
  257. package/dist/locale/vi.min.js +1 -1
  258. package/dist/locale/vi.min.mjs +1 -1
  259. package/dist/locale/vi.mjs +1 -1
  260. package/dist/locale/zh-cn.js +1 -1
  261. package/dist/locale/zh-cn.min.js +1 -1
  262. package/dist/locale/zh-cn.min.mjs +1 -1
  263. package/dist/locale/zh-cn.mjs +1 -1
  264. package/dist/locale/zh-hk.js +1 -1
  265. package/dist/locale/zh-hk.min.js +1 -1
  266. package/dist/locale/zh-hk.min.mjs +1 -1
  267. package/dist/locale/zh-hk.mjs +1 -1
  268. package/dist/locale/zh-mo.js +1 -1
  269. package/dist/locale/zh-mo.min.js +1 -1
  270. package/dist/locale/zh-mo.min.mjs +1 -1
  271. package/dist/locale/zh-mo.mjs +1 -1
  272. package/dist/locale/zh-tw.js +1 -1
  273. package/dist/locale/zh-tw.min.js +1 -1
  274. package/dist/locale/zh-tw.min.mjs +1 -1
  275. package/dist/locale/zh-tw.mjs +1 -1
  276. package/es/components/autocomplete/src/autocomplete.d.ts +6 -0
  277. package/es/components/dialog/src/dialog.vue.d.ts +6 -6
  278. package/es/components/dialog/src/dialog.vue_vue_type_script_setup_true_lang.mjs +6 -5
  279. package/es/components/dialog/src/dialog.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  280. package/es/components/dialog/src/dialog2.mjs.map +1 -1
  281. package/es/components/dialog/src/use-dialog.d.ts +2 -0
  282. package/es/components/dialog/src/use-dialog.mjs +8 -1
  283. package/es/components/dialog/src/use-dialog.mjs.map +1 -1
  284. package/es/components/input/src/input.d.ts +10 -0
  285. package/es/components/input/src/input.mjs +1 -0
  286. package/es/components/input/src/input.mjs.map +1 -1
  287. package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs +75 -11
  288. package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  289. package/es/components/input/src/input2.mjs.map +1 -1
  290. package/es/components/mention/src/mention.d.ts +6 -0
  291. package/es/version.mjs +1 -1
  292. package/es/version.mjs.map +1 -1
  293. package/lib/components/autocomplete/src/autocomplete.d.ts +6 -0
  294. package/lib/components/dialog/src/dialog.vue.d.ts +6 -6
  295. package/lib/components/dialog/src/dialog.vue_vue_type_script_setup_true_lang.js +6 -5
  296. package/lib/components/dialog/src/dialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  297. package/lib/components/dialog/src/dialog2.js.map +1 -1
  298. package/lib/components/dialog/src/use-dialog.d.ts +2 -0
  299. package/lib/components/dialog/src/use-dialog.js +8 -1
  300. package/lib/components/dialog/src/use-dialog.js.map +1 -1
  301. package/lib/components/input/src/input.d.ts +10 -0
  302. package/lib/components/input/src/input.js +1 -0
  303. package/lib/components/input/src/input.js.map +1 -1
  304. package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js +75 -11
  305. package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  306. package/lib/components/input/src/input2.js.map +1 -1
  307. package/lib/components/mention/src/mention.d.ts +6 -0
  308. package/lib/version.js +1 -1
  309. package/lib/version.js.map +1 -1
  310. package/package.json +2 -2
  311. package/tags.json +1 -1
  312. package/web-types.json +1 -1
@@ -1,4 +1,4 @@
1
- /*! Element Plus v0.0.20260323 */
1
+ /*! Element Plus v0.0.20260324 */
2
2
 
3
3
  (function(global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :
@@ -10478,7 +10478,7 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
10478
10478
 
10479
10479
  //#endregion
10480
10480
  //#region ../../packages/element-plus/version.ts
10481
- const version$1 = "0.0.20260323";
10481
+ const version$1 = "0.0.20260324";
10482
10482
 
10483
10483
  //#endregion
10484
10484
  //#region ../../packages/element-plus/make-installer.ts
@@ -14084,6 +14084,7 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14084
14084
  ]),
14085
14085
  default: () => mutable({})
14086
14086
  },
14087
+ countGraphemes: { type: definePropType(Function) },
14087
14088
  autofocus: Boolean,
14088
14089
  rows: {
14089
14090
  type: Number,
@@ -14254,7 +14255,6 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14254
14255
  const props = __props;
14255
14256
  const emit = __emit;
14256
14257
  const rawAttrs = (0, vue.useAttrs)();
14257
- const attrs = useAttrs();
14258
14258
  const slots = (0, vue.useSlots)();
14259
14259
  const containerKls = (0, vue.computed)(() => [
14260
14260
  props.type === "textarea" ? nsTextarea.b() : nsInput.b(),
@@ -14271,6 +14271,8 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14271
14271
  rawAttrs.class
14272
14272
  ]);
14273
14273
  const wrapperKls = (0, vue.computed)(() => [nsInput.e("wrapper"), nsInput.is("focus", isFocused.value)]);
14274
+ const attrs = useAttrs();
14275
+ const maxlength = (0, vue.computed)(() => props.maxlength?.toString());
14274
14276
  const { form: elForm, formItem: elFormItem } = useFormItem();
14275
14277
  const { inputId } = useFormItemInputId(props, { formItemContext: elFormItem });
14276
14278
  const inputSize = useFormSize();
@@ -14283,6 +14285,7 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14283
14285
  const passwordVisible = (0, vue.ref)(false);
14284
14286
  const countStyle = (0, vue.ref)();
14285
14287
  const textareaCalcStyle = (0, vue.shallowRef)(props.inputStyle);
14288
+ const saveValue = (0, vue.ref)("");
14286
14289
  const _ref = (0, vue.computed)(() => input.value || textarea.value);
14287
14290
  const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(_ref, {
14288
14291
  disabled: inputDisabled,
@@ -14303,9 +14306,12 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14303
14306
  const nativeInputValue = (0, vue.computed)(() => isNil(props.modelValue) ? "" : String(props.modelValue));
14304
14307
  const showClear = (0, vue.computed)(() => props.clearable && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (isFocused.value || hovering.value));
14305
14308
  const showPwdVisible = (0, vue.computed)(() => props.showPassword && !inputDisabled.value && !!nativeInputValue.value);
14306
- const isWordLimitVisible = (0, vue.computed)(() => props.showWordLimit && !!props.maxlength && (props.type === "text" || props.type === "textarea") && !inputDisabled.value && !props.readonly && !props.showPassword);
14307
- const textLength = (0, vue.computed)(() => nativeInputValue.value.length);
14308
- const inputExceed = (0, vue.computed)(() => !!isWordLimitVisible.value && textLength.value > Number(props.maxlength));
14309
+ const isWordLimitVisible = (0, vue.computed)(() => props.showWordLimit && !!maxlength.value && (props.type === "text" || props.type === "textarea") && !inputDisabled.value && !props.readonly && !props.showPassword);
14310
+ const textLength = (0, vue.computed)(() => {
14311
+ if (props.countGraphemes && props.showWordLimit) return props.countGraphemes(nativeInputValue.value);
14312
+ return nativeInputValue.value.length;
14313
+ });
14314
+ const inputExceed = (0, vue.computed)(() => !!isWordLimitVisible.value && textLength.value > Number(maxlength.value));
14309
14315
  const suffixVisible = (0, vue.computed)(() => !!slots.suffix || !!props.suffixIcon || showClear.value || props.showPassword || isWordLimitVisible.value || !!validateState.value && needStatusIcon.value);
14310
14316
  const hasModelModifiers = (0, vue.computed)(() => !!Object.keys(props.modelModifiers).length);
14311
14317
  const [recordCursor, setCursor] = useCursor(input);
@@ -14360,15 +14366,71 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14360
14366
  if (isComposing.value) return;
14361
14367
  const { lazy } = props.modelModifiers;
14362
14368
  let { value } = event.target;
14369
+ let shouldForceNativeUpdate = false;
14363
14370
  if (lazy) {
14364
14371
  emit(INPUT_EVENT, value);
14365
14372
  return;
14366
14373
  }
14367
14374
  value = formatValue(value);
14375
+ if (props.countGraphemes && maxlength.value != null) {
14376
+ const limit = Number(maxlength.value);
14377
+ const graphemes = props.countGraphemes(value);
14378
+ const saveGraphemes = props.countGraphemes(saveValue.value);
14379
+ if (graphemes > limit && graphemes > saveGraphemes) if (saveGraphemes > limit) {
14380
+ value = saveValue.value;
14381
+ shouldForceNativeUpdate = true;
14382
+ } else {
14383
+ const prevValue = saveValue.value;
14384
+ const nextValue = value;
14385
+ let prefixLen = 0;
14386
+ while (prefixLen < prevValue.length && prefixLen < nextValue.length && prevValue[prefixLen] === nextValue[prefixLen]) prefixLen++;
14387
+ let prevSuffixIndex = prevValue.length;
14388
+ let nextSuffixIndex = nextValue.length;
14389
+ while (prevSuffixIndex > prefixLen && nextSuffixIndex > prefixLen && prevValue[prevSuffixIndex - 1] === nextValue[nextSuffixIndex - 1]) {
14390
+ prevSuffixIndex--;
14391
+ nextSuffixIndex--;
14392
+ }
14393
+ const before = nextValue.slice(0, prefixLen);
14394
+ const removed = prevValue.slice(prefixLen, prevSuffixIndex);
14395
+ const inserted = nextValue.slice(prefixLen, nextSuffixIndex);
14396
+ const after = nextValue.slice(nextSuffixIndex);
14397
+ const baseCount = saveGraphemes - props.countGraphemes(removed);
14398
+ const availableInserted = Math.max(0, limit - baseCount);
14399
+ let acceptedInserted = "";
14400
+ if (availableInserted > 0) if (typeof Intl !== "undefined" && "Segmenter" in Intl) {
14401
+ const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
14402
+ for (const { segment } of segmenter.segment(inserted)) {
14403
+ const candidate = acceptedInserted + segment;
14404
+ if (props.countGraphemes(candidate) > availableInserted) break;
14405
+ acceptedInserted = candidate;
14406
+ }
14407
+ } else for (const char of Array.from(inserted)) {
14408
+ const candidate = acceptedInserted + char;
14409
+ if (props.countGraphemes(candidate) > availableInserted) break;
14410
+ acceptedInserted = candidate;
14411
+ }
14412
+ value = before + acceptedInserted + after;
14413
+ shouldForceNativeUpdate = true;
14414
+ }
14415
+ }
14368
14416
  if (String(value) === nativeInputValue.value) {
14369
- if (props.formatter) setNativeInputValue();
14417
+ if (props.formatter || shouldForceNativeUpdate) {
14418
+ const target = event.target;
14419
+ const blockedValue = target.value;
14420
+ const selectionStart = target.selectionStart;
14421
+ const selectionEnd = target.selectionEnd;
14422
+ setNativeInputValue();
14423
+ if (shouldForceNativeUpdate && _ref.value && selectionStart != null && selectionEnd != null) {
14424
+ const restoredValue = _ref.value.value;
14425
+ const afterTxt = blockedValue.slice(Math.max(0, selectionEnd));
14426
+ let caretPos = Math.min(selectionStart, restoredValue.length);
14427
+ if (afterTxt && restoredValue.endsWith(afterTxt)) caretPos = restoredValue.length - afterTxt.length;
14428
+ _ref.value.setSelectionRange(caretPos, caretPos);
14429
+ }
14430
+ }
14370
14431
  return;
14371
14432
  }
14433
+ saveValue.value = value;
14372
14434
  recordCursor();
14373
14435
  emit(UPDATE_MODEL_EVENT, value);
14374
14436
  emit(INPUT_EVENT, value);
@@ -14417,6 +14479,9 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14417
14479
  (0, vue.nextTick)(() => resizeTextarea());
14418
14480
  if (props.validateEvent) elFormItem?.validate?.("change").catch((err) => /* @__PURE__ */ debugWarn(err));
14419
14481
  });
14482
+ (0, vue.watch)(() => nativeInputValue.value, (val) => {
14483
+ saveValue.value = val;
14484
+ }, { immediate: true });
14420
14485
  (0, vue.watch)(nativeInputValue, (newValue) => {
14421
14486
  if (!_ref.value) return;
14422
14487
  const { trim, number } = props.modelModifiers;
@@ -14489,8 +14554,8 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14489
14554
  class: (0, vue.unref)(nsInput).e("inner")
14490
14555
  }, (0, vue.unref)(attrs), {
14491
14556
  name: __props.name,
14492
- minlength: __props.minlength,
14493
- maxlength: __props.maxlength,
14557
+ minlength: __props.countGraphemes ? void 0 : __props.minlength,
14558
+ maxlength: __props.countGraphemes ? void 0 : maxlength.value,
14494
14559
  type: __props.showPassword ? passwordVisible.value ? "text" : "password" : __props.type,
14495
14560
  disabled: (0, vue.unref)(inputDisabled),
14496
14561
  readonly: __props.readonly,
@@ -14548,7 +14613,7 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14548
14613
  isWordLimitVisible.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
14549
14614
  key: 3,
14550
14615
  class: (0, vue.normalizeClass)([(0, vue.unref)(nsInput).e("count"), (0, vue.unref)(nsInput).is("outside", __props.wordLimitPosition === "outside")])
14551
- }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("count-inner")) }, (0, vue.toDisplayString)(textLength.value) + " / " + (0, vue.toDisplayString)(__props.maxlength), 3)], 2)) : (0, vue.createCommentVNode)("v-if", true),
14616
+ }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("count-inner")) }, (0, vue.toDisplayString)(textLength.value) + " / " + (0, vue.toDisplayString)(maxlength.value), 3)], 2)) : (0, vue.createCommentVNode)("v-if", true),
14552
14617
  validateState.value && validateIcon.value && needStatusIcon.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), {
14553
14618
  key: 4,
14554
14619
  class: (0, vue.normalizeClass)([
@@ -14580,8 +14645,8 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14580
14645
  ]
14581
14646
  }, (0, vue.unref)(attrs), {
14582
14647
  name: __props.name,
14583
- minlength: __props.minlength,
14584
- maxlength: __props.maxlength,
14648
+ minlength: __props.countGraphemes ? void 0 : __props.minlength,
14649
+ maxlength: __props.countGraphemes ? void 0 : maxlength.value,
14585
14650
  tabindex: __props.tabindex,
14586
14651
  disabled: (0, vue.unref)(inputDisabled),
14587
14652
  readonly: __props.readonly,
@@ -14616,7 +14681,7 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`);
14616
14681
  key: 1,
14617
14682
  style: (0, vue.normalizeStyle)(countStyle.value),
14618
14683
  class: (0, vue.normalizeClass)([(0, vue.unref)(nsInput).e("count"), (0, vue.unref)(nsInput).is("outside", __props.wordLimitPosition === "outside")])
14619
- }, (0, vue.toDisplayString)(textLength.value) + " / " + (0, vue.toDisplayString)(__props.maxlength), 7)) : (0, vue.createCommentVNode)("v-if", true)
14684
+ }, (0, vue.toDisplayString)(textLength.value) + " / " + (0, vue.toDisplayString)(maxlength.value), 7)) : (0, vue.createCommentVNode)("v-if", true)
14620
14685
  ], 64))], 38);
14621
14686
  };
14622
14687
  }
@@ -31617,6 +31682,7 @@ var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat());
31617
31682
  const _draggable = (0, vue.computed)(() => (props.draggable ?? globalConfig.value?.draggable ?? false) && !props.fullscreen);
31618
31683
  const _alignCenter = (0, vue.computed)(() => props.alignCenter ?? globalConfig.value?.alignCenter ?? false);
31619
31684
  const _overflow = (0, vue.computed)(() => props.overflow ?? globalConfig.value?.overflow ?? false);
31685
+ const penetrable = (0, vue.computed)(() => props.modalPenetrable && !props.modal && !props.fullscreen);
31620
31686
  const overlayDialogStyle = (0, vue.computed)(() => {
31621
31687
  if (_alignCenter.value) return { display: "flex" };
31622
31688
  return {};
@@ -31708,6 +31774,10 @@ var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat());
31708
31774
  function onCloseRequested() {
31709
31775
  if (props.closeOnPressEscape) handleClose();
31710
31776
  }
31777
+ function bringToFront() {
31778
+ if (!visible.value || !penetrable.value || props.zIndex !== void 0) return;
31779
+ zIndex.value = nextZIndex();
31780
+ }
31711
31781
  (0, vue.watch)(() => props.zIndex, () => {
31712
31782
  zIndex.value = props.zIndex ?? nextZIndex();
31713
31783
  });
@@ -31754,6 +31824,7 @@ var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat());
31754
31824
  onCloseAutoFocus,
31755
31825
  onCloseRequested,
31756
31826
  onFocusoutPrevented,
31827
+ bringToFront,
31757
31828
  titleId,
31758
31829
  bodyId,
31759
31830
  closed,
@@ -31766,7 +31837,8 @@ var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat());
31766
31837
  _draggable,
31767
31838
  _alignCenter,
31768
31839
  _overflow,
31769
- closing
31840
+ closing,
31841
+ penetrable
31770
31842
  };
31771
31843
  };
31772
31844
 
@@ -31797,7 +31869,7 @@ var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat());
31797
31869
  const dialogRef = (0, vue.ref)();
31798
31870
  const headerRef = (0, vue.ref)();
31799
31871
  const dialogContentRef = (0, vue.ref)();
31800
- const { visible, titleId, bodyId, style, overlayDialogStyle, rendered, transitionConfig, zIndex, _draggable, _alignCenter, _overflow, handleClose, onModalClick, onOpenAutoFocus, onCloseAutoFocus, onCloseRequested, onFocusoutPrevented, closing } = useDialog(props, dialogRef);
31872
+ const { visible, titleId, bodyId, style, overlayDialogStyle, rendered, transitionConfig, zIndex, _draggable, _alignCenter, _overflow, penetrable, handleClose, onModalClick, onOpenAutoFocus, onCloseAutoFocus, onCloseRequested, onFocusoutPrevented, bringToFront, closing } = useDialog(props, dialogRef);
31801
31873
  (0, vue.provide)(dialogInjectionKey, {
31802
31874
  dialogRef,
31803
31875
  headerRef,
@@ -31807,7 +31879,6 @@ var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat());
31807
31879
  style
31808
31880
  });
31809
31881
  const overlayEvent = useSameTarget(onModalClick);
31810
- const penetrable = (0, vue.computed)(() => props.modalPenetrable && !props.modal && !props.fullscreen);
31811
31882
  const resetPosition = () => {
31812
31883
  dialogContentRef.value?.resetPosition();
31813
31884
  };
@@ -31829,7 +31900,7 @@ var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat());
31829
31900
  "overlay-class": [
31830
31901
  __props.modalClass ?? "",
31831
31902
  `${(0, vue.unref)(ns).namespace.value}-modal-dialog`,
31832
- (0, vue.unref)(ns).is("penetrable", penetrable.value)
31903
+ (0, vue.unref)(ns).is("penetrable", (0, vue.unref)(penetrable))
31833
31904
  ],
31834
31905
  "z-index": (0, vue.unref)(zIndex)
31835
31906
  }, {
@@ -31870,7 +31941,8 @@ var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat());
31870
31941
  "show-close": __props.showClose,
31871
31942
  title: __props.title,
31872
31943
  "aria-level": __props.headerAriaLevel,
31873
- onClose: (0, vue.unref)(handleClose)
31944
+ onClose: (0, vue.unref)(handleClose),
31945
+ onMousedown: (0, vue.unref)(bringToFront)
31874
31946
  }), (0, vue.createSlots)({
31875
31947
  header: (0, vue.withCtx)(() => [!_ctx.$slots.title ? (0, vue.renderSlot)(_ctx.$slots, "header", {
31876
31948
  key: 0,
@@ -31897,7 +31969,8 @@ var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat());
31897
31969
  "show-close",
31898
31970
  "title",
31899
31971
  "aria-level",
31900
- "onClose"
31972
+ "onClose",
31973
+ "onMousedown"
31901
31974
  ])) : (0, vue.createCommentVNode)("v-if", true)]),
31902
31975
  _: 3
31903
31976
  }, 8, [