@progress/kendo-angular-inputs 17.0.0-develop.9 → 17.0.1-develop.1
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/checkbox/checkbox.component.d.ts +1 -1
- package/checkbox/checkbox.directive.d.ts +1 -1
- package/checkbox/checked-state.d.ts +1 -1
- package/colorpicker/color-contrast-svg.component.d.ts +1 -1
- package/colorpicker/color-gradient-numeric-label.directive.d.ts +1 -1
- package/colorpicker/color-gradient.component.d.ts +1 -1
- package/colorpicker/color-input.component.d.ts +1 -1
- package/colorpicker/color-palette.component.d.ts +1 -1
- package/colorpicker/colorpicker.component.d.ts +1 -1
- package/colorpicker/contrast-validation.component.d.ts +1 -1
- package/colorpicker/contrast.component.d.ts +1 -1
- package/colorpicker/flatcolorpicker-actions.component.d.ts +1 -1
- package/colorpicker/flatcolorpicker-header.component.d.ts +1 -1
- package/colorpicker/flatcolorpicker.component.d.ts +1 -1
- package/colorpicker/localization/messages.d.ts +1 -1
- package/colorpicker/models/actions-layout.d.ts +1 -1
- package/colorpicker/models/colorpicker-view.d.ts +1 -1
- package/colorpicker/models/output-format.d.ts +1 -1
- package/common/models/fillmode.d.ts +1 -1
- package/common/models/rounded.d.ts +2 -2
- package/common/models/size.d.ts +1 -1
- package/common/models/type.d.ts +1 -1
- package/common/radio-checkbox.base.d.ts +1 -1
- package/common/utils.d.ts +1 -1
- package/{esm2020 → esm2022}/checkbox/checkbox.component.mjs +49 -44
- package/{esm2020 → esm2022}/checkbox/checkbox.directive.mjs +12 -10
- package/{esm2020 → esm2022}/checkbox.module.mjs +4 -4
- package/{esm2020 → esm2022}/colorpicker/color-contrast-svg.component.mjs +13 -7
- package/{esm2020 → esm2022}/colorpicker/color-gradient-numeric-label.directive.mjs +6 -3
- package/{esm2020 → esm2022}/colorpicker/color-gradient.component.mjs +142 -125
- package/{esm2020 → esm2022}/colorpicker/color-input.component.mjs +69 -49
- package/{esm2020 → esm2022}/colorpicker/color-palette.component.mjs +129 -98
- package/{esm2020 → esm2022}/colorpicker/colorpicker.component.mjs +211 -158
- package/{esm2020 → esm2022}/colorpicker/contrast-validation.component.mjs +10 -6
- package/{esm2020 → esm2022}/colorpicker/contrast.component.mjs +9 -6
- package/{esm2020 → esm2022}/colorpicker/events/active-color-click-event.mjs +2 -1
- package/{esm2020 → esm2022}/colorpicker/events/cancel-event.mjs +4 -0
- package/{esm2020 → esm2022}/colorpicker/flatcolorpicker-actions.component.mjs +11 -8
- package/{esm2020 → esm2022}/colorpicker/flatcolorpicker-header.component.mjs +23 -13
- package/{esm2020 → esm2022}/colorpicker/flatcolorpicker.component.mjs +155 -127
- package/{esm2020 → esm2022}/colorpicker/localization/colorgradient-localization.service.mjs +4 -3
- package/{esm2020 → esm2022}/colorpicker/localization/colorpalette-localization.service.mjs +4 -3
- package/{esm2020 → esm2022}/colorpicker/localization/colorpicker-localization.service.mjs +3 -3
- package/{esm2020 → esm2022}/colorpicker/localization/custom-messages.component.mjs +9 -8
- package/{esm2020 → esm2022}/colorpicker/localization/flatcolorpicker-localization.service.mjs +4 -3
- package/{esm2020 → esm2022}/colorpicker/localization/localized-colorpicker-messages.directive.mjs +9 -8
- package/esm2022/colorpicker/localization/messages.mjs +183 -0
- package/{esm2020 → esm2022}/colorpicker/services/color-palette.service.mjs +4 -6
- package/{esm2020 → esm2022}/colorpicker/services/flatcolorpicker.service.mjs +3 -3
- package/{esm2020 → esm2022}/colorpicker.module.mjs +4 -4
- package/{esm2020 → esm2022}/common/radio-checkbox.base.mjs +80 -56
- package/{esm2020 → esm2022}/formfield/error.component.mjs +18 -20
- package/{esm2020 → esm2022}/formfield/formfield.component.mjs +67 -55
- package/{esm2020 → esm2022}/formfield/hint.component.mjs +17 -19
- package/{esm2020 → esm2022}/formfield.module.mjs +4 -4
- package/{esm2020 → esm2022}/index.mjs +0 -1
- package/esm2022/inputs.module.mjs +96 -0
- package/{esm2020 → esm2022}/maskedtextbox/maskedtextbox.component.mjs +263 -223
- package/{esm2020 → esm2022}/maskedtextbox/masking.service.mjs +12 -14
- package/{esm2020 → esm2022}/maskedtextbox/parsing/parsers.mjs +1 -0
- package/{esm2020 → esm2022}/maskedtextbox/parsing/result.mjs +3 -0
- package/{esm2020 → esm2022}/maskedtextbox/parsing/stream.mjs +4 -2
- package/{esm2020 → esm2022}/maskedtextbox.module.mjs +7 -7
- package/{esm2020 → esm2022}/numerictextbox/localization/custom-messages.component.mjs +9 -8
- package/{esm2020 → esm2022}/numerictextbox/localization/localized-numerictextbox-messages.directive.mjs +9 -8
- package/{esm2020 → esm2022}/numerictextbox/localization/messages.mjs +11 -3
- package/{esm2020 → esm2022}/numerictextbox/numerictextbox.component.mjs +367 -319
- package/{esm2020 → esm2022}/numerictextbox.module.mjs +7 -7
- package/{esm2020 → esm2022}/package-metadata.mjs +2 -2
- package/{esm2020 → esm2022}/radiobutton/radiobutton.component.mjs +58 -51
- package/{esm2020 → esm2022}/radiobutton/radiobutton.directive.mjs +12 -10
- package/{esm2020 → esm2022}/radiobutton.module.mjs +4 -4
- package/{esm2020 → esm2022}/rangeslider/localization/custom-messages.component.mjs +9 -8
- package/{esm2020 → esm2022}/rangeslider/localization/localized-rangeslider-messages.directive.mjs +9 -8
- package/{esm2020 → esm2022}/rangeslider/localization/messages.mjs +11 -3
- package/{esm2020 → esm2022}/rangeslider/rangeslider-model.mjs +2 -0
- package/{esm2020 → esm2022}/rangeslider/rangeslider.component.mjs +117 -101
- package/{esm2020 → esm2022}/rangeslider.module.mjs +4 -4
- package/{esm2020 → esm2022}/rating/directives/rating-hovered-item.directive.mjs +4 -3
- package/{esm2020 → esm2022}/rating/directives/rating-item.directive.mjs +4 -3
- package/{esm2020 → esm2022}/rating/directives/rating-selected-item.directive.mjs +4 -3
- package/{esm2020 → esm2022}/rating/rating.component.mjs +96 -76
- package/{esm2020 → esm2022}/rating.module.mjs +4 -4
- package/{esm2020 → esm2022}/shared/input-separator.component.mjs +10 -12
- package/{esm2020 → esm2022}/shared/shared-events.directive.mjs +13 -7
- package/{esm2020 → esm2022}/shared/textarea.directive.mjs +66 -52
- package/{esm2020 → esm2022}/signature/localization/custom-messages.component.mjs +9 -8
- package/{esm2020 → esm2022}/signature/localization/localized-signature-messages.directive.mjs +9 -8
- package/{esm2020 → esm2022}/signature/localization/messages.mjs +19 -3
- package/{esm2020 → esm2022}/signature/signature.component.mjs +205 -151
- package/{esm2020 → esm2022}/signature.module.mjs +4 -4
- package/{esm2020 → esm2022}/slider/localization/custom-messages.component.mjs +9 -8
- package/{esm2020 → esm2022}/slider/localization/localized-slider-messages.directive.mjs +9 -8
- package/{esm2020 → esm2022}/slider/localization/messages.mjs +15 -3
- package/{esm2020 → esm2022}/slider/slider-model.mjs +1 -0
- package/{esm2020 → esm2022}/slider/slider.component.mjs +121 -99
- package/{esm2020 → esm2022}/slider.module.mjs +4 -4
- package/{esm2020 → esm2022}/sliders-common/label-template.directive.mjs +4 -3
- package/{esm2020 → esm2022}/sliders-common/slider-base.mjs +112 -90
- package/{esm2020 → esm2022}/sliders-common/slider-model.base.mjs +6 -0
- package/{esm2020 → esm2022}/sliders-common/slider-ticks.component.mjs +19 -11
- package/{esm2020 → esm2022}/switch/events/blur-event.mjs +4 -0
- package/{esm2020 → esm2022}/switch/events/focus-event.mjs +4 -0
- package/{esm2020 → esm2022}/switch/localization/custom-messages.component.mjs +9 -8
- package/{esm2020 → esm2022}/switch/localization/localized-switch-messages.directive.mjs +9 -8
- package/{esm2020 → esm2022}/switch/localization/messages.mjs +11 -3
- package/{esm2020 → esm2022}/switch/switch.component.mjs +125 -106
- package/{esm2020 → esm2022}/switch.module.mjs +4 -4
- package/esm2022/text-fields-common/text-fields-base.mjs +150 -0
- package/{esm2020 → esm2022}/textarea/textarea-prefix.component.mjs +12 -14
- package/{esm2020 → esm2022}/textarea/textarea-suffix.component.mjs +12 -14
- package/{esm2020 → esm2022}/textarea/textarea.component.mjs +173 -144
- package/{esm2020 → esm2022}/textarea.module.mjs +7 -7
- package/{esm2020 → esm2022}/textbox/localization/custom-messages.component.mjs +9 -8
- package/{esm2020 → esm2022}/textbox/localization/localized-textbox-messages.directive.mjs +9 -8
- package/{esm2020 → esm2022}/textbox/localization/messages.mjs +7 -3
- package/{esm2020 → esm2022}/textbox/textbox-prefix.directive.mjs +8 -7
- package/{esm2020 → esm2022}/textbox/textbox-suffix.directive.mjs +8 -7
- package/{esm2020 → esm2022}/textbox/textbox.component.mjs +286 -204
- package/{esm2020 → esm2022}/textbox/textbox.directive.mjs +36 -33
- package/{esm2020 → esm2022}/textbox.module.mjs +7 -7
- package/{fesm2020 → fesm2022}/progress-kendo-angular-inputs.mjs +3718 -2910
- package/formfield/error.component.d.ts +1 -1
- package/formfield/formfield.component.d.ts +1 -1
- package/formfield/hint.component.d.ts +1 -1
- package/formfield/models/message-align.d.ts +1 -1
- package/formfield/models/orientation.d.ts +1 -1
- package/formfield/models/show-options.d.ts +1 -1
- package/index.d.ts +0 -1
- package/inputs.module.d.ts +1 -1
- package/maskedtextbox/maskedtextbox.component.d.ts +1 -1
- package/maskedtextbox.module.d.ts +1 -1
- package/numerictextbox/localization/messages.d.ts +1 -1
- package/numerictextbox/numerictextbox.component.d.ts +1 -1
- package/numerictextbox.module.d.ts +1 -1
- package/package.json +20 -26
- package/radiobutton/radiobutton.component.d.ts +1 -1
- package/radiobutton/radiobutton.directive.d.ts +1 -1
- package/rangeslider/localization/messages.d.ts +1 -1
- package/rangeslider/rangeslider-model.d.ts +0 -1
- package/rangeslider/rangeslider-value.type.d.ts +1 -1
- package/rangeslider/rangeslider.component.d.ts +1 -1
- package/rating/models/precision.d.ts +1 -1
- package/rating/models/selection.d.ts +1 -1
- package/rating/rating.component.d.ts +1 -1
- package/schematics/ngAdd/index.js +1 -1
- package/shared/input-separator.component.d.ts +1 -1
- package/shared/shared-events.directive.d.ts +1 -1
- package/shared/textarea.directive.d.ts +1 -1
- package/signature/localization/messages.d.ts +1 -1
- package/signature/signature.component.d.ts +1 -1
- package/slider/localization/messages.d.ts +1 -1
- package/slider/slider-model.d.ts +0 -1
- package/slider/slider.component.d.ts +1 -1
- package/sliders-common/slider-base.d.ts +1 -1
- package/sliders-common/slider-ticks.component.d.ts +1 -1
- package/sliders-common/title-callback.d.ts +1 -1
- package/switch/localization/messages.d.ts +1 -1
- package/switch/switch.component.d.ts +1 -1
- package/text-fields-common/text-fields-base.d.ts +1 -1
- package/textarea/models/adornments-orientation.d.ts +1 -1
- package/textarea/models/flow.d.ts +1 -1
- package/textarea/models/resize.d.ts +1 -1
- package/textarea/textarea-prefix.component.d.ts +1 -1
- package/textarea/textarea-suffix.component.d.ts +1 -1
- package/textarea/textarea.component.d.ts +1 -1
- package/textarea.module.d.ts +1 -1
- package/textbox/localization/messages.d.ts +1 -1
- package/textbox/models/icon-show-options.d.ts +1 -1
- package/textbox/textbox-prefix.directive.d.ts +1 -1
- package/textbox/textbox-suffix.directive.d.ts +1 -1
- package/textbox/textbox.component.d.ts +1 -1
- package/textbox/textbox.directive.d.ts +1 -1
- package/textbox.module.d.ts +1 -1
- package/esm2020/colorpicker/localization/messages.mjs +0 -75
- package/esm2020/inputs.module.mjs +0 -96
- package/esm2020/shared.module.mjs +0 -32
- package/esm2020/text-fields-common/text-fields-base.mjs +0 -131
- package/fesm2015/progress-kendo-angular-inputs.mjs +0 -17268
- package/shared.module.d.ts +0 -19
- /package/{esm2020 → esm2022}/checkbox/checked-state.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/events/close-event.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/events/kendo-drag-event.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/events/open-event.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/events.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/actions-layout.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/colorpicker-view.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/gradient-settings.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/hsva.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/output-format.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/palette-presets.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/palette-settings.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/popup-settings.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/rgb.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/rgba.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/table-cell.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models/tile-size.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/models.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/utils/color-parser.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/utils/contrast-curve.mjs +0 -0
- /package/{esm2020 → esm2022}/colorpicker/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/common/dom-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/common/math.mjs +0 -0
- /package/{esm2020 → esm2022}/common/models/fillmode.mjs +0 -0
- /package/{esm2020 → esm2022}/common/models/rounded.mjs +0 -0
- /package/{esm2020 → esm2022}/common/models/size.mjs +0 -0
- /package/{esm2020 → esm2022}/common/models/styling-classes.mjs +0 -0
- /package/{esm2020 → esm2022}/common/models/type.mjs +0 -0
- /package/{esm2020 → esm2022}/common/models.mjs +0 -0
- /package/{esm2020 → esm2022}/common/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/directives.mjs +0 -0
- /package/{esm2020 → esm2022}/formfield/models/message-align.mjs +0 -0
- /package/{esm2020 → esm2022}/formfield/models/orientation.mjs +0 -0
- /package/{esm2020 → esm2022}/formfield/models/show-options.mjs +0 -0
- /package/{esm2020 → esm2022}/maskedtextbox/parsing/combinators.mjs +0 -0
- /package/{esm2020 → esm2022}/numerictextbox/arrow-direction.mjs +0 -0
- /package/{esm2020 → esm2022}/numerictextbox/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/numerictextbox/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/progress-kendo-angular-inputs.mjs +0 -0
- /package/{esm2020 → esm2022}/rangeslider/rangeslider-value.type.mjs +0 -0
- /package/{esm2020 → esm2022}/rating/models/precision.mjs +0 -0
- /package/{esm2020 → esm2022}/rating/models/rating-item.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/rating/models/selection.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/signature/events/close-event.mjs +0 -0
- /package/{esm2020 → esm2022}/signature/events/index.mjs +0 -0
- /package/{esm2020 → esm2022}/signature/events/open-event.mjs +0 -0
- /package/{esm2020 → esm2022}/signature/localization/index.mjs +0 -0
- /package/{esm2020 → esm2022}/sliders-common/sliders-util.mjs +0 -0
- /package/{esm2020 → esm2022}/sliders-common/title-callback.mjs +0 -0
- /package/{esm2020 → esm2022}/textarea/models/adornments-orientation.mjs +0 -0
- /package/{esm2020 → esm2022}/textarea/models/flow.mjs +0 -0
- /package/{esm2020 → esm2022}/textarea/models/resize.mjs +0 -0
- /package/{esm2020 → esm2022}/textbox/models/icon-show-options.mjs +0 -0
- /package/{esm2020 → esm2022}/validators/max.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/validators/min.validator.mjs +0 -0
|
@@ -43,315 +43,36 @@ const DEFAULT_FILL_MODE = 'solid';
|
|
|
43
43
|
* Represents the [Kendo UI NumericTextBox component for Angular]({% slug overview_numerictextbox %}).
|
|
44
44
|
*/
|
|
45
45
|
export class NumericTextBoxComponent {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
this.autoCorrect = false;
|
|
77
|
-
/**
|
|
78
|
-
* Specifies the number of decimals that the user can enter when the input is focused
|
|
79
|
-
* ([see example]({% slug precision_numerictextbox %})).
|
|
80
|
-
*/
|
|
81
|
-
this.decimals = null;
|
|
82
|
-
/**
|
|
83
|
-
* Specifies the value that is used to increment or decrement the component value
|
|
84
|
-
* ([see example]({% slug predefinedsteps_numerictextbox %})).
|
|
85
|
-
*/
|
|
86
|
-
this.step = 1;
|
|
87
|
-
/**
|
|
88
|
-
* Specifies whether the **Up** and **Down** spin buttons will be rendered
|
|
89
|
-
* ([see example]({% slug spinbuttons_numerictextbox %})).
|
|
90
|
-
*/
|
|
91
|
-
this.spinners = true;
|
|
92
|
-
/**
|
|
93
|
-
* Determines whether the built-in minimum or maximum validators are enforced when a form is validated.
|
|
94
|
-
*
|
|
95
|
-
* > The 4.2.0 Angular version introduces the `min` and `max` validation directives. As a result, even if you set `rangeValidation`
|
|
96
|
-
* to `false`, the built-in Angular validators will be executed.
|
|
97
|
-
*/
|
|
98
|
-
this.rangeValidation = true;
|
|
99
|
-
/**
|
|
100
|
-
* Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
|
|
101
|
-
*/
|
|
102
|
-
this.tabindex = 0;
|
|
103
|
-
/**
|
|
104
|
-
* Determines whether the value of the NumericTextBox will be changed via scrolling. Defaults to `true`.
|
|
105
|
-
*
|
|
106
|
-
* @default true
|
|
107
|
-
*/
|
|
108
|
-
this.changeValueOnScroll = true;
|
|
109
|
-
/**
|
|
110
|
-
* Determines whether the whole value will be selected when the NumericTextBox is clicked. Defaults to `true`.
|
|
111
|
-
*/
|
|
112
|
-
this.selectOnFocus = true;
|
|
113
|
-
/**
|
|
114
|
-
* Specifies the value of the NumericTextBox
|
|
115
|
-
* ([see example]({% slug formats_numerictextbox %})).
|
|
116
|
-
*/
|
|
117
|
-
this.value = null;
|
|
118
|
-
/**
|
|
119
|
-
* Fires each time the user selects a new value ([see example](slug:events_numerictextbox)).
|
|
120
|
-
*/
|
|
121
|
-
this.valueChange = new EventEmitter();
|
|
122
|
-
/**
|
|
123
|
-
* Fires each time the user focuses the NumericTextBox element ([see example](slug:events_numerictextbox)).
|
|
124
|
-
*/
|
|
125
|
-
this.onFocus = new EventEmitter();
|
|
126
|
-
/**
|
|
127
|
-
* Fires each time the NumericTextBox component gets blurred ([see example](slug:events_numerictextbox)).
|
|
128
|
-
*/
|
|
129
|
-
this.onBlur = new EventEmitter();
|
|
130
|
-
/**
|
|
131
|
-
* Fires each time the user focuses the `input` element.
|
|
132
|
-
*/
|
|
133
|
-
this.inputFocus = new EventEmitter();
|
|
134
|
-
/**
|
|
135
|
-
* Fires each time the `input` element gets blurred.
|
|
136
|
-
*/
|
|
137
|
-
this.inputBlur = new EventEmitter();
|
|
138
|
-
/**
|
|
139
|
-
* @hidden
|
|
140
|
-
*/
|
|
141
|
-
this.ArrowDirection = ArrowDirection;
|
|
142
|
-
/**
|
|
143
|
-
* @hidden
|
|
144
|
-
*/
|
|
145
|
-
this.arrowDirection = ArrowDirection.None;
|
|
146
|
-
this.hostClasses = true;
|
|
147
|
-
/**
|
|
148
|
-
* @hidden
|
|
149
|
-
*/
|
|
150
|
-
this.arrowUpIcon = caretAltUpIcon;
|
|
151
|
-
/**
|
|
152
|
-
* @hidden
|
|
153
|
-
*/
|
|
154
|
-
this.arrowDownIcon = caretAltDownIcon;
|
|
155
|
-
this.inputValue = '';
|
|
156
|
-
this.minValidateFn = noop;
|
|
157
|
-
this.maxValidateFn = noop;
|
|
158
|
-
this._format = "n2";
|
|
159
|
-
this.isPasted = false;
|
|
160
|
-
this.mouseDown = false;
|
|
161
|
-
this._size = 'medium';
|
|
162
|
-
this._rounded = 'medium';
|
|
163
|
-
this._fillMode = 'solid';
|
|
164
|
-
this.ngChange = noop;
|
|
165
|
-
this.ngTouched = noop;
|
|
166
|
-
this.ngValidatorChange = noop;
|
|
167
|
-
this.domEvents = [];
|
|
168
|
-
this.parsedAttributes = {};
|
|
169
|
-
/**
|
|
170
|
-
* @hidden
|
|
171
|
-
*/
|
|
172
|
-
this.increasePress = (e) => {
|
|
173
|
-
this.arrowPress(ArrowDirection.Up, e);
|
|
174
|
-
};
|
|
175
|
-
/**
|
|
176
|
-
* @hidden
|
|
177
|
-
*/
|
|
178
|
-
this.decreasePress = (e) => {
|
|
179
|
-
this.arrowPress(ArrowDirection.Down, e);
|
|
180
|
-
};
|
|
181
|
-
/**
|
|
182
|
-
* @hidden
|
|
183
|
-
*/
|
|
184
|
-
this.releaseArrow = () => {
|
|
185
|
-
clearTimeout(this.spinTimeout);
|
|
186
|
-
if (this.arrowDirection !== ArrowDirection.None) {
|
|
187
|
-
this.arrowDirection = ArrowDirection.None;
|
|
188
|
-
this.changeDetector.detectChanges();
|
|
189
|
-
}
|
|
190
|
-
};
|
|
191
|
-
/**
|
|
192
|
-
* @hidden
|
|
193
|
-
*/
|
|
194
|
-
this.handlePaste = () => {
|
|
195
|
-
this.isPasted = true;
|
|
196
|
-
};
|
|
197
|
-
/**
|
|
198
|
-
* @hidden
|
|
199
|
-
*/
|
|
200
|
-
this.handleInput = () => {
|
|
201
|
-
const input = this.numericInput.nativeElement;
|
|
202
|
-
let { selectionStart, selectionEnd, value: inputValue } = input;
|
|
203
|
-
if (this.pressedKey === Keys.NumpadDecimal) {
|
|
204
|
-
inputValue = this.replaceNumpadDotValue();
|
|
205
|
-
}
|
|
206
|
-
if (this.isPasted) {
|
|
207
|
-
inputValue = this.formatInputValue(this.intl.parseNumber(inputValue));
|
|
208
|
-
}
|
|
209
|
-
if (!this.isValid(inputValue)) {
|
|
210
|
-
input.value = this.inputValue;
|
|
211
|
-
this.setSelection(selectionStart - 1, selectionEnd - 1);
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
const parsedValue = this.intl.parseNumber(inputValue);
|
|
215
|
-
let value = this.restrictDecimals(parsedValue);
|
|
216
|
-
if (this.autoCorrect) {
|
|
217
|
-
const limited = this.limitInputValue(value);
|
|
218
|
-
value = limited.value;
|
|
219
|
-
selectionStart = limited.selectionStart;
|
|
220
|
-
selectionEnd = limited.selectionEnd;
|
|
221
|
-
}
|
|
222
|
-
if (parsedValue !== value || this.hasTrailingZeros(inputValue) || !this.focused) {
|
|
223
|
-
this.setInputValue(value);
|
|
224
|
-
this.setSelection(selectionStart, selectionEnd);
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
this.inputValue = inputValue;
|
|
228
|
-
}
|
|
229
|
-
if (this.isPasted) {
|
|
230
|
-
input.value = this.inputValue;
|
|
231
|
-
}
|
|
232
|
-
this.updateValue(value);
|
|
233
|
-
this.previousSelection = null;
|
|
234
|
-
this.isPasted = false;
|
|
235
|
-
};
|
|
236
|
-
/**
|
|
237
|
-
* @hidden
|
|
238
|
-
*/
|
|
239
|
-
this.handleDragEnter = () => {
|
|
240
|
-
if (!this.focused && !this.isDisabled) {
|
|
241
|
-
this.setInputValue(this.value, true);
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
/**
|
|
245
|
-
* @hidden
|
|
246
|
-
*/
|
|
247
|
-
this.handleMouseDown = () => {
|
|
248
|
-
this.mouseDown = true;
|
|
249
|
-
};
|
|
250
|
-
/**
|
|
251
|
-
* @hidden
|
|
252
|
-
*/
|
|
253
|
-
this.handleInputFocus = () => {
|
|
254
|
-
if (!this.focused) {
|
|
255
|
-
this.focused = true;
|
|
256
|
-
if (!this.isDisabled) {
|
|
257
|
-
const shouldSelectAll = this.selectOnFocus || !this.mouseDown;
|
|
258
|
-
this.ngZone.runOutsideAngular(() => {
|
|
259
|
-
setTimeout(() => {
|
|
260
|
-
if (shouldSelectAll) {
|
|
261
|
-
this.selectAll();
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
this.selectCaret();
|
|
265
|
-
}
|
|
266
|
-
}, 0);
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
if (hasObservers(this.onFocus)) {
|
|
270
|
-
this.ngZone.run(() => {
|
|
271
|
-
this.onFocus.emit();
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
this.mouseDown = false;
|
|
276
|
-
if (hasObservers(this.inputFocus)) {
|
|
277
|
-
this.ngZone.run(() => {
|
|
278
|
-
this.inputFocus.emit();
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
};
|
|
282
|
-
/**
|
|
283
|
-
* @hidden
|
|
284
|
-
*/
|
|
285
|
-
this.handleBlur = () => {
|
|
286
|
-
this.changeDetector.markForCheck();
|
|
287
|
-
this.focused = false;
|
|
288
|
-
//blur is thrown before input when dragging the input text in IE
|
|
289
|
-
if (this.inputValue !== this.elementValue) {
|
|
290
|
-
this.handleInput();
|
|
291
|
-
}
|
|
292
|
-
this.setInputValue();
|
|
293
|
-
if (hasObservers(this.onBlur)) {
|
|
294
|
-
this.ngZone.run(() => {
|
|
295
|
-
this.ngTouched();
|
|
296
|
-
this.onBlur.emit();
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
/**
|
|
301
|
-
* @hidden
|
|
302
|
-
*/
|
|
303
|
-
this.handleInputBlur = () => {
|
|
304
|
-
this.changeDetector.markForCheck();
|
|
305
|
-
//blur is thrown before input when dragging the input text in IE
|
|
306
|
-
if (this.inputValue !== this.elementValue) {
|
|
307
|
-
this.handleInput();
|
|
308
|
-
}
|
|
309
|
-
this.setInputValue();
|
|
310
|
-
if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {
|
|
311
|
-
this.ngZone.run(() => {
|
|
312
|
-
this.ngTouched();
|
|
313
|
-
this.inputBlur.emit();
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
};
|
|
317
|
-
/**
|
|
318
|
-
* @hidden
|
|
319
|
-
*/
|
|
320
|
-
this.handleKeyDown = (e) => {
|
|
321
|
-
if (this.isDisabled) {
|
|
322
|
-
return;
|
|
323
|
-
}
|
|
324
|
-
let step;
|
|
325
|
-
if (e.keyCode === Keys.ArrowDown) {
|
|
326
|
-
step = -1;
|
|
327
|
-
}
|
|
328
|
-
else if (e.keyCode === Keys.ArrowUp) {
|
|
329
|
-
step = 1;
|
|
330
|
-
}
|
|
331
|
-
if (step && this.step) {
|
|
332
|
-
e.preventDefault();
|
|
333
|
-
this.addStep(step);
|
|
334
|
-
}
|
|
335
|
-
const input = this.numericInput.nativeElement;
|
|
336
|
-
this.previousSelection = {
|
|
337
|
-
end: input.selectionEnd,
|
|
338
|
-
start: input.selectionStart
|
|
339
|
-
};
|
|
340
|
-
this.pressedKey = e.keyCode;
|
|
341
|
-
};
|
|
342
|
-
/**
|
|
343
|
-
* @hidden
|
|
344
|
-
*/
|
|
345
|
-
this.handleWheel = (e) => {
|
|
346
|
-
if (this.focused && !this.isDisabled && this.changeValueOnScroll) {
|
|
347
|
-
e.preventDefault();
|
|
348
|
-
const delta = getDeltaFromMouseWheel(e);
|
|
349
|
-
this.addStep(delta);
|
|
350
|
-
}
|
|
351
|
-
};
|
|
352
|
-
validatePackage(packageMetadata);
|
|
353
|
-
this.direction = localizationService.rtl ? 'rtl' : 'ltr';
|
|
354
|
-
}
|
|
46
|
+
intl;
|
|
47
|
+
renderer;
|
|
48
|
+
localizationService;
|
|
49
|
+
injector;
|
|
50
|
+
ngZone;
|
|
51
|
+
changeDetector;
|
|
52
|
+
hostElement;
|
|
53
|
+
/**
|
|
54
|
+
* @hidden
|
|
55
|
+
*/
|
|
56
|
+
focusableId = `k-${guid()}`;
|
|
57
|
+
/**
|
|
58
|
+
* Determines whether the NumericTextBox is disabled ([see example]({% slug disabled_numerictextbox %})). To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_numerictextbox#toc-managing-the-numerictextbox-disabled-state-in-reactive-forms).
|
|
59
|
+
*/
|
|
60
|
+
disabled = false;
|
|
61
|
+
/**
|
|
62
|
+
* Determines whether the NumericTextBox is in its read-only state ([see example]({% slug readonly_numerictextbox %})).
|
|
63
|
+
*
|
|
64
|
+
* @default false
|
|
65
|
+
*/
|
|
66
|
+
readonly = false;
|
|
67
|
+
/**
|
|
68
|
+
* Sets the title of the `input` element of the NumericTextBox.
|
|
69
|
+
*/
|
|
70
|
+
title = '';
|
|
71
|
+
/**
|
|
72
|
+
* Specifies whether the value will be auto-corrected based on the minimum and maximum values
|
|
73
|
+
* ([see example]({% slug precision_numerictextbox %})).
|
|
74
|
+
*/
|
|
75
|
+
autoCorrect = false;
|
|
355
76
|
/**
|
|
356
77
|
* Specifies the number format which is used when the NumericTextBox is not focused
|
|
357
78
|
* ([see example]({% slug formats_numerictextbox %})).
|
|
@@ -364,6 +85,46 @@ export class NumericTextBoxComponent {
|
|
|
364
85
|
set format(value) {
|
|
365
86
|
this._format = value;
|
|
366
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Specifies the greatest value that is valid
|
|
90
|
+
* ([see example]({% slug precision_numerictextbox %}#toc-value-ranges)).
|
|
91
|
+
*/
|
|
92
|
+
max;
|
|
93
|
+
/**
|
|
94
|
+
* Specifies the smallest value that is valid
|
|
95
|
+
* ([see example]({% slug precision_numerictextbox %}#toc-value-ranges)).
|
|
96
|
+
*/
|
|
97
|
+
min;
|
|
98
|
+
/**
|
|
99
|
+
* Specifies the number of decimals that the user can enter when the input is focused
|
|
100
|
+
* ([see example]({% slug precision_numerictextbox %})).
|
|
101
|
+
*/
|
|
102
|
+
decimals = null;
|
|
103
|
+
/**
|
|
104
|
+
* Specifies the input placeholder.
|
|
105
|
+
*/
|
|
106
|
+
placeholder;
|
|
107
|
+
/**
|
|
108
|
+
* Specifies the value that is used to increment or decrement the component value
|
|
109
|
+
* ([see example]({% slug predefinedsteps_numerictextbox %})).
|
|
110
|
+
*/
|
|
111
|
+
step = 1;
|
|
112
|
+
/**
|
|
113
|
+
* Specifies whether the **Up** and **Down** spin buttons will be rendered
|
|
114
|
+
* ([see example]({% slug spinbuttons_numerictextbox %})).
|
|
115
|
+
*/
|
|
116
|
+
spinners = true;
|
|
117
|
+
/**
|
|
118
|
+
* Determines whether the built-in minimum or maximum validators are enforced when a form is validated.
|
|
119
|
+
*
|
|
120
|
+
* > The 4.2.0 Angular version introduces the `min` and `max` validation directives. As a result, even if you set `rangeValidation`
|
|
121
|
+
* to `false`, the built-in Angular validators will be executed.
|
|
122
|
+
*/
|
|
123
|
+
rangeValidation = true;
|
|
124
|
+
/**
|
|
125
|
+
* Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
|
|
126
|
+
*/
|
|
127
|
+
tabindex = 0;
|
|
367
128
|
/**
|
|
368
129
|
* @hidden
|
|
369
130
|
*/
|
|
@@ -373,6 +134,27 @@ export class NumericTextBoxComponent {
|
|
|
373
134
|
get tabIndex() {
|
|
374
135
|
return this.tabindex;
|
|
375
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Determines whether the value of the NumericTextBox will be changed via scrolling. Defaults to `true`.
|
|
139
|
+
*
|
|
140
|
+
* @default true
|
|
141
|
+
*/
|
|
142
|
+
changeValueOnScroll = true;
|
|
143
|
+
/**
|
|
144
|
+
* Determines whether the whole value will be selected when the NumericTextBox is clicked. Defaults to `true`.
|
|
145
|
+
*/
|
|
146
|
+
selectOnFocus = true;
|
|
147
|
+
/**
|
|
148
|
+
* Specifies the value of the NumericTextBox
|
|
149
|
+
* ([see example]({% slug formats_numerictextbox %})).
|
|
150
|
+
*/
|
|
151
|
+
value = null;
|
|
152
|
+
/**
|
|
153
|
+
* Specifies the maximum number of characters the end user can type or paste in the input.
|
|
154
|
+
* The locale-specific decimal separator and negative sign (`-`) are included in the length of the value when present.
|
|
155
|
+
* The `maxlength` restriction is not applied to the length of the formatted value when the component is not focused.
|
|
156
|
+
*/
|
|
157
|
+
maxlength;
|
|
376
158
|
/**
|
|
377
159
|
* The size property specifies padding of the NumericTextBox internal input element
|
|
378
160
|
* ([see example]({% slug appearance_numerictextbox %}#toc-size)).
|
|
@@ -440,9 +222,81 @@ export class NumericTextBoxComponent {
|
|
|
440
222
|
get inputAttributes() {
|
|
441
223
|
return this._inputAttributes;
|
|
442
224
|
}
|
|
225
|
+
/**
|
|
226
|
+
* Fires each time the user selects a new value ([see example](slug:events_numerictextbox)).
|
|
227
|
+
*/
|
|
228
|
+
valueChange = new EventEmitter();
|
|
229
|
+
/**
|
|
230
|
+
* Fires each time the user focuses the NumericTextBox element ([see example](slug:events_numerictextbox)).
|
|
231
|
+
*/
|
|
232
|
+
onFocus = new EventEmitter();
|
|
233
|
+
/**
|
|
234
|
+
* Fires each time the NumericTextBox component gets blurred ([see example](slug:events_numerictextbox)).
|
|
235
|
+
*/
|
|
236
|
+
onBlur = new EventEmitter();
|
|
237
|
+
/**
|
|
238
|
+
* Fires each time the user focuses the `input` element.
|
|
239
|
+
*/
|
|
240
|
+
inputFocus = new EventEmitter();
|
|
241
|
+
/**
|
|
242
|
+
* Fires each time the `input` element gets blurred.
|
|
243
|
+
*/
|
|
244
|
+
inputBlur = new EventEmitter();
|
|
245
|
+
/**
|
|
246
|
+
* @hidden
|
|
247
|
+
*/
|
|
248
|
+
numericInput;
|
|
249
|
+
/**
|
|
250
|
+
* @hidden
|
|
251
|
+
*/
|
|
252
|
+
suffixTemplate;
|
|
253
|
+
/**
|
|
254
|
+
* @hidden
|
|
255
|
+
*/
|
|
256
|
+
prefixTemplate;
|
|
257
|
+
direction;
|
|
258
|
+
/**
|
|
259
|
+
* @hidden
|
|
260
|
+
*/
|
|
261
|
+
ArrowDirection = ArrowDirection;
|
|
262
|
+
/**
|
|
263
|
+
* @hidden
|
|
264
|
+
*/
|
|
265
|
+
arrowDirection = ArrowDirection.None;
|
|
443
266
|
get disableClass() {
|
|
444
267
|
return this.disabled;
|
|
445
268
|
}
|
|
269
|
+
hostClasses = true;
|
|
270
|
+
/**
|
|
271
|
+
* @hidden
|
|
272
|
+
*/
|
|
273
|
+
arrowUpIcon = caretAltUpIcon;
|
|
274
|
+
/**
|
|
275
|
+
* @hidden
|
|
276
|
+
*/
|
|
277
|
+
arrowDownIcon = caretAltDownIcon;
|
|
278
|
+
subscriptions;
|
|
279
|
+
inputValue = '';
|
|
280
|
+
spinTimeout;
|
|
281
|
+
isFocused;
|
|
282
|
+
minValidateFn = noop;
|
|
283
|
+
maxValidateFn = noop;
|
|
284
|
+
numericRegex;
|
|
285
|
+
_format = "n2";
|
|
286
|
+
previousSelection;
|
|
287
|
+
pressedKey;
|
|
288
|
+
control;
|
|
289
|
+
isPasted = false;
|
|
290
|
+
mouseDown = false;
|
|
291
|
+
_size = 'medium';
|
|
292
|
+
_rounded = 'medium';
|
|
293
|
+
_fillMode = 'solid';
|
|
294
|
+
ngChange = noop;
|
|
295
|
+
ngTouched = noop;
|
|
296
|
+
ngValidatorChange = noop;
|
|
297
|
+
domEvents = [];
|
|
298
|
+
_inputAttributes;
|
|
299
|
+
parsedAttributes = {};
|
|
446
300
|
get defaultAttributes() {
|
|
447
301
|
return {
|
|
448
302
|
id: this.focusableId,
|
|
@@ -466,6 +320,17 @@ export class NumericTextBoxComponent {
|
|
|
466
320
|
role: 'spinbutton'
|
|
467
321
|
};
|
|
468
322
|
}
|
|
323
|
+
constructor(intl, renderer, localizationService, injector, ngZone, changeDetector, hostElement) {
|
|
324
|
+
this.intl = intl;
|
|
325
|
+
this.renderer = renderer;
|
|
326
|
+
this.localizationService = localizationService;
|
|
327
|
+
this.injector = injector;
|
|
328
|
+
this.ngZone = ngZone;
|
|
329
|
+
this.changeDetector = changeDetector;
|
|
330
|
+
this.hostElement = hostElement;
|
|
331
|
+
validatePackage(packageMetadata);
|
|
332
|
+
this.direction = localizationService.rtl ? 'rtl' : 'ltr';
|
|
333
|
+
}
|
|
469
334
|
ngOnInit() {
|
|
470
335
|
this.subscriptions = this.localizationService
|
|
471
336
|
.changes
|
|
@@ -488,6 +353,28 @@ export class NumericTextBoxComponent {
|
|
|
488
353
|
this.handleClasses(this[input], input);
|
|
489
354
|
});
|
|
490
355
|
}
|
|
356
|
+
/**
|
|
357
|
+
* @hidden
|
|
358
|
+
*/
|
|
359
|
+
increasePress = (e) => {
|
|
360
|
+
this.arrowPress(ArrowDirection.Up, e);
|
|
361
|
+
};
|
|
362
|
+
/**
|
|
363
|
+
* @hidden
|
|
364
|
+
*/
|
|
365
|
+
decreasePress = (e) => {
|
|
366
|
+
this.arrowPress(ArrowDirection.Down, e);
|
|
367
|
+
};
|
|
368
|
+
/**
|
|
369
|
+
* @hidden
|
|
370
|
+
*/
|
|
371
|
+
releaseArrow = () => {
|
|
372
|
+
clearTimeout(this.spinTimeout);
|
|
373
|
+
if (this.arrowDirection !== ArrowDirection.None) {
|
|
374
|
+
this.arrowDirection = ArrowDirection.None;
|
|
375
|
+
this.changeDetector.detectChanges();
|
|
376
|
+
}
|
|
377
|
+
};
|
|
491
378
|
/**
|
|
492
379
|
* @hidden
|
|
493
380
|
*/
|
|
@@ -597,6 +484,97 @@ export class NumericTextBoxComponent {
|
|
|
597
484
|
notifyValueChange() {
|
|
598
485
|
this.setInputValue();
|
|
599
486
|
}
|
|
487
|
+
/**
|
|
488
|
+
* @hidden
|
|
489
|
+
*/
|
|
490
|
+
handlePaste = () => {
|
|
491
|
+
this.isPasted = true;
|
|
492
|
+
};
|
|
493
|
+
/**
|
|
494
|
+
* @hidden
|
|
495
|
+
*/
|
|
496
|
+
handleInput = () => {
|
|
497
|
+
const input = this.numericInput.nativeElement;
|
|
498
|
+
let { selectionStart, selectionEnd, value: inputValue } = input;
|
|
499
|
+
if (this.pressedKey === Keys.NumpadDecimal) {
|
|
500
|
+
inputValue = this.replaceNumpadDotValue();
|
|
501
|
+
}
|
|
502
|
+
if (this.isPasted) {
|
|
503
|
+
inputValue = this.formatInputValue(this.intl.parseNumber(inputValue));
|
|
504
|
+
}
|
|
505
|
+
if (!this.isValid(inputValue)) {
|
|
506
|
+
input.value = this.inputValue;
|
|
507
|
+
this.setSelection(selectionStart - 1, selectionEnd - 1);
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
const parsedValue = this.intl.parseNumber(inputValue);
|
|
511
|
+
let value = this.restrictDecimals(parsedValue);
|
|
512
|
+
if (this.autoCorrect) {
|
|
513
|
+
const limited = this.limitInputValue(value);
|
|
514
|
+
value = limited.value;
|
|
515
|
+
selectionStart = limited.selectionStart;
|
|
516
|
+
selectionEnd = limited.selectionEnd;
|
|
517
|
+
}
|
|
518
|
+
if (parsedValue !== value || this.hasTrailingZeros(inputValue) || !this.focused) {
|
|
519
|
+
this.setInputValue(value);
|
|
520
|
+
this.setSelection(selectionStart, selectionEnd);
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
this.inputValue = inputValue;
|
|
524
|
+
}
|
|
525
|
+
if (this.isPasted) {
|
|
526
|
+
input.value = this.inputValue;
|
|
527
|
+
}
|
|
528
|
+
this.updateValue(value);
|
|
529
|
+
this.previousSelection = null;
|
|
530
|
+
this.isPasted = false;
|
|
531
|
+
};
|
|
532
|
+
/**
|
|
533
|
+
* @hidden
|
|
534
|
+
*/
|
|
535
|
+
handleDragEnter = () => {
|
|
536
|
+
if (!this.focused && !this.isDisabled) {
|
|
537
|
+
this.setInputValue(this.value, true);
|
|
538
|
+
}
|
|
539
|
+
};
|
|
540
|
+
/**
|
|
541
|
+
* @hidden
|
|
542
|
+
*/
|
|
543
|
+
handleMouseDown = () => {
|
|
544
|
+
this.mouseDown = true;
|
|
545
|
+
};
|
|
546
|
+
/**
|
|
547
|
+
* @hidden
|
|
548
|
+
*/
|
|
549
|
+
handleInputFocus = () => {
|
|
550
|
+
if (!this.focused) {
|
|
551
|
+
this.focused = true;
|
|
552
|
+
if (!this.isDisabled) {
|
|
553
|
+
const shouldSelectAll = this.selectOnFocus || !this.mouseDown;
|
|
554
|
+
this.ngZone.runOutsideAngular(() => {
|
|
555
|
+
setTimeout(() => {
|
|
556
|
+
if (shouldSelectAll) {
|
|
557
|
+
this.selectAll();
|
|
558
|
+
}
|
|
559
|
+
else {
|
|
560
|
+
this.selectCaret();
|
|
561
|
+
}
|
|
562
|
+
}, 0);
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
if (hasObservers(this.onFocus)) {
|
|
566
|
+
this.ngZone.run(() => {
|
|
567
|
+
this.onFocus.emit();
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
this.mouseDown = false;
|
|
572
|
+
if (hasObservers(this.inputFocus)) {
|
|
573
|
+
this.ngZone.run(() => {
|
|
574
|
+
this.inputFocus.emit();
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
};
|
|
600
578
|
/**
|
|
601
579
|
* @hidden
|
|
602
580
|
*/
|
|
@@ -608,6 +586,76 @@ export class NumericTextBoxComponent {
|
|
|
608
586
|
this.focused = true;
|
|
609
587
|
});
|
|
610
588
|
}
|
|
589
|
+
/**
|
|
590
|
+
* @hidden
|
|
591
|
+
*/
|
|
592
|
+
handleBlur = () => {
|
|
593
|
+
this.changeDetector.markForCheck();
|
|
594
|
+
this.focused = false;
|
|
595
|
+
//blur is thrown before input when dragging the input text in IE
|
|
596
|
+
if (this.inputValue !== this.elementValue) {
|
|
597
|
+
this.handleInput();
|
|
598
|
+
}
|
|
599
|
+
this.setInputValue();
|
|
600
|
+
if (hasObservers(this.onBlur)) {
|
|
601
|
+
this.ngZone.run(() => {
|
|
602
|
+
this.ngTouched();
|
|
603
|
+
this.onBlur.emit();
|
|
604
|
+
});
|
|
605
|
+
}
|
|
606
|
+
};
|
|
607
|
+
/**
|
|
608
|
+
* @hidden
|
|
609
|
+
*/
|
|
610
|
+
handleInputBlur = () => {
|
|
611
|
+
this.changeDetector.markForCheck();
|
|
612
|
+
//blur is thrown before input when dragging the input text in IE
|
|
613
|
+
if (this.inputValue !== this.elementValue) {
|
|
614
|
+
this.handleInput();
|
|
615
|
+
}
|
|
616
|
+
this.setInputValue();
|
|
617
|
+
if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {
|
|
618
|
+
this.ngZone.run(() => {
|
|
619
|
+
this.ngTouched();
|
|
620
|
+
this.inputBlur.emit();
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
};
|
|
624
|
+
/**
|
|
625
|
+
* @hidden
|
|
626
|
+
*/
|
|
627
|
+
handleKeyDown = (e) => {
|
|
628
|
+
if (this.isDisabled) {
|
|
629
|
+
return;
|
|
630
|
+
}
|
|
631
|
+
let step;
|
|
632
|
+
if (e.keyCode === Keys.ArrowDown) {
|
|
633
|
+
step = -1;
|
|
634
|
+
}
|
|
635
|
+
else if (e.keyCode === Keys.ArrowUp) {
|
|
636
|
+
step = 1;
|
|
637
|
+
}
|
|
638
|
+
if (step && this.step) {
|
|
639
|
+
e.preventDefault();
|
|
640
|
+
this.addStep(step);
|
|
641
|
+
}
|
|
642
|
+
const input = this.numericInput.nativeElement;
|
|
643
|
+
this.previousSelection = {
|
|
644
|
+
end: input.selectionEnd,
|
|
645
|
+
start: input.selectionStart
|
|
646
|
+
};
|
|
647
|
+
this.pressedKey = e.keyCode;
|
|
648
|
+
};
|
|
649
|
+
/**
|
|
650
|
+
* @hidden
|
|
651
|
+
*/
|
|
652
|
+
handleWheel = (e) => {
|
|
653
|
+
if (this.focused && !this.isDisabled && this.changeValueOnScroll) {
|
|
654
|
+
e.preventDefault();
|
|
655
|
+
const delta = getDeltaFromMouseWheel(e);
|
|
656
|
+
this.addStep(delta);
|
|
657
|
+
}
|
|
658
|
+
};
|
|
611
659
|
/**
|
|
612
660
|
* @hidden
|
|
613
661
|
*/
|
|
@@ -966,15 +1014,14 @@ export class NumericTextBoxComponent {
|
|
|
966
1014
|
const attributesToRender = Object.assign({}, this.mutableAttributes, this.parsedAttributes);
|
|
967
1015
|
setHTMLAttributes(attributesToRender, this.renderer, this.numericInput.nativeElement, this.ngZone);
|
|
968
1016
|
}
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
{
|
|
977
|
-
], queries: [{ propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "numericInput", first: true, predicate: ["numericInput"], descendants: true, static: true }], exportAs: ["kendoNumericTextBox"], usesOnChanges: true, ngImport: i0, template: `
|
|
1017
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumericTextBoxComponent, deps: [{ token: i1.IntlService }, { token: i0.Renderer2 }, { token: i2.LocalizationService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1018
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NumericTextBoxComponent, isStandalone: true, selector: "kendo-numerictextbox", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", title: "title", autoCorrect: "autoCorrect", format: "format", max: "max", min: "min", decimals: "decimals", placeholder: "placeholder", step: "step", spinners: "spinners", rangeValidation: "rangeValidation", tabindex: "tabindex", tabIndex: "tabIndex", changeValueOnScroll: "changeValueOnScroll", selectOnFocus: "selectOnFocus", value: "value", maxlength: "maxlength", size: "size", rounded: "rounded", fillMode: "fillMode", inputAttributes: "inputAttributes" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur", inputFocus: "inputFocus", inputBlur: "inputBlur" }, host: { properties: { "class.k-readonly": "this.readonly", "attr.dir": "this.direction", "class.k-disabled": "this.disableClass", "class.k-input": "this.hostClasses", "class.k-numerictextbox": "this.hostClasses" } }, providers: [
|
|
1019
|
+
LocalizationService,
|
|
1020
|
+
{ provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },
|
|
1021
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },
|
|
1022
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },
|
|
1023
|
+
{ provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent) }
|
|
1024
|
+
], queries: [{ propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "numericInput", first: true, predicate: ["numericInput"], descendants: true, static: true }], exportAs: ["kendoNumericTextBox"], usesOnChanges: true, ngImport: i0, template: `
|
|
978
1025
|
<ng-container kendoNumericTextBoxLocalizedMessages
|
|
979
1026
|
i18n-increment="kendo.numerictextbox.increment|The title for the **Increment** button in the NumericTextBox"
|
|
980
1027
|
increment="Increase value"
|
|
@@ -1066,7 +1113,8 @@ NumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
1066
1113
|
</span>
|
|
1067
1114
|
</ng-container>
|
|
1068
1115
|
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedNumericTextBoxMessagesDirective, selector: "[kendoNumericTextBoxLocalizedMessages]" }, { kind: "directive", type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: ["orientation"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
|
|
1069
|
-
|
|
1116
|
+
}
|
|
1117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumericTextBoxComponent, decorators: [{
|
|
1070
1118
|
type: Component,
|
|
1071
1119
|
args: [{
|
|
1072
1120
|
exportAs: 'kendoNumericTextBox',
|