vxe-pc-ui 4.5.31 → 4.5.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/es/form/style.css +12 -12
  2. package/es/form/style.min.css +1 -1
  3. package/es/icon/style.css +1 -1
  4. package/es/input/src/input.js +2 -2
  5. package/es/number-input/src/number-input.js +248 -165
  6. package/es/number-input/style.css +74 -770
  7. package/es/number-input/style.min.css +1 -1
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/tooltip/style.css +1 -1
  11. package/es/tooltip/style.min.css +1 -1
  12. package/es/ui/index.js +11 -4
  13. package/es/ui/src/dom.js +1 -1
  14. package/es/ui/src/log.js +1 -1
  15. package/es/vxe-form/style.css +12 -12
  16. package/es/vxe-form/style.min.css +1 -1
  17. package/es/vxe-number-input/style.css +74 -770
  18. package/es/vxe-number-input/style.min.css +1 -1
  19. package/es/vxe-tooltip/style.css +1 -1
  20. package/es/vxe-tooltip/style.min.css +1 -1
  21. package/lib/form/style/style.css +12 -12
  22. package/lib/form/style/style.min.css +1 -1
  23. package/lib/icon/style/style.css +1 -1
  24. package/lib/icon/style/style.min.css +1 -1
  25. package/lib/index.umd.js +255 -160
  26. package/lib/index.umd.min.js +1 -1
  27. package/lib/input/src/input.js +2 -2
  28. package/lib/input/src/input.min.js +1 -1
  29. package/lib/number-input/src/number-input.js +240 -152
  30. package/lib/number-input/src/number-input.min.js +1 -1
  31. package/lib/number-input/style/style.css +74 -770
  32. package/lib/number-input/style/style.min.css +1 -1
  33. package/lib/style.css +1 -1
  34. package/lib/style.min.css +1 -1
  35. package/lib/tooltip/style/style.css +1 -1
  36. package/lib/tooltip/style/style.min.css +1 -1
  37. package/lib/ui/index.js +11 -4
  38. package/lib/ui/index.min.js +1 -1
  39. package/lib/ui/src/dom.js +1 -1
  40. package/lib/ui/src/dom.min.js +1 -1
  41. package/lib/ui/src/log.js +1 -1
  42. package/lib/ui/src/log.min.js +1 -1
  43. package/lib/vxe-form/style/style.css +12 -12
  44. package/lib/vxe-form/style/style.min.css +1 -1
  45. package/lib/vxe-number-input/style/style.css +74 -770
  46. package/lib/vxe-number-input/style/style.min.css +1 -1
  47. package/lib/vxe-tooltip/style/style.css +1 -1
  48. package/lib/vxe-tooltip/style/style.min.css +1 -1
  49. package/package.json +1 -1
  50. package/packages/input/src/input.ts +2 -2
  51. package/packages/number-input/src/number-input.ts +264 -177
  52. package/packages/ui/index.ts +10 -3
  53. package/packages/ui/src/dom.ts +1 -1
  54. package/styles/components/form.scss +12 -12
  55. package/styles/components/number-input.scss +73 -598
  56. package/styles/components/tooltip.scss +1 -1
  57. package/styles/theme/base.scss +4 -4
  58. package/styles/theme/dark.scss +3 -0
  59. package/styles/theme/light.scss +3 -0
  60. package/types/components/number-input.d.ts +80 -6
  61. package/types/components/table.d.ts +4 -1
  62. package/types/ui/global-icon.d.ts +4 -2
  63. /package/es/icon/{iconfont.1745654997780.ttf → iconfont.1745889662360.ttf} +0 -0
  64. /package/es/icon/{iconfont.1745654997780.woff → iconfont.1745889662360.woff} +0 -0
  65. /package/es/icon/{iconfont.1745654997780.woff2 → iconfont.1745889662360.woff2} +0 -0
  66. /package/es/{iconfont.1745654997780.ttf → iconfont.1745889662360.ttf} +0 -0
  67. /package/es/{iconfont.1745654997780.woff → iconfont.1745889662360.woff} +0 -0
  68. /package/es/{iconfont.1745654997780.woff2 → iconfont.1745889662360.woff2} +0 -0
  69. /package/lib/icon/style/{iconfont.1745654997780.ttf → iconfont.1745889662360.ttf} +0 -0
  70. /package/lib/icon/style/{iconfont.1745654997780.woff → iconfont.1745889662360.woff} +0 -0
  71. /package/lib/icon/style/{iconfont.1745654997780.woff2 → iconfont.1745889662360.woff2} +0 -0
  72. /package/lib/{iconfont.1745654997780.ttf → iconfont.1745889662360.ttf} +0 -0
  73. /package/lib/{iconfont.1745654997780.woff → iconfont.1745889662360.woff} +0 -0
  74. /package/lib/{iconfont.1745654997780.woff2 → iconfont.1745889662360.woff2} +0 -0
@@ -75,11 +75,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
75
75
  type: String,
76
76
  default: () => (0, _ui.getConfig)().numberInput.currencySymbol
77
77
  },
78
- // number、integer、float
79
- controls: {
80
- type: Boolean,
81
- default: () => (0, _ui.getConfig)().numberInput.controls
82
- },
78
+ controlConfig: Object,
83
79
  // float
84
80
  digits: {
85
81
  type: [String, Number],
@@ -93,14 +89,23 @@ var _default = exports.default = (0, _vue.defineComponent)({
93
89
  type: Boolean,
94
90
  default: true
95
91
  },
92
+ plusIcon: String,
93
+ minusIcon: String,
96
94
  prefixIcon: String,
97
95
  suffixIcon: String,
98
96
  // 已废弃
97
+ controls: {
98
+ type: Boolean,
99
+ default: null
100
+ },
101
+ // 已废弃
99
102
  maxlength: [String, Number],
100
103
  // 已废弃
101
104
  autocomplete: String
102
105
  },
103
- emits: ['update:modelValue', 'input', 'change', 'keydown', 'keyup', 'wheel', 'click', 'focus', 'blur', 'clear', 'prev-number', 'next-number', 'prefix-click', 'suffix-click'],
106
+ emits: ['update:modelValue', 'input', 'change', 'keydown', 'keyup', 'wheel', 'click', 'focus', 'blur', 'clear', 'plus-number', 'minus-number', 'prefix-click', 'suffix-click',
107
+ // 已废弃
108
+ 'prev-number', 'next-number'],
104
109
  setup(props, context) {
105
110
  const {
106
111
  slots,
@@ -119,24 +124,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
119
124
  });
120
125
  const internalData = {
121
126
  // dnTimeout: undefined,
127
+ // ainTimeout: undefined,
128
+ // isMouseDown: undefined,
122
129
  // isUM: undefined
123
130
  };
124
131
  const refElem = (0, _vue.ref)();
125
132
  const refInputTarget = (0, _vue.ref)();
126
133
  const refInputPanel = (0, _vue.ref)();
127
- const refMaps = {
128
- refElem,
129
- refInput: refInputTarget
130
- };
131
- const $xeNumberInput = {
132
- xID,
133
- props,
134
- context,
135
- reactData,
136
- internalData,
137
- getRefMaps: () => refMaps
138
- };
139
- let numberInputMethods = {};
140
134
  const computeFormReadonly = (0, _vue.computed)(() => {
141
135
  const {
142
136
  readonly
@@ -177,6 +171,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
177
171
  }
178
172
  return _xeUtils.default.toInteger(defDigits) || 1;
179
173
  });
174
+ const computeControlOpts = (0, _vue.computed)(() => {
175
+ return Object.assign({}, (0, _ui.getConfig)().numberInput.controlConfig, props.controlConfig);
176
+ });
180
177
  const computeDecimalsType = (0, _vue.computed)(() => {
181
178
  const {
182
179
  type
@@ -301,6 +298,23 @@ var _default = exports.default = (0, _vue.defineComponent)({
301
298
  }
302
299
  return false;
303
300
  });
301
+ const refMaps = {
302
+ refElem,
303
+ refInput: refInputTarget
304
+ };
305
+ const computeMaps = {
306
+ computeControlOpts
307
+ };
308
+ const $xeNumberInput = {
309
+ xID,
310
+ props,
311
+ context,
312
+ reactData,
313
+ internalData,
314
+ getRefMaps: () => refMaps,
315
+ getComputeMaps: () => computeMaps
316
+ };
317
+ let numberInputMethods = {};
304
318
  const handleNumberString = val => {
305
319
  if (_xeUtils.default.eqNull(val)) {
306
320
  return '';
@@ -576,34 +590,34 @@ var _default = exports.default = (0, _vue.defineComponent)({
576
590
  }
577
591
  emitInputEvent(getNumberValue(restNum), evnt);
578
592
  };
579
- const numberNextEvent = evnt => {
593
+ const numberPlusEvent = evnt => {
580
594
  const isDisabled = computeIsDisabled.value;
581
595
  const formReadonly = computeFormReadonly.value;
582
- const isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value;
583
- numberStopDown();
584
- if (!isDisabled && !formReadonly && !isDisabledSubtractNumber) {
585
- numberChange(false, evnt);
596
+ const isDisabledAddNumber = computeIsDisabledAddNumber.value;
597
+ if (!isDisabled && !formReadonly && !isDisabledAddNumber) {
598
+ numberChange(true, evnt);
586
599
  }
587
600
  reactData.isActivated = true;
601
+ numberInputMethods.dispatchEvent('plus-number', {
602
+ value: reactData.inputValue
603
+ }, evnt);
604
+ // 已废弃
588
605
  numberInputMethods.dispatchEvent('next-number', {
589
606
  value: reactData.inputValue
590
607
  }, evnt);
591
608
  };
592
- const numberDownNextEvent = evnt => {
593
- internalData.dnTimeout = setTimeout(() => {
594
- numberNextEvent(evnt);
595
- numberDownNextEvent(evnt);
596
- }, 60);
597
- };
598
- const numberPrevEvent = evnt => {
609
+ const numberMinusEvent = evnt => {
599
610
  const isDisabled = computeIsDisabled.value;
600
611
  const formReadonly = computeFormReadonly.value;
601
- const isDisabledAddNumber = computeIsDisabledAddNumber.value;
602
- numberStopDown();
603
- if (!isDisabled && !formReadonly && !isDisabledAddNumber) {
604
- numberChange(true, evnt);
612
+ const isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value;
613
+ if (!isDisabled && !formReadonly && !isDisabledSubtractNumber) {
614
+ numberChange(false, evnt);
605
615
  }
606
616
  reactData.isActivated = true;
617
+ numberInputMethods.dispatchEvent('minus-number', {
618
+ value: reactData.inputValue
619
+ }, evnt);
620
+ // 已废弃
607
621
  numberInputMethods.dispatchEvent('prev-number', {
608
622
  value: reactData.inputValue
609
623
  }, evnt);
@@ -614,9 +628,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
614
628
  if (isUpArrow || isDwArrow) {
615
629
  evnt.preventDefault();
616
630
  if (isUpArrow) {
617
- numberPrevEvent(evnt);
631
+ numberMinusEvent(evnt);
618
632
  } else {
619
- numberNextEvent(evnt);
633
+ numberPlusEvent(evnt);
620
634
  }
621
635
  }
622
636
  };
@@ -626,6 +640,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
626
640
  exponential,
627
641
  controls
628
642
  } = props;
643
+ const controlOpts = computeControlOpts.value;
644
+ const {
645
+ showButton
646
+ } = controlOpts;
629
647
  const inputReadonly = computeInputReadonly.value;
630
648
  const isControlKey = (0, _dom.hasControlKey)(evnt);
631
649
  const isShiftKey = evnt.shiftKey;
@@ -642,7 +660,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
642
660
  if (isEsc) {
643
661
  afterCheckValue();
644
662
  } else if (isUpArrow || isDwArrow) {
645
- if (controls && !inputReadonly) {
663
+ if ((0, _utils.isEnableConf)(controlOpts) && (controls === false ? controls : showButton) && !inputReadonly) {
646
664
  numberKeydownEvent(evnt);
647
665
  }
648
666
  }
@@ -652,7 +670,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
652
670
  triggerEvent(evnt);
653
671
  };
654
672
  // 数值
655
- const numberStopDown = () => {
673
+ const stopDown = () => {
656
674
  const {
657
675
  dnTimeout
658
676
  } = internalData;
@@ -661,41 +679,83 @@ var _default = exports.default = (0, _vue.defineComponent)({
661
679
  internalData.dnTimeout = undefined;
662
680
  }
663
681
  };
664
- const numberDownPrevEvent = evnt => {
665
- internalData.dnTimeout = setTimeout(() => {
666
- numberPrevEvent(evnt);
667
- numberDownPrevEvent(evnt);
682
+ const stopAutoIncrement = () => {
683
+ const {
684
+ ainTimeout
685
+ } = internalData;
686
+ if (ainTimeout) {
687
+ clearTimeout(ainTimeout);
688
+ internalData.ainTimeout = undefined;
689
+ }
690
+ };
691
+ const numberDownMinusEvent = evnt => {
692
+ numberStopAll();
693
+ internalData.ainTimeout = setTimeout(() => {
694
+ numberMinusEvent(evnt);
695
+ numberDownMinusEvent(evnt);
668
696
  }, 60);
669
697
  };
698
+ const numberDownPlusEvent = evnt => {
699
+ numberStopAll();
700
+ internalData.ainTimeout = setTimeout(() => {
701
+ numberPlusEvent(evnt);
702
+ numberDownPlusEvent(evnt);
703
+ }, 60);
704
+ };
705
+ const numberStopAll = () => {
706
+ stopDown();
707
+ stopAutoIncrement();
708
+ };
709
+ const numberClickEvent = evnt => {
710
+ if (internalData.isMouseDown) {
711
+ internalData.isMouseDown = false;
712
+ } else {
713
+ numberStopAll();
714
+ const isAddNumber = (0, _dom.hasClass)(evnt.currentTarget, 'is--plus');
715
+ if (isAddNumber) {
716
+ numberPlusEvent(evnt);
717
+ } else {
718
+ numberMinusEvent(evnt);
719
+ }
720
+ }
721
+ };
670
722
  const numberMousedownEvent = evnt => {
671
- numberStopDown();
723
+ numberStopAll();
724
+ internalData.isMouseDown = true;
672
725
  if (evnt.button === 0) {
673
- const isPrevNumber = (0, _dom.hasClass)(evnt.currentTarget, 'is--prev');
674
- if (isPrevNumber) {
675
- numberPrevEvent(evnt);
726
+ const isAddNumber = (0, _dom.hasClass)(evnt.currentTarget, 'is--plus');
727
+ if (isAddNumber) {
728
+ numberPlusEvent(evnt);
676
729
  } else {
677
- numberNextEvent(evnt);
730
+ numberMinusEvent(evnt);
678
731
  }
679
732
  internalData.dnTimeout = setTimeout(() => {
680
- if (isPrevNumber) {
681
- numberDownPrevEvent(evnt);
733
+ if (isAddNumber) {
734
+ numberDownPlusEvent(evnt);
682
735
  } else {
683
- numberDownNextEvent(evnt);
736
+ numberDownMinusEvent(evnt);
684
737
  }
685
738
  }, 500);
686
739
  }
687
740
  };
688
741
  const wheelEvent = evnt => {
742
+ const {
743
+ controls
744
+ } = props;
745
+ const controlOpts = computeControlOpts.value;
746
+ const {
747
+ isWheel
748
+ } = controlOpts;
689
749
  const inputReadonly = computeInputReadonly.value;
690
- if (props.controls && !inputReadonly) {
750
+ if ((0, _utils.isEnableConf)(controlOpts) && (controls === false ? controls : isWheel) && !inputReadonly) {
691
751
  if (reactData.isActivated) {
692
752
  evnt.stopPropagation();
693
753
  evnt.preventDefault();
694
754
  const delta = evnt.deltaY;
695
755
  if (delta > 0) {
696
- numberNextEvent(evnt);
756
+ numberPlusEvent(evnt);
697
757
  } else if (delta < 0) {
698
- numberPrevEvent(evnt);
758
+ numberMinusEvent(evnt);
699
759
  }
700
760
  }
701
761
  }
@@ -760,33 +820,36 @@ var _default = exports.default = (0, _vue.defineComponent)({
760
820
  afterCheckValue();
761
821
  }
762
822
  };
763
- const renderNumberIcon = () => {
764
- const isDisabledAddNumber = computeIsDisabledAddNumber.value;
765
- const isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value;
766
- return (0, _vue.h)('div', {
767
- class: 'vxe-input--control-icon'
768
- }, [(0, _vue.h)('div', {
769
- class: 'vxe-input--number-icon'
770
- }, [(0, _vue.h)('div', {
771
- class: ['vxe-input--number-btn is--prev', {
772
- 'is--disabled': isDisabledAddNumber
773
- }],
774
- onMousedown: numberMousedownEvent,
775
- onMouseup: numberStopDown,
776
- onMouseleave: numberStopDown
777
- }, [(0, _vue.h)('i', {
778
- class: (0, _ui.getIcon)().NUMBER_INPUT_PREV_NUM
779
- })]), (0, _vue.h)('div', {
780
- class: ['vxe-input--number-btn is--next', {
781
- 'is--disabled': isDisabledSubtractNumber
782
- }],
783
- onMousedown: numberMousedownEvent,
784
- onMouseup: numberStopDown,
785
- onMouseleave: numberStopDown
786
- }, [(0, _vue.h)('i', {
787
- class: (0, _ui.getIcon)().NUMBER_INPUT_NEXT_NUM
788
- })])])]);
823
+ const dispatchEvent = (type, params, evnt) => {
824
+ emit(type, (0, _ui.createEvent)(evnt, {
825
+ $numberInput: $xeNumberInput
826
+ }, params));
789
827
  };
828
+ numberInputMethods = {
829
+ dispatchEvent,
830
+ focus() {
831
+ const inputReadonly = computeInputReadonly.value;
832
+ if (!inputReadonly) {
833
+ const inputElem = refInputTarget.value;
834
+ reactData.isActivated = true;
835
+ inputElem.focus();
836
+ }
837
+ return (0, _vue.nextTick)();
838
+ },
839
+ blur() {
840
+ const inputElem = refInputTarget.value;
841
+ inputElem.blur();
842
+ reactData.isActivated = false;
843
+ return (0, _vue.nextTick)();
844
+ },
845
+ select() {
846
+ const inputElem = refInputTarget.value;
847
+ inputElem.select();
848
+ reactData.isActivated = false;
849
+ return (0, _vue.nextTick)();
850
+ }
851
+ };
852
+ Object.assign($xeNumberInput, numberInputMethods);
790
853
  const renderPrefixIcon = () => {
791
854
  const {
792
855
  prefixIcon
@@ -799,7 +862,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
799
862
  class: 'vxe-number-input--prefix-icon'
800
863
  }, prefixSlot ? (0, _vn.getSlotVNs)(prefixSlot({})) : [(0, _vue.h)('i', {
801
864
  class: prefixIcon
802
- })])]) : null;
865
+ })])]) : (0, _ui.renderEmptyElement)($xeNumberInput);
803
866
  };
804
867
  const renderSuffixIcon = () => {
805
868
  const {
@@ -820,72 +883,121 @@ var _default = exports.default = (0, _vue.defineComponent)({
820
883
  onClick: clearValueEvent
821
884
  }, [(0, _vue.h)('i', {
822
885
  class: (0, _ui.getIcon)().INPUT_CLEAR
823
- })]) : (0, _vue.createCommentVNode)(), renderExtraSuffixIcon(), suffixSlot || suffixIcon ? (0, _vue.h)('div', {
886
+ })]) : (0, _ui.renderEmptyElement)($xeNumberInput), suffixSlot || suffixIcon ? (0, _vue.h)('div', {
824
887
  class: 'vxe-number-input--suffix-icon',
825
888
  onClick: clickSuffixEvent
826
889
  }, suffixSlot ? (0, _vn.getSlotVNs)(suffixSlot({})) : [(0, _vue.h)('i', {
827
890
  class: suffixIcon
828
- })]) : (0, _vue.createCommentVNode)()]);
891
+ })]) : (0, _ui.renderEmptyElement)($xeNumberInput)]);
829
892
  };
830
- const renderExtraSuffixIcon = () => {
893
+ const renderInput = () => {
831
894
  const {
832
- controls
895
+ type,
896
+ name,
897
+ autocomplete,
898
+ autoComplete
833
899
  } = props;
900
+ const {
901
+ inputValue,
902
+ isFocus
903
+ } = reactData;
904
+ const isDisabled = computeIsDisabled.value;
905
+ const numLabel = computeNumLabel.value;
834
906
  const inputReadonly = computeInputReadonly.value;
835
- if (controls && !inputReadonly) {
836
- return renderNumberIcon();
837
- }
838
- return (0, _vue.createCommentVNode)();
907
+ const inpMaxLength = computeInpMaxLength.value;
908
+ const inpPlaceholder = computeInpPlaceholder.value;
909
+ return (0, _vue.h)('div', {
910
+ key: 'ni',
911
+ class: 'vxe-number-input--input-wrapper'
912
+ }, [renderPrefixIcon(), (0, _vue.h)('div', {
913
+ class: 'vxe-number-input--input-inner'
914
+ }, [(0, _vue.h)('input', {
915
+ ref: refInputTarget,
916
+ class: 'vxe-number-input--input',
917
+ value: !isFocus && type === 'amount' ? numLabel : inputValue,
918
+ name,
919
+ type: 'text',
920
+ placeholder: inpPlaceholder,
921
+ maxlength: inpMaxLength,
922
+ readonly: inputReadonly,
923
+ disabled: isDisabled,
924
+ autocomplete: autoComplete || autocomplete,
925
+ onKeydown: keydownEvent,
926
+ onKeyup: keyupEvent,
927
+ onWheel: wheelEvent,
928
+ onClick: clickEvent,
929
+ onInput: inputEvent,
930
+ onChange: changeEvent,
931
+ onFocus: focusEvent,
932
+ onBlur: blurEvent
933
+ })]), renderSuffixIcon()]);
839
934
  };
840
- const dispatchEvent = (type, params, evnt) => {
841
- emit(type, (0, _ui.createEvent)(evnt, {
842
- $numberInput: $xeNumberInput
843
- }, params));
935
+ const renderMinusBtn = () => {
936
+ const {
937
+ minusIcon
938
+ } = props;
939
+ const isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value;
940
+ return (0, _vue.h)('button', {
941
+ key: 'prev',
942
+ class: ['vxe-number-input--minus-btn is--minus', {
943
+ 'is--disabled': isDisabledSubtractNumber
944
+ }],
945
+ onClick: numberClickEvent,
946
+ onMousedown: numberMousedownEvent,
947
+ onMouseup: numberStopAll,
948
+ onMouseleave: numberStopAll
949
+ }, [(0, _vue.h)('i', {
950
+ class: minusIcon || (0, _ui.getIcon)().NUMBER_INPUT_MINUS_NUM
951
+ })]);
844
952
  };
845
- numberInputMethods = {
846
- dispatchEvent,
847
- focus() {
848
- const inputReadonly = computeInputReadonly.value;
849
- if (!inputReadonly) {
850
- const inputElem = refInputTarget.value;
851
- reactData.isActivated = true;
852
- inputElem.focus();
853
- }
854
- return (0, _vue.nextTick)();
855
- },
856
- blur() {
857
- const inputElem = refInputTarget.value;
858
- inputElem.blur();
859
- reactData.isActivated = false;
860
- return (0, _vue.nextTick)();
861
- },
862
- select() {
863
- const inputElem = refInputTarget.value;
864
- inputElem.select();
865
- reactData.isActivated = false;
866
- return (0, _vue.nextTick)();
867
- }
953
+ const renderPlusBtn = () => {
954
+ const {
955
+ plusIcon
956
+ } = props;
957
+ const isDisabledAddNumber = computeIsDisabledAddNumber.value;
958
+ return (0, _vue.h)('button', {
959
+ key: 'next',
960
+ class: ['vxe-number-input--plus-btn is--plus', {
961
+ 'is--disabled': isDisabledAddNumber
962
+ }],
963
+ onClick: numberClickEvent,
964
+ onMousedown: numberMousedownEvent,
965
+ onMouseup: numberStopAll,
966
+ onMouseleave: numberStopAll
967
+ }, [(0, _vue.h)('i', {
968
+ class: plusIcon || (0, _ui.getIcon)().NUMBER_INPUT_PLUS_NUM
969
+ })]);
970
+ };
971
+ const renderSideControl = () => {
972
+ return (0, _vue.h)('div', {
973
+ key: 'cplr',
974
+ class: 'vxe-number-input--side-control'
975
+ }, [renderPlusBtn(), renderMinusBtn()]);
868
976
  };
869
- Object.assign($xeNumberInput, numberInputMethods);
870
977
  const renderVN = () => {
871
978
  const {
872
979
  className,
873
980
  controls,
874
981
  type,
875
982
  align,
876
- name,
877
- autocomplete,
878
- autoComplete
983
+ prefixIcon,
984
+ suffixIcon
879
985
  } = props;
880
986
  const {
881
987
  inputValue,
882
- isFocus,
883
988
  isActivated
884
989
  } = reactData;
885
990
  const vSize = computeSize.value;
991
+ const controlOpts = computeControlOpts.value;
992
+ const {
993
+ layout,
994
+ showButton
995
+ } = controlOpts;
886
996
  const isDisabled = computeIsDisabled.value;
887
997
  const formReadonly = computeFormReadonly.value;
888
998
  const numLabel = computeNumLabel.value;
999
+ const prefixSlot = slots.prefix;
1000
+ const suffixSlot = slots.suffix;
889
1001
  if (formReadonly) {
890
1002
  return (0, _vue.h)('div', {
891
1003
  ref: refElem,
@@ -893,46 +1005,22 @@ var _default = exports.default = (0, _vue.defineComponent)({
893
1005
  }, numLabel);
894
1006
  }
895
1007
  const inputReadonly = computeInputReadonly.value;
896
- const inpMaxLength = computeInpMaxLength.value;
897
- const inpPlaceholder = computeInpPlaceholder.value;
898
1008
  const isClearable = computeIsClearable.value;
899
- const prefix = renderPrefixIcon();
900
- const suffix = renderSuffixIcon();
1009
+ const isControls = (0, _utils.isEnableConf)(controlOpts) && (controls === false ? controls : showButton);
901
1010
  return (0, _vue.h)('div', {
902
1011
  ref: refElem,
903
- class: ['vxe-number-input', `type--${type}`, className, {
1012
+ class: ['vxe-number-input', `type--${type}`, `control-${layout === 'right' || layout === 'left' ? layout : 'default'}`, className, {
904
1013
  [`size--${vSize}`]: vSize,
905
1014
  [`is--${align}`]: align,
906
- 'is--controls': controls && !inputReadonly,
907
- 'is--prefix': !!prefix,
908
- 'is--suffix': !!suffix,
1015
+ 'is--controls': isControls && !inputReadonly,
1016
+ 'is--prefix': !!prefixSlot || prefixIcon,
1017
+ 'is--suffix': !!suffixSlot || suffixIcon,
909
1018
  'is--disabled': isDisabled,
910
1019
  'is--active': isActivated,
911
1020
  'show--clear': isClearable && !isDisabled && !(inputValue === '' || _xeUtils.default.eqNull(inputValue))
912
1021
  }],
913
1022
  spellcheck: false
914
- }, [prefix || (0, _vue.createCommentVNode)(), (0, _vue.h)('div', {
915
- class: 'vxe-number-input--wrapper'
916
- }, [(0, _vue.h)('input', {
917
- ref: refInputTarget,
918
- class: 'vxe-number-input--inner',
919
- value: !isFocus && type === 'amount' ? numLabel : inputValue,
920
- name,
921
- type: 'text',
922
- placeholder: inpPlaceholder,
923
- maxlength: inpMaxLength,
924
- readonly: inputReadonly,
925
- disabled: isDisabled,
926
- autocomplete: autoComplete || autocomplete,
927
- onKeydown: keydownEvent,
928
- onKeyup: keyupEvent,
929
- onWheel: wheelEvent,
930
- onClick: clickEvent,
931
- onInput: inputEvent,
932
- onChange: changeEvent,
933
- onFocus: focusEvent,
934
- onBlur: blurEvent
935
- })]), suffix || (0, _vue.createCommentVNode)()]);
1023
+ }, isControls ? layout === 'right' ? [renderInput(), renderSideControl()] : layout === 'left' ? [renderSideControl(), renderInput()] : [renderMinusBtn(), renderInput(), renderPlusBtn()] : [renderInput()]);
936
1024
  };
937
1025
  $xeNumberInput.renderVN = renderVN;
938
1026
  (0, _vue.watch)(() => props.modelValue, val => {
@@ -955,7 +1043,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
955
1043
  });
956
1044
  (0, _vue.onBeforeUnmount)(() => {
957
1045
  reactData.isFocus = false;
958
- numberStopDown();
1046
+ numberStopAll();
959
1047
  afterCheckValue();
960
1048
  _ui.globalEvents.off($xeNumberInput, 'mousedown');
961
1049
  _ui.globalEvents.off($xeNumberInput, 'keydown');
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeNumberInput",props:{modelValue:[String,Number],immediate:{type:Boolean,default:!0},name:String,type:{type:String,default:"number"},clearable:{type:Boolean,default:()=>(0,_ui.getConfig)().numberInput.clearable},readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},placeholder:String,maxLength:{type:[String,Number],default:()=>(0,_ui.getConfig)().numberInput.maxLength},autoComplete:{type:String,default:"off"},align:String,form:String,className:String,size:{type:String,default:()=>(0,_ui.getConfig)().numberInput.size||(0,_ui.getConfig)().size},min:{type:[String,Number],default:null},max:{type:[String,Number],default:null},step:[String,Number],exponential:{type:Boolean,default:()=>(0,_ui.getConfig)().numberInput.exponential},showCurrency:{type:Boolean,default:()=>(0,_ui.getConfig)().numberInput.showCurrency},currencySymbol:{type:String,default:()=>(0,_ui.getConfig)().numberInput.currencySymbol},controls:{type:Boolean,default:()=>(0,_ui.getConfig)().numberInput.controls},digits:{type:[String,Number],default:null},autoFill:{type:Boolean,default:()=>(0,_ui.getConfig)().numberInput.autoFill},editable:{type:Boolean,default:!0},prefixIcon:String,suffixIcon:String,maxlength:[String,Number],autocomplete:String},emits:["update:modelValue","input","change","keydown","keyup","wheel","click","focus","blur","clear","prev-number","next-number","prefix-click","suffix-click"],setup(h,e){const{slots:V,emit:a}=e,i=(0,_vue.inject)("$xeForm",null),n=(0,_vue.inject)("xeFormItemInfo",null);var u=_xeUtils.default.uniqueId();const w=(0,_ui.useSize)(h)["computeSize"],U=(0,_vue.reactive)({isFocus:!1,isActivated:!1,inputValue:h.modelValue}),r={},I=(0,_vue.ref)(),S=(0,_vue.ref)(),M=(0,_vue.ref)(),O={refElem:I,refInput:S},l={xID:u,props:h,context:e,reactData:U,internalData:r,getRefMaps:()=>O};let o={};const C=(0,_vue.computed)(()=>{var e=h["readonly"];return null===e?!!i&&i.props.readonly:e}),A=(0,_vue.computed)(()=>{var e=h["disabled"];return null===e?!!i&&i.props.disabled:e}),s=(0,_vue.computed)(()=>{var{type:e,digits:t}=h;let u=t;return null===u&&null===(u=(0,_ui.getConfig)().numberInput.digits)&&"amount"===e&&(u=2),_xeUtils.default.toInteger(u)||1}),v=(0,_vue.computed)(()=>{var e=h["type"];return"float"===e||"amount"===e}),R=(0,_vue.computed)(()=>{var e=h["type"],t=s.value,u=v.value,l=h.step;return"integer"===e?_xeUtils.default.toInteger(l)||1:u?_xeUtils.default.toNumber(l)||1/Math.pow(10,t):_xeUtils.default.toNumber(l)||1}),T=(0,_vue.computed)(()=>h.clearable),B=(0,_vue.computed)(()=>{var e=h["editable"];return C.value||!e}),D=(0,_vue.computed)(()=>{var e=h["placeholder"];return(e=e||(0,_ui.getConfig)().numberInput.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseInput")}),L=(0,_vue.computed)(()=>{var{maxLength:e,maxlength:t}=h;return _xeUtils.default.toNumber(e||t)||16}),d=(0,_vue.computed)(()=>{var e=h["immediate"];return e}),p=(0,_vue.computed)(()=>{var e=h["type"],t=U["inputValue"];return"integer"===e?_xeUtils.default.toInteger((0,_util.handleNumber)(t)):_xeUtils.default.toNumber((0,_util.handleNumber)(t))}),P=(0,_vue.computed)(()=>{var{type:t,showCurrency:u,currencySymbol:l,autoFill:a}=h,i=U["inputValue"],n=s.value;if("amount"!==t)return _xeUtils.default.toString(i);{var t=_xeUtils.default.toNumber(i);let e=_xeUtils.default.commafy(t,{digits:n});return a||([i,t]=e.split("."),t&&(n=t.replace(/0+$/,""),e=n?[i,".",n].join(""):i)),u?""+(l||(0,_ui.getI18n)("vxe.numberInput.currencySymbol")||"")+e:e}}),_=(0,_vue.computed)(()=>{var e=h["min"],t=U["inputValue"],u=p.value;return!(!t&&0!==t||null===e)&&u<=_xeUtils.default.toNumber(e)}),c=(0,_vue.computed)(()=>{var e=h["max"],t=U["inputValue"],u=p.value;return!(!t&&0!==t||null===e)&&u>=_xeUtils.default.toNumber(e)}),m=e=>_xeUtils.default.eqNull(e)?"":""+e,f=e=>{var{exponential:t,autoFill:u}=h,l=L.value,a=s.value;let i="";return v.value?(i=(0,_util.toFloatValueFixed)(e,a),u||(i=m(_xeUtils.default.toNumber(i)))):i=m(e),!t||e!==i&&m(e).toLowerCase()!==_xeUtils.default.toNumber(i).toExponential()?i.slice(0,l):e},b=e=>{var t=U["inputValue"];o.dispatchEvent(e.type,{value:t},e)},g=(e,t,u)=>{var e=(0,_utils.eqEmptyValue)(e)?null:Number(e),l=e!==h.modelValue;l&&(r.isUM=!0,a("update:modelValue",e)),U.inputValue!==t&&(0,_vue.nextTick)(()=>{U.inputValue=t||""}),o.dispatchEvent("input",{value:e},u),l&&(o.dispatchEvent("change",{value:e},u),i)&&n&&i.triggerItemEvent(u,n.itemConfig.field,e)},x=(e,t)=>{var u=d.value,l=(0,_utils.eqEmptyValue)(e)?null:_xeUtils.default.toNumber(e);U.inputValue=e,u?g(l,e,t):o.dispatchEvent("input",{value:l},t)},Y=e=>{var t=e.target.value;x(t,e)},G=e=>{d.value||b(e)},W=e=>{var t;B.value||(t=U["inputValue"],U.inputValue=(0,_utils.eqEmptyValue)(t)?"":""+_xeUtils.default.toNumber(t),U.isFocus=!0,U.isActivated=!0,b(e))},j=e=>{var t;A.value||(t=U["inputValue"],o.dispatchEvent("prefix-click",{value:t},e))},k=(e,t)=>{focus(),g(null,"",e),o.dispatchEvent("clear",{value:t},e)},z=e=>{var t;A.value||(t=U["inputValue"],o.dispatchEvent("suffix-click",{value:t},e))},t=()=>{var u=h["autoFill"],l=U["inputValue"],a=s.value,e=v.value;if(e&&l){let e="",t=null;l&&(e=(0,_util.toFloatValueFixed)(l,a),t=_xeUtils.default.toNumber(e),u||(e=""+t)),l!==t?g(t,e,{type:"init"}):U.inputValue=e}},y=e=>null===h.max||_xeUtils.default.toNumber(e)<=_xeUtils.default.toNumber(h.max),E=e=>null===h.min||_xeUtils.default.toNumber(e)>=_xeUtils.default.toNumber(h.min),N=()=>{var{type:t,min:u,max:l,exponential:a}=h,i=U["inputValue"];if(!B.value)if((0,_utils.eqEmptyValue)(i)){let e=null,t=i;!u&&0!==u||(e=_xeUtils.default.toNumber(u),t=""+e),void g(e,""+(t||""),{type:"check"})}else if(i||u||l){let e="integer"===t?_xeUtils.default.toInteger((0,_util.handleNumber)(i)):_xeUtils.default.toNumber((0,_util.handleNumber)(i));E(e)?y(e)||(e=l):e=u,a&&(t=m(i).toLowerCase())===_xeUtils.default.toNumber(e).toExponential()&&(e=t);l=f(e);g((0,_utils.eqEmptyValue)(l)?null:Number(l),l,{type:"check"})}},$=e=>{var t=U["inputValue"],u=d.value,l=t?Number(t):null;u||g(l,m(t),e),N(),U.isFocus=!1,U.isActivated=!1,o.dispatchEvent("blur",{value:l},e),i&&n&&i.triggerItemEvent(e,n.itemConfig.field,l)},X=(e,t)=>{var{min:u,max:l,type:a}=h,i=U["inputValue"],n=R.value,a="integer"===a?_xeUtils.default.toInteger((0,_util.handleNumber)(i)):_xeUtils.default.toNumber((0,_util.handleNumber)(i)),i=e?_xeUtils.default.add(a,n):_xeUtils.default.subtract(a,n);let r;r=E(i)?y(i)?i:l:u,x(f(r),t)},F=e=>{var t=A.value,u=C.value,l=_.value;q(),t||u||l||X(!1,e),U.isActivated=!0,o.dispatchEvent("next-number",{value:U.inputValue},e)},H=e=>{r.dnTimeout=setTimeout(()=>{F(e),H(e)},60)},K=e=>{var t=A.value,u=C.value,l=c.value;q(),t||u||l||X(!0,e),U.isActivated=!0,o.dispatchEvent("prev-number",{value:U.inputValue},e)},J=e=>{var t=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),u=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);(t||u)&&(e.preventDefault(),(t?K:F)(e))},Q=e=>{var{type:t,exponential:u,controls:l}=h,a=B.value,i=(0,_dom.hasControlKey)(e),n=e.shiftKey,r=e.altKey,o=e.keyCode,s=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE),v=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),d=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);i||n||r||(_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.SPACEBAR)||"integer"===t&&110===o||(!u||69!==o)&&65<=o&&o<=90||186<=o&&o<=188||191<=o)&&e.preventDefault(),s?N():(v||d)&&l&&!a&&J(e),b(e)},Z=e=>{b(e)},q=()=>{var e=r["dnTimeout"];e&&(clearTimeout(e),r.dnTimeout=void 0)},ee=e=>{r.dnTimeout=setTimeout(()=>{K(e),ee(e)},60)},te=e=>{if(q(),0===e.button){const t=(0,_dom.hasClass)(e.currentTarget,"is--prev");(t?K:F)(e),r.dnTimeout=setTimeout(()=>{(t?ee:H)(e)},500)}},ue=e=>{var t=B.value;h.controls&&!t&&U.isActivated&&(e.stopPropagation(),e.preventDefault(),0<(t=e.deltaY)?F(e):t<0&&K(e)),b(e)},le=e=>{b(e)},ae=e=>{var t=U["isActivated"],u=I.value,l=M.value,a=A.value,i=B.value,n=d.value;a||i||!t||(U.isActivated=(0,_dom.getEventTargetNode)(e,u).flag||(0,_dom.getEventTargetNode)(e,l).flag,U.isActivated)||(n||(a=U["inputValue"],i=a?Number(a):null,g(i,m(a),e)),N())},ie=t=>{var u=h["clearable"],l=A.value,a=B.value;if(!l&&!a){l=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.TAB),a=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.DELETE);let e=U.isActivated;l&&(e&&N(),e=!1,U.isActivated=e),a&&u&&e&&k(t,null)}},ne=()=>{var e=U["isActivated"];e&&N()},re=()=>{var e=h["controls"],t=B.value;return e&&!t?(e=c.value,t=_.value,(0,_vue.h)("div",{class:"vxe-input--control-icon"},[(0,_vue.h)("div",{class:"vxe-input--number-icon"},[(0,_vue.h)("div",{class:["vxe-input--number-btn is--prev",{"is--disabled":e}],onMousedown:te,onMouseup:q,onMouseleave:q},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().NUMBER_INPUT_PREV_NUM})]),(0,_vue.h)("div",{class:["vxe-input--number-btn is--next",{"is--disabled":t}],onMousedown:te,onMouseup:q,onMouseleave:q},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().NUMBER_INPUT_NEXT_NUM})])])])):(0,_vue.createCommentVNode)()};o={dispatchEvent:(e,t,u)=>{a(e,(0,_ui.createEvent)(u,{$numberInput:l},t))},focus(){var e;return B.value||(e=S.value,U.isActivated=!0,e.focus()),(0,_vue.nextTick)()},blur(){return S.value.blur(),(U.isActivated=!1,_vue.nextTick)()},select(){return S.value.select(),(U.isActivated=!1,_vue.nextTick)()}},Object.assign(l,o);return l.renderVN=()=>{var e,t,u,l,a,i,n,r,o,{className:s,controls:v,type:d,align:p,name:_,autocomplete:c,autoComplete:m}=h,{inputValue:f,isFocus:b,isActivated:g}=U,x=w.value,y=A.value,E=C.value,N=P.value;return E?(0,_vue.h)("div",{ref:I,class:["vxe-number-input--readonly","type--"+d,s]},N):(E=B.value,e=L.value,t=D.value,u=T.value,a=h.prefixIcon,l=(l=V.prefix)||a?(0,_vue.h)("div",{class:"vxe-number-input--prefix",onClick:j},[(0,_vue.h)("div",{class:"vxe-number-input--prefix-icon"},l?(0,_vn.getSlotVNs)(l({})):[(0,_vue.h)("i",{class:a})])]):null,a=h.suffixIcon,i=U.inputValue,n=V.suffix,r=A.value,o=T.value,r=(0,_vue.h)("div",{class:["vxe-number-input--suffix",{"is--clear":o&&!r&&!(""===i||_xeUtils.default.eqNull(i))}]},[o?(0,_vue.h)("div",{class:"vxe-number-input--clear-icon",onClick:k},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().INPUT_CLEAR})]):(0,_vue.createCommentVNode)(),re(),n||a?(0,_vue.h)("div",{class:"vxe-number-input--suffix-icon",onClick:z},n?(0,_vn.getSlotVNs)(n({})):[(0,_vue.h)("i",{class:a})]):(0,_vue.createCommentVNode)()]),(0,_vue.h)("div",{ref:I,class:["vxe-number-input","type--"+d,s,{["size--"+x]:x,["is--"+p]:p,"is--controls":v&&!E,"is--prefix":!!l,"is--suffix":!!r,"is--disabled":y,"is--active":g,"show--clear":u&&!y&&!(""===f||_xeUtils.default.eqNull(f))}],spellcheck:!1},[l||(0,_vue.createCommentVNode)(),(0,_vue.h)("div",{class:"vxe-number-input--wrapper"},[(0,_vue.h)("input",{ref:S,class:"vxe-number-input--inner",value:b||"amount"!==d?f:N,name:_,type:"text",placeholder:t,maxlength:e,readonly:E,disabled:y,autocomplete:m||c,onKeydown:Q,onKeyup:Z,onWheel:ue,onClick:le,onInput:Y,onChange:G,onFocus:W,onBlur:$})]),r||(0,_vue.createCommentVNode)()]))},(0,_vue.watch)(()=>h.modelValue,t=>{if(!r.isUM){var u=h["autoFill"],l=U["inputValue"],a=s.value,i=v.value;if((0,_utils.eqEmptyValue)(t))U.inputValue="";else{let e=""+t;i&&(e=(0,_util.toFloatValueFixed)(t,a),u||(e=""+_xeUtils.default.toNumber(e))),e!==l&&(U.inputValue=e)}}r.isUM=!1}),(0,_vue.watch)(()=>h.type,()=>{Object.assign(U,{inputValue:h.modelValue}),t()}),(0,_vue.onMounted)(()=>{_ui.globalEvents.on(l,"mousedown",ae),_ui.globalEvents.on(l,"keydown",ie),_ui.globalEvents.on(l,"blur",ne)}),(0,_vue.onBeforeUnmount)(()=>{U.isFocus=!1,q(),N(),_ui.globalEvents.off(l,"mousedown"),_ui.globalEvents.off(l,"keydown"),_ui.globalEvents.off(l,"blur")}),t(),l},render(){return this.renderVN()}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeNumberInput",props:{modelValue:[String,Number],immediate:{type:Boolean,default:!0},name:String,type:{type:String,default:"number"},clearable:{type:Boolean,default:()=>(0,_ui.getConfig)().numberInput.clearable},readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},placeholder:String,maxLength:{type:[String,Number],default:()=>(0,_ui.getConfig)().numberInput.maxLength},autoComplete:{type:String,default:"off"},align:String,form:String,className:String,size:{type:String,default:()=>(0,_ui.getConfig)().numberInput.size||(0,_ui.getConfig)().size},min:{type:[String,Number],default:null},max:{type:[String,Number],default:null},step:[String,Number],exponential:{type:Boolean,default:()=>(0,_ui.getConfig)().numberInput.exponential},showCurrency:{type:Boolean,default:()=>(0,_ui.getConfig)().numberInput.showCurrency},currencySymbol:{type:String,default:()=>(0,_ui.getConfig)().numberInput.currencySymbol},controlConfig:Object,digits:{type:[String,Number],default:null},autoFill:{type:Boolean,default:()=>(0,_ui.getConfig)().numberInput.autoFill},editable:{type:Boolean,default:!0},plusIcon:String,minusIcon:String,prefixIcon:String,suffixIcon:String,controls:{type:Boolean,default:null},maxlength:[String,Number],autocomplete:String},emits:["update:modelValue","input","change","keydown","keyup","wheel","click","focus","blur","clear","plus-number","minus-number","prefix-click","suffix-click","prev-number","next-number"],setup(b,e){const{slots:g,emit:i}=e,a=(0,_vue.inject)("$xeForm",null),n=(0,_vue.inject)("xeFormItemInfo",null);var u=_xeUtils.default.uniqueId();const K=(0,_ui.useSize)(b)["computeSize"],x=(0,_vue.reactive)({isFocus:!1,isActivated:!1,inputValue:b.modelValue}),r={},y=(0,_vue.ref)(),p=(0,_vue.ref)(),O=(0,_vue.ref)(),E=(0,_vue.computed)(()=>{var e=b["readonly"];return null===e?!!a&&a.props.readonly:e}),h=(0,_vue.computed)(()=>{var e=b["disabled"];return null===e?!!a&&a.props.disabled:e}),o=(0,_vue.computed)(()=>{var{type:e,digits:u}=b;let t=u;return null===t&&null===(t=(0,_ui.getConfig)().numberInput.digits)&&"amount"===e&&(t=2),_xeUtils.default.toInteger(t)||1}),N=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().numberInput.controlConfig,b.controlConfig)),s=(0,_vue.computed)(()=>{var e=b["type"];return"float"===e||"amount"===e}),q=(0,_vue.computed)(()=>{var e=b["type"],u=o.value,t=s.value,l=b.step;return"integer"===e?_xeUtils.default.toInteger(l)||1:t?_xeUtils.default.toNumber(l)||1/Math.pow(10,u):_xeUtils.default.toNumber(l)||1}),V=(0,_vue.computed)(()=>b.clearable),U=(0,_vue.computed)(()=>{var e=b["editable"];return E.value||!e}),R=(0,_vue.computed)(()=>{var e=b["placeholder"];return(e=e||(0,_ui.getConfig)().numberInput.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseInput")}),d=(0,_vue.computed)(()=>{var{maxLength:e,maxlength:u}=b;return _xeUtils.default.toNumber(e||u)||16}),v=(0,_vue.computed)(()=>{var e=b["immediate"];return e}),l=(0,_vue.computed)(()=>{var e=b["type"],u=x["inputValue"];return"integer"===e?_xeUtils.default.toInteger((0,_util.handleNumber)(u)):_xeUtils.default.toNumber((0,_util.handleNumber)(u))}),I=(0,_vue.computed)(()=>{var{type:u,showCurrency:t,currencySymbol:l,autoFill:i}=b,a=x["inputValue"],n=o.value;if("amount"!==u)return _xeUtils.default.toString(a);{var u=_xeUtils.default.toNumber(a);let e=_xeUtils.default.commafy(u,{digits:n});return i||([a,u]=e.split("."),u&&(n=u.replace(/0+$/,""),e=n?[a,".",n].join(""):a)),t?""+(l||(0,_ui.getI18n)("vxe.numberInput.currencySymbol")||"")+e:e}}),c=(0,_vue.computed)(()=>{var e=b["min"],u=x["inputValue"],t=l.value;return!(!u&&0!==u||null===e)&&t<=_xeUtils.default.toNumber(e)}),m=(0,_vue.computed)(()=>{var e=b["max"],u=x["inputValue"],t=l.value;return!(!u&&0!==u||null===e)&&t>=_xeUtils.default.toNumber(e)}),D={refElem:y,refInput:p},P={computeControlOpts:N},_={xID:u,props:b,context:e,reactData:x,internalData:r,getRefMaps:()=>D,getComputeMaps:()=>P};let f={};const C=e=>_xeUtils.default.eqNull(e)?"":""+e,S=e=>{var{exponential:u,autoFill:t}=b,l=d.value,i=o.value;let a="";return s.value?(a=(0,_util.toFloatValueFixed)(e,i),t||(a=C(_xeUtils.default.toNumber(a)))):a=C(e),!u||e!==a&&C(e).toLowerCase()!==_xeUtils.default.toNumber(a).toExponential()?a.slice(0,l):e},T=e=>{var u=x["inputValue"];f.dispatchEvent(e.type,{value:u},e)},A=(e,u,t)=>{var e=(0,_utils.eqEmptyValue)(e)?null:Number(e),l=e!==b.modelValue;l&&(r.isUM=!0,i("update:modelValue",e)),x.inputValue!==u&&(0,_vue.nextTick)(()=>{x.inputValue=u||""}),f.dispatchEvent("input",{value:e},t),l&&(f.dispatchEvent("change",{value:e},t),a)&&n&&a.triggerItemEvent(t,n.itemConfig.field,e)},k=(e,u)=>{var t=v.value,l=(0,_utils.eqEmptyValue)(e)?null:_xeUtils.default.toNumber(e);x.inputValue=e,t?A(l,e,u):f.dispatchEvent("input",{value:l},u)},Y=e=>{var u=e.target.value;k(u,e)},j=e=>{v.value||T(e)},G=e=>{var u;U.value||(u=x["inputValue"],x.inputValue=(0,_utils.eqEmptyValue)(u)?"":""+_xeUtils.default.toNumber(u),x.isFocus=!0,x.isActivated=!0,T(e))},W=e=>{var u;h.value||(u=x["inputValue"],f.dispatchEvent("prefix-click",{value:u},e))},B=(e,u)=>{focus(),A(null,"",e),f.dispatchEvent("clear",{value:u},e)},z=e=>{var u;h.value||(u=x["inputValue"],f.dispatchEvent("suffix-click",{value:u},e))},$=()=>{var t=b["autoFill"],l=x["inputValue"],i=o.value,e=s.value;if(e&&l){let e="",u=null;l&&(e=(0,_util.toFloatValueFixed)(l,i),u=_xeUtils.default.toNumber(e),t||(e=""+u)),l!==u?A(u,e,{type:"init"}):x.inputValue=e}},H=e=>null===b.max||_xeUtils.default.toNumber(e)<=_xeUtils.default.toNumber(b.max),J=e=>null===b.min||_xeUtils.default.toNumber(e)>=_xeUtils.default.toNumber(b.min),w=()=>{var{type:u,min:t,max:l,exponential:i}=b,a=x["inputValue"];if(!U.value)if((0,_utils.eqEmptyValue)(a)){let e=null,u=a;!t&&0!==t||(e=_xeUtils.default.toNumber(t),u=""+e),void A(e,""+(u||""),{type:"check"})}else if(a||t||l){let e="integer"===u?_xeUtils.default.toInteger((0,_util.handleNumber)(a)):_xeUtils.default.toNumber((0,_util.handleNumber)(a));J(e)?H(e)||(e=l):e=t,i&&(u=C(a).toLowerCase())===_xeUtils.default.toNumber(e).toExponential()&&(e=u);l=S(e);A((0,_utils.eqEmptyValue)(l)?null:Number(l),l,{type:"check"})}},Q=e=>{var u=x["inputValue"],t=v.value,l=u?Number(u):null;t||A(l,C(u),e),w(),x.isFocus=!1,x.isActivated=!1,f.dispatchEvent("blur",{value:l},e),a&&n&&a.triggerItemEvent(e,n.itemConfig.field,l)},X=(e,u)=>{var{min:t,max:l,type:i}=b,a=x["inputValue"],n=q.value,i="integer"===i?_xeUtils.default.toInteger((0,_util.handleNumber)(a)):_xeUtils.default.toNumber((0,_util.handleNumber)(a)),a=e?_xeUtils.default.add(i,n):_xeUtils.default.subtract(i,n);let r;r=J(a)?H(a)?a:l:t,k(S(r),u)},L=e=>{var u=h.value,t=E.value,l=m.value;u||t||l||X(!0,e),x.isActivated=!0,f.dispatchEvent("plus-number",{value:x.inputValue},e),f.dispatchEvent("next-number",{value:x.inputValue},e)},M=e=>{var u=h.value,t=E.value,l=c.value;u||t||l||X(!1,e),x.isActivated=!0,f.dispatchEvent("minus-number",{value:x.inputValue},e),f.dispatchEvent("prev-number",{value:x.inputValue},e)},Z=e=>{var{type:u,exponential:t,controls:l}=b,i=N.value,a=i["showButton"],n=U.value,r=(0,_dom.hasControlKey)(e),o=e.shiftKey,s=e.altKey,v=e.keyCode,p=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE),d=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),c=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);r||o||s||(_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.SPACEBAR)||"integer"===u&&110===v||(!t||69!==v)&&65<=v&&v<=90||186<=v&&v<=188||191<=v)&&e.preventDefault(),p?w():(d||c)&&(0,_utils.isEnableConf)(i)&&(!1===l?l:a)&&!n&&(r=e,o=_ui.globalEvents.hasKey(r,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),s=_ui.globalEvents.hasKey(r,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),o||s)&&(r.preventDefault(),(o?M:L)(r)),T(e)},ee=e=>{T(e)},ue=e=>{t(),r.ainTimeout=setTimeout(()=>{M(e),ue(e)},60)},te=e=>{t(),r.ainTimeout=setTimeout(()=>{L(e),te(e)},60)},t=()=>{var e;(e=r.dnTimeout)&&(clearTimeout(e),r.dnTimeout=void 0),(e=r.ainTimeout)&&(clearTimeout(e),r.ainTimeout=void 0)},le=e=>{r.isMouseDown?r.isMouseDown=!1:(t(),((0,_dom.hasClass)(e.currentTarget,"is--plus")?L:M)(e))},ie=e=>{if(t(),r.isMouseDown=!0,0===e.button){const u=(0,_dom.hasClass)(e.currentTarget,"is--plus");(u?L:M)(e),r.dnTimeout=setTimeout(()=>{(u?te:ue)(e)},500)}},ae=e=>{var u=b["controls"],t=N.value,l=t["isWheel"],i=U.value;(0,_utils.isEnableConf)(t)&&(!1===u?u:l)&&!i&&x.isActivated&&(e.stopPropagation(),e.preventDefault(),0<(t=e.deltaY)?L(e):t<0&&M(e)),T(e)},ne=e=>{T(e)},re=e=>{var u=x["isActivated"],t=y.value,l=O.value,i=h.value,a=U.value,n=v.value;i||a||!u||(x.isActivated=(0,_dom.getEventTargetNode)(e,t).flag||(0,_dom.getEventTargetNode)(e,l).flag,x.isActivated)||(n||(i=x["inputValue"],a=i?Number(i):null,A(a,C(i),e)),w())},oe=u=>{var t=b["clearable"],l=h.value,i=U.value;if(!l&&!i){l=_ui.globalEvents.hasKey(u,_ui.GLOBAL_EVENT_KEYS.TAB),i=_ui.globalEvents.hasKey(u,_ui.GLOBAL_EVENT_KEYS.DELETE);let e=x.isActivated;l&&(e&&w(),e=!1,x.isActivated=e),i&&t&&e&&B(u,null)}},se=()=>{var e=x["isActivated"];e&&w()};f={dispatchEvent:(e,u,t)=>{i(e,(0,_ui.createEvent)(t,{$numberInput:_},u))},focus(){var e;return U.value||(e=p.value,x.isActivated=!0,e.focus()),(0,_vue.nextTick)()},blur(){return p.value.blur(),(x.isActivated=!1,_vue.nextTick)()},select(){return p.value.select(),(x.isActivated=!1,_vue.nextTick)()}},Object.assign(_,f);const ve=()=>{var e=b["prefixIcon"],u=g.prefix;return u||e?(0,_vue.h)("div",{class:"vxe-number-input--prefix",onClick:W},[(0,_vue.h)("div",{class:"vxe-number-input--prefix-icon"},u?(0,_vn.getSlotVNs)(u({})):[(0,_vue.h)("i",{class:e})])]):(0,_ui.renderEmptyElement)(_)},pe=()=>{var e=b["suffixIcon"],u=x["inputValue"],t=g.suffix,l=h.value,i=V.value;return(0,_vue.h)("div",{class:["vxe-number-input--suffix",{"is--clear":i&&!l&&!(""===u||_xeUtils.default.eqNull(u))}]},[i?(0,_vue.h)("div",{class:"vxe-number-input--clear-icon",onClick:B},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().INPUT_CLEAR})]):(0,_ui.renderEmptyElement)(_),t||e?(0,_vue.h)("div",{class:"vxe-number-input--suffix-icon",onClick:z},t?(0,_vn.getSlotVNs)(t({})):[(0,_vue.h)("i",{class:e})]):(0,_ui.renderEmptyElement)(_)])},F=()=>{var{type:e,name:u,autocomplete:t,autoComplete:l}=b,{inputValue:i,isFocus:a}=x,n=h.value,r=I.value,o=U.value,s=d.value,v=R.value;return(0,_vue.h)("div",{key:"ni",class:"vxe-number-input--input-wrapper"},[ve(),(0,_vue.h)("div",{class:"vxe-number-input--input-inner"},[(0,_vue.h)("input",{ref:p,class:"vxe-number-input--input",value:a||"amount"!==e?i:r,name:u,type:"text",placeholder:v,maxlength:s,readonly:o,disabled:n,autocomplete:l||t,onKeydown:Z,onKeyup:ee,onWheel:ae,onClick:ne,onInput:Y,onChange:j,onFocus:G,onBlur:Q})]),pe()])},de=()=>{var e=b["minusIcon"],u=c.value;return(0,_vue.h)("button",{key:"prev",class:["vxe-number-input--minus-btn is--minus",{"is--disabled":u}],onClick:le,onMousedown:ie,onMouseup:t,onMouseleave:t},[(0,_vue.h)("i",{class:e||(0,_ui.getIcon)().NUMBER_INPUT_MINUS_NUM})])},ce=()=>{var e=b["plusIcon"],u=m.value;return(0,_vue.h)("button",{key:"next",class:["vxe-number-input--plus-btn is--plus",{"is--disabled":u}],onClick:le,onMousedown:ie,onMouseup:t,onMouseleave:t},[(0,_vue.h)("i",{class:e||(0,_ui.getIcon)().NUMBER_INPUT_PLUS_NUM})])},me=()=>(0,_vue.h)("div",{key:"cplr",class:"vxe-number-input--side-control"},[ce(),de()]);return _.renderVN=()=>{var{className:e,controls:u,type:t,align:l,prefixIcon:i,suffixIcon:a}=b,{inputValue:n,isActivated:r}=x,o=K.value,s=N.value,{layout:v,showButton:p}=s,d=h.value,c=E.value,m=I.value,_=g.prefix,f=g.suffix;return c?(0,_vue.h)("div",{ref:y,class:["vxe-number-input--readonly","type--"+t,e]},m):(c=U.value,m=V.value,s=(0,_utils.isEnableConf)(s)&&(!1===u?u:p),(0,_vue.h)("div",{ref:y,class:["vxe-number-input","type--"+t,"control-"+("right"===v||"left"===v?v:"default"),e,{["size--"+o]:o,["is--"+l]:l,"is--controls":s&&!c,"is--prefix":!!_||i,"is--suffix":!!f||a,"is--disabled":d,"is--active":r,"show--clear":m&&!d&&!(""===n||_xeUtils.default.eqNull(n))}],spellcheck:!1},s?"right"===v?[F(),me()]:"left"===v?[me(),F()]:[de(),F(),ce()]:[F()]))},(0,_vue.watch)(()=>b.modelValue,u=>{if(!r.isUM){var t=b["autoFill"],l=x["inputValue"],i=o.value,a=s.value;if((0,_utils.eqEmptyValue)(u))x.inputValue="";else{let e=""+u;a&&(e=(0,_util.toFloatValueFixed)(u,i),t||(e=""+_xeUtils.default.toNumber(e))),e!==l&&(x.inputValue=e)}}r.isUM=!1}),(0,_vue.watch)(()=>b.type,()=>{Object.assign(x,{inputValue:b.modelValue}),$()}),(0,_vue.onMounted)(()=>{_ui.globalEvents.on(_,"mousedown",re),_ui.globalEvents.on(_,"keydown",oe),_ui.globalEvents.on(_,"blur",se)}),(0,_vue.onBeforeUnmount)(()=>{x.isFocus=!1,t(),w(),_ui.globalEvents.off(_,"mousedown"),_ui.globalEvents.off(_,"keydown"),_ui.globalEvents.off(_,"blur")}),$(),_},render(){return this.renderVN()}});