@progress/kendo-vue-inputs 3.5.0 → 3.5.1-dev.202208150613
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/dist/cdn/js/kendo-vue-inputs.js +1 -1
- package/dist/es/checkbox/Checkbox.js +1 -1
- package/dist/es/checkbox/interfaces/CheckboxChangeEvent.js +1 -0
- package/dist/es/checkbox/interfaces/CheckboxFocusEvent.js +1 -0
- package/dist/es/checkbox/interfaces/CheckboxProps.js +1 -0
- package/dist/es/colors/ColorContrastLabels.js +3 -3
- package/dist/es/colors/ColorContrastSvg.js +2 -2
- package/dist/es/colors/ColorGradient.js +7 -7
- package/dist/es/colors/ColorPalette.js +1 -1
- package/dist/es/colors/ColorPicker.js +4 -4
- package/dist/es/colors/interfaces/ColorGradientChangeEvent.js +1 -0
- package/dist/es/colors/interfaces/ColorGradientProps.js +1 -0
- package/dist/es/colors/interfaces/ColorPaletteChangeEvent.js +1 -0
- package/dist/es/colors/interfaces/ColorPaletteProps.js +1 -0
- package/dist/es/colors/interfaces/ColorPickerActiveColorClick.js +1 -0
- package/dist/es/colors/interfaces/ColorPickerBlurEvent.js +1 -0
- package/dist/es/colors/interfaces/ColorPickerChangeEvent.js +1 -0
- package/dist/es/colors/interfaces/ColorPickerFocusEvent.js +1 -0
- package/dist/es/colors/interfaces/ColorPickerPaletteSettings.js +1 -0
- package/dist/es/colors/interfaces/ColorPickerPopupSettings.js +1 -0
- package/dist/es/colors/interfaces/ColorPickerProps.js +1 -0
- package/dist/es/colors/interfaces/ColorPickerView.js +1 -0
- package/dist/es/colors/interfaces/FlatColorPickerViewChangeEvent.js +1 -0
- package/dist/es/colors/interfaces/PickerPopupSettings.js +1 -0
- package/dist/es/colors/interfaces/PickerProps.js +1 -0
- package/dist/es/colors/models/hsva.js +1 -0
- package/dist/es/colors/models/output-format.js +1 -0
- package/dist/es/colors/models/rgb.js +1 -0
- package/dist/es/colors/models/rgba.js +1 -0
- package/dist/es/colors/models/table-cell.js +1 -0
- package/dist/es/colors/models/tile-size.js +1 -0
- package/dist/es/colors/utils/color-parser.js +1 -1
- package/dist/es/colors/utils/svg-calc.js +4 -4
- package/dist/es/input/Input.js +2 -2
- package/dist/es/interfaces/Direction.js +1 -0
- package/dist/es/interfaces/ToggleBaseProps.js +1 -0
- package/dist/es/maskedtextbox/MaskedTextBox.js +3 -3
- package/dist/es/maskedtextbox/MaskedTextBoxProps.js +1 -0
- package/dist/es/maskedtextbox/parsing/result.js +1 -1
- package/dist/es/numerictextbox/NumericTextBox.js +2 -2
- package/dist/es/numerictextbox/interfaces/NumericTextBoxData.js +1 -0
- package/dist/es/numerictextbox/interfaces/NumericTextBoxProps.js +1 -0
- package/dist/es/numerictextbox/utils/index.js +4 -4
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/radiobutton/RadioButton.js +1 -1
- package/dist/es/radiobutton/interfaces/RadioButtonBlurEvent.js +1 -0
- package/dist/es/radiobutton/interfaces/RadioButtonChangeEvent.js +1 -0
- package/dist/es/radiobutton/interfaces/RadioButtonFocusEvent.js +1 -0
- package/dist/es/radiobutton/interfaces/RadioButtonProps.js +1 -0
- package/dist/es/radiobutton/interfaces/RadioGroupChangeEvent.js +1 -0
- package/dist/es/radiobutton/interfaces/RadioGroupFocusEvent.js +1 -0
- package/dist/es/radiobutton/interfaces/RadioGroupProps.js +1 -0
- package/dist/es/range-slider/RangeSlider.js +4 -4
- package/dist/es/slider/SliderLabel.js +2 -2
- package/dist/es/switch/Switch.js +3 -3
- package/dist/es/textarea/TextArea.js +3 -3
- package/dist/es/textarea/interfaces/TextAreaBlurEvent.js +1 -0
- package/dist/es/textarea/interfaces/TextAreaChangeEvent.js +1 -0
- package/dist/es/textarea/interfaces/TextAreaFlow.js +1 -0
- package/dist/es/textarea/interfaces/TextAreaFocusEvent.js +1 -0
- package/dist/es/textarea/interfaces/TextAreaProps.js +1 -0
- package/dist/es/textarea/interfaces/TextAreaResize.js +1 -0
- package/dist/esm/additionalTypes.ts +21 -0
- package/dist/esm/checkbox/Checkbox.d.ts +79 -0
- package/dist/esm/checkbox/Checkbox.js +373 -0
- package/dist/esm/checkbox/interfaces/CheckboxChangeEvent.d.ts +9 -0
- package/dist/esm/checkbox/interfaces/CheckboxChangeEvent.js +1 -0
- package/dist/esm/checkbox/interfaces/CheckboxFocusEvent.d.ts +5 -0
- package/dist/esm/checkbox/interfaces/CheckboxFocusEvent.js +1 -0
- package/dist/esm/checkbox/interfaces/CheckboxProps.d.ts +110 -0
- package/dist/esm/checkbox/interfaces/CheckboxProps.js +1 -0
- package/dist/esm/colors/ColorContrastLabels.d.ts +49 -0
- package/dist/esm/colors/ColorContrastLabels.js +84 -0
- package/dist/esm/colors/ColorContrastSvg.d.ts +50 -0
- package/dist/esm/colors/ColorContrastSvg.js +130 -0
- package/dist/esm/colors/ColorGradient.d.ts +54 -0
- package/dist/esm/colors/ColorGradient.js +515 -0
- package/dist/esm/colors/ColorInput.d.ts +57 -0
- package/dist/esm/colors/ColorInput.js +343 -0
- package/dist/esm/colors/ColorPalette.d.ts +60 -0
- package/dist/esm/colors/ColorPalette.js +343 -0
- package/dist/esm/colors/ColorPicker.d.ts +57 -0
- package/dist/esm/colors/ColorPicker.js +505 -0
- package/dist/esm/colors/FlatColorPicker.d.ts +139 -0
- package/dist/esm/colors/FlatColorPicker.js +539 -0
- package/dist/esm/colors/HexInput.d.ts +52 -0
- package/dist/esm/colors/HexInput.js +110 -0
- package/dist/esm/colors/Picker.d.ts +46 -0
- package/dist/esm/colors/Picker.js +110 -0
- package/dist/esm/colors/interfaces/ColorGradientChangeEvent.d.ts +13 -0
- package/dist/esm/colors/interfaces/ColorGradientChangeEvent.js +1 -0
- package/dist/esm/colors/interfaces/ColorGradientProps.d.ts +68 -0
- package/dist/esm/colors/interfaces/ColorGradientProps.js +1 -0
- package/dist/esm/colors/interfaces/ColorPaletteChangeEvent.d.ts +13 -0
- package/dist/esm/colors/interfaces/ColorPaletteChangeEvent.js +1 -0
- package/dist/esm/colors/interfaces/ColorPaletteProps.d.ts +71 -0
- package/dist/esm/colors/interfaces/ColorPaletteProps.js +1 -0
- package/dist/esm/colors/interfaces/ColorPickerActiveColorClick.d.ts +13 -0
- package/dist/esm/colors/interfaces/ColorPickerActiveColorClick.js +1 -0
- package/dist/esm/colors/interfaces/ColorPickerBlurEvent.d.ts +9 -0
- package/dist/esm/colors/interfaces/ColorPickerBlurEvent.js +1 -0
- package/dist/esm/colors/interfaces/ColorPickerChangeEvent.d.ts +17 -0
- package/dist/esm/colors/interfaces/ColorPickerChangeEvent.js +1 -0
- package/dist/esm/colors/interfaces/ColorPickerFocusEvent.d.ts +9 -0
- package/dist/esm/colors/interfaces/ColorPickerFocusEvent.js +1 -0
- package/dist/esm/colors/interfaces/ColorPickerPaletteSettings.d.ts +32 -0
- package/dist/esm/colors/interfaces/ColorPickerPaletteSettings.js +1 -0
- package/dist/esm/colors/interfaces/ColorPickerPopupSettings.d.ts +14 -0
- package/dist/esm/colors/interfaces/ColorPickerPopupSettings.js +1 -0
- package/dist/esm/colors/interfaces/ColorPickerProps.d.ts +176 -0
- package/dist/esm/colors/interfaces/ColorPickerProps.js +1 -0
- package/dist/esm/colors/interfaces/ColorPickerView.d.ts +10 -0
- package/dist/esm/colors/interfaces/ColorPickerView.js +1 -0
- package/dist/esm/colors/interfaces/FlatColorPickerViewChangeEvent.d.ts +13 -0
- package/dist/esm/colors/interfaces/FlatColorPickerViewChangeEvent.js +1 -0
- package/dist/esm/colors/interfaces/PickerPopupSettings.d.ts +14 -0
- package/dist/esm/colors/interfaces/PickerPopupSettings.js +1 -0
- package/dist/esm/colors/interfaces/PickerProps.d.ts +46 -0
- package/dist/esm/colors/interfaces/PickerProps.js +1 -0
- package/dist/esm/colors/models/hsva.d.ts +9 -0
- package/dist/esm/colors/models/hsva.js +1 -0
- package/dist/esm/colors/models/output-format.d.ts +4 -0
- package/dist/esm/colors/models/output-format.js +1 -0
- package/dist/esm/colors/models/palette-presets.d.ts +53 -0
- package/dist/esm/colors/models/palette-presets.js +54 -0
- package/dist/esm/colors/models/rgb.d.ts +8 -0
- package/dist/esm/colors/models/rgb.js +1 -0
- package/dist/esm/colors/models/rgba.d.ts +9 -0
- package/dist/esm/colors/models/rgba.js +1 -0
- package/dist/esm/colors/models/table-cell.d.ts +7 -0
- package/dist/esm/colors/models/table-cell.js +1 -0
- package/dist/esm/colors/models/tile-size.d.ts +11 -0
- package/dist/esm/colors/models/tile-size.js +1 -0
- package/dist/esm/colors/utils/color-cache.d.ts +43 -0
- package/dist/esm/colors/utils/color-cache.js +75 -0
- package/dist/esm/colors/utils/color-palette.service.d.ts +13 -0
- package/dist/esm/colors/utils/color-palette.service.js +67 -0
- package/dist/esm/colors/utils/color-parser.d.ts +71 -0
- package/dist/esm/colors/utils/color-parser.js +145 -0
- package/dist/esm/colors/utils/misc.d.ts +15 -0
- package/dist/esm/colors/utils/misc.js +20 -0
- package/dist/esm/colors/utils/svg-calc.d.ts +62 -0
- package/dist/esm/colors/utils/svg-calc.js +103 -0
- package/dist/esm/input/Input.d.ts +189 -0
- package/dist/esm/input/Input.js +426 -0
- package/dist/esm/input-separator/InputSeparator.d.ts +26 -0
- package/dist/esm/input-separator/InputSeparator.js +43 -0
- package/dist/esm/interfaces/Direction.d.ts +1 -0
- package/dist/esm/interfaces/Direction.js +1 -0
- package/dist/esm/interfaces/ToggleBaseProps.d.ts +8 -0
- package/dist/esm/interfaces/ToggleBaseProps.js +1 -0
- package/dist/esm/main.d.ts +39 -0
- package/dist/esm/main.js +37 -0
- package/dist/esm/maskedtextbox/MaskedTextBox.d.ts +76 -0
- package/dist/esm/maskedtextbox/MaskedTextBox.js +511 -0
- package/dist/esm/maskedtextbox/MaskedTextBoxProps.d.ts +219 -0
- package/dist/esm/maskedtextbox/MaskedTextBoxProps.js +2 -0
- package/dist/esm/maskedtextbox/masking.service.d.ts +41 -0
- package/dist/esm/maskedtextbox/masking.service.js +206 -0
- package/dist/esm/maskedtextbox/parsing/combinators.d.ts +9 -0
- package/dist/esm/maskedtextbox/parsing/combinators.js +24 -0
- package/dist/esm/maskedtextbox/parsing/parsers.d.ts +47 -0
- package/dist/esm/maskedtextbox/parsing/parsers.js +154 -0
- package/dist/esm/maskedtextbox/parsing/result.d.ts +23 -0
- package/dist/esm/maskedtextbox/parsing/result.js +39 -0
- package/dist/esm/maskedtextbox/parsing/stream.d.ts +22 -0
- package/dist/esm/maskedtextbox/parsing/stream.js +41 -0
- package/dist/esm/maskedtextbox/utils.d.ts +16 -0
- package/dist/esm/maskedtextbox/utils.js +56 -0
- package/dist/esm/messages/index.d.ts +160 -0
- package/dist/esm/messages/index.js +162 -0
- package/dist/esm/numerictextbox/NumericTextBox.d.ts +87 -0
- package/dist/esm/numerictextbox/NumericTextBox.js +684 -0
- package/dist/esm/numerictextbox/interfaces/NumericTextBoxData.d.ts +15 -0
- package/dist/esm/numerictextbox/interfaces/NumericTextBoxData.js +1 -0
- package/dist/esm/numerictextbox/interfaces/NumericTextBoxProps.d.ts +178 -0
- package/dist/esm/numerictextbox/interfaces/NumericTextBoxProps.js +1 -0
- package/dist/esm/numerictextbox/utils/index.d.ts +119 -0
- package/dist/esm/numerictextbox/utils/index.js +646 -0
- package/dist/esm/package-metadata.d.ts +5 -0
- package/dist/esm/package-metadata.js +11 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/radiobutton/RadioButton.d.ts +55 -0
- package/dist/esm/radiobutton/RadioButton.js +195 -0
- package/dist/esm/radiobutton/RadioGroup.d.ts +57 -0
- package/dist/esm/radiobutton/RadioGroup.js +218 -0
- package/dist/esm/radiobutton/interfaces/RadioButtonBlurEvent.d.ts +5 -0
- package/dist/esm/radiobutton/interfaces/RadioButtonBlurEvent.js +1 -0
- package/dist/esm/radiobutton/interfaces/RadioButtonChangeEvent.d.ts +9 -0
- package/dist/esm/radiobutton/interfaces/RadioButtonChangeEvent.js +1 -0
- package/dist/esm/radiobutton/interfaces/RadioButtonFocusEvent.d.ts +5 -0
- package/dist/esm/radiobutton/interfaces/RadioButtonFocusEvent.js +1 -0
- package/dist/esm/radiobutton/interfaces/RadioButtonProps.d.ts +107 -0
- package/dist/esm/radiobutton/interfaces/RadioButtonProps.js +1 -0
- package/dist/esm/radiobutton/interfaces/RadioGroupChangeEvent.d.ts +9 -0
- package/dist/esm/radiobutton/interfaces/RadioGroupChangeEvent.js +1 -0
- package/dist/esm/radiobutton/interfaces/RadioGroupFocusEvent.d.ts +5 -0
- package/dist/esm/radiobutton/interfaces/RadioGroupFocusEvent.js +1 -0
- package/dist/esm/radiobutton/interfaces/RadioGroupProps.d.ts +81 -0
- package/dist/esm/radiobutton/interfaces/RadioGroupProps.js +1 -0
- package/dist/esm/range-slider/RangeSlider.d.ts +176 -0
- package/dist/esm/range-slider/RangeSlider.js +617 -0
- package/dist/esm/range-slider/range-raducer.d.ts +35 -0
- package/dist/esm/range-slider/range-raducer.js +157 -0
- package/dist/esm/slider/Slider.d.ts +140 -0
- package/dist/esm/slider/Slider.js +395 -0
- package/dist/esm/slider/SliderLabel.d.ts +65 -0
- package/dist/esm/slider/SliderLabel.js +121 -0
- package/dist/esm/switch/Switch.d.ts +182 -0
- package/dist/esm/switch/Switch.js +342 -0
- package/dist/esm/switch/util.d.ts +8 -0
- package/dist/esm/switch/util.js +46 -0
- package/dist/esm/textarea/TextArea.d.ts +81 -0
- package/dist/esm/textarea/TextArea.js +422 -0
- package/dist/esm/textarea/interfaces/TextAreaBlurEvent.d.ts +5 -0
- package/dist/esm/textarea/interfaces/TextAreaBlurEvent.js +1 -0
- package/dist/esm/textarea/interfaces/TextAreaChangeEvent.d.ts +9 -0
- package/dist/esm/textarea/interfaces/TextAreaChangeEvent.js +1 -0
- package/dist/esm/textarea/interfaces/TextAreaFlow.d.ts +8 -0
- package/dist/esm/textarea/interfaces/TextAreaFlow.js +1 -0
- package/dist/esm/textarea/interfaces/TextAreaFocusEvent.d.ts +5 -0
- package/dist/esm/textarea/interfaces/TextAreaFocusEvent.js +1 -0
- package/dist/esm/textarea/interfaces/TextAreaProps.d.ts +170 -0
- package/dist/esm/textarea/interfaces/TextAreaProps.js +1 -0
- package/dist/esm/textarea/interfaces/TextAreaResize.d.ts +10 -0
- package/dist/esm/textarea/interfaces/TextAreaResize.js +1 -0
- package/dist/npm/checkbox/Checkbox.js +12 -12
- package/dist/npm/colors/ColorContrastLabels.js +5 -5
- package/dist/npm/colors/ColorContrastSvg.js +4 -4
- package/dist/npm/colors/ColorGradient.js +42 -42
- package/dist/npm/colors/ColorInput.js +2 -2
- package/dist/npm/colors/ColorPalette.js +12 -12
- package/dist/npm/colors/ColorPicker.js +15 -15
- package/dist/npm/colors/FlatColorPicker.js +10 -10
- package/dist/npm/colors/HexInput.js +4 -4
- package/dist/npm/colors/Picker.js +2 -2
- package/dist/npm/colors/utils/color-palette.service.js +6 -6
- package/dist/npm/colors/utils/color-parser.js +48 -37
- package/dist/npm/colors/utils/misc.js +5 -3
- package/dist/npm/colors/utils/svg-calc.js +12 -8
- package/dist/npm/input/Input.js +4 -4
- package/dist/npm/input-separator/InputSeparator.js +1 -1
- package/dist/npm/main.js +7 -2
- package/dist/npm/maskedtextbox/MaskedTextBox.js +8 -8
- package/dist/npm/maskedtextbox/masking.service.js +19 -19
- package/dist/npm/maskedtextbox/parsing/combinators.js +4 -2
- package/dist/npm/maskedtextbox/parsing/parsers.js +14 -7
- package/dist/npm/maskedtextbox/parsing/result.js +1 -1
- package/dist/npm/numerictextbox/NumericTextBox.js +22 -22
- package/dist/npm/numerictextbox/utils/index.js +145 -116
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/radiobutton/RadioButton.js +8 -8
- package/dist/npm/radiobutton/RadioGroup.js +5 -5
- package/dist/npm/range-slider/RangeSlider.js +17 -17
- package/dist/npm/range-slider/range-raducer.js +4 -2
- package/dist/npm/slider/Slider.js +7 -7
- package/dist/npm/slider/SliderLabel.js +3 -3
- package/dist/npm/switch/Switch.js +13 -13
- package/dist/npm/switch/util.js +2 -1
- package/dist/npm/textarea/TextArea.js +7 -7
- package/package.json +17 -11
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
var __assign = this && this.__assign || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
|
|
6
|
+
for (var p in s) {
|
|
7
|
+
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
return __assign.apply(this, arguments);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
var DEFAULT_NUMBER = 1111111.1111111;
|
|
18
|
+
var MAX_DECIMAL = 0.31111111111111117;
|
|
19
|
+
var MIN_DECIMAL = 1;
|
|
20
|
+
var ONE_NUMBER = 1;
|
|
21
|
+
var ZERO_NUMBER = 0;
|
|
22
|
+
var DIGITS_REGEX = /\d/;
|
|
23
|
+
var MAX_PRECISION = 15;
|
|
24
|
+
/**
|
|
25
|
+
* @hidden
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
export var getInitialState = function getInitialState() {
|
|
29
|
+
return {
|
|
30
|
+
eventValue: null,
|
|
31
|
+
prevLooseValue: '',
|
|
32
|
+
currentLooseValue: '',
|
|
33
|
+
focused: false,
|
|
34
|
+
selectionStart: undefined,
|
|
35
|
+
selectionEnd: undefined,
|
|
36
|
+
decimalSelect: false,
|
|
37
|
+
valueIsCorrected: false,
|
|
38
|
+
valueIsOutOfRange: false
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* @hidden
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
export var getStateOrPropsValue = function getStateOrPropsValue(value, stateValue) {
|
|
46
|
+
return value !== undefined ? value : stateValue;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* @hidden
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
export var formatValue = function formatValue(value, format, intlService) {
|
|
53
|
+
if (value === null && value === undefined) {
|
|
54
|
+
return '';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (typeof value === 'string') {
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return intlService.formatNumber(value, format);
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* @hidden
|
|
65
|
+
*/
|
|
66
|
+
|
|
67
|
+
export var fractionLength = function fractionLength(value) {
|
|
68
|
+
return (String(value).split('.')[1] || '').length;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* @hidden
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
var maxFractionLength = function maxFractionLength(value1, value2) {
|
|
75
|
+
return Math.max(fractionLength(value1), fractionLength(value2));
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* @hidden
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
export var limitPrecision = function limitPrecision(precision) {
|
|
83
|
+
return Math.min(precision, MAX_PRECISION);
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* @hidden
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
export var toFixedPrecision = function toFixedPrecision(value, precision) {
|
|
90
|
+
var maxPrecision = limitPrecision(precision);
|
|
91
|
+
return parseFloat(value.toFixed(maxPrecision));
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* @hidden
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
export var increaseValue = function increaseValue(value, newState, step, min, max, format, intlService) {
|
|
98
|
+
var maxPrecision = maxFractionLength(value || 0, step || 0);
|
|
99
|
+
var increasedValue = rangeValue(toFixedPrecision((value || 0) + (step || 0), maxPrecision), min, max);
|
|
100
|
+
newState.eventValue = increasedValue;
|
|
101
|
+
newState.currentLooseValue = formatValue(increasedValue, format, intlService);
|
|
102
|
+
newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* @hidden
|
|
106
|
+
*/
|
|
107
|
+
|
|
108
|
+
export var decreaseValue = function decreaseValue(value, newState, step, min, max, format, intlService) {
|
|
109
|
+
var maxPrecision = maxFractionLength(value || 0, step || 0);
|
|
110
|
+
var decreasedValue = rangeValue(toFixedPrecision((value || 0) - (step || 0), maxPrecision), min, max);
|
|
111
|
+
newState.eventValue = decreasedValue;
|
|
112
|
+
newState.currentLooseValue = formatValue(decreasedValue, format, intlService);
|
|
113
|
+
newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* @hidden
|
|
117
|
+
*/
|
|
118
|
+
|
|
119
|
+
export var rangeValue = function rangeValue(value, min, max) {
|
|
120
|
+
if (value == null) {
|
|
121
|
+
return value;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (!(value > 1 || value < 1 || value === 1)) {
|
|
125
|
+
// null, undefined or NaN
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (max !== undefined && min !== undefined && max < min) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (max !== undefined && value > max) {
|
|
134
|
+
value = max;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (min !== undefined && value < min) {
|
|
138
|
+
value = min;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return value;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* @hidden
|
|
145
|
+
*/
|
|
146
|
+
|
|
147
|
+
export var getMaxCursorPosition = function getMaxCursorPosition(nextValue, formatInfo) {
|
|
148
|
+
var formatSuffixIndex = formatInfo.findIndex(function (_a) {
|
|
149
|
+
var _ = _a[0],
|
|
150
|
+
currSuffix = _a[1];
|
|
151
|
+
return Boolean(currSuffix) && nextValue.indexOf(currSuffix) === nextValue.length - currSuffix.length;
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
if (formatSuffixIndex === -1) {
|
|
155
|
+
return -1;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
var suffix = formatInfo[formatSuffixIndex][1];
|
|
159
|
+
return nextValue.length - suffix.length;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* @hidden
|
|
163
|
+
*/
|
|
164
|
+
|
|
165
|
+
export var getMinCursorPosition = function getMinCursorPosition(nextValue, formatInfo) {
|
|
166
|
+
var formatPrefixIndex = formatInfo.findIndex(function (_a) {
|
|
167
|
+
var currPrefix = _a[0],
|
|
168
|
+
_ = _a[1];
|
|
169
|
+
return Boolean(currPrefix) && nextValue.indexOf(currPrefix) === 0;
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
if (formatPrefixIndex === -1) {
|
|
173
|
+
return -1;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
var prefix = formatInfo[formatPrefixIndex][0];
|
|
177
|
+
return prefix.length;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* @hidden
|
|
181
|
+
*/
|
|
182
|
+
|
|
183
|
+
export var rangeSelection = function rangeSelection(nextLooseValue, formatInfo, newState) {
|
|
184
|
+
var maxPosition = getMaxCursorPosition(nextLooseValue, formatInfo);
|
|
185
|
+
|
|
186
|
+
if (maxPosition !== -1 && newState.selectionStart > maxPosition) {
|
|
187
|
+
newState.selectionStart = newState.selectionEnd = maxPosition;
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (newState.selectionStart > nextLooseValue.length) {
|
|
192
|
+
newState.selectionStart = newState.selectionEnd = nextLooseValue.length;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
var minPosition = getMinCursorPosition(nextLooseValue, formatInfo);
|
|
196
|
+
|
|
197
|
+
if (minPosition !== -1 && newState.selectionStart < minPosition) {
|
|
198
|
+
newState.selectionStart = newState.selectionEnd = minPosition;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (newState.selectionStart === -1) {
|
|
202
|
+
newState.selectionStart = newState.selectionEnd = 0;
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* @hidden
|
|
207
|
+
*/
|
|
208
|
+
|
|
209
|
+
export var setSelection = function setSelection(newState, newIndex, nextLooseValue, formatInfo) {
|
|
210
|
+
newState.selectionStart = newState.selectionEnd = newIndex;
|
|
211
|
+
rangeSelection(nextLooseValue, formatInfo, newState);
|
|
212
|
+
};
|
|
213
|
+
/**
|
|
214
|
+
* @hidden
|
|
215
|
+
*/
|
|
216
|
+
|
|
217
|
+
export var setInvalid = function setInvalid(newState, format, formatInfo, intlService) {
|
|
218
|
+
newState.eventValue = intlService.parseNumber(newState.prevLooseValue, format);
|
|
219
|
+
newState.currentLooseValue = newState.prevLooseValue;
|
|
220
|
+
newState.valueIsCorrected = true;
|
|
221
|
+
setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* @hidden
|
|
225
|
+
*/
|
|
226
|
+
|
|
227
|
+
export var isMinusSymbolAdded = function isMinusSymbolAdded(newState, symbols) {
|
|
228
|
+
var newText = String(newState.currentLooseValue);
|
|
229
|
+
var oldText = String(newState.prevLooseValue);
|
|
230
|
+
return newText.split(symbols.minusSign).length !== oldText.split(symbols.minusSign).length && newText.length === oldText.length + symbols.minusSign.length;
|
|
231
|
+
};
|
|
232
|
+
/**
|
|
233
|
+
* @hidden
|
|
234
|
+
*/
|
|
235
|
+
|
|
236
|
+
export var isMinusSymbolRemoved = function isMinusSymbolRemoved(newState, symbols) {
|
|
237
|
+
var newText = String(newState.currentLooseValue);
|
|
238
|
+
var oldText = String(newState.prevLooseValue);
|
|
239
|
+
return newText.indexOf(symbols.minusSign) === -1 && oldText.indexOf(symbols.minusSign) !== -1;
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* @hidden
|
|
243
|
+
*/
|
|
244
|
+
|
|
245
|
+
export var isDecimalDuplicated = function isDecimalDuplicated(newState, symbols) {
|
|
246
|
+
var newText = String(newState.currentLooseValue);
|
|
247
|
+
return newText.split(symbols.decimal).length > 2;
|
|
248
|
+
};
|
|
249
|
+
/**
|
|
250
|
+
* @hidden
|
|
251
|
+
*/
|
|
252
|
+
|
|
253
|
+
export var getFormatPrefixSufix = function getFormatPrefixSufix(format, intlService) {
|
|
254
|
+
var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);
|
|
255
|
+
var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);
|
|
256
|
+
var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);
|
|
257
|
+
var oneResult = intlService.formatNumber(ONE_NUMBER, format);
|
|
258
|
+
var positivePrefix = getPrefix(positiveResult);
|
|
259
|
+
var negativePrefix = getPrefix(negativeResult);
|
|
260
|
+
var zeroPrefix = getPrefix(zeroResult);
|
|
261
|
+
var onePrefix = getPrefix(oneResult);
|
|
262
|
+
var positiveSuffix = getSuffix(positiveResult);
|
|
263
|
+
var negativeSuffix = getSuffix(negativeResult);
|
|
264
|
+
var zeroSuffix = getSuffix(zeroResult);
|
|
265
|
+
var oneSuffix = getSuffix(oneResult);
|
|
266
|
+
return {
|
|
267
|
+
positiveInfo: [positivePrefix, positiveSuffix],
|
|
268
|
+
negativeInfo: [negativePrefix, negativeSuffix],
|
|
269
|
+
zeroInfo: [zeroPrefix, zeroSuffix],
|
|
270
|
+
oneInfo: [onePrefix, oneSuffix]
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
/**
|
|
274
|
+
* @hidden
|
|
275
|
+
*/
|
|
276
|
+
|
|
277
|
+
export var getFormatSymbols = function getFormatSymbols(format, intlService) {
|
|
278
|
+
var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);
|
|
279
|
+
var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);
|
|
280
|
+
var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);
|
|
281
|
+
var oneResult = intlService.formatNumber(ONE_NUMBER, format);
|
|
282
|
+
var symbols = intlService.numberSymbols();
|
|
283
|
+
var sanitizeRegex = new RegExp("[\\d\\".concat(symbols.decimal).concat(symbols.group, "]"), 'g');
|
|
284
|
+
var resultWithDuplicates = [positiveResult, negativeResult, zeroResult, oneResult].map(function (result) {
|
|
285
|
+
return result.replace(sanitizeRegex, '');
|
|
286
|
+
}).join('');
|
|
287
|
+
return resultWithDuplicates.split('').filter(function (x, n, s) {
|
|
288
|
+
return s.indexOf(x) === n;
|
|
289
|
+
}).join('');
|
|
290
|
+
};
|
|
291
|
+
/**
|
|
292
|
+
* @hidden
|
|
293
|
+
*/
|
|
294
|
+
|
|
295
|
+
export var getInitialPosition = function getInitialPosition(nextLooseValue, symbols) {
|
|
296
|
+
var decimalIdex = nextLooseValue.indexOf(symbols.decimal);
|
|
297
|
+
|
|
298
|
+
if (decimalIdex > -1) {
|
|
299
|
+
return decimalIdex;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
return getLastNumberIndex(nextLooseValue, DIGITS_REGEX);
|
|
303
|
+
};
|
|
304
|
+
/**
|
|
305
|
+
* @hidden
|
|
306
|
+
*/
|
|
307
|
+
|
|
308
|
+
export var reverseString = function reverseString(str) {
|
|
309
|
+
return str.split('').reverse().join('');
|
|
310
|
+
};
|
|
311
|
+
/**
|
|
312
|
+
* @hidden
|
|
313
|
+
*/
|
|
314
|
+
|
|
315
|
+
export var getLastNumberIndex = function getLastNumberIndex(currentLooseValue, inputRegex) {
|
|
316
|
+
return currentLooseValue.length - reverseString(currentLooseValue).search(inputRegex);
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* @hidden
|
|
320
|
+
*/
|
|
321
|
+
|
|
322
|
+
export var getPrefix = function getPrefix(str) {
|
|
323
|
+
return str.split(str[str.search(DIGITS_REGEX)])[0];
|
|
324
|
+
};
|
|
325
|
+
/**
|
|
326
|
+
* @hidden
|
|
327
|
+
*/
|
|
328
|
+
|
|
329
|
+
export var getSuffix = function getSuffix(str) {
|
|
330
|
+
var reversedString = reverseString(str);
|
|
331
|
+
return reverseString(reversedString.split(reversedString[reversedString.search(DIGITS_REGEX)])[0]);
|
|
332
|
+
};
|
|
333
|
+
/**
|
|
334
|
+
* @hidden
|
|
335
|
+
*/
|
|
336
|
+
|
|
337
|
+
export var getFirstNumberIndex = function getFirstNumberIndex(prevLooseValue, inputRegex) {
|
|
338
|
+
return prevLooseValue.search(inputRegex);
|
|
339
|
+
};
|
|
340
|
+
/**
|
|
341
|
+
* @hidden
|
|
342
|
+
*/
|
|
343
|
+
|
|
344
|
+
export var getDecimalCount = function getDecimalCount(value, decimal) {
|
|
345
|
+
var currentDecimalPlace = value.indexOf(decimal);
|
|
346
|
+
return currentDecimalPlace > -1 ? value.length - currentDecimalPlace - 1 : 0;
|
|
347
|
+
};
|
|
348
|
+
/**
|
|
349
|
+
* @hidden
|
|
350
|
+
*/
|
|
351
|
+
|
|
352
|
+
export var changeBasedSelection = function changeBasedSelection(currentValue, nextValue, selectionPosition, isDelete, sanitizeRegex) {
|
|
353
|
+
var isCurrentLeadingZero = currentValue.replace(sanitizeRegex, '')[0] === '0';
|
|
354
|
+
var isNextLeadingZero = nextValue.replace(sanitizeRegex, '')[0] === '0';
|
|
355
|
+
|
|
356
|
+
if (isCurrentLeadingZero && !isNextLeadingZero) {
|
|
357
|
+
return selectionPosition - 1;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
if (isNextLeadingZero && isDelete) {
|
|
361
|
+
return selectionPosition + 1;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
var numberCounter = 0;
|
|
365
|
+
|
|
366
|
+
for (var idx = 0; idx < selectionPosition; idx++) {
|
|
367
|
+
if (DIGITS_REGEX.test(currentValue.charAt(idx))) {
|
|
368
|
+
numberCounter++;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
var newSelection = 0;
|
|
373
|
+
|
|
374
|
+
while (numberCounter > 0 && nextValue.length > newSelection) {
|
|
375
|
+
if (DIGITS_REGEX.test(nextValue.charAt(newSelection))) {
|
|
376
|
+
numberCounter--;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
newSelection++;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
return newSelection;
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* @hidden
|
|
386
|
+
*/
|
|
387
|
+
|
|
388
|
+
export var sanitizeNumber = function sanitizeNumber(state, format, intlService) {
|
|
389
|
+
var newState = __assign({}, state);
|
|
390
|
+
|
|
391
|
+
var prevLooseValue = newState.prevLooseValue;
|
|
392
|
+
var symbols = intlService.numberSymbols();
|
|
393
|
+
var restrictedSymbols = getFormatSymbols(format, intlService);
|
|
394
|
+
var currentLooseValueAsString = String(newState.currentLooseValue);
|
|
395
|
+
var prevLooseValueAsString = String(prevLooseValue);
|
|
396
|
+
var sanitizeRegex = new RegExp("[^\\d\\".concat(symbols.decimal, "]"), 'g');
|
|
397
|
+
var sanitizeGroupRegex = new RegExp("[^\\d\\".concat(symbols.decimal, "\\").concat(symbols.group, "]"), 'g');
|
|
398
|
+
var allSymbolsRegex = new RegExp("[\\d\\".concat(symbols.decimal, "\\").concat(symbols.group, "]"));
|
|
399
|
+
var sanitizedString = currentLooseValueAsString.replace(sanitizeRegex, '');
|
|
400
|
+
var numberStart = getFirstNumberIndex(currentLooseValueAsString, DIGITS_REGEX);
|
|
401
|
+
var numberEnd = numberStart === -1 ? -1 : getLastNumberIndex(currentLooseValueAsString, DIGITS_REGEX);
|
|
402
|
+
var decimalIndex = currentLooseValueAsString.indexOf(symbols.decimal);
|
|
403
|
+
var sanitizedFormattedString = (currentLooseValueAsString.substring(0, numberStart) + currentLooseValueAsString.substring(numberStart, numberEnd).replace(sanitizeGroupRegex, '') + currentLooseValueAsString.substring(numberEnd, currentLooseValueAsString.length)).split('').filter(function (s) {
|
|
404
|
+
return restrictedSymbols.indexOf(s) !== -1 || s.search(allSymbolsRegex) !== -1;
|
|
405
|
+
}).join('');
|
|
406
|
+
var formattedMax = intlService.formatNumber(MAX_DECIMAL, format).replace(sanitizeRegex, '');
|
|
407
|
+
var maxDecimalIndex = formattedMax.indexOf(symbols.decimal);
|
|
408
|
+
var maxDecimalCount = maxDecimalIndex > -1 ? formattedMax.length - maxDecimalIndex - 1 : 0;
|
|
409
|
+
var formattedMin = intlService.formatNumber(MIN_DECIMAL, format).replace(sanitizeRegex, '');
|
|
410
|
+
var minDecimalIndex = formattedMin.indexOf(symbols.decimal);
|
|
411
|
+
var minDecimalCount = minDecimalIndex > -1 ? formattedMin.length - minDecimalIndex - 1 : 0;
|
|
412
|
+
|
|
413
|
+
var _a = getFormatPrefixSufix(format, intlService),
|
|
414
|
+
positiveInfo = _a.positiveInfo,
|
|
415
|
+
negativeInfo = _a.negativeInfo,
|
|
416
|
+
zeroInfo = _a.zeroInfo,
|
|
417
|
+
oneInfo = _a.oneInfo;
|
|
418
|
+
|
|
419
|
+
var formatInfo = [positiveInfo, negativeInfo, zeroInfo, oneInfo];
|
|
420
|
+
var isFormatContainPrefixSuffix = formatInfo.findIndex(function (info) {
|
|
421
|
+
return info.findIndex(function (nestedInfo) {
|
|
422
|
+
return Boolean(nestedInfo);
|
|
423
|
+
}) !== -1;
|
|
424
|
+
}) !== 1;
|
|
425
|
+
var isDelete = currentLooseValueAsString.length > 0 && currentLooseValueAsString.length < prevLooseValueAsString.length;
|
|
426
|
+
var isPercentFormat = format && format[0] === 'p' && currentLooseValueAsString && currentLooseValueAsString.indexOf(symbols.percentSign) === -1;
|
|
427
|
+
|
|
428
|
+
if (!newState.isPaste) {
|
|
429
|
+
// 1. Empty input
|
|
430
|
+
if (currentLooseValueAsString === '') {
|
|
431
|
+
newState.eventValue = null;
|
|
432
|
+
newState.currentLooseValue = '';
|
|
433
|
+
return newState;
|
|
434
|
+
} // 2. Check is minus sign
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
if (newState.currentLooseValue === symbols.minusSign && intlService.formatNumber(-0, format) !== prevLooseValueAsString) {
|
|
438
|
+
newState.eventValue = -0;
|
|
439
|
+
newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);
|
|
440
|
+
setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols), newState.currentLooseValue, formatInfo);
|
|
441
|
+
return newState;
|
|
442
|
+
} // 3. Minus sign toggle
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
if (isMinusSymbolAdded(newState, symbols)) {
|
|
446
|
+
var nextValue = intlService.parseNumber(prevLooseValue, format);
|
|
447
|
+
newState.eventValue = -(nextValue !== null ? nextValue : 0);
|
|
448
|
+
newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);
|
|
449
|
+
var currentNumberStart = getFirstNumberIndex(newState.currentLooseValue, DIGITS_REGEX);
|
|
450
|
+
var oldNumberStart = getFirstNumberIndex(prevLooseValueAsString, DIGITS_REGEX);
|
|
451
|
+
setSelection(newState, newState.selectionEnd - 1 + (currentNumberStart - oldNumberStart), newState.currentLooseValue, formatInfo);
|
|
452
|
+
return newState;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
if (isMinusSymbolRemoved(newState, symbols)) {
|
|
456
|
+
newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);
|
|
457
|
+
setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);
|
|
458
|
+
return newState;
|
|
459
|
+
} // 4. Check is decimal symbol
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
if (newState.currentLooseValue === symbols.decimal) {
|
|
463
|
+
newState.eventValue = 0;
|
|
464
|
+
var valueCandidate = formatValue(newState.eventValue, format, intlService);
|
|
465
|
+
|
|
466
|
+
if (minDecimalCount === 0 && maxDecimalCount > 0) {
|
|
467
|
+
var currentLastNumberIndex = getLastNumberIndex(valueCandidate, DIGITS_REGEX);
|
|
468
|
+
newState.currentLooseValue = valueCandidate.substring(0, currentLastNumberIndex) + symbols.decimal + valueCandidate.substring(currentLastNumberIndex);
|
|
469
|
+
} else {
|
|
470
|
+
newState.currentLooseValue = valueCandidate;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols) + 1, newState.currentLooseValue, formatInfo);
|
|
474
|
+
return newState;
|
|
475
|
+
} // 5. Duplicate decimal - it's possible only as trailing
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
if (isDecimalDuplicated(newState, symbols)) {
|
|
479
|
+
setInvalid(newState, format, formatInfo, intlService);
|
|
480
|
+
return newState;
|
|
481
|
+
} // 6. Percent format
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
if (isPercentFormat) {
|
|
485
|
+
newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format) / 100;
|
|
486
|
+
newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);
|
|
487
|
+
return newState;
|
|
488
|
+
} // 7. More than 15 numeric symbols
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
var numericSymbols = String(newState.currentLooseValue).replace(/[^\d]/g, '');
|
|
492
|
+
|
|
493
|
+
if (numericSymbols.length > MAX_PRECISION) {
|
|
494
|
+
setInvalid(newState, format, formatInfo, intlService);
|
|
495
|
+
return newState;
|
|
496
|
+
} // 8. Check prefix / suffix for modifications
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
if (sanitizedString !== currentLooseValueAsString && currentLooseValueAsString && isFormatContainPrefixSuffix) {
|
|
500
|
+
var formatInfoIndex = formatInfo.findIndex(function (_a) {
|
|
501
|
+
var prefix = _a[0],
|
|
502
|
+
suffix = _a[1];
|
|
503
|
+
var prefixIndex = currentLooseValueAsString.indexOf(prefix);
|
|
504
|
+
var suffixIndex = currentLooseValueAsString.indexOf(suffix);
|
|
505
|
+
var prefixFound = prefixIndex === 0;
|
|
506
|
+
var suffixFound = suffixIndex === currentLooseValueAsString.length - suffix.length;
|
|
507
|
+
var prefixGap = prefixIndex + prefix.length !== numberStart && numberStart !== -1 && currentLooseValueAsString[prefixIndex + prefix.length] !== symbols.decimal;
|
|
508
|
+
var suffixGap = suffixIndex !== numberEnd && numberEnd !== -1 && currentLooseValueAsString[suffixIndex - 1] !== symbols.decimal;
|
|
509
|
+
|
|
510
|
+
if (prefix && suffix) {
|
|
511
|
+
if (prefixGap || suffixGap) {
|
|
512
|
+
return false;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
return prefixFound && suffixFound;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
if (prefix) {
|
|
519
|
+
if (prefixGap) {
|
|
520
|
+
return false;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
return prefixFound;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
if (suffix) {
|
|
527
|
+
if (suffixGap) {
|
|
528
|
+
return false;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
return suffixFound;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
return false;
|
|
535
|
+
});
|
|
536
|
+
|
|
537
|
+
if (formatInfoIndex === -1) {
|
|
538
|
+
setInvalid(newState, format, formatInfo, intlService);
|
|
539
|
+
return newState;
|
|
540
|
+
}
|
|
541
|
+
} // 9. Value ending on decimal separator (here as decimal might be typed inside format)
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
if (sanitizedString[sanitizedString.length - 1] === symbols.decimal && maxDecimalCount > 0) {
|
|
545
|
+
newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format);
|
|
546
|
+
newState.currentLooseValue = sanitizedFormattedString;
|
|
547
|
+
return newState;
|
|
548
|
+
} // 10. prevent deleting decimal and group symbols
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
if (newState.currentLooseValue && prevLooseValue) {
|
|
552
|
+
var isSpecialSymbolDeleted = (restrictedSymbols + symbols.decimal + symbols.group).split('').findIndex(function (s) {
|
|
553
|
+
if (currentLooseValueAsString.split('').filter(function (x) {
|
|
554
|
+
return x === s;
|
|
555
|
+
}).length < prevLooseValueAsString.split('').filter(function (x) {
|
|
556
|
+
return x === s;
|
|
557
|
+
}).length && currentLooseValueAsString.length + 1 === prevLooseValueAsString.length) {
|
|
558
|
+
if (s === symbols.decimal && getDecimalCount(prevLooseValueAsString.replace(sanitizeRegex, ''), symbols.decimal) === 0) {
|
|
559
|
+
return false;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
return true;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
return false;
|
|
566
|
+
}) > -1;
|
|
567
|
+
|
|
568
|
+
if (isSpecialSymbolDeleted) {
|
|
569
|
+
newState.eventValue = intlService.parseNumber(state.prevLooseValue, format);
|
|
570
|
+
newState.currentLooseValue = state.prevLooseValue;
|
|
571
|
+
return newState;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
var currentDecimalCount = getDecimalCount(sanitizedString, symbols.decimal);
|
|
576
|
+
var endsOnDecimal = sanitizedString[sanitizedString.length - 1] === '0'; // 11. Deleting more decimals than allowed
|
|
577
|
+
|
|
578
|
+
if (isDelete && endsOnDecimal && currentDecimalCount < minDecimalCount) {
|
|
579
|
+
newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);
|
|
580
|
+
newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);
|
|
581
|
+
return newState;
|
|
582
|
+
} // 12. Ending on zero OR more decimals than allowed
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
if (currentDecimalCount > 0) {
|
|
586
|
+
var valueUntillDecimal = currentLooseValueAsString.substring(0, decimalIndex);
|
|
587
|
+
|
|
588
|
+
if (endsOnDecimal && (!valueUntillDecimal || prevLooseValueAsString.indexOf(valueUntillDecimal) !== 0)) {
|
|
589
|
+
// ending on zero but typing before decimal separator
|
|
590
|
+
newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);
|
|
591
|
+
var nextLooseValue = formatValue(newState.eventValue, format, intlService);
|
|
592
|
+
setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);
|
|
593
|
+
newState.currentLooseValue = nextLooseValue;
|
|
594
|
+
return newState;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
if (currentDecimalCount > maxDecimalCount) {
|
|
598
|
+
// typing more symbols than format allows
|
|
599
|
+
var looseDecimalPlace = currentLooseValueAsString.indexOf(symbols.decimal);
|
|
600
|
+
var result = currentLooseValueAsString.substring(0, looseDecimalPlace) + currentLooseValueAsString.substring(looseDecimalPlace, looseDecimalPlace + 1 + maxDecimalCount) + currentLooseValueAsString.substring(numberEnd, String(newState.currentLooseValue).length);
|
|
601
|
+
newState.eventValue = intlService.parseNumber(result, format);
|
|
602
|
+
newState.currentLooseValue = result;
|
|
603
|
+
setSelection(newState, newState.selectionStart, result, formatInfo);
|
|
604
|
+
return newState;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
if (minDecimalCount !== maxDecimalCount && currentDecimalCount <= maxDecimalCount && endsOnDecimal) {
|
|
608
|
+
// adding trailing zeroes
|
|
609
|
+
newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);
|
|
610
|
+
newState.currentLooseValue = sanitizedFormattedString;
|
|
611
|
+
return newState;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
if (currentDecimalCount < minDecimalCount) {
|
|
615
|
+
// deleting more decimals than allowed
|
|
616
|
+
newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);
|
|
617
|
+
newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);
|
|
618
|
+
return newState;
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
} // X. All other values should be parsed
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);
|
|
625
|
+
|
|
626
|
+
if (isPercentFormat) {
|
|
627
|
+
newState.eventValue = newState.eventValue / 100;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
if (typeof newState.eventValue === 'number') {
|
|
631
|
+
var nextLooseValue = formatValue(newState.eventValue, format, intlService); // First digit add
|
|
632
|
+
|
|
633
|
+
if (currentLooseValueAsString.length === 1) {
|
|
634
|
+
setSelection(newState, getInitialPosition(nextLooseValue, symbols), nextLooseValue, formatInfo);
|
|
635
|
+
} else {
|
|
636
|
+
setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
newState.currentLooseValue = nextLooseValue;
|
|
640
|
+
} else {
|
|
641
|
+
// Case when deleting last number
|
|
642
|
+
newState.currentLooseValue = formatValue(intlService.parseNumber(sanitizedString), format, intlService);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
return newState;
|
|
646
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export var packageMetadata = {
|
|
5
|
+
name: '@progress/kendo-vue-inputs',
|
|
6
|
+
productName: 'Kendo UI for Vue',
|
|
7
|
+
productCodes: ['KENDOUIVUE', 'KENDOUICOMPLETE'],
|
|
8
|
+
publishDate: 1660543249,
|
|
9
|
+
version: '',
|
|
10
|
+
licensingDocsUrl: 'https://www.telerik.com/kendo-vue-ui/my-license/?utm_medium=product&utm_source=kendovue&utm_campaign=kendo-ui-vue-purchase-license-keys-warning'
|
|
11
|
+
};
|