@progress/kendo-vue-inputs 3.3.3-dev.202205261455 → 3.3.3-dev.202205301219

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.
@@ -12,6 +12,18 @@ export declare const getStateOrPropsValue: (value: number | null | undefined, st
12
12
  * @hidden
13
13
  */
14
14
  export declare const formatValue: (value: string | number | null | undefined, format: string | NumberFormatOptions | undefined, intlService: any) => string;
15
+ /**
16
+ * @hidden
17
+ */
18
+ export declare const fractionLength: (value: number) => number;
19
+ /**
20
+ * @hidden
21
+ */
22
+ export declare const limitPrecision: (precision: number) => number;
23
+ /**
24
+ * @hidden
25
+ */
26
+ export declare const toFixedPrecision: (value: number, precision: number) => number;
15
27
  /**
16
28
  * @hidden
17
29
  */
@@ -48,6 +60,10 @@ export declare const setInvalid: (newState: NumericTextBoxData, format: string |
48
60
  * @hidden
49
61
  */
50
62
  export declare const isMinusSymbolAdded: (newState: NumericTextBoxData, symbols: any) => boolean;
63
+ /**
64
+ * @hidden
65
+ */
66
+ export declare const isMinusSymbolRemoved: (newState: NumericTextBoxData, symbols: any) => boolean;
51
67
  /**
52
68
  * @hidden
53
69
  */
@@ -100,4 +116,4 @@ export declare const changeBasedSelection: (currentValue: string, nextValue: str
100
116
  /**
101
117
  * @hidden
102
118
  */
103
- export declare const sanitizeNumber: (state: any, format: string | NumberFormatOptions | undefined, intlService: any) => NumericTextBoxData;
119
+ export declare const sanitizeNumber: (state: NumericTextBoxData, format: string | NumberFormatOptions | undefined, intlService: any) => NumericTextBoxData;
@@ -20,6 +20,7 @@ var MIN_DECIMAL = 1;
20
20
  var ONE_NUMBER = 1;
21
21
  var ZERO_NUMBER = 0;
22
22
  var DIGITS_REGEX = /\d/;
23
+ var MAX_PRECISION = 15;
23
24
  /**
24
25
  * @hidden
25
26
  */
@@ -63,8 +64,39 @@ export var formatValue = function formatValue(value, format, intlService) {
63
64
  * @hidden
64
65
  */
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
+
66
97
  export var increaseValue = function increaseValue(value, newState, step, min, max, format, intlService) {
67
- var increasedValue = rangeValue((value || 0) + (step || 0), min, max);
98
+ var maxPrecision = maxFractionLength(value || 0, step || 0);
99
+ var increasedValue = rangeValue(toFixedPrecision((value || 0) + (step || 0), maxPrecision), min, max);
68
100
  newState.eventValue = increasedValue;
69
101
  newState.currentLooseValue = formatValue(increasedValue, format, intlService);
70
102
  newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);
@@ -74,7 +106,8 @@ export var increaseValue = function increaseValue(value, newState, step, min, ma
74
106
  */
75
107
 
76
108
  export var decreaseValue = function decreaseValue(value, newState, step, min, max, format, intlService) {
77
- var decreasedValue = rangeValue((value || 0) - (step || 0), min, max);
109
+ var maxPrecision = maxFractionLength(value || 0, step || 0);
110
+ var decreasedValue = rangeValue(toFixedPrecision((value || 0) - (step || 0), maxPrecision), min, max);
78
111
  newState.eventValue = decreasedValue;
79
112
  newState.currentLooseValue = formatValue(decreasedValue, format, intlService);
80
113
  newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);
@@ -200,6 +233,15 @@ export var isMinusSymbolAdded = function isMinusSymbolAdded(newState, symbols) {
200
233
  * @hidden
201
234
  */
202
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
+
203
245
  export var isDecimalDuplicated = function isDecimalDuplicated(newState, symbols) {
204
246
  var newText = String(newState.currentLooseValue);
205
247
  return newText.split(symbols.decimal).length > 2;
@@ -343,8 +385,7 @@ export var changeBasedSelection = function changeBasedSelection(currentValue, ne
343
385
  * @hidden
344
386
  */
345
387
 
346
- export var sanitizeNumber = function sanitizeNumber(state, // NumericTextBoxData,
347
- format, intlService) {
388
+ export var sanitizeNumber = function sanitizeNumber(state, format, intlService) {
348
389
  var newState = __assign({}, state);
349
390
 
350
391
  var prevLooseValue = newState.prevLooseValue;
@@ -382,6 +423,7 @@ format, intlService) {
382
423
  }) !== -1;
383
424
  }) !== 1;
384
425
  var isDelete = currentLooseValueAsString.length > 0 && currentLooseValueAsString.length < prevLooseValueAsString.length;
426
+ var isPercentFormat = format && format[0] === 'p' && currentLooseValueAsString && currentLooseValueAsString.indexOf(symbols.percentSign) === -1;
385
427
 
386
428
  if (!newState.isPaste) {
387
429
  // 1. Empty input
@@ -408,6 +450,12 @@ format, intlService) {
408
450
  var oldNumberStart = getFirstNumberIndex(prevLooseValueAsString, DIGITS_REGEX);
409
451
  setSelection(newState, newState.selectionEnd - 1 + (currentNumberStart - oldNumberStart), newState.currentLooseValue, formatInfo);
410
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;
411
459
  } // 4. Check is decimal symbol
412
460
 
413
461
 
@@ -433,7 +481,7 @@ format, intlService) {
433
481
  } // 6. Percent format
434
482
 
435
483
 
436
- if (format === 'p' && currentLooseValueAsString && currentLooseValueAsString.indexOf(symbols.percentSign) === -1) {
484
+ if (isPercentFormat) {
437
485
  newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format) / 100;
438
486
  newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);
439
487
  return newState;
@@ -442,7 +490,7 @@ format, intlService) {
442
490
 
443
491
  var numericSymbols = String(newState.currentLooseValue).replace(/[^\d]/g, '');
444
492
 
445
- if (numericSymbols.length > 15) {
493
+ if (numericSymbols.length > MAX_PRECISION) {
446
494
  setInvalid(newState, format, formatInfo, intlService);
447
495
  return newState;
448
496
  } // 8. Check prefix / suffix for modifications
@@ -575,6 +623,10 @@ format, intlService) {
575
623
 
576
624
  newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);
577
625
 
626
+ if (isPercentFormat) {
627
+ newState.eventValue = newState.eventValue / 100;
628
+ }
629
+
578
630
  if (typeof newState.eventValue === 'number') {
579
631
  var nextLooseValue = formatValue(newState.eventValue, format, intlService); // First digit add
580
632
 
@@ -5,7 +5,7 @@ export var packageMetadata = {
5
5
  name: '@progress/kendo-vue-inputs',
6
6
  productName: 'Kendo UI for Vue',
7
7
  productCodes: ['KENDOUIVUE', 'KENDOUICOMPLETE'],
8
- publishDate: 1653576328,
8
+ publishDate: 1653912548,
9
9
  version: '',
10
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
11
  };
@@ -12,6 +12,18 @@ export declare const getStateOrPropsValue: (value: number | null | undefined, st
12
12
  * @hidden
13
13
  */
14
14
  export declare const formatValue: (value: string | number | null | undefined, format: string | NumberFormatOptions | undefined, intlService: any) => string;
15
+ /**
16
+ * @hidden
17
+ */
18
+ export declare const fractionLength: (value: number) => number;
19
+ /**
20
+ * @hidden
21
+ */
22
+ export declare const limitPrecision: (precision: number) => number;
23
+ /**
24
+ * @hidden
25
+ */
26
+ export declare const toFixedPrecision: (value: number, precision: number) => number;
15
27
  /**
16
28
  * @hidden
17
29
  */
@@ -48,6 +60,10 @@ export declare const setInvalid: (newState: NumericTextBoxData, format: string |
48
60
  * @hidden
49
61
  */
50
62
  export declare const isMinusSymbolAdded: (newState: NumericTextBoxData, symbols: any) => boolean;
63
+ /**
64
+ * @hidden
65
+ */
66
+ export declare const isMinusSymbolRemoved: (newState: NumericTextBoxData, symbols: any) => boolean;
51
67
  /**
52
68
  * @hidden
53
69
  */
@@ -100,4 +116,4 @@ export declare const changeBasedSelection: (currentValue: string, nextValue: str
100
116
  /**
101
117
  * @hidden
102
118
  */
103
- export declare const sanitizeNumber: (state: any, format: string | NumberFormatOptions | undefined, intlService: any) => NumericTextBoxData;
119
+ export declare const sanitizeNumber: (state: NumericTextBoxData, format: string | NumberFormatOptions | undefined, intlService: any) => NumericTextBoxData;
@@ -19,13 +19,14 @@ var __assign = undefined && undefined.__assign || function () {
19
19
  Object.defineProperty(exports, "__esModule", {
20
20
  value: true
21
21
  });
22
- exports.sanitizeNumber = exports.changeBasedSelection = exports.getDecimalCount = exports.getFirstNumberIndex = exports.getSuffix = exports.getPrefix = exports.getLastNumberIndex = exports.reverseString = exports.getInitialPosition = exports.getFormatSymbols = exports.getFormatPrefixSufix = exports.isDecimalDuplicated = exports.isMinusSymbolAdded = exports.setInvalid = exports.setSelection = exports.rangeSelection = exports.getMinCursorPosition = exports.getMaxCursorPosition = exports.rangeValue = exports.decreaseValue = exports.increaseValue = exports.formatValue = exports.getStateOrPropsValue = exports.getInitialState = void 0;
22
+ exports.sanitizeNumber = exports.changeBasedSelection = exports.getDecimalCount = exports.getFirstNumberIndex = exports.getSuffix = exports.getPrefix = exports.getLastNumberIndex = exports.reverseString = exports.getInitialPosition = exports.getFormatSymbols = exports.getFormatPrefixSufix = exports.isDecimalDuplicated = exports.isMinusSymbolRemoved = exports.isMinusSymbolAdded = exports.setInvalid = exports.setSelection = exports.rangeSelection = exports.getMinCursorPosition = exports.getMaxCursorPosition = exports.rangeValue = exports.decreaseValue = exports.increaseValue = exports.toFixedPrecision = exports.limitPrecision = exports.fractionLength = exports.formatValue = exports.getStateOrPropsValue = exports.getInitialState = void 0;
23
23
  var DEFAULT_NUMBER = 1111111.1111111;
24
24
  var MAX_DECIMAL = 0.31111111111111117;
25
25
  var MIN_DECIMAL = 1;
26
26
  var ONE_NUMBER = 1;
27
27
  var ZERO_NUMBER = 0;
28
28
  var DIGITS_REGEX = /\d/;
29
+ var MAX_PRECISION = 15;
29
30
  /**
30
31
  * @hidden
31
32
  */
@@ -72,8 +73,42 @@ exports.formatValue = function (value, format, intlService) {
72
73
  */
73
74
 
74
75
 
76
+ exports.fractionLength = function (value) {
77
+ return (String(value).split('.')[1] || '').length;
78
+ };
79
+ /**
80
+ * @hidden
81
+ */
82
+
83
+
84
+ var maxFractionLength = function maxFractionLength(value1, value2) {
85
+ return Math.max(exports.fractionLength(value1), exports.fractionLength(value2));
86
+ };
87
+ /**
88
+ * @hidden
89
+ */
90
+
91
+
92
+ exports.limitPrecision = function (precision) {
93
+ return Math.min(precision, MAX_PRECISION);
94
+ };
95
+ /**
96
+ * @hidden
97
+ */
98
+
99
+
100
+ exports.toFixedPrecision = function (value, precision) {
101
+ var maxPrecision = exports.limitPrecision(precision);
102
+ return parseFloat(value.toFixed(maxPrecision));
103
+ };
104
+ /**
105
+ * @hidden
106
+ */
107
+
108
+
75
109
  exports.increaseValue = function (value, newState, step, min, max, format, intlService) {
76
- var increasedValue = exports.rangeValue((value || 0) + (step || 0), min, max);
110
+ var maxPrecision = maxFractionLength(value || 0, step || 0);
111
+ var increasedValue = exports.rangeValue(exports.toFixedPrecision((value || 0) + (step || 0), maxPrecision), min, max);
77
112
  newState.eventValue = increasedValue;
78
113
  newState.currentLooseValue = exports.formatValue(increasedValue, format, intlService);
79
114
  newState.selectionStart = newState.selectionEnd = exports.getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);
@@ -84,7 +119,8 @@ exports.increaseValue = function (value, newState, step, min, max, format, intlS
84
119
 
85
120
 
86
121
  exports.decreaseValue = function (value, newState, step, min, max, format, intlService) {
87
- var decreasedValue = exports.rangeValue((value || 0) - (step || 0), min, max);
122
+ var maxPrecision = maxFractionLength(value || 0, step || 0);
123
+ var decreasedValue = exports.rangeValue(exports.toFixedPrecision((value || 0) - (step || 0), maxPrecision), min, max);
88
124
  newState.eventValue = decreasedValue;
89
125
  newState.currentLooseValue = exports.formatValue(decreasedValue, format, intlService);
90
126
  newState.selectionStart = newState.selectionEnd = exports.getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);
@@ -218,6 +254,16 @@ exports.isMinusSymbolAdded = function (newState, symbols) {
218
254
  */
219
255
 
220
256
 
257
+ exports.isMinusSymbolRemoved = function (newState, symbols) {
258
+ var newText = String(newState.currentLooseValue);
259
+ var oldText = String(newState.prevLooseValue);
260
+ return newText.indexOf(symbols.minusSign) === -1 && oldText.indexOf(symbols.minusSign) !== -1;
261
+ };
262
+ /**
263
+ * @hidden
264
+ */
265
+
266
+
221
267
  exports.isDecimalDuplicated = function (newState, symbols) {
222
268
  var newText = String(newState.currentLooseValue);
223
269
  return newText.split(symbols.decimal).length > 2;
@@ -372,8 +418,7 @@ exports.changeBasedSelection = function (currentValue, nextValue, selectionPosit
372
418
  */
373
419
 
374
420
 
375
- exports.sanitizeNumber = function (state, // NumericTextBoxData,
376
- format, intlService) {
421
+ exports.sanitizeNumber = function (state, format, intlService) {
377
422
  var newState = __assign({}, state);
378
423
 
379
424
  var prevLooseValue = newState.prevLooseValue;
@@ -411,6 +456,7 @@ format, intlService) {
411
456
  }) !== -1;
412
457
  }) !== 1;
413
458
  var isDelete = currentLooseValueAsString.length > 0 && currentLooseValueAsString.length < prevLooseValueAsString.length;
459
+ var isPercentFormat = format && format[0] === 'p' && currentLooseValueAsString && currentLooseValueAsString.indexOf(symbols.percentSign) === -1;
414
460
 
415
461
  if (!newState.isPaste) {
416
462
  // 1. Empty input
@@ -437,6 +483,12 @@ format, intlService) {
437
483
  var oldNumberStart = exports.getFirstNumberIndex(prevLooseValueAsString, DIGITS_REGEX);
438
484
  exports.setSelection(newState, newState.selectionEnd - 1 + (currentNumberStart - oldNumberStart), newState.currentLooseValue, formatInfo);
439
485
  return newState;
486
+ }
487
+
488
+ if (exports.isMinusSymbolRemoved(newState, symbols)) {
489
+ newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);
490
+ exports.setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);
491
+ return newState;
440
492
  } // 4. Check is decimal symbol
441
493
 
442
494
 
@@ -462,7 +514,7 @@ format, intlService) {
462
514
  } // 6. Percent format
463
515
 
464
516
 
465
- if (format === 'p' && currentLooseValueAsString && currentLooseValueAsString.indexOf(symbols.percentSign) === -1) {
517
+ if (isPercentFormat) {
466
518
  newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format) / 100;
467
519
  newState.currentLooseValue = exports.formatValue(newState.eventValue, format, intlService);
468
520
  return newState;
@@ -471,7 +523,7 @@ format, intlService) {
471
523
 
472
524
  var numericSymbols = String(newState.currentLooseValue).replace(/[^\d]/g, '');
473
525
 
474
- if (numericSymbols.length > 15) {
526
+ if (numericSymbols.length > MAX_PRECISION) {
475
527
  exports.setInvalid(newState, format, formatInfo, intlService);
476
528
  return newState;
477
529
  } // 8. Check prefix / suffix for modifications
@@ -604,6 +656,10 @@ format, intlService) {
604
656
 
605
657
  newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);
606
658
 
659
+ if (isPercentFormat) {
660
+ newState.eventValue = newState.eventValue / 100;
661
+ }
662
+
607
663
  if (typeof newState.eventValue === 'number') {
608
664
  var nextLooseValue = exports.formatValue(newState.eventValue, format, intlService); // First digit add
609
665
 
@@ -8,7 +8,7 @@ exports.packageMetadata = {
8
8
  name: '@progress/kendo-vue-inputs',
9
9
  productName: 'Kendo UI for Vue',
10
10
  productCodes: ['KENDOUIVUE', 'KENDOUICOMPLETE'],
11
- publishDate: 1653576328,
11
+ publishDate: 1653912548,
12
12
  version: '',
13
13
  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'
14
14
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@progress/kendo-vue-inputs",
3
3
  "description": "Kendo UI for Vue Input package",
4
- "version": "3.3.3-dev.202205261455",
4
+ "version": "3.3.3-dev.202205301219",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/telerik/kendo-vue.git"
@@ -38,21 +38,21 @@
38
38
  "vue": "^2.6.12 || ^3.0.2"
39
39
  },
40
40
  "dependencies": {
41
- "@progress/kendo-vue-buttons": "3.3.3-dev.202205261455",
42
- "@progress/kendo-vue-common": "3.3.3-dev.202205261455",
43
- "@progress/kendo-vue-labels": "3.3.3-dev.202205261455",
44
- "@progress/kendo-vue-popup": "3.3.3-dev.202205261455"
41
+ "@progress/kendo-vue-buttons": "3.3.3-dev.202205301219",
42
+ "@progress/kendo-vue-common": "3.3.3-dev.202205301219",
43
+ "@progress/kendo-vue-labels": "3.3.3-dev.202205301219",
44
+ "@progress/kendo-vue-popup": "3.3.3-dev.202205301219"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@progress/kendo-data-query": "^1.5.5",
48
48
  "@progress/kendo-date-math": "^1.5.4",
49
49
  "@progress/kendo-drawing": "^1.8.0",
50
50
  "@progress/kendo-licensing": "^1.1.0",
51
- "@progress/kendo-vue-buttons": "3.3.3-dev.202205261455",
52
- "@progress/kendo-vue-form": "3.3.3-dev.202205261455",
53
- "@progress/kendo-vue-intl": "3.3.3-dev.202205261455",
54
- "@progress/kendo-vue-labels": "3.3.3-dev.202205261455",
55
- "@progress/kendo-vue-tooltip": "3.3.3-dev.202205261455",
51
+ "@progress/kendo-vue-buttons": "3.3.3-dev.202205301219",
52
+ "@progress/kendo-vue-form": "3.3.3-dev.202205301219",
53
+ "@progress/kendo-vue-intl": "3.3.3-dev.202205301219",
54
+ "@progress/kendo-vue-labels": "3.3.3-dev.202205301219",
55
+ "@progress/kendo-vue-tooltip": "3.3.3-dev.202205301219",
56
56
  "cldr-core": "^34.0.0",
57
57
  "cldr-dates-full": "^34.0.0",
58
58
  "cldr-numbers-full": "^34.0.0"