@progress/kendo-angular-inputs 14.4.0-develop.16 → 14.4.0-develop.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/esm2020/colorpicker/color-input.component.mjs +1 -1
  2. package/esm2020/index.mjs +4 -0
  3. package/esm2020/maskedtextbox/maskedtextbox.component.mjs +144 -56
  4. package/esm2020/maskedtextbox.module.mjs +30 -6
  5. package/esm2020/numerictextbox/numerictextbox.component.mjs +186 -91
  6. package/esm2020/numerictextbox.module.mjs +10 -6
  7. package/esm2020/package-metadata.mjs +2 -2
  8. package/esm2020/shared/input-separator.component.mjs +21 -3
  9. package/esm2020/shared/shared-events.directive.mjs +95 -0
  10. package/esm2020/shared-events.module.mjs +22 -0
  11. package/esm2020/textarea/models/adornments-orientation.mjs +5 -0
  12. package/esm2020/textarea/textarea-prefix.component.mjs +70 -0
  13. package/esm2020/textarea/textarea-suffix.component.mjs +33 -3
  14. package/esm2020/textarea/textarea.component.mjs +198 -131
  15. package/esm2020/textarea.module.mjs +14 -5
  16. package/esm2020/textbox/textbox-prefix.directive.mjs +17 -3
  17. package/esm2020/textbox/textbox-suffix.directive.mjs +17 -3
  18. package/esm2020/textbox/textbox.component.mjs +205 -203
  19. package/esm2020/textbox.module.mjs +9 -5
  20. package/fesm2015/progress-kendo-angular-inputs.mjs +1131 -609
  21. package/fesm2020/progress-kendo-angular-inputs.mjs +1131 -609
  22. package/index.d.ts +6 -0
  23. package/maskedtextbox/maskedtextbox.component.d.ts +37 -6
  24. package/maskedtextbox.module.d.ts +3 -1
  25. package/numerictextbox/numerictextbox.component.d.ts +38 -7
  26. package/numerictextbox.module.d.ts +3 -1
  27. package/package.json +10 -10
  28. package/shared/input-separator.component.d.ts +8 -1
  29. package/shared/shared-events.directive.d.ts +27 -0
  30. package/shared-events.module.d.ts +14 -0
  31. package/textarea/models/adornments-orientation.d.ts +12 -0
  32. package/textarea/textarea-prefix.component.d.ts +37 -0
  33. package/textarea/textarea-suffix.component.d.ts +12 -1
  34. package/textarea/textarea.component.d.ts +62 -6
  35. package/textarea.module.d.ts +9 -7
  36. package/textbox/textbox-prefix.directive.d.ts +9 -1
  37. package/textbox/textbox-suffix.directive.d.ts +9 -1
  38. package/textbox/textbox.component.d.ts +36 -9
  39. package/textbox.module.d.ts +4 -3
@@ -3,28 +3,29 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { isDevMode, Directive, Optional, EventEmitter, ElementRef, Component, Input, Output, HostBinding, ViewChild, ContentChild, ViewChildren, forwardRef, Inject, Injectable, HostListener, NgModule, ViewContainerRef, ContentChildren, ChangeDetectionStrategy } from '@angular/core';
6
+ import { isDevMode, Directive, Optional, EventEmitter, ElementRef, Component, Input, Output, HostBinding, ViewChild, ContentChild, ViewChildren, forwardRef, Inject, Injectable, HostListener, NgModule, ContentChildren, ViewContainerRef, ChangeDetectionStrategy } from '@angular/core';
7
7
  import { NgControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, RadioControlValueAccessor } from '@angular/forms';
8
8
  import { Subscription, fromEvent, interval, merge, BehaviorSubject, Subject } from 'rxjs';
9
9
  import { take, filter, concatMap, startWith, takeUntil, skip, debounceTime, throttleTime } from 'rxjs/operators';
10
10
  import * as i1 from '@progress/kendo-angular-l10n';
11
11
  import { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';
12
- import * as i3 from '@progress/kendo-angular-common';
13
- import { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, isChanged, DraggableModule, EventsModule, ResizeSensorModule, isSafari, PreventableEvent, findFocusableChild, parseCSSClassNames, closest as closest$1 } from '@progress/kendo-angular-common';
12
+ import * as i4$1 from '@progress/kendo-angular-common';
13
+ import { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, SuffixTemplateDirective, PrefixTemplateDirective, isChanged, DraggableModule, EventsModule, ResizeSensorModule, AdornmentsModule, isSafari, PreventableEvent, findFocusableChild, parseCSSClassNames, closest as closest$1 } from '@progress/kendo-angular-common';
14
+ export { PrefixTemplateDirective, SeparatorComponent, SuffixTemplateDirective } from '@progress/kendo-angular-common';
14
15
  import { validatePackage } from '@progress/kendo-licensing';
15
16
  import { caretAltUpIcon, caretAltDownIcon, caretAltLeftIcon, caretAltRightIcon, checkIcon, exclamationCircleIcon, xIcon, caretAltExpandIcon, xCircleIcon, dropletSlashIcon, dropletSliderIcon, paletteIcon, hyperlinkOpenIcon } from '@progress/kendo-svg-icons';
16
17
  import * as i2 from '@progress/kendo-angular-buttons';
17
18
  import { ButtonModule } from '@progress/kendo-angular-buttons';
18
- import * as i1$1 from '@angular/common';
19
+ import * as i4 from '@angular/common';
19
20
  import { CommonModule } from '@angular/common';
20
21
  import { browser, mobileOS } from '@progress/kendo-common';
21
- import * as i1$2 from '@progress/kendo-angular-intl';
22
+ import * as i1$1 from '@progress/kendo-angular-intl';
22
23
  import * as i2$1 from '@progress/kendo-angular-icons';
23
24
  import { IconsModule } from '@progress/kendo-angular-icons';
24
- import * as i1$3 from '@progress/kendo-angular-popup';
25
+ import * as i1$2 from '@progress/kendo-angular-popup';
25
26
  import { PopupModule } from '@progress/kendo-angular-popup';
26
27
  import { parseColor as parseColor$1, Color, namedColors } from '@progress/kendo-drawing';
27
- import * as i3$1 from '@progress/kendo-angular-dialog';
28
+ import * as i3 from '@progress/kendo-angular-dialog';
28
29
  import { DialogsModule } from '@progress/kendo-angular-dialog';
29
30
  import { SignaturePad } from '@progress/kendo-inputs-common';
30
31
 
@@ -536,8 +537,8 @@ const packageMetadata = {
536
537
  name: '@progress/kendo-angular-inputs',
537
538
  productName: 'Kendo UI for Angular',
538
539
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
539
- publishDate: 1706186390,
540
- version: '14.4.0-develop.16',
540
+ publishDate: 1706281418,
541
+ version: '14.4.0-develop.18',
541
542
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
542
543
  };
543
544
 
@@ -893,7 +894,7 @@ SliderTicksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
893
894
  <ng-template #defaultLabel let-value="value">
894
895
  {{ tickTitle(value) }}
895
896
  </ng-template>
896
- `, isInline: true, directives: [{ type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
897
+ `, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
897
898
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SliderTicksComponent, decorators: [{
898
899
  type: Component,
899
900
  args: [{
@@ -1492,7 +1493,7 @@ SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
1492
1493
  [attr.aria-label]="currentValue"
1493
1494
  ></button>
1494
1495
  <kendo-resize-sensor (resize)="sizeComponent(false)"></kendo-resize-sensor>
1495
- `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: SliderTicksComponent, selector: "[kendoSliderTicks]", inputs: ["tickTitle", "vertical", "step", "largeStep", "min", "max", "labelTemplate"] }, { type: i3.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedSliderMessagesDirective, selector: "[kendoSliderLocalizedMessages]" }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }] });
1496
+ `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: SliderTicksComponent, selector: "[kendoSliderTicks]", inputs: ["tickTitle", "vertical", "step", "largeStep", "min", "max", "labelTemplate"] }, { type: i4$1.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedSliderMessagesDirective, selector: "[kendoSliderLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i4$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }] });
1496
1497
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SliderComponent, decorators: [{
1497
1498
  type: Component,
1498
1499
  args: [{
@@ -2195,7 +2196,7 @@ RangeSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
2195
2196
  </div>
2196
2197
  </div>
2197
2198
  <kendo-resize-sensor (resize)="sizeComponent()"></kendo-resize-sensor>
2198
- `, isInline: true, components: [{ type: SliderTicksComponent, selector: "[kendoSliderTicks]", inputs: ["tickTitle", "vertical", "step", "largeStep", "min", "max", "labelTemplate"] }, { type: i3.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedRangeSliderMessagesDirective, selector: "[kendoSliderLocalizedMessages]" }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }] });
2199
+ `, isInline: true, components: [{ type: SliderTicksComponent, selector: "[kendoSliderTicks]", inputs: ["tickTitle", "vertical", "step", "largeStep", "min", "max", "labelTemplate"] }, { type: i4$1.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedRangeSliderMessagesDirective, selector: "[kendoSliderLocalizedMessages]" }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }] });
2199
2200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RangeSliderComponent, decorators: [{
2200
2201
  type: Component,
2201
2202
  args: [{
@@ -3422,6 +3423,60 @@ var ArrowDirection;
3422
3423
  ArrowDirection[ArrowDirection["Up"] = 1] = "Up";
3423
3424
  })(ArrowDirection || (ArrowDirection = {}));
3424
3425
 
3426
+ /**
3427
+ * Specifies a separator in the content of components like the TextArea and the TextBox. ([see examples]({% slug adornments_textbox %}#toc-separator)).
3428
+ * @example
3429
+ * ```ts-no-run
3430
+ * _@Component({
3431
+ * selector: 'my-app',
3432
+ * template: `
3433
+ * <kendo-textbox>
3434
+ * <ng-template kendoTextBoxSuffixTemplate>
3435
+ * <kendo-input-separator></kendo-input-separator>
3436
+ * <button kendoButton look="clear" icon="image"></button>
3437
+ * </ng-template>
3438
+ * </kendo-textbox>
3439
+ * `
3440
+ * })
3441
+ * class AppComponent {}
3442
+ * ```
3443
+ */
3444
+ class InputSeparatorComponent {
3445
+ constructor() {
3446
+ /**
3447
+ * Specifies the orientation of the separator.
3448
+ */
3449
+ this.orientation = 'vertical';
3450
+ this.hostClass = true;
3451
+ }
3452
+ get vertical() {
3453
+ return this.orientation === 'vertical';
3454
+ }
3455
+ get horizontal() {
3456
+ return this.orientation === 'horizontal';
3457
+ }
3458
+ }
3459
+ InputSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: InputSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3460
+ InputSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: { orientation: "orientation" }, host: { properties: { "class.k-input-separator-vertical": "this.vertical", "class.k-input-separator-horizontal": "this.horizontal", "class.k-input-separator": "this.hostClass" } }, ngImport: i0, template: ``, isInline: true });
3461
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: InputSeparatorComponent, decorators: [{
3462
+ type: Component,
3463
+ args: [{
3464
+ selector: 'kendo-input-separator, kendo-textbox-separator',
3465
+ template: ``
3466
+ }]
3467
+ }], propDecorators: { orientation: [{
3468
+ type: Input
3469
+ }], vertical: [{
3470
+ type: HostBinding,
3471
+ args: ['class.k-input-separator-vertical']
3472
+ }], horizontal: [{
3473
+ type: HostBinding,
3474
+ args: ['class.k-input-separator-horizontal']
3475
+ }], hostClass: [{
3476
+ type: HostBinding,
3477
+ args: ['class.k-input-separator']
3478
+ }] } });
3479
+
3425
3480
  /**
3426
3481
  * @hidden
3427
3482
  */
@@ -3470,6 +3525,93 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3470
3525
  }]
3471
3526
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
3472
3527
 
3528
+ /**
3529
+ * @hidden
3530
+ */
3531
+ class SharedInputEventsDirective {
3532
+ constructor(ngZone, renderer, cdr) {
3533
+ this.ngZone = ngZone;
3534
+ this.renderer = renderer;
3535
+ this.cdr = cdr;
3536
+ this.isFocusedChange = new EventEmitter();
3537
+ this.onFocus = new EventEmitter();
3538
+ this.handleBlur = new EventEmitter();
3539
+ this.subscriptions = new Subscription();
3540
+ }
3541
+ ngAfterViewInit() {
3542
+ const hostElement = this.hostElement.nativeElement;
3543
+ let cursorInsideWrapper = false;
3544
+ let tabbing = false;
3545
+ this.ngZone.runOutsideAngular(() => {
3546
+ // focusIn and focusOut are relative to the host element
3547
+ this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {
3548
+ this.cdr.detectChanges();
3549
+ if (!this.isFocused) {
3550
+ this.ngZone.run(() => {
3551
+ this.onFocus.emit();
3552
+ this.isFocused = true;
3553
+ this.isFocusedChange.emit(this.isFocused);
3554
+ });
3555
+ }
3556
+ }));
3557
+ this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {
3558
+ if (!this.isFocused) {
3559
+ return;
3560
+ }
3561
+ if (tabbing) {
3562
+ const closestTextbox = closest(args.relatedTarget, (element) => element === hostElement);
3563
+ if (!closestTextbox) {
3564
+ this.handleBlur.emit();
3565
+ }
3566
+ tabbing = false;
3567
+ }
3568
+ else {
3569
+ if (!cursorInsideWrapper && !this?.clearButtonClicked) {
3570
+ this.handleBlur.emit();
3571
+ }
3572
+ }
3573
+ }));
3574
+ this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {
3575
+ cursorInsideWrapper = true;
3576
+ }));
3577
+ this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {
3578
+ cursorInsideWrapper = false;
3579
+ }));
3580
+ this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
3581
+ if (args.keyCode === Keys.Tab) {
3582
+ tabbing = true;
3583
+ }
3584
+ else {
3585
+ tabbing = false;
3586
+ }
3587
+ }));
3588
+ });
3589
+ }
3590
+ ngOnDestroy() {
3591
+ this.subscriptions.unsubscribe();
3592
+ }
3593
+ }
3594
+ SharedInputEventsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedInputEventsDirective, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
3595
+ SharedInputEventsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: { hostElement: "hostElement", clearButtonClicked: "clearButtonClicked", isFocused: "isFocused" }, outputs: { isFocusedChange: "isFocusedChange", onFocus: "onFocus", handleBlur: "handleBlur" }, ngImport: i0 });
3596
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedInputEventsDirective, decorators: [{
3597
+ type: Directive,
3598
+ args: [{
3599
+ selector: '[kendoInputSharedEvents]'
3600
+ }]
3601
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostElement: [{
3602
+ type: Input
3603
+ }], clearButtonClicked: [{
3604
+ type: Input
3605
+ }], isFocused: [{
3606
+ type: Input
3607
+ }], isFocusedChange: [{
3608
+ type: Output
3609
+ }], onFocus: [{
3610
+ type: Output
3611
+ }], handleBlur: [{
3612
+ type: Output
3613
+ }] } });
3614
+
3473
3615
  /* eslint-disable @typescript-eslint/no-explicit-any */
3474
3616
  const PARSABLE_OPTIONS = ['min', 'max', 'step', 'decimals'];
3475
3617
  const PARSABLE_DEFAULTS = {
@@ -3561,13 +3703,21 @@ class NumericTextBoxComponent {
3561
3703
  */
3562
3704
  this.valueChange = new EventEmitter();
3563
3705
  /**
3564
- * Fires each time the user focuses the `input` element ([see example]({% slug overview_numerictextbox %}#toc-events)).
3706
+ * Fires each time the user focuses the NumericTextBox element ([see example]({% slug overview_numerictextbox %}#toc-events)).
3565
3707
  */
3566
3708
  this.onFocus = new EventEmitter();
3567
3709
  /**
3568
- * Fires each time the `input` element gets blurred ([see example]({% slug overview_numerictextbox %}#toc-events)).
3710
+ * Fires each time the NumericTextBox component gets blurred. ([see example]({% slug overview_numerictextbox %}#toc-events)).
3569
3711
  */
3570
3712
  this.onBlur = new EventEmitter();
3713
+ /**
3714
+ * Fires each time the user focuses the `input` element.
3715
+ */
3716
+ this.inputFocus = new EventEmitter();
3717
+ /**
3718
+ * Fires each time the `input` element gets blurred.
3719
+ */
3720
+ this.inputBlur = new EventEmitter();
3571
3721
  /**
3572
3722
  * @hidden
3573
3723
  */
@@ -3682,7 +3832,7 @@ class NumericTextBoxComponent {
3682
3832
  /**
3683
3833
  * @hidden
3684
3834
  */
3685
- this.handleFocus = () => {
3835
+ this.handleInputFocus = () => {
3686
3836
  if (!this.focused) {
3687
3837
  this.focused = true;
3688
3838
  if (!this.isDisabled) {
@@ -3698,11 +3848,16 @@ class NumericTextBoxComponent {
3698
3848
  }, 0);
3699
3849
  });
3700
3850
  }
3851
+ if (hasObservers(this.onFocus)) {
3852
+ this.ngZone.run(() => {
3853
+ this.onFocus.emit();
3854
+ });
3855
+ }
3701
3856
  }
3702
3857
  this.mouseDown = false;
3703
- if (hasObservers(this.onFocus)) {
3858
+ if (hasObservers(this.inputFocus)) {
3704
3859
  this.ngZone.run(() => {
3705
- this.onFocus.emit();
3860
+ this.inputFocus.emit();
3706
3861
  });
3707
3862
  }
3708
3863
  };
@@ -3717,13 +3872,30 @@ class NumericTextBoxComponent {
3717
3872
  this.handleInput();
3718
3873
  }
3719
3874
  this.setInputValue();
3720
- if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {
3875
+ if (hasObservers(this.onBlur)) {
3721
3876
  this.ngZone.run(() => {
3722
3877
  this.ngTouched();
3723
3878
  this.onBlur.emit();
3724
3879
  });
3725
3880
  }
3726
3881
  };
3882
+ /**
3883
+ * @hidden
3884
+ */
3885
+ this.handleInputBlur = () => {
3886
+ this.changeDetector.markForCheck();
3887
+ //blur is thrown before input when dragging the input text in IE
3888
+ if (this.inputValue !== this.elementValue) {
3889
+ this.handleInput();
3890
+ }
3891
+ this.setInputValue();
3892
+ if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {
3893
+ this.ngZone.run(() => {
3894
+ this.ngTouched();
3895
+ this.inputBlur.emit();
3896
+ });
3897
+ }
3898
+ };
3727
3899
  /**
3728
3900
  * @hidden
3729
3901
  */
@@ -3968,6 +4140,17 @@ class NumericTextBoxComponent {
3968
4140
  notifyValueChange() {
3969
4141
  this.setInputValue();
3970
4142
  }
4143
+ /**
4144
+ * @hidden
4145
+ */
4146
+ handleFocus() {
4147
+ this.ngZone.run(() => {
4148
+ if (!this.focused && hasObservers(this.onFocus)) {
4149
+ this.onFocus.emit();
4150
+ }
4151
+ this.focused = true;
4152
+ });
4153
+ }
3971
4154
  /**
3972
4155
  * @hidden
3973
4156
  */
@@ -3986,19 +4169,15 @@ class NumericTextBoxComponent {
3986
4169
  get isControlInvalid() {
3987
4170
  return this.control && this.control.touched && !this.control.valid;
3988
4171
  }
3989
- get decimalSeparator() {
3990
- const numberSymbols = this.intl.numberSymbols();
3991
- return numberSymbols.decimal;
3992
- }
3993
- get elementValue() {
3994
- return this.numericInput.nativeElement.value;
3995
- }
3996
- set elementValue(value) {
3997
- this.renderer.setProperty(this.numericInput.nativeElement, 'value', value);
3998
- }
4172
+ /**
4173
+ * @hidden
4174
+ */
3999
4175
  get focused() {
4000
4176
  return this.isFocused;
4001
4177
  }
4178
+ /**
4179
+ * @hidden
4180
+ */
4002
4181
  set focused(value) {
4003
4182
  if (this.isFocused !== value && this.hostElement) {
4004
4183
  const wrap = this.hostElement.nativeElement;
@@ -4011,6 +4190,16 @@ class NumericTextBoxComponent {
4011
4190
  this.isFocused = value;
4012
4191
  }
4013
4192
  }
4193
+ get decimalSeparator() {
4194
+ const numberSymbols = this.intl.numberSymbols();
4195
+ return numberSymbols.decimal;
4196
+ }
4197
+ get elementValue() {
4198
+ return this.numericInput.nativeElement.value;
4199
+ }
4200
+ set elementValue(value) {
4201
+ this.renderer.setProperty(this.numericInput.nativeElement, 'value', value);
4202
+ }
4014
4203
  get hasDecimals() {
4015
4204
  return this.decimals !== null && this.decimals >= 0;
4016
4205
  }
@@ -4023,8 +4212,8 @@ class NumericTextBoxComponent {
4023
4212
  return;
4024
4213
  }
4025
4214
  if (!mobileOS) {
4026
- this.focused = true;
4027
4215
  this.focus();
4216
+ this.focused = true;
4028
4217
  }
4029
4218
  if (this.arrowDirection !== direction) {
4030
4219
  this.arrowDirection = direction;
@@ -4311,14 +4500,14 @@ class NumericTextBoxComponent {
4311
4500
  }
4312
4501
  }
4313
4502
  }
4314
- NumericTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxComponent, deps: [{ token: i1$2.IntlService }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
4315
- NumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: NumericTextBoxComponent, 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" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur" }, host: { properties: { "attr.dir": "this.direction", "class.k-disabled": "this.disableClass", "class.k-input": "this.hostClasses", "class.k-numerictextbox": "this.hostClasses" } }, providers: [
4503
+ NumericTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxComponent, deps: [{ token: i1$1.IntlService }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
4504
+ NumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: NumericTextBoxComponent, 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" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur", inputFocus: "inputFocus", inputBlur: "inputBlur" }, host: { properties: { "attr.dir": "this.direction", "class.k-disabled": "this.disableClass", "class.k-input": "this.hostClasses", "class.k-numerictextbox": "this.hostClasses" } }, providers: [
4316
4505
  LocalizationService,
4317
4506
  { provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },
4318
4507
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },
4319
4508
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },
4320
4509
  { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent) }
4321
- ], viewQueries: [{ propertyName: "numericInput", first: true, predicate: ["numericInput"], descendants: true, static: true }], exportAs: ["kendoNumericTextBox"], usesOnChanges: true, ngImport: i0, template: `
4510
+ ], 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: `
4322
4511
  <ng-container kendoNumericTextBoxLocalizedMessages
4323
4512
  i18n-increment="kendo.numerictextbox.increment|The title for the **Increment** button in the NumericTextBox"
4324
4513
  increment="Increase value"
@@ -4326,6 +4515,18 @@ NumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
4326
4515
  decrement="Decrease value"
4327
4516
  >
4328
4517
  </ng-container>
4518
+ <ng-container
4519
+ kendoInputSharedEvents
4520
+ [hostElement]="hostElement"
4521
+ [(isFocused)]="focused"
4522
+ (handleBlur)="handleBlur()"
4523
+ (onFocus)="handleFocus()"
4524
+ >
4525
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
4526
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
4527
+ </ng-template>
4528
+ </span>
4529
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
4329
4530
  <input
4330
4531
  role="spinbutton"
4331
4532
  class="k-input-inner"
@@ -4347,51 +4548,57 @@ NumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
4347
4548
  dragenter: handleDragEnter,
4348
4549
  keydown: handleKeyDown,
4349
4550
  input: handleInput,
4350
- focus: handleFocus,
4351
- blur: handleBlur,
4551
+ focus: handleInputFocus,
4552
+ blur: handleInputBlur,
4352
4553
  paste: handlePaste
4353
4554
  }"
4354
4555
  #numericInput />
4556
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate?.showSeparator"></kendo-input-separator>
4557
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
4558
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
4559
+ </ng-template>
4560
+ </span>
4355
4561
  <span
4356
4562
  class="k-input-spinner k-spin-button" *ngIf="spinners"
4357
4563
  [kendoEventsOutsideAngular]="{ mouseup: releaseArrow, mouseleave: releaseArrow }"
4358
4564
  >
4359
- <button
4360
- type="button"
4361
- [kendoEventsOutsideAngular]="{ mousedown: increasePress }"
4362
- [attr.aria-hidden]="true"
4363
- [attr.aria-label]="incrementTitle"
4364
- [title]="incrementTitle"
4365
- class="k-spinner-increase k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4366
- [class.k-active]="arrowDirection === ArrowDirection.Up"
4367
- tabindex="-1"
4565
+ <button
4566
+ type="button"
4567
+ [kendoEventsOutsideAngular]="{ mousedown: increasePress }"
4568
+ [attr.aria-hidden]="true"
4569
+ [attr.aria-label]="incrementTitle"
4570
+ [title]="incrementTitle"
4571
+ class="k-spinner-increase k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4572
+ [class.k-active]="arrowDirection === ArrowDirection.Up"
4573
+ tabindex="-1"
4574
+ >
4575
+ <kendo-icon-wrapper
4576
+ name="caret-alt-up"
4577
+ innerCssClass="k-button-icon"
4578
+ [svgIcon]="arrowUpIcon"
4368
4579
  >
4369
- <kendo-icon-wrapper
4370
- name="caret-alt-up"
4371
- innerCssClass="k-button-icon"
4372
- [svgIcon]="arrowUpIcon"
4373
- >
4374
- </kendo-icon-wrapper>
4375
- </button>
4376
- <button
4377
- type="button"
4378
- [kendoEventsOutsideAngular]="{ mousedown: decreasePress }"
4379
- [attr.aria-hidden]="true"
4380
- [attr.aria-label]="decrementTitle"
4381
- [title]="decrementTitle"
4382
- [class.k-active]="arrowDirection === ArrowDirection.Down"
4383
- class="k-spinner-decrease k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4384
- tabindex="-1"
4580
+ </kendo-icon-wrapper>
4581
+ </button>
4582
+ <button
4583
+ type="button"
4584
+ [kendoEventsOutsideAngular]="{ mousedown: decreasePress }"
4585
+ [attr.aria-hidden]="true"
4586
+ [attr.aria-label]="decrementTitle"
4587
+ [title]="decrementTitle"
4588
+ [class.k-active]="arrowDirection === ArrowDirection.Down"
4589
+ class="k-spinner-decrease k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4590
+ tabindex="-1"
4591
+ >
4592
+ <kendo-icon-wrapper
4593
+ name="caret-alt-down"
4594
+ innerCssClass="k-button-icon"
4595
+ [svgIcon]="arrowDownIcon"
4385
4596
  >
4386
- <kendo-icon-wrapper
4387
- name="caret-alt-down"
4388
- innerCssClass="k-button-icon"
4389
- [svgIcon]="arrowDownIcon"
4390
- >
4391
4597
  </kendo-icon-wrapper>
4392
4598
  </button>
4393
4599
  </span>
4394
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedNumericTextBoxMessagesDirective, selector: "[kendoNumericTextBoxLocalizedMessages]" }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
4600
+ </ng-container>
4601
+ `, isInline: true, components: [{ type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: ["orientation"] }, { type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedNumericTextBoxMessagesDirective, selector: "[kendoNumericTextBoxLocalizedMessages]" }, { type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
4395
4602
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxComponent, decorators: [{
4396
4603
  type: Component,
4397
4604
  args: [{
@@ -4412,6 +4619,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4412
4619
  decrement="Decrease value"
4413
4620
  >
4414
4621
  </ng-container>
4622
+ <ng-container
4623
+ kendoInputSharedEvents
4624
+ [hostElement]="hostElement"
4625
+ [(isFocused)]="focused"
4626
+ (handleBlur)="handleBlur()"
4627
+ (onFocus)="handleFocus()"
4628
+ >
4629
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
4630
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
4631
+ </ng-template>
4632
+ </span>
4633
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
4415
4634
  <input
4416
4635
  role="spinbutton"
4417
4636
  class="k-input-inner"
@@ -4433,53 +4652,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4433
4652
  dragenter: handleDragEnter,
4434
4653
  keydown: handleKeyDown,
4435
4654
  input: handleInput,
4436
- focus: handleFocus,
4437
- blur: handleBlur,
4655
+ focus: handleInputFocus,
4656
+ blur: handleInputBlur,
4438
4657
  paste: handlePaste
4439
4658
  }"
4440
4659
  #numericInput />
4660
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate?.showSeparator"></kendo-input-separator>
4661
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
4662
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
4663
+ </ng-template>
4664
+ </span>
4441
4665
  <span
4442
4666
  class="k-input-spinner k-spin-button" *ngIf="spinners"
4443
4667
  [kendoEventsOutsideAngular]="{ mouseup: releaseArrow, mouseleave: releaseArrow }"
4444
4668
  >
4445
- <button
4446
- type="button"
4447
- [kendoEventsOutsideAngular]="{ mousedown: increasePress }"
4448
- [attr.aria-hidden]="true"
4449
- [attr.aria-label]="incrementTitle"
4450
- [title]="incrementTitle"
4451
- class="k-spinner-increase k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4452
- [class.k-active]="arrowDirection === ArrowDirection.Up"
4453
- tabindex="-1"
4669
+ <button
4670
+ type="button"
4671
+ [kendoEventsOutsideAngular]="{ mousedown: increasePress }"
4672
+ [attr.aria-hidden]="true"
4673
+ [attr.aria-label]="incrementTitle"
4674
+ [title]="incrementTitle"
4675
+ class="k-spinner-increase k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4676
+ [class.k-active]="arrowDirection === ArrowDirection.Up"
4677
+ tabindex="-1"
4678
+ >
4679
+ <kendo-icon-wrapper
4680
+ name="caret-alt-up"
4681
+ innerCssClass="k-button-icon"
4682
+ [svgIcon]="arrowUpIcon"
4454
4683
  >
4455
- <kendo-icon-wrapper
4456
- name="caret-alt-up"
4457
- innerCssClass="k-button-icon"
4458
- [svgIcon]="arrowUpIcon"
4459
- >
4460
- </kendo-icon-wrapper>
4461
- </button>
4462
- <button
4463
- type="button"
4464
- [kendoEventsOutsideAngular]="{ mousedown: decreasePress }"
4465
- [attr.aria-hidden]="true"
4466
- [attr.aria-label]="decrementTitle"
4467
- [title]="decrementTitle"
4468
- [class.k-active]="arrowDirection === ArrowDirection.Down"
4469
- class="k-spinner-decrease k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4470
- tabindex="-1"
4684
+ </kendo-icon-wrapper>
4685
+ </button>
4686
+ <button
4687
+ type="button"
4688
+ [kendoEventsOutsideAngular]="{ mousedown: decreasePress }"
4689
+ [attr.aria-hidden]="true"
4690
+ [attr.aria-label]="decrementTitle"
4691
+ [title]="decrementTitle"
4692
+ [class.k-active]="arrowDirection === ArrowDirection.Down"
4693
+ class="k-spinner-decrease k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4694
+ tabindex="-1"
4695
+ >
4696
+ <kendo-icon-wrapper
4697
+ name="caret-alt-down"
4698
+ innerCssClass="k-button-icon"
4699
+ [svgIcon]="arrowDownIcon"
4471
4700
  >
4472
- <kendo-icon-wrapper
4473
- name="caret-alt-down"
4474
- innerCssClass="k-button-icon"
4475
- [svgIcon]="arrowDownIcon"
4476
- >
4477
4701
  </kendo-icon-wrapper>
4478
4702
  </button>
4479
4703
  </span>
4480
- `
4704
+ </ng-container>
4705
+ `
4481
4706
  }]
4482
- }], ctorParameters: function () { return [{ type: i1$2.IntlService }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{
4707
+ }], ctorParameters: function () { return [{ type: i1$1.IntlService }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{
4483
4708
  type: Input
4484
4709
  }], disabled: [{
4485
4710
  type: Input
@@ -4531,9 +4756,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4531
4756
  }], onBlur: [{
4532
4757
  type: Output,
4533
4758
  args: ['blur']
4759
+ }], inputFocus: [{
4760
+ type: Output
4761
+ }], inputBlur: [{
4762
+ type: Output
4534
4763
  }], numericInput: [{
4535
4764
  type: ViewChild,
4536
4765
  args: ['numericInput', { static: true }]
4766
+ }], suffixTemplate: [{
4767
+ type: ContentChild,
4768
+ args: [SuffixTemplateDirective]
4769
+ }], prefixTemplate: [{
4770
+ type: ContentChild,
4771
+ args: [PrefixTemplateDirective]
4537
4772
  }], direction: [{
4538
4773
  type: HostBinding,
4539
4774
  args: ['attr.dir']
@@ -5083,7 +5318,7 @@ class MaskedTextBoxComponent {
5083
5318
  */
5084
5319
  this.tabindex = 0;
5085
5320
  /**
5086
- * Fires each time the user focuses the `input` element.
5321
+ * Fires each time the user focuses the MaskedTextBox component.
5087
5322
  *
5088
5323
  * > To wire the event programmatically, use the `onFocus` property.
5089
5324
  *
@@ -5104,7 +5339,7 @@ class MaskedTextBoxComponent {
5104
5339
  */
5105
5340
  this.onFocus = new EventEmitter();
5106
5341
  /**
5107
- * Fires each time the `input` element gets blurred.
5342
+ * Fires each time the MaskedTextBox component gets blurred.
5108
5343
  *
5109
5344
  * > To wire the event programmatically, use the `onBlur` property.
5110
5345
  *
@@ -5124,6 +5359,14 @@ class MaskedTextBoxComponent {
5124
5359
  * ```
5125
5360
  */
5126
5361
  this.onBlur = new EventEmitter();
5362
+ /**
5363
+ * Fires each time the user focuses the `input` element.
5364
+ */
5365
+ this.inputFocus = new EventEmitter();
5366
+ /**
5367
+ * Fires each time the `input` element gets blurred.
5368
+ */
5369
+ this.inputBlur = new EventEmitter();
5127
5370
  /**
5128
5371
  * Fires each time the value changes.
5129
5372
  */
@@ -5150,16 +5393,27 @@ class MaskedTextBoxComponent {
5150
5393
  * @hidden
5151
5394
  */
5152
5395
  this.handleFocus = () => {
5153
- this.focused = true;
5154
- if (this.maskOnFocus && this.emptyMask) {
5396
+ this.ngZone.run(() => {
5397
+ if (!this.focused && hasObservers(this.onFocus)) {
5398
+ this.onFocus.emit();
5399
+ }
5400
+ this.focused = true;
5401
+ });
5402
+ if (this.maskOnFocus && this.emptyMask) {
5155
5403
  this.updateInput(this.service.maskRaw(this.value));
5156
5404
  this.ngZone.runOutsideAngular(() => {
5157
5405
  setTimeout(() => { this.setSelection(0, 0); }, 0);
5158
5406
  });
5159
5407
  }
5160
- if (hasObservers(this.onFocus)) {
5408
+ };
5409
+ /**
5410
+ * @hidden
5411
+ */
5412
+ this.handleInputFocus = () => {
5413
+ this.handleFocus();
5414
+ if (hasObservers(this.inputFocus)) {
5161
5415
  this.ngZone.run(() => {
5162
- this.onFocus.emit();
5416
+ this.inputFocus.emit();
5163
5417
  });
5164
5418
  }
5165
5419
  };
@@ -5185,13 +5439,25 @@ class MaskedTextBoxComponent {
5185
5439
  if (this.maskOnFocus && this.emptyMask) {
5186
5440
  this.updateInput(this.maskedValue);
5187
5441
  }
5188
- if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {
5442
+ if (hasObservers(this.onBlur)) {
5189
5443
  this.ngZone.run(() => {
5190
5444
  this.onTouched();
5191
5445
  this.onBlur.emit();
5192
5446
  });
5193
5447
  }
5194
5448
  };
5449
+ /**
5450
+ * @hidden
5451
+ */
5452
+ this.handleInputBlur = () => {
5453
+ this.changeDetector.markForCheck();
5454
+ if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {
5455
+ this.ngZone.run(() => {
5456
+ this.onTouched();
5457
+ this.inputBlur.emit();
5458
+ });
5459
+ }
5460
+ };
5195
5461
  this.onChange = (_) => { };
5196
5462
  this.onTouched = () => { };
5197
5463
  validatePackage(packageMetadata);
@@ -5317,6 +5583,7 @@ class MaskedTextBoxComponent {
5317
5583
  return;
5318
5584
  }
5319
5585
  this.input.nativeElement.focus();
5586
+ this.focused = true;
5320
5587
  this.setFocusSelection();
5321
5588
  }
5322
5589
  /**
@@ -5327,6 +5594,7 @@ class MaskedTextBoxComponent {
5327
5594
  return;
5328
5595
  }
5329
5596
  this.input.nativeElement.blur();
5597
+ this.focused = false;
5330
5598
  }
5331
5599
  /**
5332
5600
  * @hidden
@@ -5508,9 +5776,15 @@ class MaskedTextBoxComponent {
5508
5776
  this.setSelection();
5509
5777
  }
5510
5778
  }
5779
+ /**
5780
+ * @hidden
5781
+ */
5511
5782
  get focused() {
5512
5783
  return this.isFocused;
5513
5784
  }
5785
+ /**
5786
+ * @hidden
5787
+ */
5514
5788
  set focused(value) {
5515
5789
  if (this.isFocused !== value && this.hostElement) {
5516
5790
  const element = this.hostElement.nativeElement;
@@ -5545,7 +5819,7 @@ class MaskedTextBoxComponent {
5545
5819
  }
5546
5820
  }
5547
5821
  MaskedTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxComponent, deps: [{ token: MaskingService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Component });
5548
- MaskedTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MaskedTextBoxComponent, selector: "kendo-maskedtextbox", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", title: "title", size: "size", rounded: "rounded", fillMode: "fillMode", mask: "mask", value: "value", rules: "rules", prompt: "prompt", promptPlaceholder: "promptPlaceholder", includeLiterals: "includeLiterals", maskOnFocus: "maskOnFocus", maskValidation: "maskValidation", tabindex: "tabindex", tabIndex: "tabIndex" }, outputs: { onFocus: "focus", onBlur: "blur", valueChange: "valueChange" }, host: { listeners: { "paste": "pasteHandler($event)", "input": "inputHandler($event)" }, properties: { "attr.dir": "this.direction", "class.k-input": "this.hostClasses", "class.k-maskedtextbox": "this.hostClasses", "class.k-disabled": "this.hostDisabledClass" } }, providers: [
5822
+ MaskedTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MaskedTextBoxComponent, selector: "kendo-maskedtextbox", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", title: "title", size: "size", rounded: "rounded", fillMode: "fillMode", mask: "mask", value: "value", rules: "rules", prompt: "prompt", promptPlaceholder: "promptPlaceholder", includeLiterals: "includeLiterals", maskOnFocus: "maskOnFocus", maskValidation: "maskValidation", tabindex: "tabindex", tabIndex: "tabIndex" }, outputs: { onFocus: "focus", onBlur: "blur", inputFocus: "inputFocus", inputBlur: "inputBlur", valueChange: "valueChange" }, host: { listeners: { "paste": "pasteHandler($event)", "input": "inputHandler($event)" }, properties: { "attr.dir": "this.direction", "class.k-input": "this.hostClasses", "class.k-maskedtextbox": "this.hostClasses", "class.k-disabled": "this.hostDisabledClass" } }, providers: [
5549
5823
  MaskingService,
5550
5824
  {
5551
5825
  multi: true,
@@ -5561,30 +5835,48 @@ MaskedTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
5561
5835
  provide: KendoInput,
5562
5836
  useExisting: forwardRef(() => MaskedTextBoxComponent)
5563
5837
  }
5564
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], exportAs: ["kendoMaskedTextBox"], usesOnChanges: true, ngImport: i0, template: `
5565
- <input type="text"
5566
- #input
5567
- autocomplete="off"
5568
- autocorrect="off"
5569
- autocapitalize="off"
5570
- spellcheck="false"
5571
- class="k-input-inner"
5572
- [id]="focusableId"
5573
- [tabindex]="tabIndex"
5574
- [attr.title]="title"
5575
- [attr.aria-placeholder]="mask"
5576
- [attr.aria-invalid]="isControlInvalid"
5577
- [disabled]="disabled"
5578
- [readonly]="readonly"
5579
- [kendoEventsOutsideAngular]="{
5580
- focus: handleFocus,
5581
- blur: handleBlur,
5582
- click: handleClick,
5583
- dragstart: handleDragDrop,
5584
- drop: handleDragDrop
5585
- }"
5586
- />
5587
- `, isInline: true, directives: [{ type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
5838
+ ], queries: [{ propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], exportAs: ["kendoMaskedTextBox"], usesOnChanges: true, ngImport: i0, template: `
5839
+ <ng-container
5840
+ kendoInputSharedEvents
5841
+ [hostElement]="hostElement"
5842
+ [(isFocused)]="focused"
5843
+ (handleBlur)="handleBlur()"
5844
+ (onFocus)="handleFocus()"
5845
+ >
5846
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
5847
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
5848
+ </ng-template>
5849
+ </span>
5850
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
5851
+ <input type="text"
5852
+ #input
5853
+ autocomplete="off"
5854
+ autocorrect="off"
5855
+ autocapitalize="off"
5856
+ spellcheck="false"
5857
+ class="k-input-inner"
5858
+ [id]="focusableId"
5859
+ [tabindex]="tabIndex"
5860
+ [attr.title]="title"
5861
+ [attr.aria-placeholder]="mask"
5862
+ [attr.aria-invalid]="isControlInvalid"
5863
+ [disabled]="disabled"
5864
+ [readonly]="readonly"
5865
+ [kendoEventsOutsideAngular]="{
5866
+ focus: handleInputFocus,
5867
+ blur: handleInputBlur,
5868
+ click: handleClick,
5869
+ dragstart: handleDragDrop,
5870
+ drop: handleDragDrop
5871
+ }"
5872
+ />
5873
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-input-separator>
5874
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
5875
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
5876
+ </ng-template>
5877
+ </span>
5878
+ </ng-container>
5879
+ `, isInline: true, components: [{ type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: ["orientation"] }], directives: [{ type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
5588
5880
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxComponent, decorators: [{
5589
5881
  type: Component,
5590
5882
  args: [{
@@ -5608,28 +5900,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5608
5900
  ],
5609
5901
  selector: 'kendo-maskedtextbox',
5610
5902
  template: `
5611
- <input type="text"
5612
- #input
5613
- autocomplete="off"
5614
- autocorrect="off"
5615
- autocapitalize="off"
5616
- spellcheck="false"
5617
- class="k-input-inner"
5618
- [id]="focusableId"
5619
- [tabindex]="tabIndex"
5620
- [attr.title]="title"
5621
- [attr.aria-placeholder]="mask"
5622
- [attr.aria-invalid]="isControlInvalid"
5623
- [disabled]="disabled"
5624
- [readonly]="readonly"
5625
- [kendoEventsOutsideAngular]="{
5626
- focus: handleFocus,
5627
- blur: handleBlur,
5628
- click: handleClick,
5629
- dragstart: handleDragDrop,
5630
- drop: handleDragDrop
5631
- }"
5632
- />
5903
+ <ng-container
5904
+ kendoInputSharedEvents
5905
+ [hostElement]="hostElement"
5906
+ [(isFocused)]="focused"
5907
+ (handleBlur)="handleBlur()"
5908
+ (onFocus)="handleFocus()"
5909
+ >
5910
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
5911
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
5912
+ </ng-template>
5913
+ </span>
5914
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
5915
+ <input type="text"
5916
+ #input
5917
+ autocomplete="off"
5918
+ autocorrect="off"
5919
+ autocapitalize="off"
5920
+ spellcheck="false"
5921
+ class="k-input-inner"
5922
+ [id]="focusableId"
5923
+ [tabindex]="tabIndex"
5924
+ [attr.title]="title"
5925
+ [attr.aria-placeholder]="mask"
5926
+ [attr.aria-invalid]="isControlInvalid"
5927
+ [disabled]="disabled"
5928
+ [readonly]="readonly"
5929
+ [kendoEventsOutsideAngular]="{
5930
+ focus: handleInputFocus,
5931
+ blur: handleInputBlur,
5932
+ click: handleClick,
5933
+ dragstart: handleDragDrop,
5934
+ drop: handleDragDrop
5935
+ }"
5936
+ />
5937
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-input-separator>
5938
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
5939
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
5940
+ </ng-template>
5941
+ </span>
5942
+ </ng-container>
5633
5943
  `
5634
5944
  }]
5635
5945
  }], ctorParameters: function () { return [{ type: MaskingService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
@@ -5677,6 +5987,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5677
5987
  }], onBlur: [{
5678
5988
  type: Output,
5679
5989
  args: ['blur']
5990
+ }], inputFocus: [{
5991
+ type: Output
5992
+ }], inputBlur: [{
5993
+ type: Output
5680
5994
  }], valueChange: [{
5681
5995
  type: Output
5682
5996
  }], direction: [{
@@ -5694,6 +6008,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5694
6008
  }], input: [{
5695
6009
  type: ViewChild,
5696
6010
  args: ['input', { static: true }]
6011
+ }], suffixTemplate: [{
6012
+ type: ContentChild,
6013
+ args: [SuffixTemplateDirective]
6014
+ }], prefixTemplate: [{
6015
+ type: ContentChild,
6016
+ args: [PrefixTemplateDirective]
5697
6017
  }], pasteHandler: [{
5698
6018
  type: HostListener,
5699
6019
  args: ['paste', ['$event']]
@@ -6011,6 +6331,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6011
6331
  }]
6012
6332
  }] });
6013
6333
 
6334
+ /**
6335
+ * @hidden
6336
+ */
6337
+ const SHARED_DIRECTIVES = [
6338
+ InputSeparatorComponent,
6339
+ TextAreaDirective
6340
+ ];
6341
+ /**
6342
+ * @hidden
6343
+ */
6344
+ class SharedModule {
6345
+ }
6346
+ SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6347
+ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, declarations: [InputSeparatorComponent,
6348
+ TextAreaDirective], exports: [InputSeparatorComponent,
6349
+ TextAreaDirective] });
6350
+ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule });
6351
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, decorators: [{
6352
+ type: NgModule,
6353
+ args: [{
6354
+ declarations: [SHARED_DIRECTIVES],
6355
+ exports: [SHARED_DIRECTIVES]
6356
+ }]
6357
+ }] });
6358
+
6359
+ /**
6360
+ * @hidden
6361
+ */
6362
+ class SharedEventsModule {
6363
+ }
6364
+ SharedEventsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedEventsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6365
+ SharedEventsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedEventsModule, declarations: [SharedInputEventsDirective], exports: [SharedInputEventsDirective] });
6366
+ SharedEventsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedEventsModule });
6367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedEventsModule, decorators: [{
6368
+ type: NgModule,
6369
+ args: [{
6370
+ declarations: [SharedInputEventsDirective],
6371
+ exports: [SharedInputEventsDirective],
6372
+ }]
6373
+ }] });
6374
+
6014
6375
  /**
6015
6376
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
6016
6377
  * definition for the NumericTextBox component.
@@ -6047,9 +6408,10 @@ class NumericTextBoxModule {
6047
6408
  NumericTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6048
6409
  NumericTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, declarations: [LocalizedNumericTextBoxMessagesDirective,
6049
6410
  NumericTextBoxComponent,
6050
- NumericTextBoxCustomMessagesComponent], imports: [CommonModule, EventsModule, IconsModule], exports: [NumericTextBoxComponent,
6051
- NumericTextBoxCustomMessagesComponent] });
6052
- NumericTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, imports: [[CommonModule, EventsModule, IconsModule]] });
6411
+ NumericTextBoxCustomMessagesComponent], imports: [CommonModule, EventsModule, IconsModule, SharedModule, AdornmentsModule, SharedEventsModule], exports: [NumericTextBoxComponent,
6412
+ NumericTextBoxCustomMessagesComponent,
6413
+ AdornmentsModule] });
6414
+ NumericTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, imports: [[CommonModule, EventsModule, IconsModule, SharedModule, AdornmentsModule, SharedEventsModule], AdornmentsModule] });
6053
6415
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, decorators: [{
6054
6416
  type: NgModule,
6055
6417
  args: [{
@@ -6060,9 +6422,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6060
6422
  ],
6061
6423
  exports: [
6062
6424
  NumericTextBoxComponent,
6063
- NumericTextBoxCustomMessagesComponent
6425
+ NumericTextBoxCustomMessagesComponent,
6426
+ AdornmentsModule
6064
6427
  ],
6065
- imports: [CommonModule, EventsModule, IconsModule]
6428
+ imports: [CommonModule, EventsModule, IconsModule, SharedModule, AdornmentsModule, SharedEventsModule]
6066
6429
  }]
6067
6430
  }] });
6068
6431
 
@@ -6100,14 +6463,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6100
6463
  class MaskedTextBoxModule {
6101
6464
  }
6102
6465
  MaskedTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6103
- MaskedTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, declarations: [MaskedTextBoxComponent], imports: [CommonModule, EventsModule], exports: [MaskedTextBoxComponent] });
6104
- MaskedTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, imports: [[CommonModule, EventsModule]] });
6466
+ MaskedTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, declarations: [MaskedTextBoxComponent], imports: [CommonModule,
6467
+ EventsModule,
6468
+ SharedModule,
6469
+ AdornmentsModule,
6470
+ SharedEventsModule], exports: [MaskedTextBoxComponent,
6471
+ AdornmentsModule] });
6472
+ MaskedTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, imports: [[
6473
+ CommonModule,
6474
+ EventsModule,
6475
+ SharedModule,
6476
+ AdornmentsModule,
6477
+ SharedEventsModule
6478
+ ], AdornmentsModule] });
6105
6479
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, decorators: [{
6106
6480
  type: NgModule,
6107
6481
  args: [{
6108
- declarations: [MaskedTextBoxComponent],
6109
- exports: [MaskedTextBoxComponent],
6110
- imports: [CommonModule, EventsModule]
6482
+ declarations: [
6483
+ MaskedTextBoxComponent
6484
+ ],
6485
+ exports: [
6486
+ MaskedTextBoxComponent,
6487
+ AdornmentsModule
6488
+ ],
6489
+ imports: [
6490
+ CommonModule,
6491
+ EventsModule,
6492
+ SharedModule,
6493
+ AdornmentsModule,
6494
+ SharedEventsModule
6495
+ ],
6111
6496
  }]
6112
6497
  }] });
6113
6498
 
@@ -6140,10 +6525,22 @@ const isJapanese = (input) => {
6140
6525
  class TextBoxSuffixTemplateDirective {
6141
6526
  constructor(templateRef) {
6142
6527
  this.templateRef = templateRef;
6528
+ this._showSeparator = false;
6529
+ }
6530
+ /**
6531
+ * Sets the `showSeparator` attribute of the `kendoTextBoxSuffixTemplate`.
6532
+ *
6533
+ * @default false
6534
+ */
6535
+ set showSeparator(value) {
6536
+ this._showSeparator = value;
6537
+ }
6538
+ get showSeparator() {
6539
+ return this._showSeparator;
6143
6540
  }
6144
6541
  }
6145
6542
  TextBoxSuffixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxSuffixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
6146
- TextBoxSuffixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", ngImport: i0 });
6543
+ TextBoxSuffixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
6147
6544
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxSuffixTemplateDirective, decorators: [{
6148
6545
  type: Directive,
6149
6546
  args: [{
@@ -6151,7 +6548,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6151
6548
  }]
6152
6549
  }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
6153
6550
  type: Optional
6154
- }] }]; } });
6551
+ }] }]; }, propDecorators: { showSeparator: [{
6552
+ type: Input
6553
+ }] } });
6155
6554
 
6156
6555
  /**
6157
6556
  * Specifies the adornments in the prefix container ([see examples]({% slug adornments_textbox %}#toc-prefixadornments)).
@@ -6173,10 +6572,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6173
6572
  class TextBoxPrefixTemplateDirective {
6174
6573
  constructor(templateRef) {
6175
6574
  this.templateRef = templateRef;
6575
+ this._showSeparator = false;
6576
+ }
6577
+ /**
6578
+ * Sets the `showSeparator` attribute of the `kendoTextBoxPrefixTemplate`.
6579
+ *
6580
+ * @default false
6581
+ */
6582
+ set showSeparator(value) {
6583
+ this._showSeparator = value;
6584
+ }
6585
+ get showSeparator() {
6586
+ return this._showSeparator;
6176
6587
  }
6177
6588
  }
6178
6589
  TextBoxPrefixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxPrefixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
6179
- TextBoxPrefixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]", ngImport: i0 });
6590
+ TextBoxPrefixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
6180
6591
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxPrefixTemplateDirective, decorators: [{
6181
6592
  type: Directive,
6182
6593
  args: [{
@@ -6184,7 +6595,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6184
6595
  }]
6185
6596
  }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
6186
6597
  type: Optional
6187
- }] }]; } });
6598
+ }] }]; }, propDecorators: { showSeparator: [{
6599
+ type: Input
6600
+ }] } });
6188
6601
 
6189
6602
  /**
6190
6603
  * @hidden
@@ -6391,12 +6804,8 @@ class TextBoxComponent {
6391
6804
  setTimeout(() => { this.selectAll(); });
6392
6805
  });
6393
6806
  }
6394
- if (hasObservers(this.onFocus)) {
6395
- if (!this.isFocused) {
6396
- this.ngZone.run(() => {
6397
- this.onFocus.emit();
6398
- });
6399
- }
6807
+ if (!this.isFocused) {
6808
+ this.handleFocus();
6400
6809
  }
6401
6810
  if (hasObservers(this.inputFocus)) {
6402
6811
  if (!this.focusChangedProgrammatically || (this.focusChangedProgrammatically && this.clearButtonClicked)) {
@@ -6405,9 +6814,6 @@ class TextBoxComponent {
6405
6814
  });
6406
6815
  }
6407
6816
  }
6408
- this.ngZone.run(() => {
6409
- this.isFocused = true;
6410
- });
6411
6817
  }
6412
6818
  };
6413
6819
  /**
@@ -6515,56 +6921,16 @@ class TextBoxComponent {
6515
6921
  });
6516
6922
  }
6517
6923
  ngAfterViewInit() {
6518
- const hostElement = this.hostElement.nativeElement;
6519
- let cursorInsideWrapper = false;
6520
- let tabbing = false;
6521
- this.ngZone.runOutsideAngular(() => {
6522
- // focusIn and focusOut are relative to the host element
6523
- this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {
6524
- if (!this.isFocused) {
6525
- this.ngZone.run(() => {
6526
- this.onFocus.emit();
6527
- this.isFocused = true;
6528
- });
6529
- }
6530
- }));
6531
- this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {
6532
- if (!this.isFocused) {
6533
- return;
6534
- }
6535
- if (tabbing) {
6536
- const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);
6537
- if (!closestTextbox) {
6538
- this.handleBlur();
6539
- }
6540
- tabbing = false;
6541
- }
6542
- else {
6543
- if (!cursorInsideWrapper && !this.clearButtonClicked) {
6544
- this.handleBlur();
6545
- }
6546
- }
6547
- }));
6548
- this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {
6549
- cursorInsideWrapper = true;
6550
- }));
6551
- this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {
6552
- cursorInsideWrapper = false;
6553
- }));
6554
- this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
6555
- if (args.keyCode === Keys.Tab) {
6556
- tabbing = true;
6557
- }
6558
- else {
6559
- tabbing = false;
6560
- }
6561
- }));
6562
- });
6563
6924
  const stylingInputs = ['size', 'rounded', 'fillMode'];
6564
6925
  stylingInputs.forEach(input => {
6565
6926
  this.handleClasses(this[input], input);
6566
6927
  });
6567
6928
  }
6929
+ ngAfterContentInit() {
6930
+ this.configureAdornments();
6931
+ this.subscriptions.add(this.textBoxPrefixTemplate.changes.subscribe(this.configureAdornments.bind(this)));
6932
+ this.subscriptions.add(this.textBoxSuffixTemplate.changes.subscribe(this.configureAdornments.bind(this)));
6933
+ }
6568
6934
  ngOnChanges(changes) {
6569
6935
  if (changes['disabled'] || changes['readonly'] || changes['value']) {
6570
6936
  this.checkClearButton();
@@ -6767,6 +7133,27 @@ class TextBoxComponent {
6767
7133
  ? this.showSuccessInitial()
6768
7134
  : this.showSuccessIcon;
6769
7135
  }
7136
+ /**
7137
+ * @hidden
7138
+ */
7139
+ get isFocused() {
7140
+ return this._isFocused;
7141
+ }
7142
+ /**
7143
+ * @hidden
7144
+ */
7145
+ set isFocused(value) {
7146
+ if (this._isFocused !== value && this.hostElement) {
7147
+ const element = this.hostElement.nativeElement;
7148
+ if (value && !this.disabled) {
7149
+ this.renderer.addClass(element, FOCUSED$1);
7150
+ }
7151
+ else {
7152
+ this.renderer.removeClass(element, FOCUSED$1);
7153
+ }
7154
+ this._isFocused = value;
7155
+ }
7156
+ }
6770
7157
  setSelection(start, end) {
6771
7158
  if (this.isFocused) {
6772
7159
  invokeElementMethod(this.input, 'setSelectionRange', start, end);
@@ -6788,21 +7175,20 @@ class TextBoxComponent {
6788
7175
  });
6789
7176
  }
6790
7177
  }
6791
- get isFocused() {
6792
- return this._isFocused;
6793
- }
6794
- set isFocused(value) {
6795
- if (this._isFocused !== value && this.hostElement) {
6796
- const element = this.hostElement.nativeElement;
6797
- if (value && !this.disabled) {
6798
- this.renderer.addClass(element, FOCUSED$1);
6799
- }
6800
- else {
6801
- this.renderer.removeClass(element, FOCUSED$1);
7178
+ /**
7179
+ * @hidden
7180
+ */
7181
+ handleFocus() {
7182
+ this.ngZone.run(() => {
7183
+ if (!this.focusChangedProgrammatically && hasObservers(this.onFocus)) {
7184
+ this.onFocus.emit();
6802
7185
  }
6803
- this._isFocused = value;
6804
- }
7186
+ this.isFocused = true;
7187
+ });
6805
7188
  }
7189
+ /**
7190
+ * @hidden
7191
+ */
6806
7192
  handleBlur() {
6807
7193
  this.ngZone.run(() => {
6808
7194
  if (!this.focusChangedProgrammatically) {
@@ -6821,6 +7207,14 @@ class TextBoxComponent {
6821
7207
  this.renderer.addClass(elem, classes.toAdd);
6822
7208
  }
6823
7209
  }
7210
+ configureAdornments() {
7211
+ if (isPresent(this.textBoxPrefixTemplate.first)) {
7212
+ this.prefixTemplate = this.textBoxPrefixTemplate.first;
7213
+ }
7214
+ if (isPresent(this.textBoxSuffixTemplate.first)) {
7215
+ this.suffixTemplate = this.textBoxSuffixTemplate.first;
7216
+ }
7217
+ }
6824
7218
  }
6825
7219
  TextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
6826
7220
  TextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxComponent, selector: "kendo-textbox", inputs: { focusableId: "focusableId", title: "title", type: "type", disabled: "disabled", readonly: "readonly", tabindex: "tabindex", value: "value", selectOnFocus: "selectOnFocus", showSuccessIcon: "showSuccessIcon", showErrorIcon: "showErrorIcon", clearButton: "clearButton", successIcon: "successIcon", successSvgIcon: "successSvgIcon", errorIcon: "errorIcon", errorSvgIcon: "errorSvgIcon", clearButtonIcon: "clearButtonIcon", clearButtonSvgIcon: "clearButtonSvgIcon", size: "size", rounded: "rounded", fillMode: "fillMode", tabIndex: "tabIndex", placeholder: "placeholder", maxlength: "maxlength" }, outputs: { valueChange: "valueChange", inputFocus: "inputFocus", inputBlur: "inputBlur", onFocus: "focus", onBlur: "blur" }, host: { properties: { "class.k-disabled": "this.disabledClass", "class.k-textbox": "this.hostClasses", "class.k-input": "this.hostClasses", "attr.dir": "this.direction" } }, providers: [
@@ -6832,78 +7226,85 @@ TextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
6832
7226
  multi: true
6833
7227
  },
6834
7228
  { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent) }
6835
- ], queries: [{ propertyName: "suffixTemplate", first: true, predicate: TextBoxSuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: TextBoxPrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], exportAs: ["kendoTextBox"], usesOnChanges: true, ngImport: i0, template: `
7229
+ ], queries: [{ propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, descendants: true }, { propertyName: "textBoxSuffixTemplate", predicate: TextBoxSuffixTemplateDirective }, { propertyName: "textBoxPrefixTemplate", predicate: TextBoxPrefixTemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], exportAs: ["kendoTextBox"], usesOnChanges: true, ngImport: i0, template: `
6836
7230
  <ng-container kendoTextBoxLocalizedMessages
6837
7231
  i18n-clear="kendo.textbox.clear|The title for the **Clear** button in the TextBox."
6838
7232
  clear="Clear">
6839
7233
  </ng-container>
6840
- <span class="k-input-prefix">
6841
- <ng-template
6842
- *ngIf="prefixTemplate"
6843
- [ngTemplateOutlet]="prefixTemplate?.templateRef">
6844
- </ng-template>
6845
- </span>
6846
- <input #input
6847
- class="k-input-inner"
6848
- [id]="focusableId"
6849
- [disabled]="disabled"
6850
- [readonly]="readonly"
6851
- [attr.tabindex]="disabled ? undefined : tabindex"
6852
- [value]="value"
6853
- [attr.type]="type"
6854
- [attr.placeholder]="placeholder"
6855
- [attr.title]="title"
6856
- [attr.maxlength]="maxlength"
6857
- [attr.aria-invalid]="isControlInvalid"
6858
- [kendoEventsOutsideAngular]="{
6859
- focus: handleInputFocus,
6860
- blur: handleInputBlur,
6861
- input: handleInput}"
6862
- />
6863
- <span
6864
- role="button"
6865
- class="k-clear-value"
6866
- *ngIf="showClearButton"
6867
- (click)="clearValue()"
6868
- (mousedown)="$event.preventDefault()"
6869
- [tabindex]="tabIndex"
6870
- [attr.aria-label]="clearTitle()"
6871
- [title]="clearTitle()"
6872
- (keydown.enter)="clearValue($event)"
6873
- (keydown.space)="clearValue($event)">
6874
- <kendo-icon-wrapper
6875
- [name]="clearButtonClass"
6876
- [customFontClass]="customClearButtonClasses"
6877
- [svgIcon]="clearButtonSvgIcon || svgIcon('xIcon')"
6878
- >
6879
- </kendo-icon-wrapper>
6880
- </span>
6881
- <kendo-icon-wrapper
6882
- *ngIf="hasErrors"
6883
- innerCssClass="k-input-validation-icon"
6884
- [name]="errorIconClasses"
6885
- [customFontClass]="customIconClasses"
6886
- [svgIcon]="errorSvgIcon || svgIcon('exclamationCircleIcon')"
6887
- >
6888
- </kendo-icon-wrapper>
6889
- <kendo-icon-wrapper
6890
- *ngIf="isSuccessful"
6891
- innerCssClass="k-input-validation-icon"
6892
- [name]="successIconClasses"
6893
- [customFontClass]="customSuccessIconClasses"
6894
- [svgIcon]="successSvgIcon || svgIcon('checkIcon')"
7234
+ <ng-container
7235
+ kendoInputSharedEvents
7236
+ [hostElement]="hostElement"
7237
+ [(isFocused)]="isFocused"
7238
+ (handleBlur)="handleBlur()"
7239
+ (onFocus)="handleFocus()"
7240
+ [clearButtonClicked]="clearButtonClicked"
6895
7241
  >
6896
- </kendo-icon-wrapper>
6897
- <span class="k-input-suffix">
6898
- <ng-template
6899
- *ngIf="suffixTemplate"
6900
- [ngTemplateOutlet]="suffixTemplate?.templateRef">
6901
- </ng-template>
6902
- </span>
6903
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedTextBoxMessagesDirective, selector: "[kendoTextBoxLocalizedMessages]" }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
6904
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxComponent, decorators: [{
6905
- type: Component,
6906
- args: [{
7242
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
7243
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
7244
+ </ng-template>
7245
+ </span>
7246
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
7247
+ <input #input
7248
+ class="k-input-inner"
7249
+ [id]="focusableId"
7250
+ [disabled]="disabled"
7251
+ [readonly]="readonly"
7252
+ [attr.tabindex]="disabled ? undefined : tabindex"
7253
+ [value]="value"
7254
+ [attr.type]="type"
7255
+ [attr.placeholder]="placeholder"
7256
+ [attr.title]="title"
7257
+ [attr.maxlength]="maxlength"
7258
+ [attr.aria-invalid]="isControlInvalid"
7259
+ [kendoEventsOutsideAngular]="{
7260
+ focus: handleInputFocus,
7261
+ blur: handleInputBlur,
7262
+ input: handleInput}"
7263
+ />
7264
+ <span
7265
+ role="button"
7266
+ class="k-clear-value"
7267
+ *ngIf="showClearButton"
7268
+ (click)="clearValue()"
7269
+ (mousedown)="$event.preventDefault()"
7270
+ [tabindex]="tabIndex"
7271
+ [attr.aria-label]="clearTitle()"
7272
+ [title]="clearTitle()"
7273
+ (keydown.enter)="clearValue($event)"
7274
+ (keydown.space)="clearValue($event)">
7275
+ <kendo-icon-wrapper
7276
+ [name]="clearButtonClass"
7277
+ [customFontClass]="customClearButtonClasses"
7278
+ [svgIcon]="clearButtonSvgIcon || svgIcon('xIcon')"
7279
+ >
7280
+ </kendo-icon-wrapper>
7281
+ </span>
7282
+ <kendo-icon-wrapper
7283
+ *ngIf="hasErrors"
7284
+ innerCssClass="k-input-validation-icon"
7285
+ [name]="errorIconClasses"
7286
+ [customFontClass]="customIconClasses"
7287
+ [svgIcon]="errorSvgIcon || svgIcon('exclamationCircleIcon')"
7288
+ >
7289
+ </kendo-icon-wrapper>
7290
+ <kendo-icon-wrapper
7291
+ *ngIf="isSuccessful"
7292
+ innerCssClass="k-input-validation-icon"
7293
+ [name]="successIconClasses"
7294
+ [customFontClass]="customSuccessIconClasses"
7295
+ [svgIcon]="successSvgIcon || svgIcon('checkIcon')"
7296
+ >
7297
+ </kendo-icon-wrapper>
7298
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-input-separator>
7299
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
7300
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
7301
+ </ng-template>
7302
+ </span>
7303
+ <ng-container>
7304
+ `, isInline: true, components: [{ type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: ["orientation"] }, { type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedTextBoxMessagesDirective, selector: "[kendoTextBoxLocalizedMessages]" }, { type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
7305
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxComponent, decorators: [{
7306
+ type: Component,
7307
+ args: [{
6907
7308
  exportAs: 'kendoTextBox',
6908
7309
  providers: [
6909
7310
  LocalizationService,
@@ -6921,69 +7322,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6921
7322
  i18n-clear="kendo.textbox.clear|The title for the **Clear** button in the TextBox."
6922
7323
  clear="Clear">
6923
7324
  </ng-container>
6924
- <span class="k-input-prefix">
6925
- <ng-template
6926
- *ngIf="prefixTemplate"
6927
- [ngTemplateOutlet]="prefixTemplate?.templateRef">
6928
- </ng-template>
6929
- </span>
6930
- <input #input
6931
- class="k-input-inner"
6932
- [id]="focusableId"
6933
- [disabled]="disabled"
6934
- [readonly]="readonly"
6935
- [attr.tabindex]="disabled ? undefined : tabindex"
6936
- [value]="value"
6937
- [attr.type]="type"
6938
- [attr.placeholder]="placeholder"
6939
- [attr.title]="title"
6940
- [attr.maxlength]="maxlength"
6941
- [attr.aria-invalid]="isControlInvalid"
6942
- [kendoEventsOutsideAngular]="{
6943
- focus: handleInputFocus,
6944
- blur: handleInputBlur,
6945
- input: handleInput}"
6946
- />
6947
- <span
6948
- role="button"
6949
- class="k-clear-value"
6950
- *ngIf="showClearButton"
6951
- (click)="clearValue()"
6952
- (mousedown)="$event.preventDefault()"
6953
- [tabindex]="tabIndex"
6954
- [attr.aria-label]="clearTitle()"
6955
- [title]="clearTitle()"
6956
- (keydown.enter)="clearValue($event)"
6957
- (keydown.space)="clearValue($event)">
6958
- <kendo-icon-wrapper
6959
- [name]="clearButtonClass"
6960
- [customFontClass]="customClearButtonClasses"
6961
- [svgIcon]="clearButtonSvgIcon || svgIcon('xIcon')"
6962
- >
6963
- </kendo-icon-wrapper>
6964
- </span>
6965
- <kendo-icon-wrapper
6966
- *ngIf="hasErrors"
6967
- innerCssClass="k-input-validation-icon"
6968
- [name]="errorIconClasses"
6969
- [customFontClass]="customIconClasses"
6970
- [svgIcon]="errorSvgIcon || svgIcon('exclamationCircleIcon')"
7325
+ <ng-container
7326
+ kendoInputSharedEvents
7327
+ [hostElement]="hostElement"
7328
+ [(isFocused)]="isFocused"
7329
+ (handleBlur)="handleBlur()"
7330
+ (onFocus)="handleFocus()"
7331
+ [clearButtonClicked]="clearButtonClicked"
6971
7332
  >
6972
- </kendo-icon-wrapper>
6973
- <kendo-icon-wrapper
6974
- *ngIf="isSuccessful"
6975
- innerCssClass="k-input-validation-icon"
6976
- [name]="successIconClasses"
6977
- [customFontClass]="customSuccessIconClasses"
6978
- [svgIcon]="successSvgIcon || svgIcon('checkIcon')"
6979
- >
6980
- </kendo-icon-wrapper>
6981
- <span class="k-input-suffix">
6982
- <ng-template
6983
- *ngIf="suffixTemplate"
6984
- [ngTemplateOutlet]="suffixTemplate?.templateRef">
6985
- </ng-template>
6986
- </span>
7333
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
7334
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
7335
+ </ng-template>
7336
+ </span>
7337
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
7338
+ <input #input
7339
+ class="k-input-inner"
7340
+ [id]="focusableId"
7341
+ [disabled]="disabled"
7342
+ [readonly]="readonly"
7343
+ [attr.tabindex]="disabled ? undefined : tabindex"
7344
+ [value]="value"
7345
+ [attr.type]="type"
7346
+ [attr.placeholder]="placeholder"
7347
+ [attr.title]="title"
7348
+ [attr.maxlength]="maxlength"
7349
+ [attr.aria-invalid]="isControlInvalid"
7350
+ [kendoEventsOutsideAngular]="{
7351
+ focus: handleInputFocus,
7352
+ blur: handleInputBlur,
7353
+ input: handleInput}"
7354
+ />
7355
+ <span
7356
+ role="button"
7357
+ class="k-clear-value"
7358
+ *ngIf="showClearButton"
7359
+ (click)="clearValue()"
7360
+ (mousedown)="$event.preventDefault()"
7361
+ [tabindex]="tabIndex"
7362
+ [attr.aria-label]="clearTitle()"
7363
+ [title]="clearTitle()"
7364
+ (keydown.enter)="clearValue($event)"
7365
+ (keydown.space)="clearValue($event)">
7366
+ <kendo-icon-wrapper
7367
+ [name]="clearButtonClass"
7368
+ [customFontClass]="customClearButtonClasses"
7369
+ [svgIcon]="clearButtonSvgIcon || svgIcon('xIcon')"
7370
+ >
7371
+ </kendo-icon-wrapper>
7372
+ </span>
7373
+ <kendo-icon-wrapper
7374
+ *ngIf="hasErrors"
7375
+ innerCssClass="k-input-validation-icon"
7376
+ [name]="errorIconClasses"
7377
+ [customFontClass]="customIconClasses"
7378
+ [svgIcon]="errorSvgIcon || svgIcon('exclamationCircleIcon')"
7379
+ >
7380
+ </kendo-icon-wrapper>
7381
+ <kendo-icon-wrapper
7382
+ *ngIf="isSuccessful"
7383
+ innerCssClass="k-input-validation-icon"
7384
+ [name]="successIconClasses"
7385
+ [customFontClass]="customSuccessIconClasses"
7386
+ [svgIcon]="successSvgIcon || svgIcon('checkIcon')"
7387
+ >
7388
+ </kendo-icon-wrapper>
7389
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-input-separator>
7390
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
7391
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
7392
+ </ng-template>
7393
+ </span>
7394
+ <ng-container>
6987
7395
  `
6988
7396
  }]
6989
7397
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{
@@ -7047,12 +7455,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7047
7455
  }], input: [{
7048
7456
  type: ViewChild,
7049
7457
  args: ['input', { static: true }]
7458
+ }], textBoxSuffixTemplate: [{
7459
+ type: ContentChildren,
7460
+ args: [TextBoxSuffixTemplateDirective, { descendants: false }]
7461
+ }], textBoxPrefixTemplate: [{
7462
+ type: ContentChildren,
7463
+ args: [TextBoxPrefixTemplateDirective, { descendants: false }]
7050
7464
  }], suffixTemplate: [{
7051
7465
  type: ContentChild,
7052
- args: [TextBoxSuffixTemplateDirective, { static: false }]
7466
+ args: [SuffixTemplateDirective]
7053
7467
  }], prefixTemplate: [{
7054
7468
  type: ContentChild,
7055
- args: [TextBoxPrefixTemplateDirective, { static: false }]
7469
+ args: [PrefixTemplateDirective]
7056
7470
  }], disabledClass: [{
7057
7471
  type: HostBinding,
7058
7472
  args: ['class.k-disabled']
@@ -7100,67 +7514,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7100
7514
  }]
7101
7515
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
7102
7516
 
7103
- /**
7104
- * Specifies a separator in the content of components like the TextArea and the TextBox. ([see examples]({% slug adornments_textbox %}#toc-separator)).
7105
- * @example
7106
- * ```ts-no-run
7107
- * _@Component({
7108
- * selector: 'my-app',
7109
- * template: `
7110
- * <kendo-textbox>
7111
- * <ng-template kendoTextBoxSuffixTemplate>
7112
- * <kendo-input-separator></kendo-input-separator>
7113
- * <button kendoButton look="clear" icon="image"></button>
7114
- * </ng-template>
7115
- * </kendo-textbox>
7116
- * `
7117
- * })
7118
- * class AppComponent {}
7119
- * ```
7120
- */
7121
- class InputSeparatorComponent {
7122
- constructor() {
7123
- this.hostClass = true;
7124
- }
7125
- }
7126
- InputSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: InputSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7127
- InputSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", host: { properties: { "class.k-input-separator": "this.hostClass" } }, ngImport: i0, template: ``, isInline: true });
7128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: InputSeparatorComponent, decorators: [{
7129
- type: Component,
7130
- args: [{
7131
- selector: 'kendo-input-separator, kendo-textbox-separator',
7132
- template: ``
7133
- }]
7134
- }], propDecorators: { hostClass: [{
7135
- type: HostBinding,
7136
- args: ['class.k-input-separator']
7137
- }] } });
7138
-
7139
- /**
7140
- * @hidden
7141
- */
7142
- const SHARED_DIRECTIVES = [
7143
- InputSeparatorComponent,
7144
- TextAreaDirective
7145
- ];
7146
- /**
7147
- * @hidden
7148
- */
7149
- class SharedModule {
7150
- }
7151
- SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7152
- SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, declarations: [InputSeparatorComponent,
7153
- TextAreaDirective], exports: [InputSeparatorComponent,
7154
- TextAreaDirective] });
7155
- SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule });
7156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, decorators: [{
7157
- type: NgModule,
7158
- args: [{
7159
- declarations: [SHARED_DIRECTIVES],
7160
- exports: [SHARED_DIRECTIVES]
7161
- }]
7162
- }] });
7163
-
7164
7517
  /**
7165
7518
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
7166
7519
  * definition for the TextBox directive.
@@ -7200,14 +7553,16 @@ TextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
7200
7553
  TextBoxSuffixTemplateDirective,
7201
7554
  TextBoxPrefixTemplateDirective,
7202
7555
  TextBoxCustomMessagesComponent,
7203
- LocalizedTextBoxMessagesDirective], imports: [CommonModule, EventsModule, SharedModule, IconsModule], exports: [TextBoxDirective,
7556
+ LocalizedTextBoxMessagesDirective], imports: [CommonModule, EventsModule, SharedModule, IconsModule, AdornmentsModule, SharedEventsModule], exports: [TextBoxDirective,
7204
7557
  TextBoxComponent,
7205
7558
  TextBoxSuffixTemplateDirective,
7206
7559
  TextBoxPrefixTemplateDirective,
7207
7560
  EventsModule,
7208
7561
  TextBoxCustomMessagesComponent,
7209
- LocalizedTextBoxMessagesDirective, InputSeparatorComponent, TextAreaDirective] });
7210
- TextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxModule, imports: [[CommonModule, EventsModule, SharedModule, IconsModule], EventsModule] });
7562
+ LocalizedTextBoxMessagesDirective,
7563
+ AdornmentsModule, InputSeparatorComponent, TextAreaDirective] });
7564
+ TextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxModule, imports: [[CommonModule, EventsModule, SharedModule, IconsModule, AdornmentsModule, SharedEventsModule], EventsModule,
7565
+ AdornmentsModule] });
7211
7566
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxModule, decorators: [{
7212
7567
  type: NgModule,
7213
7568
  args: [{
@@ -7227,9 +7582,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7227
7582
  EventsModule,
7228
7583
  TextBoxCustomMessagesComponent,
7229
7584
  LocalizedTextBoxMessagesDirective,
7585
+ AdornmentsModule,
7230
7586
  SHARED_DIRECTIVES
7231
7587
  ],
7232
- imports: [CommonModule, EventsModule, SharedModule, IconsModule]
7588
+ imports: [CommonModule, EventsModule, SharedModule, IconsModule, AdornmentsModule, SharedEventsModule]
7233
7589
  }]
7234
7590
  }] });
7235
7591
 
@@ -7351,6 +7707,136 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7351
7707
  args: ['attr.dir']
7352
7708
  }] } });
7353
7709
 
7710
+ /**
7711
+ * Specifies the adornments in the prefix container ([see example]({% slug textarea_adornments %})).
7712
+ * ```ts-no-run
7713
+ * _@Component({
7714
+ * selector: 'my-app',
7715
+ * template: `
7716
+ * <kendo-textarea>
7717
+ * <kendo-textarea-prefix>
7718
+ * <button kendoButton look="clear" icon="image"></button>
7719
+ * </kendo-textarea-prefix>
7720
+ * </kendo-textarea>
7721
+ * `
7722
+ * })
7723
+ * class AppComponent {}
7724
+ * ```
7725
+ */
7726
+ class TextAreaPrefixComponent {
7727
+ constructor() {
7728
+ /**
7729
+ * @hidden
7730
+ */
7731
+ this.flow = 'vertical';
7732
+ /**
7733
+ * @hidden
7734
+ */
7735
+ this.orientation = 'horizontal';
7736
+ this.hostClass = true;
7737
+ }
7738
+ get verticalOrientation() {
7739
+ return this.orientation === 'vertical';
7740
+ }
7741
+ get horizontalOrientation() {
7742
+ return this.orientation === 'horizontal';
7743
+ }
7744
+ get alignItems() {
7745
+ return this.flow === this.orientation;
7746
+ }
7747
+ }
7748
+ TextAreaPrefixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaPrefixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7749
+ TextAreaPrefixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaPrefixComponent, selector: "kendo-textarea-prefix", inputs: { flow: "flow", orientation: "orientation" }, host: { properties: { "class.k-input-prefix": "this.hostClass", "class.k-input-prefix-vertical": "this.verticalOrientation", "class.k-input-prefix-horizontal": "this.horizontalOrientation", "class.!k-align-items-start": "this.alignItems" } }, exportAs: ["kendoTextAreaPrefix"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
7750
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaPrefixComponent, decorators: [{
7751
+ type: Component,
7752
+ args: [{
7753
+ exportAs: 'kendoTextAreaPrefix',
7754
+ selector: 'kendo-textarea-prefix',
7755
+ template: `<ng-content></ng-content>`
7756
+ }]
7757
+ }], propDecorators: { flow: [{
7758
+ type: Input
7759
+ }], orientation: [{
7760
+ type: Input
7761
+ }], hostClass: [{
7762
+ type: HostBinding,
7763
+ args: ['class.k-input-prefix']
7764
+ }], verticalOrientation: [{
7765
+ type: HostBinding,
7766
+ args: ['class.k-input-prefix-vertical']
7767
+ }], horizontalOrientation: [{
7768
+ type: HostBinding,
7769
+ args: ['class.k-input-prefix-horizontal']
7770
+ }], alignItems: [{
7771
+ type: HostBinding,
7772
+ args: ['class.!k-align-items-start']
7773
+ }] } });
7774
+
7775
+ /**
7776
+ * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %})).
7777
+ * ```ts-no-run
7778
+ * _@Component({
7779
+ * selector: 'my-app',
7780
+ * template: `
7781
+ * <kendo-textarea>
7782
+ * <kendo-textarea-suffix>
7783
+ * <button kendoButton look="clear" icon="image"></button>
7784
+ * </kendo-textarea-suffix>
7785
+ * </kendo-textarea>
7786
+ * `
7787
+ * })
7788
+ * class AppComponent {}
7789
+ * ```
7790
+ */
7791
+ class TextAreaSuffixComponent {
7792
+ constructor() {
7793
+ /**
7794
+ * @hidden
7795
+ */
7796
+ this.flow = 'vertical';
7797
+ /**
7798
+ * @hidden
7799
+ */
7800
+ this.orientation = 'horizontal';
7801
+ this.hostClass = true;
7802
+ }
7803
+ get verticalOrientation() {
7804
+ return this.orientation === 'vertical';
7805
+ }
7806
+ get horizontalOrientation() {
7807
+ return this.orientation === 'horizontal';
7808
+ }
7809
+ get alignItems() {
7810
+ return this.flow === this.orientation;
7811
+ }
7812
+ }
7813
+ TextAreaSuffixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaSuffixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7814
+ TextAreaSuffixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaSuffixComponent, selector: "kendo-textarea-suffix", inputs: { flow: "flow", orientation: "orientation" }, host: { properties: { "class.k-input-suffix": "this.hostClass", "class.k-input-suffix-vertical": "this.verticalOrientation", "class.k-input-suffix-horizontal": "this.horizontalOrientation", "class.!k-align-items-start": "this.alignItems" } }, exportAs: ["kendoTextAreaSuffix"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
7815
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaSuffixComponent, decorators: [{
7816
+ type: Component,
7817
+ args: [{
7818
+ exportAs: 'kendoTextAreaSuffix',
7819
+ selector: 'kendo-textarea-suffix',
7820
+ template: `<ng-content></ng-content>`
7821
+ }]
7822
+ }], propDecorators: { flow: [{
7823
+ type: Input
7824
+ }], orientation: [{
7825
+ type: Input
7826
+ }], hostClass: [{
7827
+ type: HostBinding,
7828
+ args: ['class.k-input-suffix']
7829
+ }], verticalOrientation: [{
7830
+ type: HostBinding,
7831
+ args: ['class.k-input-suffix-vertical']
7832
+ }], horizontalOrientation: [{
7833
+ type: HostBinding,
7834
+ args: ['class.k-input-suffix-horizontal']
7835
+ }], alignItems: [{
7836
+ type: HostBinding,
7837
+ args: ['class.!k-align-items-start']
7838
+ }] } });
7839
+
7354
7840
  const resizeClasses = {
7355
7841
  'vertical': 'k-resize-y',
7356
7842
  'horizontal': 'k-resize-x',
@@ -7379,15 +7865,7 @@ class TextAreaComponent extends TextFieldsBase {
7379
7865
  */
7380
7866
  this.focusableId = `k-${guid()}`;
7381
7867
  this.hostClasses = true;
7382
- /**
7383
- * Specifies the flow direction of the TextArea sections. This property is useful when adornments are used, in order to specify
7384
- * their position in relation to the textarea element.
7385
- *
7386
- * The possible values are:
7387
- * * `vertical`(Default) &mdash;TextArea sections are placed from top to bottom.
7388
- * * `horizontal`&mdash;TextArea sections are placed from left to right in `ltr`, and from right to left in `rtl` mode.
7389
- */
7390
- this.flow = 'vertical';
7868
+ this._flow = 'vertical';
7391
7869
  /**
7392
7870
  * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
7393
7871
  */
@@ -7404,6 +7882,20 @@ class TextAreaComponent extends TextFieldsBase {
7404
7882
  *
7405
7883
  */
7406
7884
  this.resizable = 'vertical';
7885
+ /**
7886
+ * Specifies whether the prefix separator of the TextArea is rendered.
7887
+ * If a prefix template is not declared, the separator will not be rendered, regardless of the parameter value.
7888
+ *
7889
+ * @default false
7890
+ */
7891
+ this.showPrefixSeparator = false;
7892
+ /**
7893
+ * Specifies whether the suffix separator of the TextArea is rendered.
7894
+ * If a suffix template is not declared, the separator will not be rendered, regardless of the parameter value.
7895
+ *
7896
+ * @default false
7897
+ */
7898
+ this.showSuffixSeparator = false;
7407
7899
  /**
7408
7900
  * Fires each time the user focuses the TextArea component.
7409
7901
  *
@@ -7455,6 +7947,7 @@ class TextAreaComponent extends TextFieldsBase {
7455
7947
  this._size = 'medium';
7456
7948
  this._rounded = 'medium';
7457
7949
  this._fillMode = 'solid';
7950
+ this._adornmentsOrientation = 'horizontal';
7458
7951
  /**
7459
7952
  * @hidden
7460
7953
  */
@@ -7473,12 +7966,8 @@ class TextAreaComponent extends TextFieldsBase {
7473
7966
  setTimeout(() => { this.selectAll(); });
7474
7967
  });
7475
7968
  }
7476
- if (hasObservers(this.onFocus)) {
7477
- if (!this.isFocused) {
7478
- this.ngZone.run(() => {
7479
- this.onFocus.emit();
7480
- });
7481
- }
7969
+ if (!this.isFocused) {
7970
+ this.handleFocus();
7482
7971
  }
7483
7972
  if (hasObservers(this.inputFocus)) {
7484
7973
  if (!this.focusChangedProgrammatically) {
@@ -7487,9 +7976,6 @@ class TextAreaComponent extends TextFieldsBase {
7487
7976
  });
7488
7977
  }
7489
7978
  }
7490
- this.ngZone.run(() => {
7491
- this.isFocused = true;
7492
- });
7493
7979
  }
7494
7980
  };
7495
7981
  validatePackage(packageMetadata);
@@ -7501,6 +7987,46 @@ class TextAreaComponent extends TextFieldsBase {
7501
7987
  get flowRow() {
7502
7988
  return this.flow === 'horizontal';
7503
7989
  }
7990
+ /**
7991
+ * Specifies the flow direction of the TextArea sections. This property is useful when adornments are used, in order to specify
7992
+ * their position in relation to the textarea element.
7993
+ *
7994
+ * The possible values are:
7995
+ * * `vertical`(Default) &mdash;TextArea sections are placed from top to bottom.
7996
+ * * `horizontal`&mdash;TextArea sections are placed from left to right in `ltr`, and from right to left in `rtl` mode.
7997
+ */
7998
+ set flow(flow) {
7999
+ this._flow = flow;
8000
+ if (this.prefix) {
8001
+ this.prefix.flow = flow;
8002
+ }
8003
+ if (this.suffix) {
8004
+ this.suffix.flow = flow;
8005
+ }
8006
+ }
8007
+ get flow() {
8008
+ return this._flow;
8009
+ }
8010
+ /**
8011
+ * Specifies the orientation of the TextArea adornments. This property is used in order to specify
8012
+ * the adornments' position relative to themselves.
8013
+ *
8014
+ * The possible values are:
8015
+ * * `horizontal`(Default) &mdash;TextArea adornments are placed from left to right in `ltr`, and from right to left in `rtl` mode.
8016
+ * * `vertical`&mdash;TextArea adornments are placed from top to bottom.
8017
+ */
8018
+ set adornmentsOrientation(orientation) {
8019
+ this._adornmentsOrientation = orientation;
8020
+ if (this.prefix) {
8021
+ this.prefix.orientation = orientation;
8022
+ }
8023
+ if (this.suffix) {
8024
+ this.suffix.orientation = orientation;
8025
+ }
8026
+ }
8027
+ get adornmentsOrientation() {
8028
+ return this._adornmentsOrientation;
8029
+ }
7504
8030
  /**
7505
8031
  * @hidden
7506
8032
  */
@@ -7565,50 +8091,7 @@ class TextAreaComponent extends TextFieldsBase {
7565
8091
  return this._fillMode;
7566
8092
  }
7567
8093
  ngAfterViewInit() {
7568
- const hostElement = this.hostElement.nativeElement;
7569
- let cursorInsideWrapper = false;
7570
- let tabbing = false;
7571
8094
  this.ngZone.runOutsideAngular(() => {
7572
- // focusIn and focusOut are relative to the host element
7573
- this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {
7574
- if (!this.isFocused) {
7575
- this.ngZone.run(() => {
7576
- this.onFocus.emit();
7577
- this.isFocused = true;
7578
- });
7579
- }
7580
- }));
7581
- this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {
7582
- if (!this.isFocused) {
7583
- return;
7584
- }
7585
- if (tabbing) {
7586
- const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);
7587
- if (!closestTextbox) {
7588
- this.handleBlur();
7589
- }
7590
- tabbing = false;
7591
- }
7592
- else {
7593
- if (!cursorInsideWrapper) {
7594
- this.handleBlur();
7595
- }
7596
- }
7597
- }));
7598
- this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {
7599
- cursorInsideWrapper = true;
7600
- }));
7601
- this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {
7602
- cursorInsideWrapper = false;
7603
- }));
7604
- this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
7605
- if (args.keyCode === Keys.Tab) {
7606
- tabbing = true;
7607
- }
7608
- else {
7609
- tabbing = false;
7610
- }
7611
- }));
7612
8095
  this.handleFlow();
7613
8096
  });
7614
8097
  const stylingInputs = ['size', 'rounded', 'fillMode'];
@@ -7705,6 +8188,33 @@ class TextAreaComponent extends TextFieldsBase {
7705
8188
  get isControlInvalid() {
7706
8189
  return this.control && this.control.touched && !this.control.valid;
7707
8190
  }
8191
+ /**
8192
+ * @hidden
8193
+ */
8194
+ get separatorOrientation() {
8195
+ return this.flow === 'horizontal' ? 'vertical' : 'horizontal';
8196
+ }
8197
+ /**
8198
+ * @hidden
8199
+ */
8200
+ get isFocused() {
8201
+ return this._isFocused;
8202
+ }
8203
+ /**
8204
+ * @hidden
8205
+ */
8206
+ set isFocused(value) {
8207
+ if (this._isFocused !== value && this.hostElement) {
8208
+ const element = this.hostElement.nativeElement;
8209
+ if (value && !this.disabled) {
8210
+ this.renderer.addClass(element, FOCUSED);
8211
+ }
8212
+ else {
8213
+ this.renderer.removeClass(element, FOCUSED);
8214
+ }
8215
+ this._isFocused = value;
8216
+ }
8217
+ }
7708
8218
  /**
7709
8219
  * Focuses the TextArea component.
7710
8220
  *
@@ -7760,21 +8270,20 @@ class TextAreaComponent extends TextFieldsBase {
7760
8270
  }, 0);
7761
8271
  });
7762
8272
  }
7763
- get isFocused() {
7764
- return this._isFocused;
7765
- }
7766
- set isFocused(value) {
7767
- if (this._isFocused !== value && this.hostElement) {
7768
- const element = this.hostElement.nativeElement;
7769
- if (value && !this.disabled) {
7770
- this.renderer.addClass(element, FOCUSED);
7771
- }
7772
- else {
7773
- this.renderer.removeClass(element, FOCUSED);
8273
+ /**
8274
+ * @hidden
8275
+ */
8276
+ handleFocus() {
8277
+ this.ngZone.run(() => {
8278
+ if (!this.focusChangedProgrammatically && hasObservers(this.onFocus)) {
8279
+ this.onFocus.emit();
7774
8280
  }
7775
- this._isFocused = value;
7776
- }
8281
+ this.isFocused = true;
8282
+ });
7777
8283
  }
8284
+ /**
8285
+ * @hidden
8286
+ */
7778
8287
  handleBlur() {
7779
8288
  this.ngZone.run(() => {
7780
8289
  if (!this.focusChangedProgrammatically) {
@@ -7805,17 +8314,12 @@ class TextAreaComponent extends TextFieldsBase {
7805
8314
  }
7806
8315
  handleFlow() {
7807
8316
  const isVertical = this.flow === 'vertical';
7808
- const hostElement = this.hostElement.nativeElement;
7809
8317
  const element = this.input.nativeElement;
7810
- const suffix = hostElement.children[1];
7811
8318
  this.renderer[isVertical ? 'addClass' : 'removeClass'](element, '\!k-flex-none');
7812
- if (suffix) {
7813
- this.renderer[isVertical ? 'removeClass' : 'addClass'](suffix, '\!k-align-items-start');
7814
- }
7815
8319
  }
7816
8320
  }
7817
8321
  TextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
7818
- TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaComponent, selector: "kendo-textarea", inputs: { focusableId: "focusableId", flow: "flow", rows: "rows", cols: "cols", maxlength: "maxlength", tabindex: "tabindex", tabIndex: "tabIndex", resizable: "resizable", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { onFocus: "focus", onBlur: "blur", valueChange: "valueChange" }, host: { properties: { "class.k-textarea": "this.hostClasses", "class.k-input": "this.hostClasses", "class.!k-flex-col": "this.flowCol", "class.!k-flex-row": "this.flowRow" } }, providers: [
8322
+ TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaComponent, selector: "kendo-textarea", inputs: { focusableId: "focusableId", flow: "flow", adornmentsOrientation: "adornmentsOrientation", rows: "rows", cols: "cols", maxlength: "maxlength", tabindex: "tabindex", tabIndex: "tabIndex", resizable: "resizable", size: "size", rounded: "rounded", fillMode: "fillMode", showPrefixSeparator: "showPrefixSeparator", showSuffixSeparator: "showSuffixSeparator" }, outputs: { onFocus: "focus", onBlur: "blur", valueChange: "valueChange" }, host: { properties: { "class.k-textarea": "this.hostClasses", "class.k-input": "this.hostClasses", "class.!k-flex-col": "this.flowCol", "class.!k-flex-row": "this.flowRow" } }, providers: [
7819
8323
  LocalizationService,
7820
8324
  { provide: L10N_PREFIX, useValue: 'kendo.textarea' },
7821
8325
  {
@@ -7824,32 +8328,49 @@ TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
7824
8328
  multi: true
7825
8329
  },
7826
8330
  { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent) }
7827
- ], exportAs: ["kendoTextArea"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
7828
- <textarea
7829
- #input
7830
- [attr.aria-multiline]="true"
7831
- [attr.aria-disabled]="disabled ? true : undefined"
7832
- [attr.aria-readonly]="readonly ? true : undefined"
7833
- class="k-input-inner !k-overflow-auto"
7834
- [ngClass]="resizableClass"
7835
- [id]="focusableId"
7836
- [value]="value"
7837
- [attr.placeholder]="placeholder"
7838
- [disabled]="disabled"
7839
- [readonly]="readonly"
7840
- [attr.rows]="rows"
7841
- [attr.cols]="cols"
7842
- [attr.tabindex]="tabIndex"
7843
- [attr.title]="title"
7844
- [attr.maxlength]="maxlength"
7845
- [attr.aria-invalid]="isControlInvalid"
7846
- [kendoEventsOutsideAngular]="{
7847
- focus: handleInputFocus,
7848
- blur: handleInputBlur,
7849
- input: handleInput}">
8331
+ ], queries: [{ propertyName: "prefix", first: true, predicate: TextAreaPrefixComponent, descendants: true }, { propertyName: "suffix", first: true, predicate: TextAreaSuffixComponent, descendants: true }], exportAs: ["kendoTextArea"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
8332
+ <ng-container
8333
+ kendoInputSharedEvents
8334
+ [hostElement]="hostElement"
8335
+ [(isFocused)]="isFocused"
8336
+ (handleBlur)="handleBlur()"
8337
+ (onFocus)="handleFocus()"
8338
+ >
8339
+ <ng-content select="kendo-textarea-prefix"></ng-content>
8340
+ <kendo-input-separator
8341
+ *ngIf="prefix && showPrefixSeparator"
8342
+ [orientation]="separatorOrientation"
8343
+ ></kendo-input-separator>
8344
+ <textarea
8345
+ #input
8346
+ [attr.aria-multiline]="true"
8347
+ [attr.aria-disabled]="disabled ? true : undefined"
8348
+ [attr.aria-readonly]="readonly ? true : undefined"
8349
+ class="k-input-inner !k-overflow-auto"
8350
+ [ngClass]="resizableClass"
8351
+ [id]="focusableId"
8352
+ [value]="value"
8353
+ [attr.placeholder]="placeholder"
8354
+ [disabled]="disabled"
8355
+ [readonly]="readonly"
8356
+ [attr.rows]="rows"
8357
+ [attr.cols]="cols"
8358
+ [attr.tabindex]="tabIndex"
8359
+ [attr.title]="title"
8360
+ [attr.maxlength]="maxlength"
8361
+ [attr.aria-invalid]="isControlInvalid"
8362
+ [kendoEventsOutsideAngular]="{
8363
+ focus: handleInputFocus,
8364
+ blur: handleInputBlur,
8365
+ input: handleInput}">
7850
8366
  </textarea>
8367
+ <kendo-input-separator
8368
+ *ngIf="suffix && showSuffixSeparator"
8369
+ [orientation]="separatorOrientation"
8370
+ ></kendo-input-separator>
7851
8371
  <ng-content select="kendo-textarea-suffix"></ng-content>
7852
- `, isInline: true, directives: [{ type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
8372
+ </ng-container>
8373
+ `, isInline: true, components: [{ type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: ["orientation"] }], directives: [{ type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
7853
8374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaComponent, decorators: [{
7854
8375
  type: Component,
7855
8376
  args: [{
@@ -7866,30 +8387,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7866
8387
  ],
7867
8388
  selector: 'kendo-textarea',
7868
8389
  template: `
7869
- <textarea
7870
- #input
7871
- [attr.aria-multiline]="true"
7872
- [attr.aria-disabled]="disabled ? true : undefined"
7873
- [attr.aria-readonly]="readonly ? true : undefined"
7874
- class="k-input-inner !k-overflow-auto"
7875
- [ngClass]="resizableClass"
7876
- [id]="focusableId"
7877
- [value]="value"
7878
- [attr.placeholder]="placeholder"
7879
- [disabled]="disabled"
7880
- [readonly]="readonly"
7881
- [attr.rows]="rows"
7882
- [attr.cols]="cols"
7883
- [attr.tabindex]="tabIndex"
7884
- [attr.title]="title"
7885
- [attr.maxlength]="maxlength"
7886
- [attr.aria-invalid]="isControlInvalid"
7887
- [kendoEventsOutsideAngular]="{
7888
- focus: handleInputFocus,
7889
- blur: handleInputBlur,
7890
- input: handleInput}">
8390
+ <ng-container
8391
+ kendoInputSharedEvents
8392
+ [hostElement]="hostElement"
8393
+ [(isFocused)]="isFocused"
8394
+ (handleBlur)="handleBlur()"
8395
+ (onFocus)="handleFocus()"
8396
+ >
8397
+ <ng-content select="kendo-textarea-prefix"></ng-content>
8398
+ <kendo-input-separator
8399
+ *ngIf="prefix && showPrefixSeparator"
8400
+ [orientation]="separatorOrientation"
8401
+ ></kendo-input-separator>
8402
+ <textarea
8403
+ #input
8404
+ [attr.aria-multiline]="true"
8405
+ [attr.aria-disabled]="disabled ? true : undefined"
8406
+ [attr.aria-readonly]="readonly ? true : undefined"
8407
+ class="k-input-inner !k-overflow-auto"
8408
+ [ngClass]="resizableClass"
8409
+ [id]="focusableId"
8410
+ [value]="value"
8411
+ [attr.placeholder]="placeholder"
8412
+ [disabled]="disabled"
8413
+ [readonly]="readonly"
8414
+ [attr.rows]="rows"
8415
+ [attr.cols]="cols"
8416
+ [attr.tabindex]="tabIndex"
8417
+ [attr.title]="title"
8418
+ [attr.maxlength]="maxlength"
8419
+ [attr.aria-invalid]="isControlInvalid"
8420
+ [kendoEventsOutsideAngular]="{
8421
+ focus: handleInputFocus,
8422
+ blur: handleInputBlur,
8423
+ input: handleInput}">
7891
8424
  </textarea>
8425
+ <kendo-input-separator
8426
+ *ngIf="suffix && showSuffixSeparator"
8427
+ [orientation]="separatorOrientation"
8428
+ ></kendo-input-separator>
7892
8429
  <ng-content select="kendo-textarea-suffix"></ng-content>
8430
+ </ng-container>
7893
8431
  `
7894
8432
  }]
7895
8433
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{
@@ -7908,6 +8446,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7908
8446
  args: ['class.\!k-flex-row']
7909
8447
  }], flow: [{
7910
8448
  type: Input
8449
+ }], adornmentsOrientation: [{
8450
+ type: Input
7911
8451
  }], rows: [{
7912
8452
  type: Input
7913
8453
  }], cols: [{
@@ -7926,6 +8466,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7926
8466
  type: Input
7927
8467
  }], fillMode: [{
7928
8468
  type: Input
8469
+ }], showPrefixSeparator: [{
8470
+ type: Input
8471
+ }], showSuffixSeparator: [{
8472
+ type: Input
7929
8473
  }], onFocus: [{
7930
8474
  type: Output,
7931
8475
  args: ['focus']
@@ -7934,41 +8478,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7934
8478
  args: ['blur']
7935
8479
  }], valueChange: [{
7936
8480
  type: Output
7937
- }] } });
7938
-
7939
- /**
7940
- * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %})).
7941
- * ```ts-no-run
7942
- * _@Component({
7943
- * selector: 'my-app',
7944
- * template: `
7945
- * <kendo-textarea>
7946
- * <kendo-textarea-suffix>
7947
- * <button kendoButton look="clear" icon="image"></button>
7948
- * </kendo-textarea-suffix>
7949
- * </kendo-textarea>
7950
- * `
7951
- * })
7952
- * class AppComponent {}
7953
- * ```
7954
- */
7955
- class TextAreaSuffixComponent {
7956
- constructor() {
7957
- this.hostClass = true;
7958
- }
7959
- }
7960
- TextAreaSuffixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaSuffixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7961
- TextAreaSuffixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaSuffixComponent, selector: "kendo-textarea-suffix", host: { properties: { "class.k-input-suffix": "this.hostClass" } }, exportAs: ["kendoTextAreaSuffix"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
7962
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaSuffixComponent, decorators: [{
7963
- type: Component,
7964
- args: [{
7965
- exportAs: 'kendoTextAreaSuffix',
7966
- selector: 'kendo-textarea-suffix',
7967
- template: `<ng-content></ng-content>`
7968
- }]
7969
- }], propDecorators: { hostClass: [{
7970
- type: HostBinding,
7971
- args: ['class.k-input-suffix']
8481
+ }], prefix: [{
8482
+ type: ContentChild,
8483
+ args: [TextAreaPrefixComponent]
8484
+ }], suffix: [{
8485
+ type: ContentChild,
8486
+ args: [TextAreaSuffixComponent]
7972
8487
  }] } });
7973
8488
 
7974
8489
  /**
@@ -8006,24 +8521,31 @@ class TextAreaModule {
8006
8521
  }
8007
8522
  TextAreaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8008
8523
  TextAreaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, declarations: [TextAreaComponent,
8009
- TextAreaSuffixComponent], imports: [CommonModule, EventsModule, SharedModule], exports: [TextAreaComponent,
8524
+ TextAreaPrefixComponent,
8525
+ TextAreaSuffixComponent], imports: [CommonModule, EventsModule, SharedModule, AdornmentsModule, SharedEventsModule], exports: [TextAreaComponent,
8010
8526
  EventsModule,
8011
- TextAreaSuffixComponent, InputSeparatorComponent, TextAreaDirective] });
8012
- TextAreaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });
8527
+ TextAreaPrefixComponent,
8528
+ TextAreaSuffixComponent,
8529
+ AdornmentsModule, InputSeparatorComponent, TextAreaDirective] });
8530
+ TextAreaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, imports: [[CommonModule, EventsModule, SharedModule, AdornmentsModule, SharedEventsModule], EventsModule,
8531
+ AdornmentsModule] });
8013
8532
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, decorators: [{
8014
8533
  type: NgModule,
8015
8534
  args: [{
8016
8535
  declarations: [
8017
8536
  TextAreaComponent,
8537
+ TextAreaPrefixComponent,
8018
8538
  TextAreaSuffixComponent
8019
8539
  ],
8020
8540
  exports: [
8021
8541
  TextAreaComponent,
8022
8542
  EventsModule,
8543
+ TextAreaPrefixComponent,
8023
8544
  TextAreaSuffixComponent,
8545
+ AdornmentsModule,
8024
8546
  SHARED_DIRECTIVES
8025
8547
  ],
8026
- imports: [CommonModule, EventsModule, SharedModule]
8548
+ imports: [CommonModule, EventsModule, SharedModule, AdornmentsModule, SharedEventsModule]
8027
8549
  }]
8028
8550
  }] });
8029
8551
 
@@ -8848,7 +9370,7 @@ ColorInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8848
9370
  <label [for]="alpha.focusableId" class="k-colorgradient-input-label">A</label>
8849
9371
  </div>
8850
9372
  </ng-container>
8851
- `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: NumericLabelDirective, selector: "[kendoAdditionalNumericLabel]", inputs: ["kendoAdditionalNumericLabel", "localizationService"] }] });
9373
+ `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: NumericLabelDirective, selector: "[kendoAdditionalNumericLabel]", inputs: ["kendoAdditionalNumericLabel", "localizationService"] }] });
8852
9374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorInputComponent, decorators: [{
8853
9375
  type: Component,
8854
9376
  args: [{
@@ -9075,7 +9597,7 @@ class ColorContrastSvgComponent {
9075
9597
  ColorContrastSvgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorContrastSvgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9076
9598
  ColorContrastSvgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ColorContrastSvgComponent, selector: "[kendoColorContrastSvg]", inputs: { wrapper: "wrapper", hsva: "hsva", backgroundColor: "backgroundColor" }, host: { properties: { "class.k-color-contrast-svg": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: `
9077
9599
  <svg:path *ngFor="let path of paths" [attr.d]="path" fill="none" stroke="white" stroke-width="1"></svg:path>
9078
- `, isInline: true, directives: [{ type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
9600
+ `, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
9079
9601
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorContrastSvgComponent, decorators: [{
9080
9602
  type: Component,
9081
9603
  args: [{
@@ -9129,7 +9651,7 @@ ContrastValidationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
9129
9651
  <kendo-icon-wrapper name="x" [svgIcon]="xCircleIcon"></kendo-icon-wrapper>
9130
9652
  </span>
9131
9653
  </ng-container>
9132
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
9654
+ `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
9133
9655
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ContrastValidationComponent, decorators: [{
9134
9656
  type: Component,
9135
9657
  args: [{
@@ -9207,7 +9729,7 @@ ContrastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
9207
9729
  [value]="value"
9208
9730
  [pass]="satisfiesAAACondition">
9209
9731
  </div>
9210
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: ContrastValidationComponent, selector: "[kendoContrastValidation]", inputs: ["type", "pass", "value"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
9732
+ `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: ContrastValidationComponent, selector: "[kendoContrastValidation]", inputs: ["type", "pass", "value"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
9211
9733
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ContrastComponent, decorators: [{
9212
9734
  type: Component,
9213
9735
  args: [{
@@ -10060,7 +10582,7 @@ ColorGradientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
10060
10582
  [value]="value"
10061
10583
  [ratio]="contrastTool">
10062
10584
  </div>
10063
- `, isInline: true, components: [{ type: ColorContrastSvgComponent, selector: "[kendoColorContrastSvg]", inputs: ["wrapper", "hsva", "backgroundColor"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: SliderComponent, selector: "kendo-slider", inputs: ["focusableId", "dragHandleTitle", "incrementTitle", "animate", "decrementTitle", "showButtons", "value", "tabIndex"], exportAs: ["kendoSlider"] }, { type: ColorInputComponent, selector: "kendo-colorinput", inputs: ["focusableId", "formatView", "tabindex", "value", "opacity", "disabled", "readonly"], outputs: ["valueChange", "tabOut"] }, { type: ContrastComponent, selector: "[kendoContrastTool]", inputs: ["value", "ratio"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
10585
+ `, isInline: true, components: [{ type: ColorContrastSvgComponent, selector: "[kendoColorContrastSvg]", inputs: ["wrapper", "hsva", "backgroundColor"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: SliderComponent, selector: "kendo-slider", inputs: ["focusableId", "dragHandleTitle", "incrementTitle", "animate", "decrementTitle", "showButtons", "value", "tabIndex"], exportAs: ["kendoSlider"] }, { type: ColorInputComponent, selector: "kendo-colorinput", inputs: ["focusableId", "formatView", "tabindex", "value", "opacity", "disabled", "readonly"], outputs: ["valueChange", "tabOut"] }, { type: ContrastComponent, selector: "[kendoContrastTool]", inputs: ["value", "ratio"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i4$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
10064
10586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorGradientComponent, decorators: [{
10065
10587
  type: Component,
10066
10588
  args: [{
@@ -10836,7 +11358,7 @@ ColorPaletteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
10836
11358
  </tr>
10837
11359
  </tbody>
10838
11360
  </table>
10839
- `, isInline: true, directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
11361
+ `, isInline: true, directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
10840
11362
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorPaletteComponent, decorators: [{
10841
11363
  type: Component,
10842
11364
  args: [{
@@ -11053,7 +11575,7 @@ FlatColorPickerHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
11053
11575
  </span>
11054
11576
  </div>
11055
11577
  </div>
11056
- `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
11578
+ `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
11057
11579
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatColorPickerHeaderComponent, decorators: [{
11058
11580
  type: Component,
11059
11581
  args: [{
@@ -11817,7 +12339,7 @@ FlatColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
11817
12339
  [ngClass]="'k-justify-content-' + actionsLayout"
11818
12340
  (actionButtonClick)="onAction($event)"
11819
12341
  (tabOut)="firstFocusable.focus()"></div>
11820
- `, isInline: true, components: [{ type: FlatColorPickerHeaderComponent, selector: "[kendoFlatColorPickerHeader]", inputs: ["clearButton", "activeView", "views", "preview", "innerTabIndex", "value", "selection"], outputs: ["viewChange", "valuePaneClick", "clearButtonClick", "tabOut"] }, { type: ColorGradientComponent, selector: "kendo-colorgradient", inputs: ["id", "opacity", "disabled", "readonly", "clearButton", "delay", "value", "contrastTool", "tabindex", "format", "gradientSliderStep", "gradientSliderSmallStep"], outputs: ["valueChange"], exportAs: ["kendoColorGradient"] }, { type: ColorPaletteComponent, selector: "kendo-colorpalette", inputs: ["id", "format", "value", "columns", "palette", "tabindex", "disabled", "readonly", "tileSize"], outputs: ["selectionChange", "valueChange", "cellSelection"], exportAs: ["kendoColorPalette"] }, { type: FlatColorPickerActionButtonsComponent, selector: "[kendoFlatColorPickerActionButtons]", inputs: ["innerTabIndex"], outputs: ["actionButtonClick", "tabOut"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
12342
+ `, isInline: true, components: [{ type: FlatColorPickerHeaderComponent, selector: "[kendoFlatColorPickerHeader]", inputs: ["clearButton", "activeView", "views", "preview", "innerTabIndex", "value", "selection"], outputs: ["viewChange", "valuePaneClick", "clearButtonClick", "tabOut"] }, { type: ColorGradientComponent, selector: "kendo-colorgradient", inputs: ["id", "opacity", "disabled", "readonly", "clearButton", "delay", "value", "contrastTool", "tabindex", "format", "gradientSliderStep", "gradientSliderSmallStep"], outputs: ["valueChange"], exportAs: ["kendoColorGradient"] }, { type: ColorPaletteComponent, selector: "kendo-colorpalette", inputs: ["id", "format", "value", "columns", "palette", "tabindex", "disabled", "readonly", "tileSize"], outputs: ["selectionChange", "valueChange", "cellSelection"], exportAs: ["kendoColorPalette"] }, { type: FlatColorPickerActionButtonsComponent, selector: "[kendoFlatColorPickerActionButtons]", inputs: ["innerTabIndex"], outputs: ["actionButtonClick", "tabOut"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
11821
12343
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatColorPickerComponent, decorators: [{
11822
12344
  type: Component,
11823
12345
  args: [{
@@ -12737,7 +13259,7 @@ class ColorPickerComponent {
12737
13259
  }
12738
13260
  }
12739
13261
  }
12740
- ColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: i1$3.PopupService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
13262
+ ColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.PopupService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
12741
13263
  ColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ColorPickerComponent, selector: "kendo-colorpicker", inputs: { views: "views", view: "view", activeView: "activeView", readonly: "readonly", disabled: "disabled", format: "format", value: "value", popupSettings: "popupSettings", paletteSettings: "paletteSettings", gradientSettings: "gradientSettings", icon: "icon", iconClass: "iconClass", svgIcon: "svgIcon", clearButton: "clearButton", tabindex: "tabindex", preview: "preview", actionsLayout: "actionsLayout", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", open: "open", close: "close", onFocus: "focus", onBlur: "blur", cancel: "cancel", activeColorClick: "activeColorClick", clearButtonClick: "clearButtonClick", activeViewChange: "activeViewChange" }, host: { properties: { "class.k-colorpicker": "this.hostClasses", "class.k-icon-picker": "this.hostClasses", "class.k-picker": "this.hostClasses", "class.k-focus": "this.focusedClass", "attr.aria-disabled": "this.disabledClass", "class.k-disabled": "this.disabledClass", "attr.aria-readonly": "this.ariaReadonly", "attr.aria-expanded": "this.ariaExpanded", "attr.tabindex": "this.hostTabindex", "attr.dir": "this.direction", "attr.role": "this.role", "attr.aria-haspopup": "this.hasPopup", "attr.aria-invalid": "this.isControlInvalid" } }, providers: [{
12742
13264
  multi: true,
12743
13265
  provide: NG_VALUE_ACCESSOR,
@@ -12855,7 +13377,7 @@ ColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
12855
13377
  </kendo-flatcolorpicker>
12856
13378
  </ng-template>
12857
13379
  <ng-container #container></ng-container>
12858
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: FlatColorPickerComponent, selector: "kendo-flatcolorpicker", inputs: ["readonly", "disabled", "format", "value", "tabindex", "clearButton", "preview", "actionsLayout", "activeView", "views", "gradientSettings", "paletteSettings"], outputs: ["valueChange", "cancel", "activeViewChange", "clearButtonClick", "actionButtonClick"], exportAs: ["kendoFlatColorPicker"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
13380
+ `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: FlatColorPickerComponent, selector: "kendo-flatcolorpicker", inputs: ["readonly", "disabled", "format", "value", "tabindex", "clearButton", "preview", "actionsLayout", "activeView", "views", "gradientSettings", "paletteSettings"], outputs: ["valueChange", "cancel", "activeViewChange", "clearButtonClick", "actionButtonClick"], exportAs: ["kendoFlatColorPicker"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
12859
13381
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorPickerComponent, decorators: [{
12860
13382
  type: Component,
12861
13383
  args: [{
@@ -12980,7 +13502,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12980
13502
  <ng-container #container></ng-container>
12981
13503
  `
12982
13504
  }]
12983
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$3.PopupService }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { hostClasses: [{
13505
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$2.PopupService }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { hostClasses: [{
12984
13506
  type: HostBinding,
12985
13507
  args: ['class.k-colorpicker']
12986
13508
  }, {
@@ -13808,7 +14330,7 @@ FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
13808
14330
  <ng-content select="kendo-formhint" *ngIf="hasHints"></ng-content>
13809
14331
  <ng-content select="kendo-formerror" *ngIf="hasErrors"></ng-content>
13810
14332
  </div>
13811
- `, isInline: true, directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
14333
+ `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
13812
14334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormFieldComponent, decorators: [{
13813
14335
  type: Component,
13814
14336
  args: [{
@@ -14701,7 +15223,7 @@ SignatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
14701
15223
  [parentLocalization]="localization">
14702
15224
  </kendo-signature>
14703
15225
  </kendo-dialog>
14704
- `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i3$1.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: SignatureComponent, selector: "kendo-signature", inputs: ["focusableId", "readonly", "disabled", "width", "height", "value", "tabindex", "size", "rounded", "fillMode", "color", "backgroundColor", "strokeWidth", "smooth", "maximizable", "maximized", "popupScale", "exportScale", "parentLocalization", "hideLine"], outputs: ["valueChange", "open", "close", "focus", "blur", "minimize"], exportAs: ["kendoSignature"] }], directives: [{ type: LocalizedSignatureMessagesDirective, selector: "[kendoSignatureLocalizedMessages]" }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15226
+ `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i3.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: SignatureComponent, selector: "kendo-signature", inputs: ["focusableId", "readonly", "disabled", "width", "height", "value", "tabindex", "size", "rounded", "fillMode", "color", "backgroundColor", "strokeWidth", "smooth", "maximizable", "maximized", "popupScale", "exportScale", "parentLocalization", "hideLine"], outputs: ["valueChange", "open", "close", "focus", "blur", "minimize"], exportAs: ["kendoSignature"] }], directives: [{ type: LocalizedSignatureMessagesDirective, selector: "[kendoSignatureLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14705
15227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SignatureComponent, decorators: [{
14706
15228
  type: Component,
14707
15229
  args: [{
@@ -15064,5 +15586,5 @@ class SwitchFocusEvent {
15064
15586
  * Generated bundle index. Do not edit.
15065
15587
  */
15066
15588
 
15067
- export { ActiveColorClickEvent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSignatureMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, MaskingService, NumericLabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, SharedModule, SignatureCloseEvent, SignatureComponent, SignatureCustomMessagesComponent, SignatureMessages, SignatureModule, SignatureOpenEvent, SliderComponent, SliderCustomMessagesComponent, SliderModule, SliderTicksComponent, SwitchBlurEvent, SwitchComponent, SwitchCustomMessagesComponent, SwitchFocusEvent, SwitchModule, TextAreaComponent, TextAreaDirective, TextAreaModule, TextAreaSuffixComponent, TextBoxComponent, TextBoxCustomMessagesComponent, TextBoxDirective, TextBoxModule, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective };
15589
+ export { ActiveColorClickEvent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSignatureMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, MaskingService, NumericLabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, SharedModule, SignatureCloseEvent, SignatureComponent, SignatureCustomMessagesComponent, SignatureMessages, SignatureModule, SignatureOpenEvent, SliderComponent, SliderCustomMessagesComponent, SliderModule, SliderTicksComponent, SwitchBlurEvent, SwitchComponent, SwitchCustomMessagesComponent, SwitchFocusEvent, SwitchModule, TextAreaComponent, TextAreaDirective, TextAreaModule, TextAreaPrefixComponent, TextAreaSuffixComponent, TextBoxComponent, TextBoxCustomMessagesComponent, TextBoxDirective, TextBoxModule, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective };
15068
15590