element-plus 2.13.6 → 2.13.7
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.
- package/attributes.json +1 -1
- package/dist/index.css +1 -1
- package/dist/index.full.js +199 -101
- package/dist/index.full.min.js +7 -7
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +7 -7
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +199 -101
- package/dist/locale/af.js +1 -1
- package/dist/locale/af.min.js +1 -1
- package/dist/locale/af.min.mjs +1 -1
- package/dist/locale/af.mjs +1 -1
- package/dist/locale/ar-eg.js +1 -1
- package/dist/locale/ar-eg.min.js +1 -1
- package/dist/locale/ar-eg.min.mjs +1 -1
- package/dist/locale/ar-eg.mjs +1 -1
- package/dist/locale/ar.js +1 -1
- package/dist/locale/ar.min.js +1 -1
- package/dist/locale/ar.min.mjs +1 -1
- package/dist/locale/ar.mjs +1 -1
- package/dist/locale/az.js +1 -1
- package/dist/locale/az.min.js +1 -1
- package/dist/locale/az.min.mjs +1 -1
- package/dist/locale/az.mjs +1 -1
- package/dist/locale/bg.js +1 -1
- package/dist/locale/bg.min.js +1 -1
- package/dist/locale/bg.min.mjs +1 -1
- package/dist/locale/bg.mjs +1 -1
- package/dist/locale/bn.js +1 -1
- package/dist/locale/bn.min.js +1 -1
- package/dist/locale/bn.min.mjs +1 -1
- package/dist/locale/bn.mjs +1 -1
- package/dist/locale/ca.js +1 -1
- package/dist/locale/ca.min.js +1 -1
- package/dist/locale/ca.min.mjs +1 -1
- package/dist/locale/ca.mjs +1 -1
- package/dist/locale/ckb.js +1 -1
- package/dist/locale/ckb.min.js +1 -1
- package/dist/locale/ckb.min.mjs +1 -1
- package/dist/locale/ckb.mjs +1 -1
- package/dist/locale/cs.js +1 -1
- package/dist/locale/cs.min.js +1 -1
- package/dist/locale/cs.min.mjs +1 -1
- package/dist/locale/cs.mjs +1 -1
- package/dist/locale/da.js +1 -1
- package/dist/locale/da.min.js +1 -1
- package/dist/locale/da.min.mjs +1 -1
- package/dist/locale/da.mjs +1 -1
- package/dist/locale/de.js +1 -1
- package/dist/locale/de.min.js +1 -1
- package/dist/locale/de.min.mjs +1 -1
- package/dist/locale/de.mjs +1 -1
- package/dist/locale/el.js +1 -1
- package/dist/locale/el.min.js +1 -1
- package/dist/locale/el.min.mjs +1 -1
- package/dist/locale/el.mjs +1 -1
- package/dist/locale/en.js +1 -1
- package/dist/locale/en.min.js +1 -1
- package/dist/locale/en.min.mjs +1 -1
- package/dist/locale/en.mjs +1 -1
- package/dist/locale/eo.js +1 -1
- package/dist/locale/eo.min.js +1 -1
- package/dist/locale/eo.min.mjs +1 -1
- package/dist/locale/eo.mjs +1 -1
- package/dist/locale/es.js +1 -1
- package/dist/locale/es.min.js +1 -1
- package/dist/locale/es.min.mjs +1 -1
- package/dist/locale/es.mjs +1 -1
- package/dist/locale/et.js +1 -1
- package/dist/locale/et.min.js +1 -1
- package/dist/locale/et.min.mjs +1 -1
- package/dist/locale/et.mjs +1 -1
- package/dist/locale/eu.js +1 -1
- package/dist/locale/eu.min.js +1 -1
- package/dist/locale/eu.min.mjs +1 -1
- package/dist/locale/eu.mjs +1 -1
- package/dist/locale/fa.js +1 -1
- package/dist/locale/fa.min.js +1 -1
- package/dist/locale/fa.min.mjs +1 -1
- package/dist/locale/fa.mjs +1 -1
- package/dist/locale/fi.js +1 -1
- package/dist/locale/fi.min.js +1 -1
- package/dist/locale/fi.min.mjs +1 -1
- package/dist/locale/fi.mjs +1 -1
- package/dist/locale/fr.js +1 -1
- package/dist/locale/fr.min.js +1 -1
- package/dist/locale/fr.min.mjs +1 -1
- package/dist/locale/fr.mjs +1 -1
- package/dist/locale/he.js +1 -1
- package/dist/locale/he.min.js +1 -1
- package/dist/locale/he.min.mjs +1 -1
- package/dist/locale/he.mjs +1 -1
- package/dist/locale/hi.js +1 -1
- package/dist/locale/hi.min.js +1 -1
- package/dist/locale/hi.min.mjs +1 -1
- package/dist/locale/hi.mjs +1 -1
- package/dist/locale/hr.js +1 -1
- package/dist/locale/hr.min.js +1 -1
- package/dist/locale/hr.min.mjs +1 -1
- package/dist/locale/hr.mjs +1 -1
- package/dist/locale/hu.js +1 -1
- package/dist/locale/hu.min.js +1 -1
- package/dist/locale/hu.min.mjs +1 -1
- package/dist/locale/hu.mjs +1 -1
- package/dist/locale/hy-am.js +1 -1
- package/dist/locale/hy-am.min.js +1 -1
- package/dist/locale/hy-am.min.mjs +1 -1
- package/dist/locale/hy-am.mjs +1 -1
- package/dist/locale/id.js +1 -1
- package/dist/locale/id.min.js +1 -1
- package/dist/locale/id.min.mjs +1 -1
- package/dist/locale/id.mjs +1 -1
- package/dist/locale/it.js +1 -1
- package/dist/locale/it.min.js +1 -1
- package/dist/locale/it.min.mjs +1 -1
- package/dist/locale/it.mjs +1 -1
- package/dist/locale/ja.js +1 -1
- package/dist/locale/ja.min.js +1 -1
- package/dist/locale/ja.min.mjs +1 -1
- package/dist/locale/ja.mjs +1 -1
- package/dist/locale/kk.js +1 -1
- package/dist/locale/kk.min.js +1 -1
- package/dist/locale/kk.min.mjs +1 -1
- package/dist/locale/kk.mjs +1 -1
- package/dist/locale/km.js +1 -1
- package/dist/locale/km.min.js +1 -1
- package/dist/locale/km.min.mjs +1 -1
- package/dist/locale/km.mjs +1 -1
- package/dist/locale/ko.js +1 -1
- package/dist/locale/ko.min.js +1 -1
- package/dist/locale/ko.min.mjs +1 -1
- package/dist/locale/ko.mjs +1 -1
- package/dist/locale/ku.js +1 -1
- package/dist/locale/ku.min.js +1 -1
- package/dist/locale/ku.min.mjs +1 -1
- package/dist/locale/ku.mjs +1 -1
- package/dist/locale/ky.js +1 -1
- package/dist/locale/ky.min.js +1 -1
- package/dist/locale/ky.min.mjs +1 -1
- package/dist/locale/ky.mjs +1 -1
- package/dist/locale/lo.js +1 -1
- package/dist/locale/lo.min.js +1 -1
- package/dist/locale/lo.min.mjs +1 -1
- package/dist/locale/lo.mjs +1 -1
- package/dist/locale/lt.js +1 -1
- package/dist/locale/lt.min.js +1 -1
- package/dist/locale/lt.min.mjs +1 -1
- package/dist/locale/lt.mjs +1 -1
- package/dist/locale/lv.js +1 -1
- package/dist/locale/lv.min.js +1 -1
- package/dist/locale/lv.min.mjs +1 -1
- package/dist/locale/lv.mjs +1 -1
- package/dist/locale/mg.js +1 -1
- package/dist/locale/mg.min.js +1 -1
- package/dist/locale/mg.min.mjs +1 -1
- package/dist/locale/mg.mjs +1 -1
- package/dist/locale/mn.js +1 -1
- package/dist/locale/mn.min.js +1 -1
- package/dist/locale/mn.min.mjs +1 -1
- package/dist/locale/mn.mjs +1 -1
- package/dist/locale/ms.js +1 -1
- package/dist/locale/ms.min.js +1 -1
- package/dist/locale/ms.min.mjs +1 -1
- package/dist/locale/ms.mjs +1 -1
- package/dist/locale/my.js +1 -1
- package/dist/locale/my.min.js +1 -1
- package/dist/locale/my.min.mjs +1 -1
- package/dist/locale/my.mjs +1 -1
- package/dist/locale/nb-no.js +1 -1
- package/dist/locale/nb-no.min.js +1 -1
- package/dist/locale/nb-no.min.mjs +1 -1
- package/dist/locale/nb-no.mjs +1 -1
- package/dist/locale/nl.js +1 -1
- package/dist/locale/nl.min.js +1 -1
- package/dist/locale/nl.min.mjs +1 -1
- package/dist/locale/nl.mjs +1 -1
- package/dist/locale/no.js +1 -1
- package/dist/locale/no.min.js +1 -1
- package/dist/locale/no.min.mjs +1 -1
- package/dist/locale/no.mjs +1 -1
- package/dist/locale/pa.js +1 -1
- package/dist/locale/pa.min.js +1 -1
- package/dist/locale/pa.min.mjs +1 -1
- package/dist/locale/pa.mjs +1 -1
- package/dist/locale/pl.js +1 -1
- package/dist/locale/pl.min.js +1 -1
- package/dist/locale/pl.min.mjs +1 -1
- package/dist/locale/pl.mjs +1 -1
- package/dist/locale/pt-br.js +1 -1
- package/dist/locale/pt-br.min.js +1 -1
- package/dist/locale/pt-br.min.mjs +1 -1
- package/dist/locale/pt-br.mjs +1 -1
- package/dist/locale/pt.js +1 -1
- package/dist/locale/pt.min.js +1 -1
- package/dist/locale/pt.min.mjs +1 -1
- package/dist/locale/pt.mjs +1 -1
- package/dist/locale/ro.js +1 -1
- package/dist/locale/ro.min.js +1 -1
- package/dist/locale/ro.min.mjs +1 -1
- package/dist/locale/ro.mjs +1 -1
- package/dist/locale/ru.js +1 -1
- package/dist/locale/ru.min.js +1 -1
- package/dist/locale/ru.min.mjs +1 -1
- package/dist/locale/ru.mjs +1 -1
- package/dist/locale/sk.js +1 -1
- package/dist/locale/sk.min.js +1 -1
- package/dist/locale/sk.min.mjs +1 -1
- package/dist/locale/sk.mjs +1 -1
- package/dist/locale/sl.js +1 -1
- package/dist/locale/sl.min.js +1 -1
- package/dist/locale/sl.min.mjs +1 -1
- package/dist/locale/sl.mjs +1 -1
- package/dist/locale/sr.js +1 -1
- package/dist/locale/sr.min.js +1 -1
- package/dist/locale/sr.min.mjs +1 -1
- package/dist/locale/sr.mjs +1 -1
- package/dist/locale/sv.js +1 -1
- package/dist/locale/sv.min.js +1 -1
- package/dist/locale/sv.min.mjs +1 -1
- package/dist/locale/sv.mjs +1 -1
- package/dist/locale/sw.js +1 -1
- package/dist/locale/sw.min.js +1 -1
- package/dist/locale/sw.min.mjs +1 -1
- package/dist/locale/sw.mjs +1 -1
- package/dist/locale/ta.js +1 -1
- package/dist/locale/ta.min.js +1 -1
- package/dist/locale/ta.min.mjs +1 -1
- package/dist/locale/ta.mjs +1 -1
- package/dist/locale/te.js +1 -1
- package/dist/locale/te.min.js +1 -1
- package/dist/locale/te.min.mjs +1 -1
- package/dist/locale/te.mjs +1 -1
- package/dist/locale/th.js +1 -1
- package/dist/locale/th.min.js +1 -1
- package/dist/locale/th.min.mjs +1 -1
- package/dist/locale/th.mjs +1 -1
- package/dist/locale/tk.js +1 -1
- package/dist/locale/tk.min.js +1 -1
- package/dist/locale/tk.min.mjs +1 -1
- package/dist/locale/tk.mjs +1 -1
- package/dist/locale/tr.js +1 -1
- package/dist/locale/tr.min.js +1 -1
- package/dist/locale/tr.min.mjs +1 -1
- package/dist/locale/tr.mjs +1 -1
- package/dist/locale/ug-cn.js +1 -1
- package/dist/locale/ug-cn.min.js +1 -1
- package/dist/locale/ug-cn.min.mjs +1 -1
- package/dist/locale/ug-cn.mjs +1 -1
- package/dist/locale/uk.js +1 -1
- package/dist/locale/uk.min.js +1 -1
- package/dist/locale/uk.min.mjs +1 -1
- package/dist/locale/uk.mjs +1 -1
- package/dist/locale/uz-uz.js +1 -1
- package/dist/locale/uz-uz.min.js +1 -1
- package/dist/locale/uz-uz.min.mjs +1 -1
- package/dist/locale/uz-uz.mjs +1 -1
- package/dist/locale/vi.js +1 -1
- package/dist/locale/vi.min.js +1 -1
- package/dist/locale/vi.min.mjs +1 -1
- package/dist/locale/vi.mjs +1 -1
- package/dist/locale/zh-cn.js +1 -1
- package/dist/locale/zh-cn.min.js +1 -1
- package/dist/locale/zh-cn.min.mjs +1 -1
- package/dist/locale/zh-cn.mjs +1 -1
- package/dist/locale/zh-hk.js +1 -1
- package/dist/locale/zh-hk.min.js +1 -1
- package/dist/locale/zh-hk.min.mjs +1 -1
- package/dist/locale/zh-hk.mjs +1 -1
- package/dist/locale/zh-mo.js +1 -1
- package/dist/locale/zh-mo.min.js +1 -1
- package/dist/locale/zh-mo.min.mjs +1 -1
- package/dist/locale/zh-mo.mjs +1 -1
- package/dist/locale/zh-tw.js +1 -1
- package/dist/locale/zh-tw.min.js +1 -1
- package/dist/locale/zh-tw.min.mjs +1 -1
- package/dist/locale/zh-tw.mjs +1 -1
- package/es/component.mjs +3 -3
- package/es/components/affix/src/affix.d.ts +3 -2
- package/es/components/affix/src/affix.vue.d.ts +4 -5
- package/es/components/alert/src/alert.vue.d.ts +1 -1
- package/es/components/anchor/src/anchor-link.vue.d.ts +1 -3
- package/es/components/anchor/src/anchor-link.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/anchor/src/anchor-link2.mjs.map +1 -1
- package/es/components/anchor/src/anchor.vue.d.ts +2 -2
- package/es/components/autocomplete/index.d.ts +2 -2
- package/es/components/autocomplete/src/autocomplete.d.ts +21 -13
- package/es/components/autocomplete/src/autocomplete.mjs.map +1 -1
- package/es/components/autocomplete/src/autocomplete.vue.d.ts +55 -80
- package/es/components/autocomplete/src/autocomplete.vue_vue_type_script_setup_true_lang.mjs +4 -2
- package/es/components/autocomplete/src/autocomplete.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/autocomplete/src/autocomplete2.mjs.map +1 -1
- package/es/components/avatar/src/avatar-group-props.d.ts +1 -1
- package/es/components/avatar/src/avatar-group.d.ts +2 -2
- package/es/components/avatar/src/avatar.d.ts +3 -2
- package/es/components/avatar/src/avatar.vue.d.ts +2 -3
- package/es/components/backtop/src/backtop.vue.d.ts +1 -1
- package/es/components/badge/src/badge.vue.d.ts +1 -1
- package/es/components/button/src/button-custom.mjs +17 -0
- package/es/components/button/src/button-custom.mjs.map +1 -1
- package/es/components/button/src/button.d.ts +1 -1
- package/es/components/button/src/button.vue.d.ts +3 -3
- package/es/components/calendar/src/use-date-table.mjs +2 -1
- package/es/components/calendar/src/use-date-table.mjs.map +1 -1
- package/es/components/card/src/card.d.ts +1 -1
- package/es/components/carousel/src/carousel-item.vue.d.ts +1 -1
- package/es/components/carousel/src/carousel.d.ts +1 -1
- package/es/components/cascader/src/cascader.d.ts +2 -2
- package/es/components/cascader/src/cascader.vue.d.ts +15 -15
- package/es/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.mjs +9 -4
- package/es/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/cascader/src/cascader2.mjs.map +1 -1
- package/es/components/cascader-panel/src/index.mjs.map +1 -1
- package/es/components/cascader-panel/src/index.vue.d.ts +2 -2
- package/es/components/cascader-panel/src/index.vue_vue_type_script_setup_true_lang.mjs +1 -1
- package/es/components/cascader-panel/src/index.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/checkbox/src/checkbox-button.vue.d.ts +4 -4
- package/es/components/checkbox/src/checkbox-group.d.ts +1 -1
- package/es/components/checkbox/src/checkbox-group.vue.d.ts +2 -2
- package/es/components/checkbox/src/checkbox.d.ts +3 -3
- package/es/components/checkbox/src/checkbox.vue.d.ts +4 -4
- package/es/components/checkbox/src/composables/use-checkbox-model.mjs +6 -2
- package/es/components/checkbox/src/composables/use-checkbox-model.mjs.map +1 -1
- package/es/components/checkbox/src/composables/use-checkbox-status.d.ts +2 -2
- package/es/components/checkbox/src/composables/use-checkbox.d.ts +2 -2
- package/es/components/col/src/col.vue.d.ts +1 -1
- package/es/components/collapse/src/collapse.d.ts +1 -1
- package/es/components/collapse/src/collapse.vue.d.ts +1 -1
- package/es/components/color-picker/src/color-picker.d.ts +1 -1
- package/es/components/color-picker/src/color-picker.vue.d.ts +7 -7
- package/es/components/color-picker/src/color-picker.vue_vue_type_script_setup_true_lang.mjs +1 -1
- package/es/components/color-picker-panel/src/color-picker-panel.vue.d.ts +1 -1
- package/es/components/color-picker-panel/src/composables/use-predefine.mjs.map +1 -1
- package/es/components/config-provider/src/config-provider-props.d.ts +1 -1
- package/es/components/config-provider/src/config-provider.d.ts +3 -3
- package/es/components/config-provider/src/hooks/use-global-config.d.ts +1 -1
- package/es/components/countdown/src/countdown.vue_vue_type_script_setup_true_lang.mjs +1 -1
- package/es/components/date-picker/src/date-picker.d.ts +12 -12
- package/es/components/date-picker/src/props.d.ts +2 -2
- package/es/components/date-picker-panel/src/date-picker-com/panel-date-pick.mjs.map +1 -1
- package/es/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue_vue_type_script_setup_true_lang.mjs +2 -2
- package/es/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/date-picker-panel/src/date-picker-com/panel-date-range.vue_vue_type_script_setup_true_lang.mjs +1 -1
- package/es/components/date-picker-panel/src/date-picker-panel.d.ts +3 -3
- package/es/components/descriptions/src/description-item.d.ts +8 -8
- package/es/components/descriptions/src/description.d.ts +1 -1
- package/es/components/descriptions/src/description.mjs.map +1 -1
- package/es/components/descriptions/src/description.vue.d.ts +1 -1
- package/es/components/dialog/src/dialog.vue.d.ts +11 -11
- package/es/components/dialog/src/dialog.vue_vue_type_script_setup_true_lang.mjs +6 -5
- package/es/components/dialog/src/dialog.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/dialog/src/dialog2.mjs.map +1 -1
- package/es/components/dialog/src/use-dialog.d.ts +4 -2
- package/es/components/dialog/src/use-dialog.mjs +8 -1
- package/es/components/dialog/src/use-dialog.mjs.map +1 -1
- package/es/components/divider/src/divider.d.ts +1 -1
- package/es/components/drawer/src/drawer.vue.d.ts +5 -5
- package/es/components/dropdown/src/dropdown-item.vue.d.ts +4 -10
- package/es/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
- package/es/components/dropdown/src/dropdown.d.ts +2 -2
- package/es/components/dropdown/src/dropdown.vue.d.ts +60 -66
- package/es/components/focus-trap/src/focus-trap.vue.d.ts +1 -1
- package/es/components/form/src/form-item.d.ts +2 -2
- package/es/components/form/src/form-item.vue.d.ts +1 -1
- package/es/components/form/src/form-item.vue_vue_type_script_setup_true_lang.mjs +11 -1
- package/es/components/form/src/form-item.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/form/src/form-item2.mjs.map +1 -1
- package/es/components/form/src/form.d.ts +4 -4
- package/es/components/form/src/form.vue.d.ts +1 -1
- package/es/components/form/src/form.vue_vue_type_script_setup_true_lang.mjs +11 -3
- package/es/components/form/src/form.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/form/src/form2.mjs.map +1 -1
- package/es/components/form/src/hooks/use-form-common-props.d.ts +2 -2
- package/es/components/form/src/types.d.ts +2 -1
- package/es/components/icon/src/icon.vue.d.ts +1 -3
- package/es/components/icon/src/icon.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/icon/src/icon2.mjs.map +1 -1
- package/es/components/image/src/image.d.ts +1 -1
- package/es/components/image/src/image.vue.d.ts +3 -3
- package/es/components/image-viewer/src/image-viewer.vue.d.ts +2 -2
- package/es/components/index.d.ts +2 -2
- package/es/components/index.mjs +6 -6
- package/es/components/input/src/input.d.ts +13 -3
- package/es/components/input/src/input.mjs +1 -0
- package/es/components/input/src/input.mjs.map +1 -1
- package/es/components/input/src/input.vue.d.ts +6 -5
- package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs +76 -11
- package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/input/src/input2.mjs.map +1 -1
- package/es/components/input-number/src/input-number.d.ts +3 -3
- package/es/components/input-number/src/input-number.vue.d.ts +5 -5
- package/es/components/input-number/src/input-number.vue_vue_type_script_setup_true_lang.mjs +1 -1
- package/es/components/input-tag/src/composables/use-input-tag.d.ts +1 -1
- package/es/components/input-tag/src/input-tag.d.ts +2 -2
- package/es/components/input-tag/src/input-tag.vue.d.ts +9 -9
- package/es/components/link/src/link.d.ts +1 -1
- package/es/components/link/src/link.vue.d.ts +1 -1
- package/es/components/mention/src/helper.d.ts +1 -1
- package/es/components/mention/src/helper.mjs.map +1 -1
- package/es/components/mention/src/mention.d.ts +17 -10
- package/es/components/mention/src/mention.mjs.map +1 -1
- package/es/components/mention/src/mention.vue.d.ts +48 -55
- package/es/components/mention/src/mention.vue_vue_type_script_setup_true_lang.mjs +5 -3
- package/es/components/mention/src/mention.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/mention/src/mention2.mjs.map +1 -1
- package/es/components/menu/src/menu.d.ts +1 -1
- package/es/components/menu/src/menu.mjs +1 -1
- package/es/components/menu/src/sub-menu.d.ts +1 -1
- package/es/components/menu/src/utils/menu-item.mjs +1 -1
- package/es/components/menu/src/utils/submenu.mjs +1 -1
- package/es/components/message/src/message.d.ts +1 -1
- package/es/components/message/src/message.vue.d.ts +3 -3
- package/es/components/message/src/message.vue_vue_type_script_setup_true_lang.mjs +1 -1
- package/es/components/message/src/message.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/message/src/message2.mjs.map +1 -1
- package/es/components/message-box/src/index.vue_vue_type_script_lang.mjs +1 -1
- package/es/components/message-box/src/message-box.type.d.ts +5 -3
- package/es/components/notification/src/notification.vue.d.ts +4 -4
- package/es/components/overlay/index.d.ts +3 -3
- package/es/components/overlay/src/overlay.d.ts +2 -2
- package/es/components/pagination/src/pagination.d.ts +6 -6
- package/es/components/popconfirm/src/popconfirm.vue.d.ts +2 -2
- package/es/components/popover/src/popover.d.ts +1 -1
- package/es/components/popover/src/popover.vue.d.ts +7 -7
- package/es/components/popper/src/composables/use-content.d.ts +5 -5
- package/es/components/popper/src/composables/use-focus-trap.d.ts +1 -1
- package/es/components/popper/src/content.d.ts +4 -4
- package/es/components/popper/src/content.vue.d.ts +4 -4
- package/es/components/popper/src/popper.d.ts +2 -2
- package/es/components/popper/src/trigger.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/popper/src/trigger2.mjs.map +1 -1
- package/es/components/progress/src/progress.vue.d.ts +2 -2
- package/es/components/radio/src/radio-button.d.ts +1 -1
- package/es/components/radio/src/radio-button.vue.d.ts +2 -2
- package/es/components/radio/src/radio-group.d.ts +1 -1
- package/es/components/radio/src/radio-group.vue.d.ts +4 -4
- package/es/components/radio/src/radio.d.ts +2 -2
- package/es/components/radio/src/radio.vue.d.ts +4 -4
- package/es/components/rate/src/rate.d.ts +1 -1
- package/es/components/rate/src/rate.vue.d.ts +2 -2
- package/es/components/roving-focus-group/src/roving-focus-item.vue.d.ts +1 -1
- package/es/components/row/src/row.d.ts +1 -1
- package/es/components/scrollbar/src/scrollbar.vue.d.ts +1 -1
- package/es/components/scrollbar/src/scrollbar.vue_vue_type_script_setup_true_lang.mjs +4 -3
- package/es/components/scrollbar/src/scrollbar.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/scrollbar/src/scrollbar2.mjs.map +1 -1
- package/es/components/segmented/index.d.ts +2 -2
- package/es/components/segmented/src/segmented.d.ts +1 -1
- package/es/components/segmented/src/segmented.vue.d.ts +1 -1
- package/es/components/segmented/src/segmented.vue_vue_type_script_setup_true_lang.mjs +2 -57
- package/es/components/segmented/src/segmented.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/select/src/option.d.ts +1 -1
- package/es/components/select/src/option.vue.d.ts +3 -2
- package/es/components/select/src/option.vue_vue_type_script_lang.mjs +11 -0
- package/es/components/select/src/option.vue_vue_type_script_lang.mjs.map +1 -1
- package/es/components/select/src/option2.mjs +2 -1
- package/es/components/select/src/option2.mjs.map +1 -1
- package/es/components/select/src/select.d.ts +3 -3
- package/es/components/select/src/select.vue.d.ts +76 -81
- package/es/components/select/src/select.vue_vue_type_script_lang.mjs +1 -1
- package/es/components/select/src/type.d.ts +1 -0
- package/es/components/select-v2/src/defaults.d.ts +2 -2
- package/es/components/select-v2/src/defaults.mjs.map +1 -1
- package/es/components/select-v2/src/option-item.mjs +2 -1
- package/es/components/select-v2/src/option-item.mjs.map +1 -1
- package/es/components/select-v2/src/option-item.vue_vue_type_script_lang.mjs +13 -1
- package/es/components/select-v2/src/option-item.vue_vue_type_script_lang.mjs.map +1 -1
- package/es/components/select-v2/src/select.vue.d.ts +62 -68
- package/es/components/select-v2/src/select.vue_vue_type_script_lang.mjs +1 -1
- package/es/components/skeleton/src/skeleton-item.d.ts +1 -1
- package/es/components/skeleton/src/skeleton.vue.d.ts +1 -1
- package/es/components/slider/src/button.vue.d.ts +1 -1
- package/es/components/slider/src/slider.d.ts +2 -2
- package/es/components/slider/src/slider.vue.d.ts +9 -9
- package/es/components/space/src/space.d.ts +10 -9
- package/es/components/steps/src/steps.vue.d.ts +1 -1
- package/es/components/switch/src/switch.d.ts +1 -1
- package/es/components/switch/src/switch.vue.d.ts +3 -3
- package/es/components/table/src/table-body/index.d.ts +1 -1
- package/es/components/table/src/table-column/index.d.ts +15 -15
- package/es/components/table/src/table-footer/index.d.ts +1 -1
- package/es/components/table/src/table-header/index.d.ts +15 -15
- package/es/components/table/src/table.vue.d.ts +35 -35
- package/es/components/table/src/table.vue_vue_type_script_lang.mjs +1 -1
- package/es/components/table-v2/src/components/header.d.ts +1 -1
- package/es/components/table-v2/src/components/index.d.ts +2 -2
- package/es/components/table-v2/src/components/row.d.ts +12 -3
- package/es/components/table-v2/src/components/row.mjs.map +1 -1
- package/es/components/table-v2/src/table-grid.d.ts +2 -2
- package/es/components/table-v2/src/table-v2.d.ts +18 -6
- package/es/components/table-v2/src/table-v2.mjs +1 -0
- package/es/components/table-v2/src/table-v2.mjs.map +1 -1
- package/es/components/tabs/src/tab-bar.vue.d.ts +1 -1
- package/es/components/tabs/src/tab-bar.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/tabs/src/tab-bar2.mjs.map +1 -1
- package/es/components/tabs/src/tab-nav.d.ts +1 -1
- package/es/components/tabs/src/tabs.d.ts +5 -5
- package/es/components/tag/src/tag.d.ts +1 -1
- package/es/components/text/src/text.d.ts +1 -1
- package/es/components/time-picker/src/common/picker.mjs.map +1 -1
- package/es/components/time-picker/src/common/picker.vue.d.ts +16 -16
- package/es/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.mjs +4 -3
- package/es/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/time-picker/src/common/props.d.ts +2 -2
- package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_setup_true_lang.mjs +1 -1
- package/es/components/time-picker/src/time-picker.d.ts +12 -12
- package/es/components/time-select/src/time-select.d.ts +1 -1
- package/es/components/time-select/src/time-select.vue.d.ts +5 -5
- package/es/components/timeline/src/timeline-item.d.ts +2 -2
- package/es/components/timeline/src/timeline-item.vue.d.ts +1 -1
- package/es/components/tooltip/src/content.d.ts +1 -1
- package/es/components/tooltip/src/content.vue.d.ts +6 -6
- package/es/components/tooltip/src/tooltip.d.ts +2 -2
- package/es/components/tooltip/src/tooltip.vue.d.ts +12 -12
- package/es/components/tour/src/content.d.ts +2 -2
- package/es/components/tour/src/step.d.ts +1 -1
- package/es/components/tour/src/tour.d.ts +1 -1
- package/es/components/tour/src/tour.vue.d.ts +3 -3
- package/es/components/transfer/src/composables/use-check.d.ts +4 -4
- package/es/components/transfer/src/composables/use-check.mjs.map +1 -1
- package/es/components/transfer/src/composables/use-computed-data.d.ts +3 -3
- package/es/components/transfer/src/composables/use-computed-data.mjs +1 -1
- package/es/components/transfer/src/composables/use-computed-data.mjs.map +1 -1
- package/es/components/transfer/src/composables/use-move.d.ts +2 -2
- package/es/components/transfer/src/composables/use-move.mjs.map +1 -1
- package/es/components/transfer/src/composables/use-props-alias.d.ts +4 -2
- package/es/components/transfer/src/composables/use-props-alias.mjs.map +1 -1
- package/es/components/transfer/src/transfer-panel.d.ts +11 -10
- package/es/components/transfer/src/transfer-panel.mjs.map +1 -1
- package/es/components/transfer/src/transfer-panel.vue.d.ts +23 -25
- package/es/components/transfer/src/transfer-panel.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/transfer/src/transfer-panel2.mjs.map +1 -1
- package/es/components/transfer/src/transfer.d.ts +9 -8
- package/es/components/transfer/src/transfer.mjs.map +1 -1
- package/es/components/transfer/src/transfer.vue.d.ts +32 -42
- package/es/components/transfer/src/transfer.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/transfer/src/transfer2.mjs.map +1 -1
- package/es/components/tree/src/tree.vue.d.ts +19 -25
- package/es/components/tree-select/src/tree-select.vue.d.ts +31 -31
- package/es/components/tree-v2/src/tree.vue.d.ts +3 -3
- package/es/components/upload/src/upload-content.mjs.map +1 -1
- package/es/components/upload/src/upload-content.vue.d.ts +1 -1
- package/es/components/upload/src/upload.vue.d.ts +2 -2
- package/es/components/virtual-list/src/builders/build-grid.d.ts +1 -1
- package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +1 -1
- package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
- package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +1 -1
- package/es/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
- package/es/constants/index.mjs +2 -2
- package/es/directives/trap-focus/index.mjs +1 -1
- package/es/hooks/use-floating/index.d.ts +8 -8
- package/es/hooks/use-popper/index.d.ts +5 -5
- package/es/hooks/use-size/index.d.ts +3 -3
- package/es/hooks/use-timeout/index.mjs +6 -2
- package/es/hooks/use-timeout/index.mjs.map +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.mjs +13 -13
- package/es/plugin.mjs +1 -1
- package/es/utils/index.d.ts +2 -2
- package/es/utils/typescript.d.ts +22 -5
- package/es/utils/typescript.mjs.map +1 -1
- package/es/utils/vue/typescript.d.ts +3 -2
- package/es/utils/vue/vnode.d.ts +4 -4
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/component.js +107 -107
- package/lib/components/affix/src/affix.d.ts +3 -2
- package/lib/components/affix/src/affix.vue.d.ts +4 -5
- package/lib/components/alert/src/alert.vue.d.ts +1 -1
- package/lib/components/anchor/src/anchor-link.vue.d.ts +1 -3
- package/lib/components/anchor/src/anchor-link.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/anchor/src/anchor-link2.js.map +1 -1
- package/lib/components/anchor/src/anchor.vue.d.ts +2 -2
- package/lib/components/autocomplete/index.d.ts +2 -2
- package/lib/components/autocomplete/src/autocomplete.d.ts +21 -13
- package/lib/components/autocomplete/src/autocomplete.js.map +1 -1
- package/lib/components/autocomplete/src/autocomplete.vue.d.ts +55 -80
- package/lib/components/autocomplete/src/autocomplete.vue_vue_type_script_setup_true_lang.js +4 -2
- package/lib/components/autocomplete/src/autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/autocomplete/src/autocomplete2.js.map +1 -1
- package/lib/components/avatar/src/avatar-group-props.d.ts +1 -1
- package/lib/components/avatar/src/avatar-group.d.ts +2 -2
- package/lib/components/avatar/src/avatar.d.ts +3 -2
- package/lib/components/avatar/src/avatar.vue.d.ts +2 -3
- package/lib/components/backtop/src/backtop.vue.d.ts +1 -1
- package/lib/components/badge/src/badge.vue.d.ts +1 -1
- package/lib/components/button/src/button-custom.js +17 -0
- package/lib/components/button/src/button-custom.js.map +1 -1
- package/lib/components/button/src/button.d.ts +1 -1
- package/lib/components/button/src/button.vue.d.ts +3 -3
- package/lib/components/calendar/src/use-date-table.js +2 -1
- package/lib/components/calendar/src/use-date-table.js.map +1 -1
- package/lib/components/card/src/card.d.ts +1 -1
- package/lib/components/carousel/src/carousel-item.vue.d.ts +1 -1
- package/lib/components/carousel/src/carousel.d.ts +1 -1
- package/lib/components/cascader/src/cascader.d.ts +2 -2
- package/lib/components/cascader/src/cascader.vue.d.ts +15 -15
- package/lib/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.js +44 -39
- package/lib/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/cascader/src/cascader2.js.map +1 -1
- package/lib/components/cascader-panel/src/index.js.map +1 -1
- package/lib/components/cascader-panel/src/index.vue.d.ts +2 -2
- package/lib/components/cascader-panel/src/index.vue_vue_type_script_setup_true_lang.js +11 -11
- package/lib/components/cascader-panel/src/index.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/checkbox/src/checkbox-button.vue.d.ts +4 -4
- package/lib/components/checkbox/src/checkbox-group.d.ts +1 -1
- package/lib/components/checkbox/src/checkbox-group.vue.d.ts +2 -2
- package/lib/components/checkbox/src/checkbox.d.ts +3 -3
- package/lib/components/checkbox/src/checkbox.vue.d.ts +4 -4
- package/lib/components/checkbox/src/composables/use-checkbox-model.js +6 -2
- package/lib/components/checkbox/src/composables/use-checkbox-model.js.map +1 -1
- package/lib/components/checkbox/src/composables/use-checkbox-status.d.ts +2 -2
- package/lib/components/checkbox/src/composables/use-checkbox.d.ts +2 -2
- package/lib/components/col/src/col.vue.d.ts +1 -1
- package/lib/components/collapse/src/collapse.d.ts +1 -1
- package/lib/components/collapse/src/collapse.vue.d.ts +1 -1
- package/lib/components/color-picker/src/color-picker.d.ts +1 -1
- package/lib/components/color-picker/src/color-picker.vue.d.ts +7 -7
- package/lib/components/color-picker/src/color-picker.vue_vue_type_script_setup_true_lang.js +18 -18
- package/lib/components/color-picker/src/color-picker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/color-picker-panel/src/color-picker-panel.vue.d.ts +1 -1
- package/lib/components/color-picker-panel/src/composables/use-predefine.js.map +1 -1
- package/lib/components/config-provider/src/config-provider-props.d.ts +1 -1
- package/lib/components/config-provider/src/config-provider.d.ts +3 -3
- package/lib/components/config-provider/src/hooks/use-global-config.d.ts +1 -1
- package/lib/components/countdown/src/countdown.vue_vue_type_script_setup_true_lang.js +1 -1
- package/lib/components/date-picker/src/date-picker.d.ts +12 -12
- package/lib/components/date-picker/src/props.d.ts +2 -2
- package/lib/components/date-picker-panel/src/date-picker-com/panel-date-pick.js.map +1 -1
- package/lib/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue_vue_type_script_setup_true_lang.js +19 -19
- package/lib/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/date-picker-panel/src/date-picker-com/panel-date-range.vue_vue_type_script_setup_true_lang.js +23 -23
- package/lib/components/date-picker-panel/src/date-picker-com/panel-date-range.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/date-picker-panel/src/date-picker-panel.d.ts +3 -3
- package/lib/components/descriptions/src/description-item.d.ts +8 -8
- package/lib/components/descriptions/src/description.d.ts +1 -1
- package/lib/components/descriptions/src/description.js.map +1 -1
- package/lib/components/descriptions/src/description.vue.d.ts +1 -1
- package/lib/components/dialog/src/dialog.vue.d.ts +11 -11
- package/lib/components/dialog/src/dialog.vue_vue_type_script_setup_true_lang.js +6 -5
- package/lib/components/dialog/src/dialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/dialog/src/dialog2.js.map +1 -1
- package/lib/components/dialog/src/use-dialog.d.ts +4 -2
- package/lib/components/dialog/src/use-dialog.js +8 -1
- package/lib/components/dialog/src/use-dialog.js.map +1 -1
- package/lib/components/divider/src/divider.d.ts +1 -1
- package/lib/components/drawer/src/drawer.vue.d.ts +5 -5
- package/lib/components/dropdown/src/dropdown-item.vue.d.ts +4 -10
- package/lib/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
- package/lib/components/dropdown/src/dropdown.d.ts +2 -2
- package/lib/components/dropdown/src/dropdown.vue.d.ts +60 -66
- package/lib/components/focus-trap/src/focus-trap.vue.d.ts +1 -1
- package/lib/components/form/src/form-item.d.ts +2 -2
- package/lib/components/form/src/form-item.vue.d.ts +1 -1
- package/lib/components/form/src/form-item.vue_vue_type_script_setup_true_lang.js +11 -1
- package/lib/components/form/src/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/form/src/form-item2.js.map +1 -1
- package/lib/components/form/src/form.d.ts +4 -4
- package/lib/components/form/src/form.vue.d.ts +1 -1
- package/lib/components/form/src/form.vue_vue_type_script_setup_true_lang.js +11 -3
- package/lib/components/form/src/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/form/src/form2.js.map +1 -1
- package/lib/components/form/src/hooks/use-form-common-props.d.ts +2 -2
- package/lib/components/form/src/types.d.ts +2 -1
- package/lib/components/icon/src/icon.vue.d.ts +1 -3
- package/lib/components/icon/src/icon.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/icon/src/icon2.js.map +1 -1
- package/lib/components/image/src/image.d.ts +1 -1
- package/lib/components/image/src/image.vue.d.ts +3 -3
- package/lib/components/image-viewer/src/image-viewer.vue.d.ts +2 -2
- package/lib/components/index.d.ts +2 -2
- package/lib/components/index.js +123 -123
- package/lib/components/input/src/input.d.ts +13 -3
- package/lib/components/input/src/input.js +1 -0
- package/lib/components/input/src/input.js.map +1 -1
- package/lib/components/input/src/input.vue.d.ts +6 -5
- package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js +76 -11
- package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/input/src/input2.js.map +1 -1
- package/lib/components/input-number/src/input-number.d.ts +3 -3
- package/lib/components/input-number/src/input-number.vue.d.ts +5 -5
- package/lib/components/input-number/src/input-number.vue_vue_type_script_setup_true_lang.js +12 -12
- package/lib/components/input-number/src/input-number.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/input-tag/src/composables/use-input-tag.d.ts +1 -1
- package/lib/components/input-tag/src/input-tag.d.ts +2 -2
- package/lib/components/input-tag/src/input-tag.vue.d.ts +9 -9
- package/lib/components/link/src/link.d.ts +1 -1
- package/lib/components/link/src/link.vue.d.ts +1 -1
- package/lib/components/mention/src/helper.d.ts +1 -1
- package/lib/components/mention/src/helper.js.map +1 -1
- package/lib/components/mention/src/mention.d.ts +17 -10
- package/lib/components/mention/src/mention.js.map +1 -1
- package/lib/components/mention/src/mention.vue.d.ts +48 -55
- package/lib/components/mention/src/mention.vue_vue_type_script_setup_true_lang.js +4 -2
- package/lib/components/mention/src/mention.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/mention/src/mention2.js.map +1 -1
- package/lib/components/menu/src/menu.d.ts +1 -1
- package/lib/components/menu/src/menu.js +7 -7
- package/lib/components/menu/src/menu.js.map +1 -1
- package/lib/components/menu/src/sub-menu.d.ts +1 -1
- package/lib/components/menu/src/utils/menu-item.js +11 -11
- package/lib/components/menu/src/utils/menu-item.js.map +1 -1
- package/lib/components/menu/src/utils/submenu.js +9 -9
- package/lib/components/menu/src/utils/submenu.js.map +1 -1
- package/lib/components/message/src/message.d.ts +1 -1
- package/lib/components/message/src/message.vue.d.ts +3 -3
- package/lib/components/message/src/message.vue_vue_type_script_setup_true_lang.js +1 -1
- package/lib/components/message/src/message.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/message/src/message2.js.map +1 -1
- package/lib/components/message-box/src/index.vue_vue_type_script_lang.js +19 -19
- package/lib/components/message-box/src/index.vue_vue_type_script_lang.js.map +1 -1
- package/lib/components/message-box/src/message-box.type.d.ts +5 -3
- package/lib/components/notification/src/notification.vue.d.ts +4 -4
- package/lib/components/overlay/index.d.ts +3 -3
- package/lib/components/overlay/src/overlay.d.ts +2 -2
- package/lib/components/pagination/src/pagination.d.ts +6 -6
- package/lib/components/popconfirm/src/popconfirm.vue.d.ts +2 -2
- package/lib/components/popover/src/popover.d.ts +1 -1
- package/lib/components/popover/src/popover.vue.d.ts +7 -7
- package/lib/components/popper/src/composables/use-content.d.ts +5 -5
- package/lib/components/popper/src/composables/use-focus-trap.d.ts +1 -1
- package/lib/components/popper/src/content.d.ts +4 -4
- package/lib/components/popper/src/content.vue.d.ts +4 -4
- package/lib/components/popper/src/popper.d.ts +2 -2
- package/lib/components/popper/src/trigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/popper/src/trigger2.js.map +1 -1
- package/lib/components/progress/src/progress.vue.d.ts +2 -2
- package/lib/components/radio/src/radio-button.d.ts +1 -1
- package/lib/components/radio/src/radio-button.vue.d.ts +2 -2
- package/lib/components/radio/src/radio-group.d.ts +1 -1
- package/lib/components/radio/src/radio-group.vue.d.ts +4 -4
- package/lib/components/radio/src/radio.d.ts +2 -2
- package/lib/components/radio/src/radio.vue.d.ts +4 -4
- package/lib/components/rate/src/rate.d.ts +1 -1
- package/lib/components/rate/src/rate.vue.d.ts +2 -2
- package/lib/components/roving-focus-group/src/roving-focus-item.vue.d.ts +1 -1
- package/lib/components/row/src/row.d.ts +1 -1
- package/lib/components/scrollbar/src/scrollbar.vue.d.ts +1 -1
- package/lib/components/scrollbar/src/scrollbar.vue_vue_type_script_setup_true_lang.js +4 -3
- package/lib/components/scrollbar/src/scrollbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/scrollbar/src/scrollbar2.js.map +1 -1
- package/lib/components/segmented/index.d.ts +2 -2
- package/lib/components/segmented/src/segmented.d.ts +1 -1
- package/lib/components/segmented/src/segmented.vue.d.ts +1 -1
- package/lib/components/segmented/src/segmented.vue_vue_type_script_setup_true_lang.js +1 -56
- package/lib/components/segmented/src/segmented.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/select/src/option.d.ts +1 -1
- package/lib/components/select/src/option.vue.d.ts +3 -2
- package/lib/components/select/src/option.vue_vue_type_script_lang.js +11 -0
- package/lib/components/select/src/option.vue_vue_type_script_lang.js.map +1 -1
- package/lib/components/select/src/option2.js +2 -1
- package/lib/components/select/src/option2.js.map +1 -1
- package/lib/components/select/src/select.d.ts +3 -3
- package/lib/components/select/src/select.vue.d.ts +76 -81
- package/lib/components/select/src/select.vue_vue_type_script_lang.js +10 -10
- package/lib/components/select/src/select.vue_vue_type_script_lang.js.map +1 -1
- package/lib/components/select/src/type.d.ts +1 -0
- package/lib/components/select-v2/src/defaults.d.ts +2 -2
- package/lib/components/select-v2/src/defaults.js.map +1 -1
- package/lib/components/select-v2/src/option-item.js +2 -1
- package/lib/components/select-v2/src/option-item.js.map +1 -1
- package/lib/components/select-v2/src/option-item.vue_vue_type_script_lang.js +13 -1
- package/lib/components/select-v2/src/option-item.vue_vue_type_script_lang.js.map +1 -1
- package/lib/components/select-v2/src/select.vue.d.ts +62 -68
- package/lib/components/select-v2/src/select.vue_vue_type_script_lang.js +10 -10
- package/lib/components/select-v2/src/select.vue_vue_type_script_lang.js.map +1 -1
- package/lib/components/skeleton/src/skeleton-item.d.ts +1 -1
- package/lib/components/skeleton/src/skeleton.vue.d.ts +1 -1
- package/lib/components/slider/src/button.vue.d.ts +1 -1
- package/lib/components/slider/src/slider.d.ts +2 -2
- package/lib/components/slider/src/slider.vue.d.ts +9 -9
- package/lib/components/space/src/space.d.ts +10 -9
- package/lib/components/steps/src/steps.vue.d.ts +1 -1
- package/lib/components/switch/src/switch.d.ts +1 -1
- package/lib/components/switch/src/switch.vue.d.ts +3 -3
- package/lib/components/table/src/table-body/index.d.ts +1 -1
- package/lib/components/table/src/table-column/index.d.ts +15 -15
- package/lib/components/table/src/table-footer/index.d.ts +1 -1
- package/lib/components/table/src/table-header/index.d.ts +15 -15
- package/lib/components/table/src/table.vue.d.ts +35 -35
- package/lib/components/table/src/table.vue_vue_type_script_lang.js +8 -8
- package/lib/components/table/src/table.vue_vue_type_script_lang.js.map +1 -1
- package/lib/components/table-v2/src/components/header.d.ts +1 -1
- package/lib/components/table-v2/src/components/index.d.ts +2 -2
- package/lib/components/table-v2/src/components/row.d.ts +12 -3
- package/lib/components/table-v2/src/components/row.js.map +1 -1
- package/lib/components/table-v2/src/table-grid.d.ts +2 -2
- package/lib/components/table-v2/src/table-v2.d.ts +18 -6
- package/lib/components/table-v2/src/table-v2.js +1 -0
- package/lib/components/table-v2/src/table-v2.js.map +1 -1
- package/lib/components/tabs/src/tab-bar.vue.d.ts +1 -1
- package/lib/components/tabs/src/tab-bar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/tabs/src/tab-bar2.js.map +1 -1
- package/lib/components/tabs/src/tab-nav.d.ts +1 -1
- package/lib/components/tabs/src/tabs.d.ts +5 -5
- package/lib/components/tag/src/tag.d.ts +1 -1
- package/lib/components/text/src/text.d.ts +1 -1
- package/lib/components/time-picker/src/common/picker.js.map +1 -1
- package/lib/components/time-picker/src/common/picker.vue.d.ts +16 -16
- package/lib/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.js +4 -3
- package/lib/components/time-picker/src/common/picker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/time-picker/src/common/props.d.ts +2 -2
- package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_setup_true_lang.js +10 -10
- package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/time-picker/src/time-picker.d.ts +12 -12
- package/lib/components/time-select/src/time-select.d.ts +1 -1
- package/lib/components/time-select/src/time-select.vue.d.ts +5 -5
- package/lib/components/timeline/src/timeline-item.d.ts +2 -2
- package/lib/components/timeline/src/timeline-item.vue.d.ts +1 -1
- package/lib/components/tooltip/src/content.d.ts +1 -1
- package/lib/components/tooltip/src/content.vue.d.ts +6 -6
- package/lib/components/tooltip/src/tooltip.d.ts +2 -2
- package/lib/components/tooltip/src/tooltip.vue.d.ts +12 -12
- package/lib/components/tour/src/content.d.ts +2 -2
- package/lib/components/tour/src/step.d.ts +1 -1
- package/lib/components/tour/src/tour.d.ts +1 -1
- package/lib/components/tour/src/tour.vue.d.ts +3 -3
- package/lib/components/transfer/src/composables/use-check.d.ts +4 -4
- package/lib/components/transfer/src/composables/use-check.js.map +1 -1
- package/lib/components/transfer/src/composables/use-computed-data.d.ts +3 -3
- package/lib/components/transfer/src/composables/use-computed-data.js +1 -1
- package/lib/components/transfer/src/composables/use-computed-data.js.map +1 -1
- package/lib/components/transfer/src/composables/use-move.d.ts +2 -2
- package/lib/components/transfer/src/composables/use-move.js.map +1 -1
- package/lib/components/transfer/src/composables/use-props-alias.d.ts +4 -2
- package/lib/components/transfer/src/composables/use-props-alias.js.map +1 -1
- package/lib/components/transfer/src/transfer-panel.d.ts +11 -10
- package/lib/components/transfer/src/transfer-panel.js.map +1 -1
- package/lib/components/transfer/src/transfer-panel.vue.d.ts +23 -25
- package/lib/components/transfer/src/transfer-panel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/transfer/src/transfer-panel2.js.map +1 -1
- package/lib/components/transfer/src/transfer.d.ts +9 -8
- package/lib/components/transfer/src/transfer.js.map +1 -1
- package/lib/components/transfer/src/transfer.vue.d.ts +32 -42
- package/lib/components/transfer/src/transfer.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/transfer/src/transfer2.js.map +1 -1
- package/lib/components/tree/src/tree.vue.d.ts +19 -25
- package/lib/components/tree-select/src/tree-select.vue.d.ts +31 -31
- package/lib/components/tree-v2/src/tree.vue.d.ts +3 -3
- package/lib/components/upload/src/upload-content.js.map +1 -1
- package/lib/components/upload/src/upload-content.vue.d.ts +1 -1
- package/lib/components/upload/src/upload.vue.d.ts +2 -2
- package/lib/components/virtual-list/src/builders/build-grid.d.ts +1 -1
- package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +1 -1
- package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
- package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +1 -1
- package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
- package/lib/constants/index.js +2 -2
- package/lib/directives/trap-focus/index.js +5 -5
- package/lib/directives/trap-focus/index.js.map +1 -1
- package/lib/hooks/use-floating/index.d.ts +8 -8
- package/lib/hooks/use-popper/index.d.ts +5 -5
- package/lib/hooks/use-size/index.d.ts +3 -3
- package/lib/hooks/use-timeout/index.js +6 -2
- package/lib/hooks/use-timeout/index.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +267 -267
- package/lib/plugin.js +12 -12
- package/lib/utils/index.d.ts +2 -2
- package/lib/utils/typescript.d.ts +22 -5
- package/lib/utils/typescript.js.map +1 -1
- package/lib/utils/vue/typescript.d.ts +3 -2
- package/lib/utils/vue/vnode.d.ts +4 -4
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +2 -2
- package/tags.json +1 -1
- package/theme-chalk/el-table.css +1 -1
- package/theme-chalk/index.css +1 -1
- package/theme-chalk/src/table.scss +1 -1
- package/web-types.json +1 -1
|
@@ -65,7 +65,6 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
65
65
|
const props = __props;
|
|
66
66
|
const emit = __emit;
|
|
67
67
|
const rawAttrs = useAttrs();
|
|
68
|
-
const attrs = useAttrs$1();
|
|
69
68
|
const slots = useSlots();
|
|
70
69
|
const containerKls = computed(() => [
|
|
71
70
|
props.type === "textarea" ? nsTextarea.b() : nsInput.b(),
|
|
@@ -82,6 +81,8 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
82
81
|
rawAttrs.class
|
|
83
82
|
]);
|
|
84
83
|
const wrapperKls = computed(() => [nsInput.e("wrapper"), nsInput.is("focus", isFocused.value)]);
|
|
84
|
+
const attrs = useAttrs$1();
|
|
85
|
+
const maxlength = computed(() => props.maxlength?.toString());
|
|
85
86
|
const { form: elForm, formItem: elFormItem } = useFormItem();
|
|
86
87
|
const { inputId } = useFormItemInputId(props, { formItemContext: elFormItem });
|
|
87
88
|
const inputSize = useFormSize();
|
|
@@ -94,6 +95,7 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
94
95
|
const passwordVisible = ref(false);
|
|
95
96
|
const countStyle = ref();
|
|
96
97
|
const textareaCalcStyle = shallowRef(props.inputStyle);
|
|
98
|
+
const saveValue = ref("");
|
|
97
99
|
const _ref = computed(() => input.value || textarea.value);
|
|
98
100
|
const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(_ref, {
|
|
99
101
|
disabled: inputDisabled,
|
|
@@ -114,9 +116,12 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
114
116
|
const nativeInputValue = computed(() => isNil(props.modelValue) ? "" : String(props.modelValue));
|
|
115
117
|
const showClear = computed(() => props.clearable && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (isFocused.value || hovering.value));
|
|
116
118
|
const showPwdVisible = computed(() => props.showPassword && !inputDisabled.value && !!nativeInputValue.value);
|
|
117
|
-
const isWordLimitVisible = computed(() => props.showWordLimit && !!
|
|
118
|
-
const textLength = computed(() =>
|
|
119
|
-
|
|
119
|
+
const isWordLimitVisible = computed(() => props.showWordLimit && !!maxlength.value && (props.type === "text" || props.type === "textarea") && !inputDisabled.value && !props.readonly && !props.showPassword);
|
|
120
|
+
const textLength = computed(() => {
|
|
121
|
+
if (props.countGraphemes && props.showWordLimit) return props.countGraphemes(nativeInputValue.value);
|
|
122
|
+
return nativeInputValue.value.length;
|
|
123
|
+
});
|
|
124
|
+
const inputExceed = computed(() => !!isWordLimitVisible.value && textLength.value > Number(maxlength.value));
|
|
120
125
|
const suffixVisible = computed(() => !!slots.suffix || !!props.suffixIcon || showClear.value || props.showPassword || isWordLimitVisible.value || !!validateState.value && needStatusIcon.value);
|
|
121
126
|
const hasModelModifiers = computed(() => !!Object.keys(props.modelModifiers).length);
|
|
122
127
|
const [recordCursor, setCursor] = useCursor(input);
|
|
@@ -171,15 +176,71 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
171
176
|
if (isComposing.value) return;
|
|
172
177
|
const { lazy } = props.modelModifiers;
|
|
173
178
|
let { value } = event.target;
|
|
179
|
+
let shouldForceNativeUpdate = false;
|
|
174
180
|
if (lazy) {
|
|
175
181
|
emit(INPUT_EVENT, value);
|
|
176
182
|
return;
|
|
177
183
|
}
|
|
178
184
|
value = formatValue(value);
|
|
185
|
+
if (props.countGraphemes && maxlength.value != null) {
|
|
186
|
+
const limit = Number(maxlength.value);
|
|
187
|
+
const graphemes = props.countGraphemes(value);
|
|
188
|
+
const saveGraphemes = props.countGraphemes(saveValue.value);
|
|
189
|
+
if (graphemes > limit && graphemes > saveGraphemes) if (saveGraphemes > limit) {
|
|
190
|
+
value = saveValue.value;
|
|
191
|
+
shouldForceNativeUpdate = true;
|
|
192
|
+
} else {
|
|
193
|
+
const prevValue = saveValue.value;
|
|
194
|
+
const nextValue = value;
|
|
195
|
+
let prefixLen = 0;
|
|
196
|
+
while (prefixLen < prevValue.length && prefixLen < nextValue.length && prevValue[prefixLen] === nextValue[prefixLen]) prefixLen++;
|
|
197
|
+
let prevSuffixIndex = prevValue.length;
|
|
198
|
+
let nextSuffixIndex = nextValue.length;
|
|
199
|
+
while (prevSuffixIndex > prefixLen && nextSuffixIndex > prefixLen && prevValue[prevSuffixIndex - 1] === nextValue[nextSuffixIndex - 1]) {
|
|
200
|
+
prevSuffixIndex--;
|
|
201
|
+
nextSuffixIndex--;
|
|
202
|
+
}
|
|
203
|
+
const before = nextValue.slice(0, prefixLen);
|
|
204
|
+
const removed = prevValue.slice(prefixLen, prevSuffixIndex);
|
|
205
|
+
const inserted = nextValue.slice(prefixLen, nextSuffixIndex);
|
|
206
|
+
const after = nextValue.slice(nextSuffixIndex);
|
|
207
|
+
const baseCount = saveGraphemes - props.countGraphemes(removed);
|
|
208
|
+
const availableInserted = Math.max(0, limit - baseCount);
|
|
209
|
+
let acceptedInserted = "";
|
|
210
|
+
if (availableInserted > 0) if (typeof Intl !== "undefined" && "Segmenter" in Intl) {
|
|
211
|
+
const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
212
|
+
for (const { segment } of segmenter.segment(inserted)) {
|
|
213
|
+
const candidate = acceptedInserted + segment;
|
|
214
|
+
if (props.countGraphemes(candidate) > availableInserted) break;
|
|
215
|
+
acceptedInserted = candidate;
|
|
216
|
+
}
|
|
217
|
+
} else for (const char of Array.from(inserted)) {
|
|
218
|
+
const candidate = acceptedInserted + char;
|
|
219
|
+
if (props.countGraphemes(candidate) > availableInserted) break;
|
|
220
|
+
acceptedInserted = candidate;
|
|
221
|
+
}
|
|
222
|
+
value = before + acceptedInserted + after;
|
|
223
|
+
shouldForceNativeUpdate = true;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
179
226
|
if (String(value) === nativeInputValue.value) {
|
|
180
|
-
if (props.formatter)
|
|
227
|
+
if (props.formatter || shouldForceNativeUpdate) {
|
|
228
|
+
const target = event.target;
|
|
229
|
+
const blockedValue = target.value;
|
|
230
|
+
const selectionStart = target.selectionStart;
|
|
231
|
+
const selectionEnd = target.selectionEnd;
|
|
232
|
+
setNativeInputValue();
|
|
233
|
+
if (shouldForceNativeUpdate && _ref.value && selectionStart != null && selectionEnd != null) {
|
|
234
|
+
const restoredValue = _ref.value.value;
|
|
235
|
+
const afterTxt = blockedValue.slice(Math.max(0, selectionEnd));
|
|
236
|
+
let caretPos = Math.min(selectionStart, restoredValue.length);
|
|
237
|
+
if (afterTxt && restoredValue.endsWith(afterTxt)) caretPos = restoredValue.length - afterTxt.length;
|
|
238
|
+
_ref.value.setSelectionRange(caretPos, caretPos);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
181
241
|
return;
|
|
182
242
|
}
|
|
243
|
+
saveValue.value = value;
|
|
183
244
|
recordCursor();
|
|
184
245
|
emit(UPDATE_MODEL_EVENT, value);
|
|
185
246
|
emit(INPUT_EVENT, value);
|
|
@@ -228,6 +289,9 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
228
289
|
nextTick(() => resizeTextarea());
|
|
229
290
|
if (props.validateEvent) elFormItem?.validate?.("change").catch((err) => debugWarn(err));
|
|
230
291
|
});
|
|
292
|
+
watch(() => nativeInputValue.value, (val) => {
|
|
293
|
+
saveValue.value = val;
|
|
294
|
+
}, { immediate: true });
|
|
231
295
|
watch(nativeInputValue, (newValue) => {
|
|
232
296
|
if (!_ref.value) return;
|
|
233
297
|
const { trim, number } = props.modelModifiers;
|
|
@@ -256,6 +320,7 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
256
320
|
textareaStyle,
|
|
257
321
|
autosize: toRef(props, "autosize"),
|
|
258
322
|
isComposing,
|
|
323
|
+
passwordVisible,
|
|
259
324
|
focus,
|
|
260
325
|
blur,
|
|
261
326
|
select,
|
|
@@ -300,8 +365,8 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
300
365
|
class: unref(nsInput).e("inner")
|
|
301
366
|
}, unref(attrs), {
|
|
302
367
|
name: __props.name,
|
|
303
|
-
minlength: __props.minlength,
|
|
304
|
-
maxlength: __props.maxlength,
|
|
368
|
+
minlength: __props.countGraphemes ? void 0 : __props.minlength,
|
|
369
|
+
maxlength: __props.countGraphemes ? void 0 : maxlength.value,
|
|
305
370
|
type: __props.showPassword ? passwordVisible.value ? "text" : "password" : __props.type,
|
|
306
371
|
disabled: unref(inputDisabled),
|
|
307
372
|
readonly: __props.readonly,
|
|
@@ -359,7 +424,7 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
359
424
|
isWordLimitVisible.value ? (openBlock(), createElementBlock("span", {
|
|
360
425
|
key: 3,
|
|
361
426
|
class: normalizeClass([unref(nsInput).e("count"), unref(nsInput).is("outside", __props.wordLimitPosition === "outside")])
|
|
362
|
-
}, [createElementVNode("span", { class: normalizeClass(unref(nsInput).e("count-inner")) }, toDisplayString(textLength.value) + " / " + toDisplayString(
|
|
427
|
+
}, [createElementVNode("span", { class: normalizeClass(unref(nsInput).e("count-inner")) }, toDisplayString(textLength.value) + " / " + toDisplayString(maxlength.value), 3)], 2)) : createCommentVNode("v-if", true),
|
|
363
428
|
validateState.value && validateIcon.value && needStatusIcon.value ? (openBlock(), createBlock(unref(ElIcon), {
|
|
364
429
|
key: 4,
|
|
365
430
|
class: normalizeClass([
|
|
@@ -391,8 +456,8 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
391
456
|
]
|
|
392
457
|
}, unref(attrs), {
|
|
393
458
|
name: __props.name,
|
|
394
|
-
minlength: __props.minlength,
|
|
395
|
-
maxlength: __props.maxlength,
|
|
459
|
+
minlength: __props.countGraphemes ? void 0 : __props.minlength,
|
|
460
|
+
maxlength: __props.countGraphemes ? void 0 : maxlength.value,
|
|
396
461
|
tabindex: __props.tabindex,
|
|
397
462
|
disabled: unref(inputDisabled),
|
|
398
463
|
readonly: __props.readonly,
|
|
@@ -427,7 +492,7 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
427
492
|
key: 1,
|
|
428
493
|
style: normalizeStyle(countStyle.value),
|
|
429
494
|
class: normalizeClass([unref(nsInput).e("count"), unref(nsInput).is("outside", __props.wordLimitPosition === "outside")])
|
|
430
|
-
}, toDisplayString(textLength.value) + " / " + toDisplayString(
|
|
495
|
+
}, toDisplayString(textLength.value) + " / " + toDisplayString(maxlength.value), 7)) : createCommentVNode("v-if", true)
|
|
431
496
|
], 64))], 38);
|
|
432
497
|
};
|
|
433
498
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.vue_vue_type_script_setup_true_lang.mjs","names":["$slots"],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <slot name=\"password-icon\" :visible=\"passwordVisible\">\n <component :is=\"passwordIcon\" />\n </slot>\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[\n nsTextarea.e('inner'),\n nsInput.is('focus', isFocused),\n nsTextarea.is('clearable', clearable),\n ]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!props.maxlength &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter) {\n setNativeInputValue()\n }\n return\n }\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input.vue_vue_type_script_setup_true_lang.mjs","names":["$slots"],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"countGraphemes ? undefined : minlength\"\n :maxlength=\"countGraphemes ? undefined : maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <slot name=\"password-icon\" :visible=\"passwordVisible\">\n <component :is=\"passwordIcon\" />\n </slot>\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[\n nsTextarea.e('inner'),\n nsInput.is('focus', isFocused),\n nsTextarea.is('clearable', clearable),\n ]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"countGraphemes ? undefined : minlength\"\n :maxlength=\"countGraphemes ? undefined : maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst attrs = useAttrs()\nconst maxlength = computed(() => props.maxlength?.toString())\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\nconst saveValue = ref('')\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\n// @ts-ignore - used in template ref binding, TS cannot detect template usage\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!maxlength.value &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => {\n if (props.countGraphemes && props.showWordLimit) {\n return props.countGraphemes(nativeInputValue.value)\n }\n return nativeInputValue.value.length\n})\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(maxlength.value)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n let shouldForceNativeUpdate = false\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n if (props.countGraphemes && maxlength.value != null) {\n const limit = Number(maxlength.value)\n const graphemes = props.countGraphemes(value)\n const saveGraphemes = props.countGraphemes(saveValue.value)\n if (graphemes > limit && graphemes > saveGraphemes) {\n // If current value already exceeds limit, block further input and keep exceed state.\n if (saveGraphemes > limit) {\n value = saveValue.value\n shouldForceNativeUpdate = true\n } else {\n // Keep unchanged suffix like native maxlength behavior.\n // Instead of truncating from the end of the whole string,\n // only limit the inserted segment to available capacity.\n const prevValue = saveValue.value\n const nextValue = value\n let prefixLen = 0\n\n while (\n prefixLen < prevValue.length &&\n prefixLen < nextValue.length &&\n prevValue[prefixLen] === nextValue[prefixLen]\n ) {\n prefixLen++\n }\n\n let prevSuffixIndex = prevValue.length\n let nextSuffixIndex = nextValue.length\n while (\n prevSuffixIndex > prefixLen &&\n nextSuffixIndex > prefixLen &&\n prevValue[prevSuffixIndex - 1] === nextValue[nextSuffixIndex - 1]\n ) {\n prevSuffixIndex--\n nextSuffixIndex--\n }\n\n const before = nextValue.slice(0, prefixLen)\n const removed = prevValue.slice(prefixLen, prevSuffixIndex)\n const inserted = nextValue.slice(prefixLen, nextSuffixIndex)\n const after = nextValue.slice(nextSuffixIndex)\n\n const removedCount = props.countGraphemes(removed)\n const baseCount = saveGraphemes - removedCount\n const availableInserted = Math.max(0, limit - baseCount)\n\n let acceptedInserted = ''\n if (availableInserted > 0) {\n // Use Intl.Segmenter for proper grapheme cluster iteration if available.\n if (typeof Intl !== 'undefined' && 'Segmenter' in Intl) {\n const segmenter = new Intl.Segmenter(undefined, {\n granularity: 'grapheme',\n })\n for (const { segment } of segmenter.segment(inserted)) {\n const candidate = acceptedInserted + segment\n const newCount = props.countGraphemes(candidate)\n if (newCount > availableInserted) break\n acceptedInserted = candidate\n }\n } else {\n // Fallback to code-point iteration for older environments.\n for (const char of Array.from(inserted)) {\n const candidate = acceptedInserted + char\n const newCount = props.countGraphemes(candidate)\n if (newCount > availableInserted) break\n acceptedInserted = candidate\n }\n }\n }\n\n value = before + acceptedInserted + after\n shouldForceNativeUpdate = true\n }\n }\n }\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter || shouldForceNativeUpdate) {\n const target = event.target as TargetElement\n const blockedValue = target.value\n const selectionStart = target.selectionStart\n const selectionEnd = target.selectionEnd\n setNativeInputValue()\n // Keep caret position stable when input is blocked and value is reset.\n if (\n shouldForceNativeUpdate &&\n _ref.value &&\n selectionStart != null &&\n selectionEnd != null\n ) {\n const restoredValue = _ref.value.value\n const afterTxt = blockedValue.slice(Math.max(0, selectionEnd))\n let caretPos = Math.min(selectionStart, restoredValue.length)\n\n if (afterTxt && restoredValue.endsWith(afterTxt)) {\n caretPos = restoredValue.length - afterTxt.length\n }\n\n _ref.value.setSelectionRange(caretPos, caretPos)\n }\n }\n return\n }\n saveValue.value = value\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\nwatch(\n () => nativeInputValue.value,\n (val) => {\n saveValue.value = val\n },\n { immediate: true }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description whether the password is visible */\n passwordVisible,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkOA,MAAM,iBAAiB;;;;;;;;EAKvB,MAAM,QAAQ;EACd,MAAM,OAAO;EAEb,MAAM,WAAW,UAAY;EAC7B,MAAM,QAAQ,UAAS;EAEvB,MAAM,eAAe,eAAe;GAClC,MAAM,SAAS,aAAa,WAAW,GAAG,GAAG,QAAQ,GAAG;GACxD,QAAQ,EAAE,UAAU,MAAM;GAC1B,QAAQ,GAAG,YAAY,cAAc,MAAM;GAC3C,QAAQ,GAAG,UAAU,YAAY,MAAM;GACvC;KACG,QAAQ,EAAE,QAAQ,GAAG,MAAM,WAAW,MAAM;KAC5C,QAAQ,EAAE,SAAS,GAAG,MAAM,UAAU,MAAM;KAC5C,QAAQ,EAAE,SAAS,GAClB,MAAM,UAAU,MAAM,cAAc,MAAM,aAAa,MAAM;KAC9D,QAAQ,GAAG,UAAU,iBAAiB,GACrC,UAAU,SAAS,eAAe;KACnC,QAAQ,EAAE,SAAS,GAAG,MAAM,SAAS;IACvC;GACD,SAAS;GACV,CAAA;EAED,MAAM,aAAa,eAAe,CAChC,QAAQ,EAAE,UAAU,EACpB,QAAQ,GAAG,SAAS,UAAU,MAAM,CACrC,CAAA;EAED,MAAM,QAAQ,YAAS;EACvB,MAAM,YAAY,eAAe,MAAM,WAAW,UAAU,CAAA;EAE5D,MAAM,EAAE,MAAM,QAAQ,UAAU,eAAe,aAAY;EAC3D,MAAM,EAAE,YAAY,mBAAmB,OAAO,EAC5C,iBAAiB,YAClB,CAAA;EACD,MAAM,YAAY,aAAY;EAC9B,MAAM,gBAAgB,iBAAgB;EACtC,MAAM,UAAU,aAAa,QAAO;EACpC,MAAM,aAAa,aAAa,WAAU;EAE1C,MAAM,QAAQ,YAA6B;EAC3C,MAAM,WAAW,YAAgC;EAEjD,MAAM,WAAW,IAAI,MAAK;EAC1B,MAAM,kBAAkB,IAAI,MAAK;EACjC,MAAM,aAAa,KAAgB;EACnC,MAAM,oBAAoB,WAAW,MAAM,WAAU;EACrD,MAAM,YAAY,IAAI,GAAE;EAExB,MAAM,OAAO,eAAe,MAAM,SAAS,SAAS,MAAK;EAIzD,MAAM,EAAE,YAAY,WAAW,aAAa,eAAe,mBACzD,MACA;GACE,UAAU;GACV,YAAY;AACV,QAAI,MAAM,cACR,aAAY,WAAW,OAAO,CAAC,OAAO,QAAQ,UAAU,IAAI,CAAA;;GAGlE,CACF;EAEA,MAAM,iBAAiB,eAAe,QAAQ,cAAc,MAAK;EACjE,MAAM,gBAAgB,eAAe,YAAY,iBAAiB,GAAE;EACpE,MAAM,eAAe,eACb,cAAc,SAAS,sBAAsB,cAAc,OACnE;EACA,MAAM,eAAe,eAAgB,gBAAgB,QAAQ,OAAO,KAAK;EACzE,MAAM,iBAAiB,eAA2B,CAChD,SAAS,MACV,CAAA;EACD,MAAM,gBAAgB,eAA2B;GAC/C,MAAM;GACN,kBAAkB;GAClB,EAAE,QAAQ,MAAM,QAAQ;GACzB,CAAA;EACD,MAAM,mBAAmB,eACvB,MAAM,MAAM,WAAW,GAAG,KAAK,OAAO,MAAM,WAAU,CACxD;EACA,MAAM,YAAY,eAEd,MAAM,aACN,CAAC,cAAc,SACf,CAAC,MAAM,YACP,CAAC,CAAC,iBAAiB,UAClB,UAAU,SAAS,SAAS,OACjC;EACA,MAAM,iBAAiB,eACf,MAAM,gBAAgB,CAAC,cAAc,SAAS,CAAC,CAAC,iBAAiB,MACzE;EACA,MAAM,qBAAqB,eAEvB,MAAM,iBACN,CAAC,CAAC,UAAU,UACX,MAAM,SAAS,UAAU,MAAM,SAAS,eACzC,CAAC,cAAc,SACf,CAAC,MAAM,YACP,CAAC,MAAM,aACX;EACA,MAAM,aAAa,eAAe;AAChC,OAAI,MAAM,kBAAkB,MAAM,cAChC,QAAO,MAAM,eAAe,iBAAiB,MAAK;AAEpD,UAAO,iBAAiB,MAAM;IAC/B;EACD,MAAM,cAAc,eAGhB,CAAC,CAAC,mBAAmB,SAAS,WAAW,QAAQ,OAAO,UAAU,MAAK,CAC3E;EACA,MAAM,gBAAgB,eAElB,CAAC,CAAC,MAAM,UACR,CAAC,CAAC,MAAM,cACR,UAAU,SACV,MAAM,gBACN,mBAAmB,SAClB,CAAC,CAAC,cAAc,SAAS,eAAe,MAC7C;EACA,MAAM,oBAAoB,eAClB,CAAC,CAAC,OAAO,KAAK,MAAM,eAAe,CAAC,OAC5C;EAEA,MAAM,CAAC,cAAc,aAAa,UAAU,MAAK;AAEjD,oBAAkB,WAAW,YAAY;AACvC,yBAAqB;AACrB,OACE,CAAC,mBAAmB,SACnB,MAAM,WAAW,UAAU,MAAM,WAAW,aAE7C;GAEF,MAAM,EAAE,UADM,QAAQ,GACE;AACxB,cAAW,QAAQ,EAEjB,OAAO,eAAe,QAAQ,KAAK,GAAG,MACxC;IACD;EAED,MAAM,uBAAuB;GAC3B,MAAM,EAAE,MAAM,aAAa;AAE3B,OAAI,CAAC,cAAY,SAAS,cAAc,CAAC,SAAS,MAAO;AAEzD,OAAI,UAAU;IACZ,MAAM,UAAU,SAAS,SAAS,GAAG,SAAS,UAAU;IACxD,MAAM,UAAU,SAAS,SAAS,GAAG,SAAS,UAAU;IACxD,MAAM,gBAAgB,mBAAmB,SAAS,OAAO,SAAS,QAAO;AAMzE,sBAAkB,QAAQ;KACxB,WAAW;KACX,GAAG;KACL;AAEA,mBAAe;AAEb,cAAS,MAAO;AAChB,uBAAkB,QAAQ;MAC3B;SAED,mBAAkB,QAAQ,EACxB,WAAW,mBAAmB,SAAS,MAAM,CAAC,WAChD;;EAIJ,MAAM,wBAAwB,mBAA+B;GAC3D,IAAI,SAAS;AACb,gBAAa;AACX,QAAI,UAAU,CAAC,MAAM,SAAU;AAE/B,QAAI,EADe,SAAS,OAAO,iBAAiB,OACnC;AACf,gBAAW,eAAc;AACzB,cAAS;;;;EAKf,MAAM,uBAAuB,qBAAqB,eAAc;EAEhE,MAAM,4BAA4B;GAChC,MAAM,QAAQ,KAAK;GACnB,MAAM,iBAAiB,MAAM,YACzB,MAAM,UAAU,iBAAiB,MAAK,GACtC,iBAAiB;AACrB,OAAI,CAAC,SAAS,MAAM,UAAU,kBAAkB,MAAM,SAAS,OAAQ;AACvE,SAAM,QAAQ;;EAGhB,MAAM,eAAe,UAAkB;GACrC,MAAM,EAAE,MAAM,WAAW,MAAM;AAC/B,OAAI,KACF,SAAQ,MAAM,MAAK;AAErB,OAAI,OACF,SAAQ,GAAG,cAAc,MAAM;AAEjC,OAAI,MAAM,aAAa,MAAM,OAC3B,SAAQ,MAAM,OAAO,MAAK;AAE5B,UAAO;;EAGT,MAAM,cAAc,OAAO,UAAiB;AAG1C,OAAI,YAAY,MAAO;GAEvB,MAAM,EAAE,SAAS,MAAM;GACvB,IAAI,EAAE,UAAU,MAAM;GACtB,IAAI,0BAA0B;AAC9B,OAAI,MAAM;AACR,SAAK,aAAa,MAAK;AACvB;;AAGF,WAAQ,YAAY,MAAK;AAEzB,OAAI,MAAM,kBAAkB,UAAU,SAAS,MAAM;IACnD,MAAM,QAAQ,OAAO,UAAU,MAAK;IACpC,MAAM,YAAY,MAAM,eAAe,MAAK;IAC5C,MAAM,gBAAgB,MAAM,eAAe,UAAU,MAAK;AAC1D,QAAI,YAAY,SAAS,YAAY,cAEnC,KAAI,gBAAgB,OAAO;AACzB,aAAQ,UAAU;AAClB,+BAA0B;WACrB;KAIL,MAAM,YAAY,UAAU;KAC5B,MAAM,YAAY;KAClB,IAAI,YAAY;AAEhB,YACE,YAAY,UAAU,UACtB,YAAY,UAAU,UACtB,UAAU,eAAe,UAAU,WAEnC;KAGF,IAAI,kBAAkB,UAAU;KAChC,IAAI,kBAAkB,UAAU;AAChC,YACE,kBAAkB,aAClB,kBAAkB,aAClB,UAAU,kBAAkB,OAAO,UAAU,kBAAkB,IAC/D;AACA;AACA;;KAGF,MAAM,SAAS,UAAU,MAAM,GAAG,UAAS;KAC3C,MAAM,UAAU,UAAU,MAAM,WAAW,gBAAe;KAC1D,MAAM,WAAW,UAAU,MAAM,WAAW,gBAAe;KAC3D,MAAM,QAAQ,UAAU,MAAM,gBAAe;KAG7C,MAAM,YAAY,gBADG,MAAM,eAAe,QAAO;KAEjD,MAAM,oBAAoB,KAAK,IAAI,GAAG,QAAQ,UAAS;KAEvD,IAAI,mBAAmB;AACvB,SAAI,oBAAoB,EAEtB,KAAI,OAAO,SAAS,eAAe,eAAe,MAAM;MACtD,MAAM,YAAY,IAAI,KAAK,UAAU,QAAW,EAC9C,aAAa,YACd,CAAA;AACD,WAAK,MAAM,EAAE,aAAa,UAAU,QAAQ,SAAS,EAAE;OACrD,MAAM,YAAY,mBAAmB;AAErC,WADiB,MAAM,eAAe,UAAS,GAChC,kBAAmB;AAClC,0BAAmB;;WAIrB,MAAK,MAAM,QAAQ,MAAM,KAAK,SAAS,EAAE;MACvC,MAAM,YAAY,mBAAmB;AAErC,UADiB,MAAM,eAAe,UAAS,GAChC,kBAAmB;AAClC,yBAAmB;;AAKzB,aAAQ,SAAS,mBAAmB;AACpC,+BAA0B;;;AAOhC,OAAI,OAAO,MAAM,KAAK,iBAAiB,OAAO;AAE5C,QAAI,MAAM,aAAa,yBAAyB;KAC9C,MAAM,SAAS,MAAM;KACrB,MAAM,eAAe,OAAO;KAC5B,MAAM,iBAAiB,OAAO;KAC9B,MAAM,eAAe,OAAO;AAC5B,0BAAoB;AAEpB,SACE,2BACA,KAAK,SACL,kBAAkB,QAClB,gBAAgB,MAChB;MACA,MAAM,gBAAgB,KAAK,MAAM;MACjC,MAAM,WAAW,aAAa,MAAM,KAAK,IAAI,GAAG,aAAa,CAAA;MAC7D,IAAI,WAAW,KAAK,IAAI,gBAAgB,cAAc,OAAM;AAE5D,UAAI,YAAY,cAAc,SAAS,SAAS,CAC9C,YAAW,cAAc,SAAS,SAAS;AAG7C,WAAK,MAAM,kBAAkB,UAAU,SAAQ;;;AAGnD;;AAEF,aAAU,QAAQ;AAElB,iBAAa;AACb,QAAK,oBAAoB,MAAK;AAC9B,QAAK,aAAa,MAAK;AAIvB,SAAM,UAAS;AAEf,OAAK,MAAM,aAAa,MAAM,UAAW,CAAC,kBAAkB,MAC1D,sBAAoB;AAEtB,cAAU;;EAGZ,MAAM,eAAe,OAAO,UAAiB;GAC3C,IAAI,EAAE,UAAU,MAAM;AAEtB,WAAQ,YAAY,MAAK;AACzB,OAAI,MAAM,eAAe,KACvB,MAAK,oBAAoB,MAAK;AAEhC,QAAK,cAAc,OAAO,MAAK;AAE/B,SAAM,UAAS;AACf,wBAAoB;;EAGtB,MAAM,EACJ,aACA,wBACA,yBACA,yBACE,eAAe;GAAE;GAAM,kBAAkB;GAAa,CAAA;EAE1D,MAAM,8BAA8B;AAClC,mBAAgB,QAAQ,CAAC,gBAAgB;;EAG3C,MAAM,cAAc,KAAK,OAAO,OAAM;EAEtC,MAAM,aAAa,KAAK,OAAO,MAAK;EAEpC,MAAM,oBAAoB,QAAoB;AAC5C,YAAS,QAAQ;AACjB,QAAK,cAAc,IAAG;;EAGxB,MAAM,oBAAoB,QAAoB;AAC5C,YAAS,QAAQ;AACjB,QAAK,cAAc,IAAG;;EAGxB,MAAM,iBAAiB,QAAuB;AAC5C,QAAK,WAAW,IAAG;;EAGrB,MAAM,eAAe;AACnB,QAAK,OAAO,QAAO;;EAGrB,MAAM,SAAS,QAAqB;AAClC,QAAK,oBAAoB,GAAE;AAC3B,QAAK,cAAc,GAAE;AACrB,QAAK,SAAS,IAAG;AACjB,QAAK,aAAa,GAAE;;AAGtB,cACQ,MAAM,kBACN;AACJ,kBAAe,gBAAgB,CAAA;AAC/B,OAAI,MAAM,cACR,aAAY,WAAW,SAAS,CAAC,OAAO,QAAQ,UAAU,IAAI,CAAA;IAGpE;AAEA,cACQ,iBAAiB,QACtB,QAAQ;AACP,aAAU,QAAQ;KAEpB,EAAE,WAAW,MAAK,CACpB;AAKA,QAAM,mBAAmB,aAAa;AACpC,OAAI,CAAC,KAAK,MACR;GAEF,MAAM,EAAE,MAAM,WAAW,MAAM;GAC/B,MAAM,UAAU,KAAK,MAAM;GAC3B,MAAM,gBACH,UAAU,MAAM,SAAS,aAAa,CAAC,OAAO,KAAK,QAAO,GACvD,GAAG,cAAc,QAAQ,KACzB;AAEN,OAAI,iBAAiB,SACnB;AAGF,OAAI,SAAS,kBAAkB,KAAK,SAAS,KAAK,MAAM,SAAS,SAC/D;QAAI,QAAQ,aAAa,MAAM,KAAK,SAClC;;AAIJ,wBAAoB;IACrB;AAKD,cACQ,MAAM,MACZ,YAAY;AACV,SAAM,UAAS;AACf,wBAAoB;AACpB,mBAAe;IAEnB;AAEA,kBAAgB;AACd,OAAI,CAAC,MAAM,aAAa,MAAM,OAC5B,WACE,gBACA,6DACF;AAEF,wBAAoB;AACpB,YAAS,eAAc;IACxB;AAED,WAAa;GAEX;GAEA;GAEA,KAAK;GAEL;GAGA,UAAU,MAAM,OAAO,WAAW;GAGlC;GAGA;GAGA;GAEA;GAEA;GAEA;GAEA;GACD,CAAA;;uBAvtBC,mBA6KM,OAAA;IA5KH,OAAK,eAAA,CAAU,aAAA;MAA+B,MAAA,QAAO,CAAC,GAAE,SAAA,SAAA,GAAsBA,KAAAA,OAAO;MAAiB,MAAA,QAAO,CAAC,GAAE,SAAA,UAAA,GAAuBA,KAAAA,OAAO;;IAO9I,OAAK,eAAE,eAAA,MAAc;IACrB,cAAY;IACZ,cAAY;OAEb,mBAAA,UAAc,EACE,QAAA,SAAI,2BAApB,mBAwGW,UAAA,EAAA,KAAA,GAAA,EAAA;IAvGT,mBAAA,iBAAqB;IACVA,KAAAA,OAAO,wBAAlB,mBAEM,OAAA;;KAFsB,OAAK,eAAE,MAAA,QAAO,CAAC,GAAE,SAAA,UAAA,CAAA;QAC3C,WAAuB,KAAA,QAAA,UAAA;IAGzB,mBA4FM,OAAA;cA5FG;KAAJ,KAAI;KAAc,OAAK,eAAE,WAAA,MAAU;;KACtC,mBAAA,gBAAoB;KACRA,KAAAA,OAAO,UAAU,QAAA,2BAA7B,mBAOO,QAAA;;MAPmC,OAAK,eAAE,MAAA,QAAO,CAAC,EAAC,SAAA,CAAA;SACxD,mBAKO,QAAA,EALA,OAAK,eAAE,MAAA,QAAO,CAAC,EAAC,eAAA,CAAA,KACrB,WAAsB,KAAA,QAAA,SAAA,EACP,QAAA,2BAAf,YAEU,MAAA,OAAA,EAAA;;MAFkB,OAAK,eAAE,MAAA,QAAO,CAAC,EAAC,OAAA,CAAA;;6BACZ,eAA9B,YAA8B,wBAAd,QAAA,WAAU,CAAA;;;KAKhC,mBA0BE,SA1BF,WA0BE;MAzBC,IAAI,MAAA,QAAO;eACR;MAAJ,KAAI;MACH,OAAO,MAAA,QAAO,CAAC,EAAC,QAAA;QACT,MAAA,MAAK,EAAA;MACZ,MAAM,QAAA;MACN,WAAW,QAAA,iBAAiB,SAAY,QAAA;MACxC,WAAW,QAAA,iBAAiB,SAAY,UAAA;MACxC,MAAM,QAAA,eAAgB,gBAAA,QAAe,SAAA,aAA0B,QAAA;MAC/D,UAAU,MAAA,cAAa;MACvB,UAAU,QAAA;MACV,cAAc,QAAA;MACd,UAAU,QAAA;MACV,cAAY,QAAA;MACZ,aAAa,QAAA;MACb,OAAO,QAAA;MACP,MAAM,QAAA;MACN,WAAW,QAAA;MACX,MAAM,QAAA;MACN,WAAW,QAAA;MACX,oBAAgB,OAAA,OAAA,OAAA,kBAAE,MAAA,uBAAA,IAAA,MAAA,uBAAA,CAAA,GAAA,KAAsB;MACxC,qBAAiB,OAAA,OAAA,OAAA,kBAAE,MAAA,wBAAA,IAAA,MAAA,wBAAA,CAAA,GAAA,KAAuB;MAC1C,kBAAc,OAAA,OAAA,OAAA,kBAAE,MAAA,qBAAA,IAAA,MAAA,qBAAA,CAAA,GAAA,KAAoB;MACpC,SAAO;MACP,UAAQ;MACR,WAAS;;KAGZ,mBAAA,gBAAoB;KACR,cAAA,sBAAZ,mBAmDO,QAAA;;MAnDqB,OAAK,eAAE,MAAA,QAAO,CAAC,EAAC,SAAA,CAAA;SAC1C,mBAiDO,QAAA,EAjDA,OAAK,eAAE,MAAA,QAAO,CAAC,EAAC,eAAA,CAAA;OAEZ,UAAA,SAAS,CAAK,eAAA,SAAc,CAAK,mBAAA,sBAD1C,mBAOW,UAAA,EAAA,KAAA,GAAA,EAAA,CAJT,WAAsB,KAAA,QAAA,SAAA,EACP,QAAA,2BAAf,YAEU,MAAA,OAAA,EAAA;;OAFkB,OAAK,eAAE,MAAA,QAAO,CAAC,EAAC,OAAA,CAAA;;8BACZ,eAA9B,YAA8B,wBAAd,QAAA,WAAU,CAAA;;;MAItB,UAAA,sBADR,YAOU,MAAA,OAAA,EAAA;;OALP,OAAK,eAAA,CAAG,MAAA,QAAO,CAAC,EAAC,OAAA,EAAU,MAAA,QAAO,CAAC,EAAC,QAAA,CAAA,CAAA;OACpC,aAAS,cAAU,MAAA,KAAI,EAAA,CAAA,UAAA,CAAA;OACvB,SAAO;;8BAEqB,eAA7B,YAA6B,wBAAb,QAAA,UAAS,CAAA;;;MAGnB,eAAA,sBADR,YAUU,MAAA,OAAA,EAAA;;OARP,OAAK,eAAA,CAAG,MAAA,QAAO,CAAC,EAAC,OAAA,EAAU,MAAA,QAAO,CAAC,EAAC,WAAA,CAAA,CAAA;OACpC,SAAO;OACP,aAAS,cAAU,MAAA,KAAI,EAAA,CAAA,UAAA,CAAA;OACvB,WAAO,cAAU,MAAA,KAAI,EAAA,CAAA,UAAA,CAAA;;8BAIf,CAFP,WAEO,KAAA,QAAA,iBAAA,EAFqB,SAAS,gBAAA,OAAe,QAE7C,eADL,YAAgC,wBAAhB,aAAA,MAAY,CAAA;;;;;;;MAIxB,mBAAA,sBADR,mBAUO,QAAA;;OARJ,OAAK,eAAA,CAAoB,MAAA,QAAO,CAAC,EAAC,QAAA,EAA2B,MAAA,QAAO,CAAC,GAAE,WAAY,QAAA,sBAAiB,UAAA;UAKrG,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,QAAO,CAAC,EAAC,cAAA,CAAA,oBAClB,WAAA,MAAU,GAAG,QAAG,gBAAG,UAAA,MAAS,EAAA,EAAA;MAI3B,cAAA,SAAiB,aAAA,SAAgB,eAAA,sBADzC,YASU,MAAA,OAAA,EAAA;;OAPP,OAAK,eAAA;QAAoB,MAAA,QAAO,CAAC,EAAC,OAAA;QAA0B,MAAA,QAAO,CAAC,EAAC,eAAA;QAAkC,MAAA,QAAO,CAAC,GAAE,WAAY,cAAA,UAAa,aAAA;;;8BAM3G,eAAhC,YAAgC,wBAAhB,aAAA,MAAY,CAAA;;;;;IAMpC,mBAAA,gBAAoB;IACTA,KAAAA,OAAO,uBAAlB,mBAEM,OAAA;;KAFqB,OAAK,eAAE,MAAA,QAAO,CAAC,GAAE,SAAA,SAAA,CAAA;QAC1C,WAAsB,KAAA,QAAA,SAAA;2BAK1B,mBAoDW,UAAA,EAAA,KAAA,GAAA,EAAA;IArDX,mBAAA,aAAiB;IAEf,mBAgCE,YAhCF,WAgCE;KA/BC,IAAI,MAAA,QAAO;cACR;KAAJ,KAAI;KACH,OAAK;MAAc,MAAA,WAAU,CAAC,EAAC,QAAA;MAAqB,MAAA,QAAO,CAAC,GAAE,SAAU,MAAA,UAAS,CAAA;MAAa,MAAA,WAAU,CAAC,GAAE,aAAc,QAAA,UAAS;;OAK3H,MAAA,MAAK,EAAA;KACZ,MAAM,QAAA;KACN,WAAW,QAAA,iBAAiB,SAAY,QAAA;KACxC,WAAW,QAAA,iBAAiB,SAAY,UAAA;KACxC,UAAU,QAAA;KACV,UAAU,MAAA,cAAa;KACvB,UAAU,QAAA;KACV,cAAc,QAAA;KACd,OAAO,cAAA;KACP,cAAY,QAAA;KACZ,aAAa,QAAA;KACb,MAAM,QAAA;KACN,WAAW,QAAA;KACX,MAAM,QAAA;KACN,MAAM,QAAA;KACN,WAAW,QAAA;KACX,oBAAgB,OAAA,OAAA,OAAA,kBAAE,MAAA,uBAAA,IAAA,MAAA,uBAAA,CAAA,GAAA,KAAsB;KACxC,qBAAiB,OAAA,OAAA,OAAA,kBAAE,MAAA,wBAAA,IAAA,MAAA,wBAAA,CAAA,GAAA,KAAuB;KAC1C,kBAAc,OAAA,OAAA,OAAA,kBAAE,MAAA,qBAAA,IAAA,MAAA,qBAAA,CAAA,GAAA,KAAoB;KACpC,SAAO;KACP,SAAK,OAAA,OAAA,OAAA,kBAAE,MAAA,YAAA,IAAA,MAAA,YAAA,CAAA,GAAA,KAAW;KAClB,QAAI,OAAA,OAAA,OAAA,kBAAE,MAAA,WAAA,IAAA,MAAA,WAAA,CAAA,GAAA,KAAU;KAChB,UAAQ;KACR,WAAS;;IAGJ,UAAA,sBADR,YAOU,MAAA,OAAA,EAAA;;KALP,OAAK,eAAA,CAAG,MAAA,WAAU,CAAC,EAAC,OAAA,EAAU,MAAA,WAAU,CAAC,EAAC,QAAA,CAAA,CAAA;KAC1C,aAAS,cAAU,MAAA,KAAI,EAAA,CAAA,UAAA,CAAA;KACvB,SAAO;;4BAEqB,eAA7B,YAA6B,wBAAb,QAAA,UAAS,CAAA;;;IAGnB,mBAAA,sBADR,mBASO,QAAA;;KAPJ,OAAK,eAAE,WAAA,MAAU;KACjB,OAAK,eAAA,CAAc,MAAA,QAAO,CAAC,EAAC,QAAA,EAAqB,MAAA,QAAO,CAAC,GAAE,WAAY,QAAA,sBAAiB,UAAA;uBAKtF,WAAA,MAAU,GAAG,QAAG,gBAAG,UAAA,MAAS,EAAA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input2.mjs","names":[],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <slot name=\"password-icon\" :visible=\"passwordVisible\">\n <component :is=\"passwordIcon\" />\n </slot>\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[\n nsTextarea.e('inner'),\n nsInput.is('focus', isFocused),\n nsTextarea.is('clearable', clearable),\n ]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"minlength\"\n :maxlength=\"maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!props.maxlength &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter) {\n setNativeInputValue()\n }\n return\n }\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"input2.mjs","names":[],"sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n containerKls,\n {\n [nsInput.bm('group', 'append')]: $slots.append,\n [nsInput.bm('group', 'prepend')]: $slots.prepend,\n },\n ]\"\n :style=\"containerStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- input -->\n <template v-if=\"type !== 'textarea'\">\n <!-- prepend slot -->\n <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n <slot name=\"prepend\" />\n </div>\n\n <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n <!-- prefix slot -->\n <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n <span :class=\"nsInput.e('prefix-inner')\">\n <slot name=\"prefix\" />\n <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </span>\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"nsInput.e('inner')\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"countGraphemes ? undefined : minlength\"\n :maxlength=\"countGraphemes ? undefined : maxlength\"\n :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :tabindex=\"tabindex\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n\n <!-- suffix slot -->\n <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n <span :class=\"nsInput.e('suffix-inner')\">\n <template\n v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n >\n <slot name=\"suffix\" />\n <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n <component :is=\"suffixIcon\" />\n </el-icon>\n </template>\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"showPwdVisible\"\n :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n @click=\"handlePasswordVisible\"\n @mousedown.prevent=\"NOOP\"\n @mouseup.prevent=\"NOOP\"\n >\n <slot name=\"password-icon\" :visible=\"passwordVisible\">\n <component :is=\"passwordIcon\" />\n </slot>\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n <span :class=\"nsInput.e('count-inner')\">\n {{ textLength }} / {{ maxlength }}\n </span>\n </span>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </span>\n </span>\n </div>\n\n <!-- append slot -->\n <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n <slot name=\"append\" />\n </div>\n </template>\n\n <!-- textarea -->\n <template v-else>\n <textarea\n :id=\"inputId\"\n ref=\"textarea\"\n :class=\"[\n nsTextarea.e('inner'),\n nsInput.is('focus', isFocused),\n nsTextarea.is('clearable', clearable),\n ]\"\n v-bind=\"attrs\"\n :name=\"name\"\n :minlength=\"countGraphemes ? undefined : minlength\"\n :maxlength=\"countGraphemes ? undefined : maxlength\"\n :tabindex=\"tabindex\"\n :disabled=\"inputDisabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :style=\"textareaStyle\"\n :aria-label=\"ariaLabel\"\n :placeholder=\"placeholder\"\n :form=\"form\"\n :autofocus=\"autofocus\"\n :rows=\"rows\"\n :role=\"containerRole\"\n :inputmode=\"inputmode\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n @keydown=\"handleKeydown\"\n />\n <el-icon\n v-if=\"showClear\"\n :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n @mousedown.prevent=\"NOOP\"\n @click=\"clear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <span\n v-if=\"isWordLimitVisible\"\n :style=\"countStyle\"\n :class=\"[\n nsInput.e('count'),\n nsInput.is('outside', wordLimitPosition === 'outside'),\n ]\"\n >\n {{ textLength }} / {{ maxlength }}\n </span>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n toRef,\n useAttrs as useRawAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Hide, View } from '@element-plus/icons-vue'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport {\n NOOP,\n ValidateComponentsMap,\n debugWarn,\n isClient,\n isObject,\n} from '@element-plus/utils'\nimport {\n useAttrs,\n useComposition,\n useCursor,\n useFocusController,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n name: COMPONENT_NAME,\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n nsInput.m(inputSize.value),\n nsInput.is('disabled', inputDisabled.value),\n nsInput.is('exceed', inputExceed.value),\n {\n [nsInput.b('group')]: slots.prepend || slots.append,\n [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n [nsInput.m('suffix')]:\n slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n [nsInput.bm('suffix', 'password-clear')]:\n showClear.value && showPwdVisible.value,\n [nsInput.b('hidden')]: props.type === 'hidden',\n },\n rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n nsInput.e('wrapper'),\n nsInput.is('focus', isFocused.value),\n])\n\nconst attrs = useAttrs()\nconst maxlength = computed(() => props.maxlength?.toString())\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\nconst saveValue = ref('')\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\n// @ts-ignore - used in template ref binding, TS cannot detect template usage\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n _ref,\n {\n disabled: inputDisabled,\n afterBlur() {\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n props.inputStyle,\n textareaCalcStyle.value,\n { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n () =>\n props.clearable &&\n !inputDisabled.value &&\n !props.readonly &&\n !!nativeInputValue.value &&\n (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n () =>\n props.showWordLimit &&\n !!maxlength.value &&\n (props.type === 'text' || props.type === 'textarea') &&\n !inputDisabled.value &&\n !props.readonly &&\n !props.showPassword\n)\nconst textLength = computed(() => {\n if (props.countGraphemes && props.showWordLimit) {\n return props.countGraphemes(nativeInputValue.value)\n }\n return nativeInputValue.value.length\n})\nconst inputExceed = computed(\n () =>\n // show exceed style if length of initial value greater then maxlength\n !!isWordLimitVisible.value && textLength.value > Number(maxlength.value)\n)\nconst suffixVisible = computed(\n () =>\n !!slots.suffix ||\n !!props.suffixIcon ||\n showClear.value ||\n props.showPassword ||\n isWordLimitVisible.value ||\n (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n () => !!Object.keys(props.modelModifiers).length\n)\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n onceInitSizeTextarea()\n if (\n !isWordLimitVisible.value ||\n (props.resize !== 'both' && props.resize !== 'horizontal')\n )\n return\n const entry = entries[0]\n const { width } = entry.contentRect\n countStyle.value = {\n /** right: 100% - width + padding(22) - right(10) */\n right: `calc(100% - ${width + 22 - 10}px)`,\n }\n})\n\nconst resizeTextarea = () => {\n const { type, autosize } = props\n\n if (!isClient || type !== 'textarea' || !textarea.value) return\n\n if (autosize) {\n const minRows = isObject(autosize) ? autosize.minRows : undefined\n const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n // If set textarea height in this case, the scrollbar will not hide.\n // So we need to hide scrollbar first, and reset it in next tick.\n // see https://github.com/element-plus/element-plus/issues/8825\n textareaCalcStyle.value = {\n overflowY: 'hidden',\n ...textareaStyle,\n }\n\n nextTick(() => {\n // NOTE: Force repaint to make sure the style set above is applied.\n textarea.value!.offsetHeight\n textareaCalcStyle.value = textareaStyle\n })\n } else {\n textareaCalcStyle.value = {\n minHeight: calcTextareaHeight(textarea.value).minHeight,\n }\n }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n let isInit = false\n return () => {\n if (isInit || !props.autosize) return\n const isElHidden = textarea.value?.offsetParent === null\n if (!isElHidden) {\n setTimeout(resizeTextarea)\n isInit = true\n }\n }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n const input = _ref.value\n const formatterValue = props.formatter\n ? props.formatter(nativeInputValue.value)\n : nativeInputValue.value\n if (!input || input.value === formatterValue || props.type === 'file') return\n input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n const { trim, number } = props.modelModifiers\n if (trim) {\n value = value.trim()\n }\n if (number) {\n value = `${looseToNumber(value)}`\n }\n if (props.formatter && props.parser) {\n value = props.parser(value)\n }\n return value\n}\n\nconst handleInput = async (event: Event) => {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (isComposing.value) return\n\n const { lazy } = props.modelModifiers\n let { value } = event.target as TargetElement\n let shouldForceNativeUpdate = false\n if (lazy) {\n emit(INPUT_EVENT, value)\n return\n }\n\n value = formatValue(value)\n\n if (props.countGraphemes && maxlength.value != null) {\n const limit = Number(maxlength.value)\n const graphemes = props.countGraphemes(value)\n const saveGraphemes = props.countGraphemes(saveValue.value)\n if (graphemes > limit && graphemes > saveGraphemes) {\n // If current value already exceeds limit, block further input and keep exceed state.\n if (saveGraphemes > limit) {\n value = saveValue.value\n shouldForceNativeUpdate = true\n } else {\n // Keep unchanged suffix like native maxlength behavior.\n // Instead of truncating from the end of the whole string,\n // only limit the inserted segment to available capacity.\n const prevValue = saveValue.value\n const nextValue = value\n let prefixLen = 0\n\n while (\n prefixLen < prevValue.length &&\n prefixLen < nextValue.length &&\n prevValue[prefixLen] === nextValue[prefixLen]\n ) {\n prefixLen++\n }\n\n let prevSuffixIndex = prevValue.length\n let nextSuffixIndex = nextValue.length\n while (\n prevSuffixIndex > prefixLen &&\n nextSuffixIndex > prefixLen &&\n prevValue[prevSuffixIndex - 1] === nextValue[nextSuffixIndex - 1]\n ) {\n prevSuffixIndex--\n nextSuffixIndex--\n }\n\n const before = nextValue.slice(0, prefixLen)\n const removed = prevValue.slice(prefixLen, prevSuffixIndex)\n const inserted = nextValue.slice(prefixLen, nextSuffixIndex)\n const after = nextValue.slice(nextSuffixIndex)\n\n const removedCount = props.countGraphemes(removed)\n const baseCount = saveGraphemes - removedCount\n const availableInserted = Math.max(0, limit - baseCount)\n\n let acceptedInserted = ''\n if (availableInserted > 0) {\n // Use Intl.Segmenter for proper grapheme cluster iteration if available.\n if (typeof Intl !== 'undefined' && 'Segmenter' in Intl) {\n const segmenter = new Intl.Segmenter(undefined, {\n granularity: 'grapheme',\n })\n for (const { segment } of segmenter.segment(inserted)) {\n const candidate = acceptedInserted + segment\n const newCount = props.countGraphemes(candidate)\n if (newCount > availableInserted) break\n acceptedInserted = candidate\n }\n } else {\n // Fallback to code-point iteration for older environments.\n for (const char of Array.from(inserted)) {\n const candidate = acceptedInserted + char\n const newCount = props.countGraphemes(candidate)\n if (newCount > availableInserted) break\n acceptedInserted = candidate\n }\n }\n }\n\n value = before + acceptedInserted + after\n shouldForceNativeUpdate = true\n }\n }\n }\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (String(value) === nativeInputValue.value) {\n // preserve native features while being compatible with #9501\n if (props.formatter || shouldForceNativeUpdate) {\n const target = event.target as TargetElement\n const blockedValue = target.value\n const selectionStart = target.selectionStart\n const selectionEnd = target.selectionEnd\n setNativeInputValue()\n // Keep caret position stable when input is blocked and value is reset.\n if (\n shouldForceNativeUpdate &&\n _ref.value &&\n selectionStart != null &&\n selectionEnd != null\n ) {\n const restoredValue = _ref.value.value\n const afterTxt = blockedValue.slice(Math.max(0, selectionEnd))\n let caretPos = Math.min(selectionStart, restoredValue.length)\n\n if (afterTxt && restoredValue.endsWith(afterTxt)) {\n caretPos = restoredValue.length - afterTxt.length\n }\n\n _ref.value.setSelectionRange(caretPos, caretPos)\n }\n }\n return\n }\n saveValue.value = value\n\n recordCursor()\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n await nextTick()\n\n if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n setNativeInputValue()\n }\n setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n let { value } = event.target as TargetElement\n\n value = formatValue(value)\n if (props.modelModifiers.lazy) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n emit(CHANGE_EVENT, value, event)\n\n await nextTick()\n setNativeInputValue()\n}\n\nconst {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n hovering.value = false\n emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n hovering.value = true\n emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n emit('keydown', evt)\n}\n\nconst select = () => {\n _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n emit(UPDATE_MODEL_EVENT, '')\n emit(CHANGE_EVENT, '')\n emit('clear', evt)\n emit(INPUT_EVENT, '')\n}\n\nwatch(\n () => props.modelValue,\n () => {\n nextTick(() => resizeTextarea())\n if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\nwatch(\n () => nativeInputValue.value,\n (val) => {\n saveValue.value = val\n },\n { immediate: true }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n if (!_ref.value) {\n return\n }\n const { trim, number } = props.modelModifiers\n const elValue = _ref.value.value\n const displayValue =\n (number || props.type === 'number') && !/^0\\d/.test(elValue)\n ? `${looseToNumber(elValue)}`\n : elValue\n\n if (displayValue === newValue) {\n return\n }\n\n if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n if (trim && displayValue.trim() === newValue) {\n return\n }\n }\n\n setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n () => props.type,\n async () => {\n await nextTick()\n setNativeInputValue()\n resizeTextarea()\n }\n)\n\nonMounted(() => {\n if (!props.formatter && props.parser) {\n debugWarn(\n COMPONENT_NAME,\n 'If you set the parser, you also need to set the formatter.'\n )\n }\n setNativeInputValue()\n nextTick(resizeTextarea)\n})\n\ndefineExpose({\n /** @description HTML input element */\n input,\n /** @description HTML textarea element */\n textarea,\n /** @description HTML element, input or textarea */\n ref: _ref,\n /** @description style of textarea. */\n textareaStyle,\n\n /** @description from props (used on unit test) */\n autosize: toRef(props, 'autosize'),\n\n /** @description is input composing */\n isComposing,\n\n /** @description whether the password is visible */\n passwordVisible,\n\n /** @description HTML input element native method */\n focus,\n /** @description HTML input element native method */\n blur,\n /** @description HTML input element native method */\n select,\n /** @description clear input value */\n clear,\n /** @description resize textarea. */\n resizeTextarea,\n})\n</script>\n"],"mappings":""}
|
|
@@ -95,8 +95,8 @@ interface InputNumberProps {
|
|
|
95
95
|
* @deprecated Removed after 3.0.0, Use `InputNumberProps` instead.
|
|
96
96
|
*/
|
|
97
97
|
declare const inputNumberProps: {
|
|
98
|
-
readonly inputmode: EpPropFinalized<(new (...args: any[]) => "text" | "
|
|
99
|
-
readonly align: EpPropFinalized<(new (...args: any[]) => "center" | "
|
|
98
|
+
readonly inputmode: EpPropFinalized<(new (...args: any[]) => "text" | "email" | "search" | "tel" | "url" | "none" | "numeric" | "decimal") | (() => "text" | "email" | "search" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined) | (((new (...args: any[]) => "text" | "email" | "search" | "tel" | "url" | "none" | "numeric" | "decimal") | (() => "text" | "email" | "search" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined)) | null)[], unknown, unknown, undefined, boolean>;
|
|
99
|
+
readonly align: EpPropFinalized<(new (...args: any[]) => "center" | "left" | "right") | (() => "center" | "left" | "right") | (((new (...args: any[]) => "center" | "left" | "right") | (() => "center" | "left" | "right")) | null)[], unknown, unknown, "center", boolean>;
|
|
100
100
|
readonly disabledScientific: BooleanConstructor;
|
|
101
101
|
readonly ariaLabel: StringConstructor;
|
|
102
102
|
readonly id: EpPropFinalized<StringConstructor, unknown, unknown, undefined, boolean>;
|
|
@@ -113,7 +113,7 @@ declare const inputNumberProps: {
|
|
|
113
113
|
readonly readonly: BooleanConstructor;
|
|
114
114
|
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
|
|
115
115
|
readonly size: {
|
|
116
|
-
readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "
|
|
116
|
+
readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
|
|
117
117
|
readonly required: false;
|
|
118
118
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
119
119
|
__epPropKey: true;
|
|
@@ -18,8 +18,8 @@ declare const __VLS_base: vue.DefineComponent<InputNumberProps, {
|
|
|
18
18
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
19
19
|
blur: (e: FocusEvent) => void;
|
|
20
20
|
focus: (e: FocusEvent) => void;
|
|
21
|
-
"update:modelValue": (val: number | undefined) => void;
|
|
22
21
|
change: (cur: number | undefined, prev: number | undefined) => void;
|
|
22
|
+
"update:modelValue": (val: number | undefined) => void;
|
|
23
23
|
input: (val: number | null | undefined) => void;
|
|
24
24
|
}, string, vue.PublicProps, Readonly<InputNumberProps> & Readonly<{
|
|
25
25
|
onBlur?: ((e: FocusEvent) => any) | undefined;
|
|
@@ -28,13 +28,13 @@ declare const __VLS_base: vue.DefineComponent<InputNumberProps, {
|
|
|
28
28
|
onInput?: ((val: number | null | undefined) => any) | undefined;
|
|
29
29
|
"onUpdate:modelValue"?: ((val: number | undefined) => any) | undefined;
|
|
30
30
|
}>, {
|
|
31
|
-
disabled: boolean;
|
|
32
|
-
validateEvent: boolean;
|
|
33
|
-
valueOnClear: "min" | "max" | number | null;
|
|
34
31
|
id: string;
|
|
32
|
+
disabled: boolean;
|
|
35
33
|
readonly: boolean;
|
|
36
|
-
|
|
34
|
+
validateEvent: boolean;
|
|
35
|
+
inputmode: "text" | "email" | "search" | "tel" | "url" | "none" | "numeric" | "decimal";
|
|
37
36
|
max: number;
|
|
37
|
+
valueOnClear: "min" | "max" | number | null;
|
|
38
38
|
min: number;
|
|
39
39
|
align: "left" | "right" | "center";
|
|
40
40
|
step: number;
|
|
@@ -3,13 +3,13 @@ import { CHANGE_EVENT, INPUT_EVENT, UPDATE_MODEL_EVENT } from "../../../constant
|
|
|
3
3
|
import { getEventCode, getEventKey } from "../../../utils/dom/event.mjs";
|
|
4
4
|
import { isNumber, isString, isUndefined as isUndefined$1 } from "../../../utils/types.mjs";
|
|
5
5
|
import { debugWarn, throwError } from "../../../utils/error.mjs";
|
|
6
|
+
import { vRepeatClick } from "../../../directives/repeat-click/index.mjs";
|
|
6
7
|
import { useLocale } from "../../../hooks/use-locale/index.mjs";
|
|
7
8
|
import { useNamespace } from "../../../hooks/use-namespace/index.mjs";
|
|
8
9
|
import { ElIcon } from "../../icon/index.mjs";
|
|
9
10
|
import { useFormDisabled, useFormSize } from "../../form/src/hooks/use-form-common-props.mjs";
|
|
10
11
|
import { useFormItem } from "../../form/src/hooks/use-form-item.mjs";
|
|
11
12
|
import { ElInput } from "../../input/index.mjs";
|
|
12
|
-
import { vRepeatClick } from "../../../directives/repeat-click/index.mjs";
|
|
13
13
|
import { inputNumberEmits, inputNumberProps } from "./input-number.mjs";
|
|
14
14
|
import { isNil } from "lodash-unified";
|
|
15
15
|
import { ArrowDown, ArrowUp, Minus, Plus } from "@element-plus/icons-vue";
|
|
@@ -24,7 +24,7 @@ declare function useInputTag({
|
|
|
24
24
|
isFocused: vue.Ref<boolean, boolean>;
|
|
25
25
|
isComposing: vue.Ref<boolean, boolean>;
|
|
26
26
|
inputValue: vue.Ref<string | undefined, string | undefined>;
|
|
27
|
-
size: vue.ComputedRef<"" | "default" | "
|
|
27
|
+
size: vue.ComputedRef<"" | "default" | "small" | "large">;
|
|
28
28
|
tagSize: vue.ComputedRef<"default" | "small">;
|
|
29
29
|
placeholder: vue.ComputedRef<string | undefined>;
|
|
30
30
|
closable: vue.ComputedRef<boolean>;
|