@taiga-ui/core 2.35.0 → 2.36.0

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 (47) hide show
  1. package/bundles/taiga-ui-core-components-loader.umd.js +26 -6
  2. package/bundles/taiga-ui-core-components-loader.umd.js.map +1 -1
  3. package/bundles/taiga-ui-core-components-loader.umd.min.js +1 -1
  4. package/bundles/taiga-ui-core-components-loader.umd.min.js.map +1 -1
  5. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js +4 -5
  6. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js.map +1 -1
  7. package/bundles/taiga-ui-core-components-primitive-textfield.umd.min.js +1 -1
  8. package/bundles/taiga-ui-core-components-primitive-textfield.umd.min.js.map +1 -1
  9. package/bundles/taiga-ui-core-constants.umd.js +1 -1
  10. package/bundles/taiga-ui-core-constants.umd.js.map +1 -1
  11. package/bundles/taiga-ui-core-constants.umd.min.js +1 -1
  12. package/bundles/taiga-ui-core-constants.umd.min.js.map +1 -1
  13. package/components/loader/index.d.ts +1 -0
  14. package/components/loader/loader-options.d.ts +11 -0
  15. package/components/loader/loader.component.d.ts +4 -3
  16. package/components/loader/taiga-ui-core-components-loader.metadata.json +1 -1
  17. package/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.metadata.json +1 -1
  18. package/constants/taiga-ui-core-constants.metadata.json +1 -1
  19. package/constants/version.d.ts +1 -1
  20. package/esm2015/components/loader/index.js +2 -1
  21. package/esm2015/components/loader/loader-options.js +15 -0
  22. package/esm2015/components/loader/loader.component.js +11 -7
  23. package/esm2015/components/primitive-textfield/primitive-textfield.component.js +3 -3
  24. package/esm2015/components/primitive-textfield/primitive-textfield.module.js +2 -3
  25. package/esm2015/components/primitive-textfield/textfield/textfield.component.js +3 -3
  26. package/esm2015/constants/version.js +2 -2
  27. package/esm5/components/loader/index.js +2 -1
  28. package/esm5/components/loader/loader-options.js +16 -0
  29. package/esm5/components/loader/loader.component.js +11 -7
  30. package/esm5/components/primitive-textfield/primitive-textfield.component.js +3 -3
  31. package/esm5/components/primitive-textfield/primitive-textfield.module.js +2 -3
  32. package/esm5/components/primitive-textfield/textfield/textfield.component.js +3 -3
  33. package/esm5/constants/version.js +2 -2
  34. package/fesm2015/taiga-ui-core-components-loader.js +25 -8
  35. package/fesm2015/taiga-ui-core-components-loader.js.map +1 -1
  36. package/fesm2015/taiga-ui-core-components-primitive-textfield.js +5 -6
  37. package/fesm2015/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  38. package/fesm2015/taiga-ui-core-constants.js +1 -1
  39. package/fesm2015/taiga-ui-core-constants.js.map +1 -1
  40. package/fesm5/taiga-ui-core-components-loader.js +26 -9
  41. package/fesm5/taiga-ui-core-components-loader.js.map +1 -1
  42. package/fesm5/taiga-ui-core-components-primitive-textfield.js +5 -6
  43. package/fesm5/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  44. package/fesm5/taiga-ui-core-constants.js +1 -1
  45. package/fesm5/taiga-ui-core-constants.js.map +1 -1
  46. package/package.json +4 -4
  47. package/styles/mixins/textfield.less +15 -14
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __param } from 'tslib';
2
2
  import { DOCUMENT, CommonModule } from '@angular/common';
3
- import { Inject, ElementRef, Input, HostBinding, Component, ChangeDetectionStrategy, NgZone, Directive, NgModule } from '@angular/core';
3
+ import { InjectionToken, Inject, ElementRef, Input, HostBinding, Component, ChangeDetectionStrategy, NgZone, Directive, NgModule } from '@angular/core';
4
4
  import { USER_AGENT, ANIMATION_FRAME } from '@ng-web-apis/common';
5
5
  import { isEdgeOlderThan, isIE, isSafari, blurNativeFocused, isNativeFocusedIn, TUI_IS_IOS, tuiDefaultProp, tuiRequiredSetter, tuiZonefree, TuiDestroyService } from '@taiga-ui/cdk';
6
6
  import { sizeBigger } from '@taiga-ui/core/utils/miscellaneous';
@@ -8,16 +8,31 @@ import { Observable } from 'rxjs';
8
8
  import { pairwise, takeUntil } from 'rxjs/operators';
9
9
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
10
10
 
11
+ /** Default values for the loader options. */
12
+ const TUI_LOADER_DEFAULT_OPTIONS = {
13
+ size: 'm',
14
+ inheritColor: false,
15
+ overlay: false,
16
+ };
17
+ const TUI_LOADER_OPTIONS = new InjectionToken('Default parameters for loader component', {
18
+ factory: () => TUI_LOADER_DEFAULT_OPTIONS,
19
+ });
20
+ const tuiLoaderOptionsProvider = (options) => ({
21
+ provide: TUI_LOADER_OPTIONS,
22
+ useValue: Object.assign(Object.assign({}, TUI_LOADER_DEFAULT_OPTIONS), options),
23
+ });
24
+
11
25
  // @dynamic
12
26
  let TuiLoaderComponent = class TuiLoaderComponent {
13
- constructor(documentRef, elementRef, userAgent, isIos) {
27
+ constructor(documentRef, elementRef, userAgent, isIos, options) {
14
28
  this.documentRef = documentRef;
15
29
  this.elementRef = elementRef;
16
30
  this.userAgent = userAgent;
17
31
  this.isIos = isIos;
18
- this.size = 'm';
19
- this.inheritColor = false;
20
- this.overlay = false;
32
+ this.options = options;
33
+ this.size = this.options.size;
34
+ this.inheritColor = this.options.inheritColor;
35
+ this.overlay = this.options.overlay;
21
36
  // TODO: Remove null in 3.0
22
37
  this.textContent = null;
23
38
  this.loading = true;
@@ -48,7 +63,8 @@ TuiLoaderComponent.ctorParameters = () => [
48
63
  { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
49
64
  { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
50
65
  { type: String, decorators: [{ type: Inject, args: [USER_AGENT,] }] },
51
- { type: Boolean, decorators: [{ type: Inject, args: [TUI_IS_IOS,] }] }
66
+ { type: Boolean, decorators: [{ type: Inject, args: [TUI_IS_IOS,] }] },
67
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_LOADER_OPTIONS,] }] }
52
68
  ];
53
69
  __decorate([
54
70
  Input(),
@@ -86,7 +102,8 @@ TuiLoaderComponent = __decorate([
86
102
  __param(0, Inject(DOCUMENT)),
87
103
  __param(1, Inject(ElementRef)),
88
104
  __param(2, Inject(USER_AGENT)),
89
- __param(3, Inject(TUI_IS_IOS))
105
+ __param(3, Inject(TUI_IS_IOS)),
106
+ __param(4, Inject(TUI_LOADER_OPTIONS))
90
107
  ], TuiLoaderComponent);
91
108
 
92
109
  const PERIMETER = 314;
@@ -157,5 +174,5 @@ TuiLoaderModule = __decorate([
157
174
  * Generated bundle index. Do not edit.
158
175
  */
159
176
 
160
- export { TuiLoaderComponent, TuiLoaderDirective, TuiLoaderModule };
177
+ export { TUI_LOADER_DEFAULT_OPTIONS, TUI_LOADER_OPTIONS, TuiLoaderComponent, TuiLoaderDirective, TuiLoaderModule, tuiLoaderOptionsProvider };
161
178
  //# sourceMappingURL=taiga-ui-core-components-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-loader.js","sources":["ng://@taiga-ui/core/components/loader/loader.component.ts","ng://@taiga-ui/core/components/loader/loader.directive.ts","ng://@taiga-ui/core/components/loader/loader.module.ts","ng://@taiga-ui/core/components/loader/taiga-ui-core-components-loader.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n} from '@angular/core';\nimport {USER_AGENT} from '@ng-web-apis/common';\nimport {\n blurNativeFocused,\n isEdgeOlderThan,\n isIE,\n isNativeFocusedIn,\n isSafari,\n TUI_IS_IOS,\n tuiDefaultProp,\n tuiRequiredSetter,\n} from '@taiga-ui/cdk';\nimport {TuiSizeXS, TuiSizeXXL} from '@taiga-ui/core/types';\nimport {sizeBigger} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\n// @dynamic\n@Component({\n selector: 'tui-loader',\n templateUrl: './loader.template.html',\n styleUrls: ['./loader.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiLoaderComponent {\n @Input()\n @tuiDefaultProp()\n size: TuiSizeXS | TuiSizeXXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n inheritColor = false;\n\n @Input()\n @tuiDefaultProp()\n overlay = false;\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiDefaultProp()\n textContent: PolymorpheusContent | null = null;\n\n @Input()\n @tuiRequiredSetter()\n set showLoader(value: boolean) {\n // @bad TODO: https://github.com/angular/angular/issues/32083 think of a better way\n if (value && this.focused) {\n blurNativeFocused(this.documentRef);\n }\n\n this.loading = value;\n }\n\n @HostBinding('class._loading')\n loading = true;\n\n @HostBinding('class._animated-with-js')\n animatedWithJs = isEdgeOlderThan(17, this.userAgent) || isIE(this.userAgent);\n\n readonly isApple = isSafari(this.elementRef.nativeElement) || this.isIos;\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(USER_AGENT) private readonly userAgent: string,\n @Inject(TUI_IS_IOS) private readonly isIos: boolean,\n ) {}\n\n get hasOverlay(): boolean {\n return this.overlay && this.loading;\n }\n\n get hasText(): boolean {\n return !!this.textContent;\n }\n\n get isHorizontal(): boolean {\n return !sizeBigger(this.size);\n }\n\n get focused(): boolean {\n return isNativeFocusedIn(this.elementRef.nativeElement);\n }\n}\n","import {Directive, ElementRef, Inject, NgZone} from '@angular/core';\nimport {ANIMATION_FRAME, USER_AGENT} from '@ng-web-apis/common';\nimport {isEdgeOlderThan, isIE, TuiDestroyService, tuiZonefree} from '@taiga-ui/cdk';\nimport {Observable} from 'rxjs';\nimport {pairwise, takeUntil} from 'rxjs/operators';\n\nconst PERIMETER = 314;\nconst COEFFICIENT = 1.5;\n\n/**\n * @deprecated\n */\n@Directive({\n selector: 'circle',\n providers: [TuiDestroyService],\n})\nexport class TuiLoaderDirective {\n private strokeDasharray = PERIMETER;\n\n private strokeDashoffset = 0;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<SVGCircleElement>,\n @Inject(USER_AGENT) userAgent: string,\n ) {\n if (!isEdgeOlderThan(17, userAgent) && !isIE(userAgent)) {\n return;\n }\n\n animationFrame$\n .pipe(tuiZonefree(ngZone), pairwise(), takeUntil(destroy$))\n .subscribe(([cur, prev]) => {\n this.animate(prev - cur);\n });\n }\n\n private animate(delta: number) {\n if (this.strokeDasharray < 0) {\n this.strokeDasharray = PERIMETER * 2;\n this.strokeDashoffset = 0;\n }\n\n const strokeDasharray = Math.abs(this.strokeDasharray - PERIMETER);\n const fps = 1000 / delta;\n const offsetStep = 1 + Math.floor(this.strokeDasharray / PERIMETER);\n const {style} = this.elementRef.nativeElement;\n\n style.strokeDashoffset = String(this.strokeDashoffset);\n style.strokeDasharray = PERIMETER - strokeDasharray + ' ' + strokeDasharray;\n\n this.strokeDasharray -= PERIMETER / COEFFICIENT / fps;\n this.strokeDashoffset += (offsetStep * PERIMETER) / COEFFICIENT / fps;\n // this.elementRef.nativeElement.parentElement!.style.animation = 'none';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiLoaderComponent} from './loader.component';\nimport {TuiLoaderDirective} from './loader.directive';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusModule],\n declarations: [TuiLoaderComponent, TuiLoaderDirective],\n exports: [TuiLoaderComponent],\n})\nexport class TuiLoaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-components-loader.js","sources":["ng://@taiga-ui/core/components/loader/loader-options.ts","ng://@taiga-ui/core/components/loader/loader.component.ts","ng://@taiga-ui/core/components/loader/loader.directive.ts","ng://@taiga-ui/core/components/loader/loader.module.ts","ng://@taiga-ui/core/components/loader/taiga-ui-core-components-loader.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiSizeXS, TuiSizeXXL} from '@taiga-ui/core/types';\n\nexport interface TuiLoaderOptions {\n readonly size: TuiSizeXS | TuiSizeXXL;\n readonly inheritColor: boolean;\n readonly overlay: boolean;\n}\n\n/** Default values for the loader options. */\nexport const TUI_LOADER_DEFAULT_OPTIONS: TuiLoaderOptions = {\n size: 'm',\n inheritColor: false,\n overlay: false,\n};\n\nexport const TUI_LOADER_OPTIONS = new InjectionToken<TuiLoaderOptions>(\n 'Default parameters for loader component',\n {\n factory: () => TUI_LOADER_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiLoaderOptionsProvider: (\n options: Partial<TuiLoaderOptions>,\n) => ValueProvider = (options: Partial<TuiLoaderOptions>) => ({\n provide: TUI_LOADER_OPTIONS,\n useValue: {...TUI_LOADER_DEFAULT_OPTIONS, ...options},\n});\n","import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n} from '@angular/core';\nimport {USER_AGENT} from '@ng-web-apis/common';\nimport {\n blurNativeFocused,\n isEdgeOlderThan,\n isIE,\n isNativeFocusedIn,\n isSafari,\n TUI_IS_IOS,\n tuiDefaultProp,\n tuiRequiredSetter,\n} from '@taiga-ui/cdk';\nimport {sizeBigger} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nimport {TUI_LOADER_OPTIONS, TuiLoaderOptions} from './loader-options';\n\n// @dynamic\n@Component({\n selector: 'tui-loader',\n templateUrl: './loader.template.html',\n styleUrls: ['./loader.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiLoaderComponent {\n @Input()\n @tuiDefaultProp()\n size = this.options.size;\n\n @Input()\n @tuiDefaultProp()\n inheritColor = this.options.inheritColor;\n\n @Input()\n @tuiDefaultProp()\n overlay = this.options.overlay;\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiDefaultProp()\n textContent: PolymorpheusContent | null = null;\n\n @Input()\n @tuiRequiredSetter()\n set showLoader(value: boolean) {\n // @bad TODO: https://github.com/angular/angular/issues/32083 think of a better way\n if (value && this.focused) {\n blurNativeFocused(this.documentRef);\n }\n\n this.loading = value;\n }\n\n @HostBinding('class._loading')\n loading = true;\n\n @HostBinding('class._animated-with-js')\n animatedWithJs = isEdgeOlderThan(17, this.userAgent) || isIE(this.userAgent);\n\n readonly isApple = isSafari(this.elementRef.nativeElement) || this.isIos;\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(USER_AGENT) private readonly userAgent: string,\n @Inject(TUI_IS_IOS) private readonly isIos: boolean,\n @Inject(TUI_LOADER_OPTIONS) private readonly options: TuiLoaderOptions,\n ) {}\n\n get hasOverlay(): boolean {\n return this.overlay && this.loading;\n }\n\n get hasText(): boolean {\n return !!this.textContent;\n }\n\n get isHorizontal(): boolean {\n return !sizeBigger(this.size);\n }\n\n get focused(): boolean {\n return isNativeFocusedIn(this.elementRef.nativeElement);\n }\n}\n","import {Directive, ElementRef, Inject, NgZone} from '@angular/core';\nimport {ANIMATION_FRAME, USER_AGENT} from '@ng-web-apis/common';\nimport {isEdgeOlderThan, isIE, TuiDestroyService, tuiZonefree} from '@taiga-ui/cdk';\nimport {Observable} from 'rxjs';\nimport {pairwise, takeUntil} from 'rxjs/operators';\n\nconst PERIMETER = 314;\nconst COEFFICIENT = 1.5;\n\n/**\n * @deprecated\n */\n@Directive({\n selector: 'circle',\n providers: [TuiDestroyService],\n})\nexport class TuiLoaderDirective {\n private strokeDasharray = PERIMETER;\n\n private strokeDashoffset = 0;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<SVGCircleElement>,\n @Inject(USER_AGENT) userAgent: string,\n ) {\n if (!isEdgeOlderThan(17, userAgent) && !isIE(userAgent)) {\n return;\n }\n\n animationFrame$\n .pipe(tuiZonefree(ngZone), pairwise(), takeUntil(destroy$))\n .subscribe(([cur, prev]) => {\n this.animate(prev - cur);\n });\n }\n\n private animate(delta: number) {\n if (this.strokeDasharray < 0) {\n this.strokeDasharray = PERIMETER * 2;\n this.strokeDashoffset = 0;\n }\n\n const strokeDasharray = Math.abs(this.strokeDasharray - PERIMETER);\n const fps = 1000 / delta;\n const offsetStep = 1 + Math.floor(this.strokeDasharray / PERIMETER);\n const {style} = this.elementRef.nativeElement;\n\n style.strokeDashoffset = String(this.strokeDashoffset);\n style.strokeDasharray = PERIMETER - strokeDasharray + ' ' + strokeDasharray;\n\n this.strokeDasharray -= PERIMETER / COEFFICIENT / fps;\n this.strokeDashoffset += (offsetStep * PERIMETER) / COEFFICIENT / fps;\n // this.elementRef.nativeElement.parentElement!.style.animation = 'none';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiLoaderComponent} from './loader.component';\nimport {TuiLoaderDirective} from './loader.directive';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusModule],\n declarations: [TuiLoaderComponent, TuiLoaderDirective],\n exports: [TuiLoaderComponent],\n})\nexport class TuiLoaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __param } from 'tslib';
2
2
  import { forwardRef, InjectionToken, EventEmitter, Inject, ElementRef, ViewChild, Input, HostBinding, Output, ContentChildren, HostListener, Component, ChangeDetectionStrategy, Directive, NgModule } from '@angular/core';
3
- import { TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiInteractive, isNativeFocusedIn, setNativeFocused, tuiDefaultProp, tuiPure, TuiIdService, TuiFocusableModule, TuiHoveredModule, TuiInputModeModule, TuiAutofilledModule, TuiPreventDefaultModule } from '@taiga-ui/cdk';
3
+ import { TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiInteractive, isNativeFocusedIn, setNativeFocused, tuiDefaultProp, tuiPure, TuiIdService, TuiFocusableModule, TuiHoveredModule, TuiInputModeModule, TuiAutofilledModule } from '@taiga-ui/cdk';
4
4
  import { HINT_CONTROLLER_PROVIDER, TuiHintControllerDirective, TUI_HINT_WATCHED_CONTROLLER } from '@taiga-ui/core/directives/hint-controller';
5
5
  import { TEXTFIELD_CONTROLLER_PROVIDER, TuiTextfieldController, TUI_TEXTFIELD_WATCHED_CONTROLLER } from '@taiga-ui/core/directives/textfield-controller';
6
6
  import { TUI_MODE, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_HOST } from '@taiga-ui/core/tokens';
@@ -285,7 +285,7 @@ __decorate([
285
285
  TuiPrimitiveTextfieldComponent = __decorate([
286
286
  Component({
287
287
  selector: 'tui-primitive-textfield',
288
- template: "<ng-container *ngIf=\"content?.changes | async\"></ng-container>\n<tui-wrapper\n automation-id=\"tui-primitive-textfield__wrapper\"\n tuiPreventDefault=\"click\"\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered\"\n [pressed]=\"computedPressed\"\n [invalid]=\"computedInvalid\"\n [style.--text-indent.px]=\"decor.pre$ | async\"\n (mousedown)=\"onMouseDown($event)\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (tuiAutofilledChange)=\"onAutofilled($event)\"\n>\n <ng-content select=\"input\"></ng-content>\n <input\n #focusableElement\n tuiMaskAccessor\n automation-id=\"tui-primitive-textfield__native-input\"\n class=\"input\"\n [attr.disabled]=\"computedDisabled || null\"\n [attr.maxLength]=\"controller.maxLength\"\n [attr.name]=\"name\"\n [attr.aria-placeholder]=\"controller.exampleText\"\n [attr.aria-invalid]=\"computedInvalid\"\n [autocomplete]=\"controller.autocomplete\"\n [type]=\"controller.type\"\n [id]=\"id\"\n [readOnly]=\"readOnly || !editable\"\n [tuiInputMode]=\"controller.inputMode\"\n [tuiFocusable]=\"computedFocusable\"\n [tuiDescribedBy]=\"id\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n <div\n *ngIf=\"inputHidden\"\n automation-id=\"tui-primitive-textfield__value\"\n class=\"input input_template\"\n >\n <ng-content select=\"[polymorpheus-outlet]\"></ng-content>\n </div>\n <div class=\"content\">\n <div\n *ngIf=\"iconAlignLeft\"\n polymorpheus-outlet\n class=\"icon icon_left\"\n [content]=\"iconContent\"\n [context]=\"{$implicit: size}\"\n >\n <ng-template let-iconSrc>\n <tui-svg [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n <div class=\"wrapper\">\n <label\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-primitive-textfield__placeholder\"\n class=\"placeholder\"\n [class.placeholder_raised]=\"placeholderRaised\"\n [for]=\"computedId\"\n >\n <ng-content></ng-content>\n </label>\n <tui-value-decoration\n #decor\n automation-id=\"tui-primitive-textfield__value-decoration\"\n aria-hidden=\"true\"\n class=\"t-value-decoration\"\n [style.textIndent.px]=\"getIndent$(focusableElement) | async\"\n ></tui-value-decoration>\n </div>\n <div\n *ngIf=\"hasCustomContent\"\n polymorpheus-outlet\n automation-id=\"tui-primitive-textfield__custom-content\"\n class=\"custom-content\"\n [content]=\"controller.customContent\"\n >\n <ng-template let-iconSrc>\n <tui-svg class=\"custom-icon\" [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n <span\n *ngIf=\"hasCleaner\"\n polymorpheus-outlet\n automation-id=\"tui-primitive-textfield__cleaner\"\n class=\"cleaner\"\n [content]=\"iconCleaner\"\n (click.stop)=\"clear()\"\n >\n <ng-template let-icon>\n <tui-svg [src]=\"icon\"></tui-svg>\n </ng-template>\n </span>\n <tui-tooltip\n *ngIf=\"hasTooltip\"\n automation-id=\"tui-primitive-textfield__tooltip\"\n [describeId]=\"computedId\"\n [content]=\"hintController.content\"\n [direction]=\"hintController.direction\"\n [mode]=\"hintController.mode\"\n [showDelay]=\"hintController.showDelay\"\n [hideDelay]=\"hintController.hideDelay\"\n ></tui-tooltip>\n <div\n *ngIf=\"iconAlignRight\"\n polymorpheus-outlet\n class=\"icon\"\n [content]=\"iconContent\"\n [context]=\"{$implicit: size}\"\n >\n <ng-template let-iconSrc>\n <tui-svg [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n </div>\n</tui-wrapper>\n",
288
+ template: "<ng-container *ngIf=\"content?.changes | async\"></ng-container>\n<tui-wrapper\n automation-id=\"tui-primitive-textfield__wrapper\"\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered\"\n [pressed]=\"computedPressed\"\n [invalid]=\"computedInvalid\"\n [style.--text-indent.px]=\"decor.pre$ | async\"\n (mousedown)=\"onMouseDown($event)\"\n (click.prevent.silent)=\"0\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (tuiAutofilledChange)=\"onAutofilled($event)\"\n>\n <ng-content select=\"input\"></ng-content>\n <input\n #focusableElement\n tuiMaskAccessor\n automation-id=\"tui-primitive-textfield__native-input\"\n class=\"t-input\"\n [attr.disabled]=\"computedDisabled || null\"\n [attr.maxLength]=\"controller.maxLength\"\n [attr.name]=\"name\"\n [attr.aria-placeholder]=\"controller.exampleText\"\n [attr.aria-invalid]=\"computedInvalid\"\n [autocomplete]=\"controller.autocomplete\"\n [type]=\"controller.type\"\n [id]=\"id\"\n [readOnly]=\"readOnly || !editable\"\n [tuiInputMode]=\"controller.inputMode\"\n [tuiFocusable]=\"computedFocusable\"\n [tuiDescribedBy]=\"id\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n <div\n *ngIf=\"inputHidden\"\n automation-id=\"tui-primitive-textfield__value\"\n class=\"t-input t-input_template\"\n >\n <ng-content select=\"[polymorpheus-outlet]\"></ng-content>\n </div>\n <div class=\"t-content\">\n <div\n *ngIf=\"iconAlignLeft\"\n polymorpheus-outlet\n class=\"t-icon t-icon_left\"\n [content]=\"iconContent\"\n [context]=\"{$implicit: size}\"\n >\n <ng-template let-iconSrc>\n <tui-svg [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n <div class=\"t-wrapper\">\n <label\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-primitive-textfield__placeholder\"\n class=\"t-placeholder\"\n [class.t-placeholder_raised]=\"placeholderRaised\"\n [for]=\"computedId\"\n >\n <ng-content></ng-content>\n </label>\n <tui-value-decoration\n #decor\n automation-id=\"tui-primitive-textfield__value-decoration\"\n aria-hidden=\"true\"\n class=\"t-value-decoration\"\n [style.textIndent.px]=\"getIndent$(focusableElement) | async\"\n ></tui-value-decoration>\n </div>\n <div\n *ngIf=\"hasCustomContent\"\n polymorpheus-outlet\n automation-id=\"tui-primitive-textfield__custom-content\"\n class=\"t-custom-content\"\n [content]=\"controller.customContent\"\n >\n <ng-template let-iconSrc>\n <tui-svg class=\"t-custom-icon\" [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n <span\n *ngIf=\"hasCleaner\"\n polymorpheus-outlet\n automation-id=\"tui-primitive-textfield__cleaner\"\n class=\"t-cleaner\"\n [content]=\"iconCleaner\"\n (click.stop)=\"clear()\"\n >\n <ng-template let-icon>\n <tui-svg [src]=\"icon\"></tui-svg>\n </ng-template>\n </span>\n <tui-tooltip\n *ngIf=\"hasTooltip\"\n automation-id=\"tui-primitive-textfield__tooltip\"\n [describeId]=\"computedId\"\n [content]=\"hintController.content\"\n [direction]=\"hintController.direction\"\n [mode]=\"hintController.mode\"\n [showDelay]=\"hintController.showDelay\"\n [hideDelay]=\"hintController.hideDelay\"\n ></tui-tooltip>\n <div\n *ngIf=\"iconAlignRight\"\n polymorpheus-outlet\n class=\"t-icon\"\n [content]=\"iconContent\"\n [context]=\"{$implicit: size}\"\n >\n <ng-template let-iconSrc>\n <tui-svg [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n </div>\n</tui-wrapper>\n",
289
289
  changeDetection: ChangeDetectionStrategy.OnPush,
290
290
  providers: TUI_PRIMITIVE_TEXTFIELD_PROVIDERS,
291
291
  host: {
@@ -293,7 +293,7 @@ TuiPrimitiveTextfieldComponent = __decorate([
293
293
  '[class._autofilled]': 'autofilled',
294
294
  '[class._label-outside]': 'controller.labelOutside',
295
295
  },
296
- styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);position:relative;display:block;border-radius:var(--tui-radius-m);text-align:left}:host[data-size='s']{height:var(--tui-height-s);min-height:var(--tui-height-s);max-height:var(--tui-height-s)}:host[data-size='m']{height:var(--tui-height-m);min-height:var(--tui-height-m);max-height:var(--tui-height-m)}:host[data-size='l']{height:var(--tui-height-l);min-height:var(--tui-height-l);max-height:var(--tui-height-l);font-size:.9375rem}.input{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);border:solid transparent;border-width:0 var(--border-end,0) 0 var(--border-start,0);border-inline-start-width:var(--border-start,0);border-inline-end-width:var(--border-end,0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit}.input:-webkit-autofill,.input:-webkit-autofill:focus,.input:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}.input :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill,.input :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:focus,.input :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:hover,:host[data-mode=onDark] .input:-webkit-autofill,:host[data-mode=onDark] .input:-webkit-autofill:focus,:host[data-mode=onDark] .input:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill-night) inset!important}.input :host-context(tui-primitive-textfield[data-size='s']):not(tui-primitive-textfield),:host[data-size='s'] .input{padding:0 var(--tui-padding-s)}.input :host-context(tui-primitive-textfield[data-size='l']):not(tui-primitive-textfield),:host[data-size='l'] .input{padding:0 var(--tui-padding-l)}.input :host-context(tui-primitive-textfield._disabled),:host._disabled .input{pointer-events:none}.input :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='l']:not(._label-outside) .input{padding-top:1.25rem}.input :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='l']:not(._label-outside) .input:-webkit-autofill+.content .placeholder{font-size:.8156rem;transform:translateY(-.625rem)}.input :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='m']:not(._label-outside) .input{padding-top:1.125rem}.input :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='m']:not(._label-outside) .input:-webkit-autofill+.content .placeholder{font-size:.69rem;transform:translateY(-.5rem)}.input :host-context(tui-primitive-textfield._hidden),:host._hidden input.input{opacity:0;text-indent:-10em;-webkit-user-select:none}.filler{vertical-align:middle}.content{display:flex;height:100%;width:100%;padding:0 var(--tui-padding-m);box-sizing:border-box;align-items:center;overflow:hidden}:host[data-size='s'] .content{padding:0 var(--tui-padding-s)}:host[data-size='l'] .content{padding:0 var(--tui-padding-l)}.content:after{content:'';margin-right:-.25rem}:host[data-size='m'] .content:after{display:none}.wrapper{flex:1;min-width:0;padding-right:.25rem;-webkit-padding-end:.25rem;padding-inline-end:.25rem;-webkit-padding-start:0;padding-inline-start:0}.placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;font-size:.8125rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);pointer-events:none}.placeholder_raised{transform:translateY(-.625rem)}:host[data-size='m'] .placeholder_raised{font-size:.69rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .placeholder_raised,:host._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .placeholder,:host[data-size='l']._focused._label-outside .placeholder,:host[data-size='m']._focused._label-outside .placeholder{color:var(--tui-text-03)}:host[data-size='l'] .placeholder{font-size:.9375rem}:host[data-size='l'] .placeholder_raised{font-size:.8156rem}:host[data-size='l']._focused:not(._label-outside) .placeholder,:host[data-size='m']._focused:not(._label-outside) .placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .placeholder{color:var(--tui-text-02-night)}:host[data-size='l'][data-mode=onDark]._focused:not(._label-outside) .placeholder,:host[data-size='m'][data-mode=onDark]._focused:not(._label-outside) .placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .placeholder,:host[data-size='l'][data-mode=onDark]._focused._label-outside .placeholder,:host[data-size='m'][data-mode=onDark]._focused._label-outside .placeholder{color:var(--tui-text-02-night)}@supports (-webkit-hyphens:none){.placeholder{transition-property:transform,color,letter-spacing}}.cleaner{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.cleaner:hover{color:var(--tui-text-02)}:host._disabled .cleaner,:host._readonly .cleaner{pointer-events:none}:host[data-mode=onDark] .cleaner{color:var(--tui-text-03-night)}:host[data-mode=onDark] .cleaner:hover{color:var(--tui-text-01-night)}.icon{display:flex;align-items:center;justify-content:center;color:var(--tui-text-03)}.icon_left{margin:0 .5rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}:host[data-size='s'] .icon_left{margin-right:.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}:host._autofilled .t-value-decoration{display:none}.custom-content{position:relative;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin-right:.25rem;pointer-events:none}.custom-icon{width:100%;height:100%}.icon{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);box-sizing:border-box;cursor:pointer;transition-property:color,transform;position:relative;pointer-events:none}.icon:hover{color:var(--tui-text-02)}:host._disabled .icon,:host._readonly .icon{pointer-events:none}:host[data-mode=onDark] .icon{color:var(--tui-text-03-night)}:host[data-mode=onDark] .icon:hover{color:var(--tui-text-01-night)}:host._hovered:not(._readonly) .icon{color:var(--tui-text-02)}:host[data-mode=onDark]._hovered:not(._readonly) .icon{color:var(--tui-text-01-night)}:host[data-mode=onLight]._hovered:not(._readonly) .icon{color:var(--tui-text-01)}.input:not(:first-child){display:none}:host[data-size] .input_template{display:flex;width:100%;max-width:100%;align-items:center;pointer-events:none}.input::-webkit-caps-lock-indicator{margin-right:.375rem;align-self:center}:host[data-size='l']:not(._label-outside) .input::-webkit-caps-lock-indicator{margin-top:-1.25rem}.input::-webkit-contacts-auto-fill-button,.input::-webkit-credentials-auto-fill-button,.input::-webkit-credit-card-auto-fill-button{background-color:var(--tui-text-03)}:host[data-size='l']:not(._label-outside) .input::-webkit-contacts-auto-fill-button,:host[data-size='l']:not(._label-outside) .input::-webkit-credentials-auto-fill-button,:host[data-size='l']:not(._label-outside) .input::-webkit-credit-card-auto-fill-button{margin-top:-1.25rem}.input::-webkit-contacts-auto-fill-button:hover,.input::-webkit-credentials-auto-fill-button:hover,.input::-webkit-credit-card-auto-fill-button:hover{background-color:var(--tui-text-02)}.input:-webkit-autofill,.input:-webkit-autofill::first-line{font-size:inherit;line-height:inherit}.text-template{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}"]
296
+ styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);position:relative;display:block;border-radius:var(--tui-radius-m);text-align:left}:host[data-size='s']{height:var(--tui-height-s);min-height:var(--tui-height-s);max-height:var(--tui-height-s)}:host[data-size='m']{height:var(--tui-height-m);min-height:var(--tui-height-m);max-height:var(--tui-height-m)}:host[data-size='l']{height:var(--tui-height-l);min-height:var(--tui-height-l);max-height:var(--tui-height-l);font-size:.9375rem}.t-input{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);border:solid transparent;border-width:0 var(--border-end,0) 0 var(--border-start,0);border-inline-start-width:var(--border-start,0);border-inline-end-width:var(--border-end,0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit;resize:none}.t-input:-webkit-autofill,.t-input:-webkit-autofill:focus,.t-input:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}.t-input :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill,.t-input :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:focus,.t-input :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:hover,.t-input :host-context(tui-text-area[data-mode=onDark]):-webkit-autofill,.t-input :host-context(tui-text-area[data-mode=onDark]):-webkit-autofill:focus,.t-input :host-context(tui-text-area[data-mode=onDark]):-webkit-autofill:hover,:host[data-mode=onDark] .t-input:-webkit-autofill,:host[data-mode=onDark] .t-input:-webkit-autofill:focus,:host[data-mode=onDark] .t-input:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill-night) inset!important}.t-input :host-context(tui-primitive-textfield[data-size='s']):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size='s']):not(tui-text-area),:host[data-size='s'] .t-input{padding:0 var(--tui-padding-s)}.t-input :host-context(tui-primitive-textfield[data-size='l']):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size='l']):not(tui-text-area),:host[data-size='l'] .t-input{padding:0 var(--tui-padding-l)}.t-input :host-context(tui-primitive-textfield._disabled),.t-input :host-context(tui-text-area._disabled),:host._disabled .t-input{pointer-events:none}.t-input :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='l']:not(._label-outside) .t-input{padding-top:1.25rem}.t-input :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='l']:not(._label-outside) .t-input:-webkit-autofill+.content .placeholder{font-size:.8156rem;transform:translateY(-.625rem)}.t-input :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='m']:not(._label-outside) .t-input{padding-top:1.125rem}.t-input :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='m']:not(._label-outside) .t-input:-webkit-autofill+.content .placeholder{font-size:.69rem;transform:translateY(-.5rem)}.t-input :host-context(tui-primitive-textfield._hidden),:host._hidden input.t-input{opacity:0;text-indent:-10em;-webkit-user-select:none}.t-content{display:flex;height:100%;width:100%;padding:0 var(--tui-padding-m);box-sizing:border-box;align-items:center;overflow:hidden}:host[data-size='s'] .t-content{padding:0 var(--tui-padding-s)}:host[data-size='l'] .t-content{padding:0 var(--tui-padding-l)}.t-content:after{content:'';margin-right:-.25rem}:host[data-size='m'] .t-content:after{display:none}.t-wrapper{flex:1;min-width:0;padding-right:.25rem;-webkit-padding-end:.25rem;padding-inline-end:.25rem;-webkit-padding-start:0;padding-inline-start:0}.t-placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;font-size:.8125rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);pointer-events:none}.t-placeholder_raised{transform:translateY(-.625rem)}:host[data-size='m'] .t-placeholder_raised{font-size:.69rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .t-placeholder_raised,:host._invalid:not(._focused)._hovered .t-placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .t-placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused)._hovered .t-placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .t-placeholder,:host[data-size='l']._focused._label-outside .t-placeholder,:host[data-size='m']._focused._label-outside .t-placeholder{color:var(--tui-text-03)}:host[data-size='l'] .t-placeholder{font-size:.9375rem}:host[data-size='l'] .t-placeholder_raised{font-size:.8156rem}:host[data-size='l']._focused:not(._label-outside) .t-placeholder,:host[data-size='m']._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}:host[data-size='l'][data-mode=onDark]._focused:not(._label-outside) .t-placeholder,:host[data-size='m'][data-mode=onDark]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .t-placeholder,:host[data-size='l'][data-mode=onDark]._focused._label-outside .t-placeholder,:host[data-size='m'][data-mode=onDark]._focused._label-outside .t-placeholder{color:var(--tui-text-02-night)}@supports (-webkit-hyphens:none){.t-placeholder{transition-property:transform,color,letter-spacing}}.t-cleaner{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.t-cleaner:hover{color:var(--tui-text-02)}:host._disabled .t-cleaner,:host._readonly .t-cleaner{pointer-events:none}:host[data-mode=onDark] .t-cleaner{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-cleaner:hover{color:var(--tui-text-01-night)}.t-icon{display:flex;align-items:center;justify-content:center;color:var(--tui-text-03)}.t-icon_left{margin:0 .5rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}:host[data-size='s'] .t-icon_left{margin-right:.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}:host._autofilled .t-value-decoration{display:none}.t-custom-content{position:relative;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin-right:.25rem;pointer-events:none}.t-custom-icon{width:100%;height:100%}.t-icon{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);box-sizing:border-box;cursor:pointer;transition-property:color,transform;position:relative;pointer-events:none}.t-icon:hover{color:var(--tui-text-02)}:host._disabled .t-icon,:host._readonly .t-icon{pointer-events:none}:host[data-mode=onDark] .t-icon{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-icon:hover{color:var(--tui-text-01-night)}:host._hovered:not(._readonly) .t-icon{color:var(--tui-text-02)}:host[data-mode=onDark]._hovered:not(._readonly) .t-icon{color:var(--tui-text-01-night)}:host[data-mode=onLight]._hovered:not(._readonly) .t-icon{color:var(--tui-text-01)}.t-input:not(:first-child){display:none}:host[data-size] .t-input_template{display:flex;width:100%;max-width:100%;align-items:center;pointer-events:none}.t-input::-webkit-caps-lock-indicator{margin-right:.375rem;align-self:center}:host[data-size='l']:not(._label-outside) .t-input::-webkit-caps-lock-indicator{margin-top:-1.25rem}.t-input::-webkit-contacts-auto-fill-button,.t-input::-webkit-credentials-auto-fill-button,.t-input::-webkit-credit-card-auto-fill-button{background-color:var(--tui-text-03)}:host[data-size='l']:not(._label-outside) .t-input::-webkit-contacts-auto-fill-button,:host[data-size='l']:not(._label-outside) .t-input::-webkit-credentials-auto-fill-button,:host[data-size='l']:not(._label-outside) .t-input::-webkit-credit-card-auto-fill-button{margin-top:-1.25rem}.t-input::-webkit-contacts-auto-fill-button:hover,.t-input::-webkit-credentials-auto-fill-button:hover,.t-input::-webkit-credit-card-auto-fill-button:hover{background-color:var(--tui-text-02)}.t-input:-webkit-autofill,.t-input:-webkit-autofill::first-line{font-size:inherit;line-height:inherit}.t-text-template{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}"]
297
297
  }),
298
298
  __param(0, Inject(TUI_MODE)),
299
299
  __param(1, Inject(TUI_TEXTFIELD_APPEARANCE)),
@@ -372,7 +372,7 @@ __decorate([
372
372
  ], TuiTextfieldComponent.prototype, "id", null);
373
373
  TuiTextfieldComponent = __decorate([
374
374
  Component({
375
- selector: 'input[tuiTextfield]',
375
+ selector: 'input[tuiTextfield], textarea[tuiTextfield]',
376
376
  template: '',
377
377
  providers: [
378
378
  TuiDescribedByDirective,
@@ -390,7 +390,7 @@ TuiTextfieldComponent = __decorate([
390
390
  '(input)': 'host.onValueChange($event.target.value)',
391
391
  },
392
392
  changeDetection: ChangeDetectionStrategy.OnPush,
393
- styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);border:solid transparent;border-width:0 var(--border-end,0) 0 var(--border-start,0);border-inline-start-width:var(--border-start,0);border-inline-end-width:var(--border-end,0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit}:host:-webkit-autofill,:host:-webkit-autofill:focus,:host:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}:host :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill,:host :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:focus,:host :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:hover,:host[data-mode=onDark] :host:-webkit-autofill,:host[data-mode=onDark] :host:-webkit-autofill:focus,:host[data-mode=onDark] :host:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill-night) inset!important}:host :host-context(tui-primitive-textfield[data-size='s']):not(tui-primitive-textfield),:host[data-size='s'] :host{padding:0 var(--tui-padding-s)}:host :host-context(tui-primitive-textfield[data-size='l']):not(tui-primitive-textfield),:host[data-size='l'] :host{padding:0 var(--tui-padding-l)}:host :host-context(tui-primitive-textfield._disabled),:host._disabled :host{pointer-events:none}:host :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='l']:not(._label-outside) :host{padding-top:1.25rem}:host :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='l']:not(._label-outside) :host:-webkit-autofill+.content .placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='m']:not(._label-outside) :host{padding-top:1.125rem}:host :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='m']:not(._label-outside) :host:-webkit-autofill+.content .placeholder{font-size:.69rem;transform:translateY(-.5rem)}:host :host-context(tui-primitive-textfield._hidden),:host._hidden input:host{opacity:0;text-indent:-10em;-webkit-user-select:none}:host::-webkit-caps-lock-indicator{margin-right:.375rem;align-self:center}:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-caps-lock-indicator{margin-top:-1.25rem}:host::-webkit-contacts-auto-fill-button,:host::-webkit-credentials-auto-fill-button,:host::-webkit-credit-card-auto-fill-button{background-color:var(--tui-text-03)}:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-contacts-auto-fill-button,:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-credentials-auto-fill-button,:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-credit-card-auto-fill-button{margin-top:-1.25rem}:host::-webkit-contacts-auto-fill-button:hover,:host::-webkit-credentials-auto-fill-button:hover,:host::-webkit-credit-card-auto-fill-button:hover{background-color:var(--tui-text-02)}:host::-ms-input-placeholder{color:var(--tui-text-03);opacity:0}:host::placeholder{color:var(--tui-text-03);opacity:0}:host :host-context(tui-primitive-textfield[data-mode=onDark])::-ms-input-placeholder{color:var(--tui-text-03-night)}:host :host-context(tui-primitive-textfield[data-mode=onDark])::placeholder{color:var(--tui-text-03-night)}:host :host-context(tui-primitive-textfield._focused:not(._readonly))::-ms-input-placeholder{opacity:1}:host :host-context(tui-primitive-textfield._focused:not(._readonly))::placeholder{opacity:1}"]
393
+ styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);border:solid transparent;border-width:0 var(--border-end,0) 0 var(--border-start,0);border-inline-start-width:var(--border-start,0);border-inline-end-width:var(--border-end,0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit;resize:none}:host:-webkit-autofill,:host:-webkit-autofill:focus,:host:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}:host :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill,:host :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:focus,:host :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:hover,:host :host-context(tui-text-area[data-mode=onDark]):-webkit-autofill,:host :host-context(tui-text-area[data-mode=onDark]):-webkit-autofill:focus,:host :host-context(tui-text-area[data-mode=onDark]):-webkit-autofill:hover,:host[data-mode=onDark] :host:-webkit-autofill,:host[data-mode=onDark] :host:-webkit-autofill:focus,:host[data-mode=onDark] :host:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill-night) inset!important}:host :host-context(tui-primitive-textfield[data-size='s']):not(tui-primitive-textfield),:host :host-context(tui-text-area[data-size='s']):not(tui-text-area),:host[data-size='s'] :host{padding:0 var(--tui-padding-s)}:host :host-context(tui-primitive-textfield[data-size='l']):not(tui-primitive-textfield),:host :host-context(tui-text-area[data-size='l']):not(tui-text-area),:host[data-size='l'] :host{padding:0 var(--tui-padding-l)}:host :host-context(tui-primitive-textfield._disabled),:host :host-context(tui-text-area._disabled),:host._disabled :host{pointer-events:none}:host :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='l']:not(._label-outside) :host{padding-top:1.25rem}:host :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='l']:not(._label-outside) :host:-webkit-autofill+.content .placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='m']:not(._label-outside) :host{padding-top:1.125rem}:host :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='m']:not(._label-outside) :host:-webkit-autofill+.content .placeholder{font-size:.69rem;transform:translateY(-.5rem)}:host :host-context(tui-primitive-textfield._hidden),:host._hidden input:host{opacity:0;text-indent:-10em;-webkit-user-select:none}:host::-webkit-caps-lock-indicator{margin-right:.375rem;align-self:center}:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-caps-lock-indicator{margin-top:-1.25rem}:host::-webkit-contacts-auto-fill-button,:host::-webkit-credentials-auto-fill-button,:host::-webkit-credit-card-auto-fill-button{background-color:var(--tui-text-03)}:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-contacts-auto-fill-button,:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-credentials-auto-fill-button,:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-credit-card-auto-fill-button{margin-top:-1.25rem}:host::-webkit-contacts-auto-fill-button:hover,:host::-webkit-credentials-auto-fill-button:hover,:host::-webkit-credit-card-auto-fill-button:hover{background-color:var(--tui-text-02)}:host::-ms-input-placeholder{color:var(--tui-text-03);opacity:0}:host::placeholder{color:var(--tui-text-03);opacity:0}:host :host-context(tui-primitive-textfield[data-mode=onDark])::-ms-input-placeholder,:host :host-context(tui-text-area[data-mode=onDark])::-ms-input-placeholder{color:var(--tui-text-03-night)}:host :host-context(tui-primitive-textfield[data-mode=onDark])::placeholder,:host :host-context(tui-text-area[data-mode=onDark])::placeholder{color:var(--tui-text-03-night)}:host :host-context(tui-primitive-textfield._focused:not(._readonly))::-ms-input-placeholder,:host :host-context(tui-text-area._focused:not(._readonly))::-ms-input-placeholder{opacity:1}:host :host-context(tui-primitive-textfield._focused:not(._readonly))::placeholder,:host :host-context(tui-text-area._focused:not(._readonly))::placeholder{opacity:1}textarea:host{white-space:normal}textarea:host :host-context(tui-text-area._ios){padding-left:.8125rem}"]
394
394
  }),
395
395
  __param(0, Inject(TUI_TEXTFIELD_HOST)),
396
396
  __param(1, Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER$1)),
@@ -486,7 +486,6 @@ TuiPrimitiveTextfieldModule = __decorate([
486
486
  TuiTooltipModule,
487
487
  TuiAutofilledModule,
488
488
  TuiDescribedByModule,
489
- TuiPreventDefaultModule,
490
489
  MutationObserverModule,
491
490
  ],
492
491
  declarations: [
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-primitive-textfield.js","sources":["ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.providers.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield-options.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.directive.ts","ng://@taiga-ui/core/components/primitive-textfield/textfield/textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/value-decoration/value-decoration.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.module.ts","ng://@taiga-ui/core/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.ts"],"sourcesContent":["import {forwardRef} from '@angular/core';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk';\nimport {HINT_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/hint-controller';\nimport {TEXTFIELD_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/textfield-controller';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\nexport const TUI_PRIMITIVE_TEXTFIELD_PROVIDERS = [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldComponent),\n },\n TEXTFIELD_CONTROLLER_PROVIDER,\n HINT_CONTROLLER_PROVIDER,\n MODE_PROVIDER,\n];\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiPrimitiveTextfieldOptions {\n readonly iconAlign: TuiHorizontalDirection;\n readonly iconCleaner: PolymorpheusContent;\n}\n\n// TODO: remove in ivy compilation\nexport const TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER = 'tuiIconCloseLarge';\n\n/** Default values for primitive textfield options */\nexport const TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS: TuiPrimitiveTextfieldOptions = {\n iconAlign: 'right',\n iconCleaner: TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER,\n};\n\nexport const TUI_PRIMITIVE_TEXTFIELD_OPTIONS =\n new InjectionToken<TuiPrimitiveTextfieldOptions>(\n 'Default parameters for primitive textfield component',\n {\n factory: () => TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS,\n },\n );\n\nexport const tuiPrimitiveTextfieldOptionsProvider: (\n options: Partial<TuiPrimitiveTextfieldOptions>,\n) => ValueProvider = (options: Partial<TuiPrimitiveTextfieldOptions>) => ({\n provide: TUI_PRIMITIVE_TEXTFIELD_OPTIONS,\n useValue: {...TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractTuiInteractive,\n isNativeFocusedIn,\n setNativeFocused,\n TuiContextWithImplicit,\n TuiCreditCardAutofillName,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n TUI_HINT_WATCHED_CONTROLLER,\n TuiHintControllerDirective,\n} from '@taiga-ui/core/directives/hint-controller';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives/textfield-controller';\nimport {TUI_MODE, TUI_TEXTFIELD_APPEARANCE} from '@taiga-ui/core/tokens';\nimport {TuiBrightness, TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport {getBorder} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent, PolymorpheusOutletComponent} from '@tinkoff/ng-polymorpheus';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_PRIMITIVE_TEXTFIELD_PROVIDERS} from './primitive-textfield.providers';\nimport {\n TUI_PRIMITIVE_TEXTFIELD_OPTIONS,\n TuiPrimitiveTextfieldOptions,\n} from './primitive-textfield-options';\n\nconst ICON_PADDING = 1.75;\nconst ICON_PADDING_S = 1.5;\n\n@Component({\n selector: 'tui-primitive-textfield',\n templateUrl: './primitive-textfield.template.html',\n styleUrls: ['./primitive-textfield.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_PRIMITIVE_TEXTFIELD_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n '[class._autofilled]': 'autofilled',\n '[class._label-outside]': 'controller.labelOutside',\n },\n})\nexport class TuiPrimitiveTextfieldComponent\n extends AbstractTuiInteractive\n implements TuiFocusableElementAccessor\n{\n @ViewChild('focusableElement')\n private readonly focusableElement?: ElementRef<HTMLInputElement>;\n\n @Input()\n @tuiDefaultProp()\n editable = true;\n\n @Input()\n @tuiDefaultProp()\n filler = '';\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiPrimitiveTextfieldOptions['iconAlign'] = this.options.iconAlign;\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiDefaultProp()\n iconContent: PolymorpheusContent<TuiContextWithImplicit<TuiSizeS | TuiSizeL>> | null =\n null;\n\n @Input()\n @tuiDefaultProp()\n iconCleaner: TuiPrimitiveTextfieldOptions['iconCleaner'] = this.options.iconCleaner;\n\n @Input()\n @HostBinding('class._readonly')\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n invalid = false;\n\n @Input()\n @tuiDefaultProp()\n disabled = false;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = '';\n\n @Input()\n @tuiDefaultProp()\n value = '';\n\n @Output()\n readonly valueChange = new EventEmitter<string>();\n\n /**\n * @deprecated TODO: remove in 3.0\n */\n @Output()\n readonly autofilledChange = new EventEmitter<boolean>();\n\n @ContentChildren(PolymorpheusOutletComponent)\n readonly content?: QueryList<unknown>;\n\n autofilled = false;\n\n constructor(\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TEXTFIELD_APPEARANCE) readonly appearance: string,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(TUI_HINT_WATCHED_CONTROLLER)\n readonly hintController: TuiHintControllerDirective,\n @Inject(TUI_PRIMITIVE_TEXTFIELD_OPTIONS)\n readonly options: TuiPrimitiveTextfieldOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n ) {\n super();\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n if (this.computedDisabled || !this.focusableElement) {\n return null;\n }\n\n // TODO: Refactor this after we drop built-in input element\n return (\n (this.focusableElement.nativeElement\n .previousElementSibling as HTMLInputElement | null) ||\n this.focusableElement.nativeElement\n );\n }\n\n get focused(): boolean {\n return isNativeFocusedIn(this.elementRef.nativeElement);\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiSizeS | TuiSizeL {\n return this.controller.size;\n }\n\n @HostBinding('class._invalid')\n get computedInvalid(): boolean {\n return !this.readOnly && !this.disabled && this.invalid;\n }\n\n @HostBinding('class._hidden')\n get inputHidden(): boolean {\n return !!this.content?.length;\n }\n\n get hasValue(): boolean {\n return !!this.value;\n }\n\n get hasCleaner(): boolean {\n return (\n this.controller.cleaner && this.hasValue && !this.disabled && !this.readOnly\n );\n }\n\n get hasTooltip(): boolean {\n return !!this.hintController?.content && !this.disabled;\n }\n\n get hasCustomContent(): boolean {\n return !!this.controller.customContent;\n }\n\n get hasPlaceholder(): boolean {\n const hasDecor =\n this.controller.exampleText ||\n this.prefix ||\n this.postfix ||\n this.nativeFocusableElement?.placeholder;\n const showDecor = hasDecor && !this.readOnly && this.computedFocused;\n const placeholderVisible = !this.hasValue && !showDecor;\n\n return this.placeholderRaisable || placeholderVisible;\n }\n\n get placeholderRaised(): boolean {\n return (\n this.placeholderRaisable &&\n ((this.computedFocused && !this.readOnly) || this.hasValue || this.autofilled)\n );\n }\n\n @HostBinding('style.--border-start.rem')\n get borderStart(): number {\n return this.iconAlignLeft ? this.iconPaddingLeft : 0;\n }\n\n @HostBinding('style.--border-end.rem')\n get borderEnd(): number {\n return getBorder(\n this.iconAlignRight,\n this.hasCleaner,\n this.hasTooltip,\n this.hasCustomContent,\n );\n }\n\n get iconAlignLeft(): boolean {\n return this.hasIcon && this.iconAlign === 'left';\n }\n\n get iconAlignRight(): boolean {\n return this.hasIcon && this.iconAlign === 'right';\n }\n\n // Safari expiration date autofill workaround\n get name(): 'ccexpiryyear' | null {\n return this.controller.autocomplete === TuiCreditCardAutofillName.CcExp\n ? 'ccexpiryyear'\n : null;\n }\n\n get computedId(): string {\n return this.nativeFocusableElement?.id || '';\n }\n\n @HostListener('focusin', ['true'])\n @HostListener('focusout', ['false'])\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n }\n\n @tuiPure\n getIndent$(element: HTMLElement): Observable<number> {\n return fromEvent(element, 'scroll').pipe(map(() => -1 * element.scrollLeft));\n }\n\n clear() {\n if (this.nativeFocusableElement) {\n this.nativeFocusableElement.value = '';\n }\n\n this.updateValue('');\n }\n\n onMouseDown(event: MouseEvent) {\n const {nativeFocusableElement} = this;\n\n if (!nativeFocusableElement || event.target === nativeFocusableElement) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(nativeFocusableElement);\n }\n\n onModelChange(value: string) {\n this.updateValue(value);\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onAutofilled(autofilled: boolean) {\n this.updateAutofilled(autofilled);\n }\n\n private get iconPaddingLeft(): number {\n return this.size === 's' ? ICON_PADDING_S : ICON_PADDING;\n }\n\n private get placeholderRaisable(): boolean {\n return this.size !== 's' && !this.controller.labelOutside;\n }\n\n private get hasIcon(): boolean {\n return !!this.iconContent;\n }\n\n private updateAutofilled(autofilled: boolean) {\n if (this.autofilled === autofilled) {\n return;\n }\n\n this.autofilled = autofilled;\n this.autofilledChange.emit(autofilled);\n }\n\n private updateValue(value: string) {\n this.value = value;\n this.valueChange.emit(value);\n }\n}\n","import {Directive, forwardRef, Inject} from '@angular/core';\nimport {AbstractTuiControl} from '@taiga-ui/cdk';\nimport {TuiAbstractTextfieldHost} from '@taiga-ui/core/abstract';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\n@Directive({\n selector: 'tui-primitive-textfield',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldDirective),\n },\n ],\n})\nexport class TuiPrimitiveTextfieldDirective extends TuiAbstractTextfieldHost<any> {\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n ) {\n /**\n * TuiPrimitiveTextfieldComponent satisfies all required parts of\n * AbstractTuiControl interface. A new interface is not introduced\n * so AbstractTuiControl is automatically injected for all other controls.\n */\n super(textfield as any as AbstractTuiControl<unknown>);\n }\n\n get readOnly(): boolean {\n return this.textfield.readOnly || !this.textfield.editable;\n }\n\n onValueChange(value: string) {\n this.textfield.onModelChange(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n Inject,\n} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk';\nimport {\n TEXTFIELD_CONTROLLER_PROVIDER,\n TUI_DESCRIBED_BY_PROVIDERS,\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiDescribedByDirective,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\n// @dynamic\n@Component({\n selector: 'input[tuiTextfield]',\n template: '',\n providers: [\n TuiDescribedByDirective,\n TUI_DESCRIBED_BY_PROVIDERS,\n TEXTFIELD_CONTROLLER_PROVIDER,\n ],\n host: {\n type: 'text',\n '[attr.aria-placeholder]': 'controller.exampleText',\n '[attr.aria-invalid]': 'host.invalid',\n '[attr.disabled]': 'host.disabled || null',\n '[tabIndex]': 'host.focusable ? 0 : -1',\n '[readOnly]': 'host.readOnly',\n '[value]': 'host.value',\n '(input)': 'host.onValueChange($event.target.value)',\n },\n styleUrls: ['textfield.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiTextfieldComponent implements DoCheck {\n constructor(\n @Inject(TUI_TEXTFIELD_HOST) readonly host: TuiTextfieldHost,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiDescribedByDirective)\n private readonly describedBy: TuiDescribedByDirective,\n @Inject(TuiIdService)\n private readonly idService: TuiIdService,\n ) {\n this.host.process(this.elementRef.nativeElement);\n }\n\n @HostBinding('attr.aria-describedby')\n get computedDescribedBy(): string | null {\n return this.describedBy.computedDescribedBy;\n }\n\n @HostBinding('id')\n get id(): string {\n return this.elementRef.nativeElement.id || this.idService.generate();\n }\n\n ngDoCheck() {\n this.describedBy.tuiDescribedBy = this.id;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n ViewChild,\n} from '@angular/core';\nimport {MutationObserverDirective} from '@ng-web-apis/mutation-observer';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\nimport {defer, EMPTY} from 'rxjs';\nimport {distinctUntilChanged, map, startWith} from 'rxjs/operators';\n\nimport {TuiPrimitiveTextfieldComponent} from '../primitive-textfield.component';\n\n@Component({\n selector: 'tui-value-decoration',\n templateUrl: 'value-decoration.template.html',\n styleUrls: ['value-decoration.style.less'],\n // It follows Change Detection of PrimitiveTextfield\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiValueDecorationComponent {\n @ViewChild('pre', {read: ElementRef, static: true})\n private readonly pre?: ElementRef<HTMLElement>;\n\n @ViewChild(MutationObserverDirective, {static: true})\n private readonly directive?: MutationObserverDirective;\n\n readonly pre$ = defer(() => this.directive?.waMutationObserver ?? EMPTY).pipe(\n map(() => this.pre?.nativeElement.offsetWidth ?? 0),\n startWith(0),\n distinctUntilChanged(),\n );\n\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n private readonly controller: TuiTextfieldController,\n ) {}\n\n @HostBinding('class._table')\n get isContextTable(): boolean {\n return this.textfield.appearance === TuiAppearance.Table;\n }\n\n get value(): string {\n return this.textfield.value;\n }\n\n get filler(): string {\n const {focused, placeholder, exampleText, value, textfield} = this;\n\n if (focused && placeholder && exampleText) {\n return '';\n }\n\n return focused ? exampleText || textfield.filler.slice(value.length) : '';\n }\n\n get prefix(): string {\n return this.decorationsVisible ? this.textfield.prefix : '';\n }\n\n get postfix(): string {\n return this.decorationsVisible ? this.computedPostfix : '';\n }\n\n private get placeholder(): string {\n return this.textfield.nativeFocusableElement?.placeholder || '';\n }\n\n private get exampleText(): string {\n const exampleText = this.controller.exampleText || this.placeholder;\n\n return !this.value && this.focused ? exampleText : '';\n }\n\n private get decorationsVisible(): boolean {\n return !!this.value || this.focused;\n }\n\n private get focused(): boolean {\n return this.textfield.computedFocused && !this.textfield.readOnly;\n }\n\n private get computedPostfix(): string {\n return this.textfield.postfix && (this.filler || this.value)\n ? ` ${this.textfield.postfix}`\n : this.textfield.postfix;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MutationObserverModule} from '@ng-web-apis/mutation-observer';\nimport {\n TuiAutofilledModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n TuiPreventDefaultModule,\n} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\nimport {TuiTooltipModule} from '@taiga-ui/core/components/tooltip';\nimport {TuiWrapperModule} from '@taiga-ui/core/components/wrapper';\nimport {TuiDescribedByModule} from '@taiga-ui/core/directives/described-by';\nimport {TuiMaskAccessorModule} from '@taiga-ui/core/directives/mask-accessor';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\nimport {TuiPrimitiveTextfieldDirective} from './primitive-textfield.directive';\nimport {TuiTextfieldComponent} from './textfield/textfield.component';\nimport {TuiValueDecorationComponent} from './value-decoration/value-decoration.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TuiMaskAccessorModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n PolymorpheusModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiTooltipModule,\n TuiAutofilledModule,\n TuiDescribedByModule,\n TuiPreventDefaultModule,\n MutationObserverModule,\n ],\n declarations: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n TuiValueDecorationComponent,\n ],\n exports: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n ],\n})\nexport class TuiPrimitiveTextfieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TuiTextfieldController","TUI_TEXTFIELD_WATCHED_CONTROLLER","TEXTFIELD_CONTROLLER_PROVIDER"],"mappings":";;;;;;;;;;;;;;;;;;;;;;MAQa,iCAAiC,GAAG;IAC7C;QACI,OAAO,EAAE,2BAA2B;QACpC,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;KAChE;IACD,6BAA6B;IAC7B,wBAAwB;IACxB,aAAa;;;ACNjB;MACa,oCAAoC,GAAG,oBAAoB;AAExE;MACa,uCAAuC,GAAiC;IACjF,SAAS,EAAE,OAAO;IAClB,WAAW,EAAE,oCAAoC;EACnD;MAEW,+BAA+B,GACxC,IAAI,cAAc,CACd,sDAAsD,EACtD;IACI,OAAO,EAAE,MAAM,uCAAuC;CACzD,EACH;MAEO,oCAAoC,GAE5B,CAAC,OAA8C,MAAM;IACtE,OAAO,EAAE,+BAA+B;IACxC,QAAQ,kCAAM,uCAAuC,GAAK,OAAO,CAAC;CACrE;;ACcD,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,cAAc,GAAG,GAAG,CAAC;IAcd,8BAA8B,GAA3C,MAAa,8BACT,SAAQ,sBAAsB;IAmE9B,YAC+B,KAAuC,EACvB,UAAkB,EAEpD,UAAkC,EAElC,cAA0C,EAE1C,OAAqC,EACT,UAAmC;QAExE,KAAK,EAAE,CAAC;QAVmB,UAAK,GAAL,KAAK,CAAkC;QACvB,eAAU,GAAV,UAAU,CAAQ;QAEpD,eAAU,GAAV,UAAU,CAAwB;QAElC,mBAAc,GAAd,cAAc,CAA4B;QAE1C,YAAO,GAAP,OAAO,CAA8B;QACT,eAAU,GAAV,UAAU,CAAyB;QApE5E,aAAQ,GAAG,IAAI,CAAC;QAIhB,WAAM,GAAG,EAAE,CAAC;QAIZ,cAAS,GAA8C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;;QAK9E,gBAAW,GACP,IAAI,CAAC;QAIT,gBAAW,GAAgD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAKpF,aAAQ,GAAG,KAAK,CAAC;QAIjB,YAAO,GAAG,KAAK,CAAC;QAIhB,aAAQ,GAAG,KAAK,CAAC;QAIjB,WAAM,GAAG,EAAE,CAAC;QAIZ,YAAO,GAAG,EAAE,CAAC;QAIb,UAAK,GAAG,EAAE,CAAC;QAGF,gBAAW,GAAG,IAAI,YAAY,EAAU,CAAC;;;;QAMzC,qBAAgB,GAAG,IAAI,YAAY,EAAW,CAAC;QAKxD,eAAU,GAAG,KAAK,CAAC;KAclB;IAED,IAAI,sBAAsB;QACtB,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACjD,OAAO,IAAI,CAAC;SACf;;QAGD,QACK,IAAI,CAAC,gBAAgB,CAAC,aAAa;aAC/B,sBAAkD;YACvD,IAAI,CAAC,gBAAgB,CAAC,aAAa,EACrC;KACL;IAED,IAAI,OAAO;QACP,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;KAC3D;IAGD,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;KAC/B;IAGD,IAAI,eAAe;QACf,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC;KAC3D;IAGD,IAAI,WAAW;;QACX,OAAO,CAAC,QAAC,IAAI,CAAC,OAAO,0CAAE,MAAM,CAAA,CAAC;KACjC;IAED,IAAI,QAAQ;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KACvB;IAED,IAAI,UAAU;QACV,QACI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAC9E;KACL;IAED,IAAI,UAAU;;QACV,OAAO,CAAC,QAAC,IAAI,CAAC,cAAc,0CAAE,OAAO,CAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC3D;IAED,IAAI,gBAAgB;QAChB,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;KAC1C;IAED,IAAI,cAAc;;QACd,MAAM,QAAQ,GACV,IAAI,CAAC,UAAU,CAAC,WAAW;YAC3B,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,OAAO,WACZ,IAAI,CAAC,sBAAsB,0CAAE,WAAW,CAAA,CAAC;QAC7C,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;QACrE,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC;QAExD,OAAO,IAAI,CAAC,mBAAmB,IAAI,kBAAkB,CAAC;KACzD;IAED,IAAI,iBAAiB;QACjB,QACI,IAAI,CAAC,mBAAmB;aACvB,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,EAChF;KACL;IAGD,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;KACxD;IAGD,IAAI,SAAS;QACT,OAAO,SAAS,CACZ,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,CACxB,CAAC;KACL;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;KACpD;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;KACrD;;IAGD,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY;cAC7B,cAAc;cACd,IAAI,CAAC;KACd;IAED,IAAI,UAAU;;QACV,OAAO,OAAA,IAAI,CAAC,sBAAsB,0CAAE,EAAE,KAAI,EAAE,CAAC;KAChD;IAID,SAAS,CAAC,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAGD,UAAU,CAAC,OAAoB;QAC3B,OAAO,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;KAChF;IAED,KAAK;QACD,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,EAAE,CAAC;SAC1C;QAED,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACxB;IAED,WAAW,CAAC,KAAiB;QACzB,MAAM,EAAC,sBAAsB,EAAC,GAAG,IAAI,CAAC;QAEtC,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC,MAAM,KAAK,sBAAsB,EAAE;YACpE,OAAO;SACV;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;KAC5C;IAED,aAAa,CAAC,KAAa;QACvB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAC3B;IAED,SAAS,CAAC,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,YAAY,CAAC,UAAmB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;KACrC;IAED,IAAY,eAAe;QACvB,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,cAAc,GAAG,YAAY,CAAC;KAC5D;IAED,IAAY,mBAAmB;QAC3B,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;KAC7D;IAED,IAAY,OAAO;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;KAC7B;IAEO,gBAAgB,CAAC,UAAmB;QACxC,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;YAChC,OAAO;SACV;QAED,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC1C;IAEO,WAAW,CAAC,KAAa;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;EACJ;;YAvLyC,UAAU,uBAA3C,MAAM,SAAC,QAAQ;yCACf,MAAM,SAAC,wBAAwB;YAEX,sBAAsB,uBAD1C,MAAM,SAAC,gCAAgC;YAGf,0BAA0B,uBADlD,MAAM,SAAC,2BAA2B;4CAElC,MAAM,SAAC,+BAA+B;YAEU,UAAU,uBAA1D,MAAM,SAAC,UAAU;;AAxEtB;IADC,SAAS,CAAC,kBAAkB,CAAC;wEACmC;AAIjE;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;gEACD;AAIhB;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;8DACL;AAIZ;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;iEAC6D;AAK9E;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;mEAER;AAIT;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;mEACmE;AAKpF;IAHC,KAAK,EAAE;IACP,WAAW,CAAC,iBAAiB,CAAC;IAC9B,cAAc,EAAE;gEACA;AAIjB;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;+DACD;AAIhB;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;gEACA;AAIjB;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;8DACL;AAIZ;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;+DACJ;AAIb;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;6DACN;AAGX;IADC,MAAM,EAAE;mEACyC;AAMlD;IADC,MAAM,EAAE;wEAC+C;AAGxD;IADC,eAAe,CAAC,2BAA2B,CAAC;+DACP;AAoCtC;IADC,WAAW,CAAC,gBAAgB,CAAC;0DAG7B;AAGD;IADC,WAAW,CAAC,gBAAgB,CAAC;qEAG7B;AAGD;IADC,WAAW,CAAC,eAAe,CAAC;iEAG5B;AAwCD;IADC,WAAW,CAAC,0BAA0B,CAAC;iEAGvC;AAGD;IADC,WAAW,CAAC,wBAAwB,CAAC;+DAQrC;AAuBD;IAFC,YAAY,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;+DAGnC;AAGD;IADC,OAAO;gEAGP;AAlMQ,8BAA8B;IAZ1C,SAAS,CAAC;QACP,QAAQ,EAAE,yBAAyB;QACnC,2zIAAkD;QAElD,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,SAAS,EAAE,iCAAiC;QAC5C,IAAI,EAAE;YACF,oBAAoB,EAAE,OAAO;YAC7B,qBAAqB,EAAE,YAAY;YACnC,wBAAwB,EAAE,yBAAyB;SACtD;;KACJ,CAAC;IAsEO,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChB,WAAA,MAAM,CAAC,wBAAwB,CAAC,CAAA;IAChC,WAAA,MAAM,CAAC,gCAAgC,CAAC,CAAA;IAExC,WAAA,MAAM,CAAC,2BAA2B,CAAC,CAAA;IAEnC,WAAA,MAAM,CAAC,+BAA+B,CAAC,CAAA;IAEvC,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;GA7Ed,8BAA8B,CA4P1C;;;ICxSY,8BAA8B,sCAA3C,MAAa,8BAA+B,SAAQ,wBAA6B;IAC7E,YAEqB,SAAyC;;;;;;QAO1D,KAAK,CAAC,SAA+C,CAAC,CAAC;QAPtC,cAAS,GAAT,SAAS,CAAgC;KAQ7D;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;KAC9D;IAED,aAAa,CAAC,KAAa;QACvB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACvC;EACJ;;YAjBmC,8BAA8B,uBADzD,MAAM,SAAC,8BAA8B;;AAFjC,8BAA8B;IAT1C,SAAS,CAAC;QACP,QAAQ,EAAE,yBAAyB;QACnC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,kBAAkB;gBAC3B,WAAW,EAAE,UAAU,CAAC,MAAM,gCAA8B,CAAC;aAChE;SACJ;KACJ,CAAC;IAGO,WAAA,MAAM,CAAC,8BAA8B,CAAC,CAAA;GAFlC,8BAA8B,CAoB1C;;ACjBD;IAsBa,qBAAqB,GAAlC,MAAa,qBAAqB;IAC9B,YACyC,IAAsB,EAElD,UAAkC,EACN,UAAwC,EAE5D,WAAoC,EAEpC,SAAuB;QAPH,SAAI,GAAJ,IAAI,CAAkB;QAElD,eAAU,GAAV,UAAU,CAAwB;QACN,eAAU,GAAV,UAAU,CAA8B;QAE5D,gBAAW,GAAX,WAAW,CAAyB;QAEpC,cAAS,GAAT,SAAS,CAAc;QAExC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;KACpD;IAGD,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;KAC/C;IAGD,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KACxE;IAED,SAAS;QACL,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC;KAC7C;EACJ;;4CAzBQ,MAAM,SAAC,kBAAkB;YAELA,wBAAsB,uBAD1C,MAAM,SAACC,kCAAgC;YAES,UAAU,uBAA1D,MAAM,SAAC,UAAU;YAEY,uBAAuB,uBADpD,MAAM,SAAC,uBAAuB;YAGH,YAAY,uBADvC,MAAM,SAAC,YAAY;;AAOxB;IADC,WAAW,CAAC,uBAAuB,CAAC;gEAGpC;AAGD;IADC,WAAW,CAAC,IAAI,CAAC;+CAGjB;AAtBQ,qBAAqB;IArBjC,SAAS,CAAC;QACP,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE;YACP,uBAAuB;YACvB,0BAA0B;YAC1BC,+BAA6B;SAChC;QACD,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,yBAAyB,EAAE,wBAAwB;YACnD,qBAAqB,EAAE,cAAc;YACrC,iBAAiB,EAAE,uBAAuB;YAC1C,YAAY,EAAE,yBAAyB;YACvC,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,yCAAyC;SACvD;QAED,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;IAGO,WAAA,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC1B,WAAA,MAAM,CAACD,kCAAgC,CAAC,CAAA;IAExC,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;IAClB,WAAA,MAAM,CAAC,uBAAuB,CAAC,CAAA;IAE/B,WAAA,MAAM,CAAC,YAAY,CAAC,CAAA;GARhB,qBAAqB,CA2BjC;;IC1CY,2BAA2B,GAAxC,MAAa,2BAA2B;IAapC,YAEqB,SAAyC,EAEzC,UAAkC;QAFlC,cAAS,GAAT,SAAS,CAAgC;QAEzC,eAAU,GAAV,UAAU,CAAwB;QAV9C,SAAI,GAAG,KAAK,CAAC,uCAAM,IAAI,CAAC,SAAS,0CAAE,kBAAkB,mCAAI,KAAK,GAAA,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,uCAAM,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,WAAW,mCAAI,CAAC,GAAA,CAAC,EACnD,SAAS,CAAC,CAAC,CAAC,EACZ,oBAAoB,EAAE,CACzB,CAAC;KAOE;IAGJ,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,yBAAyB;KAC5D;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;KAC/B;IAED,IAAI,MAAM;QACN,MAAM,EAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC;QAEnE,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,EAAE;YACvC,OAAO,EAAE,CAAC;SACb;QAED,OAAO,OAAO,GAAG,WAAW,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;KAC7E;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;KAC/D;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;KAC9D;IAED,IAAY,WAAW;;QACnB,OAAO,OAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,0CAAE,WAAW,KAAI,EAAE,CAAC;KACnE;IAED,IAAY,WAAW;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QAEpE,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,GAAG,EAAE,CAAC;KACzD;IAED,IAAY,kBAAkB;QAC1B,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC;KACvC;IAED,IAAY,OAAO;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;KACrE;IAED,IAAY,eAAe;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC;cACtD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;cAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAChC;EACJ;;YAvDmC,8BAA8B,uBADzD,MAAM,SAAC,8BAA8B;YAGTD,wBAAsB,uBADlD,MAAM,SAACC,kCAAgC;;AAd5C;IADC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;wDACJ;AAG/C;IADC,SAAS,CAAC,yBAAyB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC;8DACE;AAgBvD;IADC,WAAW,CAAC,cAAc,CAAC;iEAG3B;AAvBQ,2BAA2B;IAPvC,SAAS,CAAC;QACP,QAAQ,EAAE,sBAAsB;QAChC,8LAA6C;;QAG7C,eAAe,EAAE,uBAAuB,CAAC,OAAO;;KACnD,CAAC;IAeO,WAAA,MAAM,CAAC,8BAA8B,CAAC,CAAA;IAEtC,WAAA,MAAM,CAACA,kCAAgC,CAAC,CAAA;GAhBpC,2BAA2B,CAsEvC;;IC5CY,2BAA2B,GAAxC,MAAa,2BAA2B;EAAG;AAA9B,2BAA2B;IA7BvC,QAAQ,CAAC;QACN,OAAO,EAAE;YACL,YAAY;YACZ,WAAW;YACX,qBAAqB;YACrB,kBAAkB;YAClB,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,gBAAgB;YAChB,YAAY;YACZ,gBAAgB;YAChB,mBAAmB;YACnB,oBAAoB;YACpB,uBAAuB;YACvB,sBAAsB;SACzB;QACD,YAAY,EAAE;YACV,8BAA8B;YAC9B,8BAA8B;YAC9B,qBAAqB;YACrB,2BAA2B;SAC9B;QACD,OAAO,EAAE;YACL,8BAA8B;YAC9B,8BAA8B;YAC9B,qBAAqB;SACxB;KACJ,CAAC;GACW,2BAA2B,CAAG;;ACpD3C;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-components-primitive-textfield.js","sources":["ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.providers.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield-options.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.directive.ts","ng://@taiga-ui/core/components/primitive-textfield/textfield/textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/value-decoration/value-decoration.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.module.ts","ng://@taiga-ui/core/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.ts"],"sourcesContent":["import {forwardRef} from '@angular/core';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk';\nimport {HINT_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/hint-controller';\nimport {TEXTFIELD_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/textfield-controller';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\nexport const TUI_PRIMITIVE_TEXTFIELD_PROVIDERS = [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldComponent),\n },\n TEXTFIELD_CONTROLLER_PROVIDER,\n HINT_CONTROLLER_PROVIDER,\n MODE_PROVIDER,\n];\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiPrimitiveTextfieldOptions {\n readonly iconAlign: TuiHorizontalDirection;\n readonly iconCleaner: PolymorpheusContent;\n}\n\n// TODO: remove in ivy compilation\nexport const TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER = 'tuiIconCloseLarge';\n\n/** Default values for primitive textfield options */\nexport const TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS: TuiPrimitiveTextfieldOptions = {\n iconAlign: 'right',\n iconCleaner: TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER,\n};\n\nexport const TUI_PRIMITIVE_TEXTFIELD_OPTIONS =\n new InjectionToken<TuiPrimitiveTextfieldOptions>(\n 'Default parameters for primitive textfield component',\n {\n factory: () => TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS,\n },\n );\n\nexport const tuiPrimitiveTextfieldOptionsProvider: (\n options: Partial<TuiPrimitiveTextfieldOptions>,\n) => ValueProvider = (options: Partial<TuiPrimitiveTextfieldOptions>) => ({\n provide: TUI_PRIMITIVE_TEXTFIELD_OPTIONS,\n useValue: {...TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractTuiInteractive,\n isNativeFocusedIn,\n setNativeFocused,\n TuiContextWithImplicit,\n TuiCreditCardAutofillName,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n TUI_HINT_WATCHED_CONTROLLER,\n TuiHintControllerDirective,\n} from '@taiga-ui/core/directives/hint-controller';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives/textfield-controller';\nimport {TUI_MODE, TUI_TEXTFIELD_APPEARANCE} from '@taiga-ui/core/tokens';\nimport {TuiBrightness, TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport {getBorder} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent, PolymorpheusOutletComponent} from '@tinkoff/ng-polymorpheus';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_PRIMITIVE_TEXTFIELD_PROVIDERS} from './primitive-textfield.providers';\nimport {\n TUI_PRIMITIVE_TEXTFIELD_OPTIONS,\n TuiPrimitiveTextfieldOptions,\n} from './primitive-textfield-options';\n\nconst ICON_PADDING = 1.75;\nconst ICON_PADDING_S = 1.5;\n\n@Component({\n selector: 'tui-primitive-textfield',\n templateUrl: './primitive-textfield.template.html',\n styleUrls: ['./primitive-textfield.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_PRIMITIVE_TEXTFIELD_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n '[class._autofilled]': 'autofilled',\n '[class._label-outside]': 'controller.labelOutside',\n },\n})\nexport class TuiPrimitiveTextfieldComponent\n extends AbstractTuiInteractive\n implements TuiFocusableElementAccessor\n{\n @ViewChild('focusableElement')\n private readonly focusableElement?: ElementRef<HTMLInputElement>;\n\n @Input()\n @tuiDefaultProp()\n editable = true;\n\n @Input()\n @tuiDefaultProp()\n filler = '';\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiPrimitiveTextfieldOptions['iconAlign'] = this.options.iconAlign;\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiDefaultProp()\n iconContent: PolymorpheusContent<TuiContextWithImplicit<TuiSizeS | TuiSizeL>> | null =\n null;\n\n @Input()\n @tuiDefaultProp()\n iconCleaner: TuiPrimitiveTextfieldOptions['iconCleaner'] = this.options.iconCleaner;\n\n @Input()\n @HostBinding('class._readonly')\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n invalid = false;\n\n @Input()\n @tuiDefaultProp()\n disabled = false;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = '';\n\n @Input()\n @tuiDefaultProp()\n value = '';\n\n @Output()\n readonly valueChange = new EventEmitter<string>();\n\n /**\n * @deprecated TODO: remove in 3.0\n */\n @Output()\n readonly autofilledChange = new EventEmitter<boolean>();\n\n @ContentChildren(PolymorpheusOutletComponent)\n readonly content?: QueryList<unknown>;\n\n autofilled = false;\n\n constructor(\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TEXTFIELD_APPEARANCE) readonly appearance: string,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(TUI_HINT_WATCHED_CONTROLLER)\n readonly hintController: TuiHintControllerDirective,\n @Inject(TUI_PRIMITIVE_TEXTFIELD_OPTIONS)\n readonly options: TuiPrimitiveTextfieldOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n ) {\n super();\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n if (this.computedDisabled || !this.focusableElement) {\n return null;\n }\n\n // TODO: Refactor this after we drop built-in input element\n return (\n (this.focusableElement.nativeElement\n .previousElementSibling as HTMLInputElement | null) ||\n this.focusableElement.nativeElement\n );\n }\n\n get focused(): boolean {\n return isNativeFocusedIn(this.elementRef.nativeElement);\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiSizeS | TuiSizeL {\n return this.controller.size;\n }\n\n @HostBinding('class._invalid')\n get computedInvalid(): boolean {\n return !this.readOnly && !this.disabled && this.invalid;\n }\n\n @HostBinding('class._hidden')\n get inputHidden(): boolean {\n return !!this.content?.length;\n }\n\n get hasValue(): boolean {\n return !!this.value;\n }\n\n get hasCleaner(): boolean {\n return (\n this.controller.cleaner && this.hasValue && !this.disabled && !this.readOnly\n );\n }\n\n get hasTooltip(): boolean {\n return !!this.hintController?.content && !this.disabled;\n }\n\n get hasCustomContent(): boolean {\n return !!this.controller.customContent;\n }\n\n get hasPlaceholder(): boolean {\n const hasDecor =\n this.controller.exampleText ||\n this.prefix ||\n this.postfix ||\n this.nativeFocusableElement?.placeholder;\n const showDecor = hasDecor && !this.readOnly && this.computedFocused;\n const placeholderVisible = !this.hasValue && !showDecor;\n\n return this.placeholderRaisable || placeholderVisible;\n }\n\n get placeholderRaised(): boolean {\n return (\n this.placeholderRaisable &&\n ((this.computedFocused && !this.readOnly) || this.hasValue || this.autofilled)\n );\n }\n\n @HostBinding('style.--border-start.rem')\n get borderStart(): number {\n return this.iconAlignLeft ? this.iconPaddingLeft : 0;\n }\n\n @HostBinding('style.--border-end.rem')\n get borderEnd(): number {\n return getBorder(\n this.iconAlignRight,\n this.hasCleaner,\n this.hasTooltip,\n this.hasCustomContent,\n );\n }\n\n get iconAlignLeft(): boolean {\n return this.hasIcon && this.iconAlign === 'left';\n }\n\n get iconAlignRight(): boolean {\n return this.hasIcon && this.iconAlign === 'right';\n }\n\n // Safari expiration date autofill workaround\n get name(): 'ccexpiryyear' | null {\n return this.controller.autocomplete === TuiCreditCardAutofillName.CcExp\n ? 'ccexpiryyear'\n : null;\n }\n\n get computedId(): string {\n return this.nativeFocusableElement?.id || '';\n }\n\n @HostListener('focusin', ['true'])\n @HostListener('focusout', ['false'])\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n }\n\n @tuiPure\n getIndent$(element: HTMLElement): Observable<number> {\n return fromEvent(element, 'scroll').pipe(map(() => -1 * element.scrollLeft));\n }\n\n clear() {\n if (this.nativeFocusableElement) {\n this.nativeFocusableElement.value = '';\n }\n\n this.updateValue('');\n }\n\n onMouseDown(event: MouseEvent) {\n const {nativeFocusableElement} = this;\n\n if (!nativeFocusableElement || event.target === nativeFocusableElement) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(nativeFocusableElement);\n }\n\n onModelChange(value: string) {\n this.updateValue(value);\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onAutofilled(autofilled: boolean) {\n this.updateAutofilled(autofilled);\n }\n\n private get iconPaddingLeft(): number {\n return this.size === 's' ? ICON_PADDING_S : ICON_PADDING;\n }\n\n private get placeholderRaisable(): boolean {\n return this.size !== 's' && !this.controller.labelOutside;\n }\n\n private get hasIcon(): boolean {\n return !!this.iconContent;\n }\n\n private updateAutofilled(autofilled: boolean) {\n if (this.autofilled === autofilled) {\n return;\n }\n\n this.autofilled = autofilled;\n this.autofilledChange.emit(autofilled);\n }\n\n private updateValue(value: string) {\n this.value = value;\n this.valueChange.emit(value);\n }\n}\n","import {Directive, forwardRef, Inject} from '@angular/core';\nimport {AbstractTuiControl} from '@taiga-ui/cdk';\nimport {TuiAbstractTextfieldHost} from '@taiga-ui/core/abstract';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\n@Directive({\n selector: 'tui-primitive-textfield',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldDirective),\n },\n ],\n})\nexport class TuiPrimitiveTextfieldDirective extends TuiAbstractTextfieldHost<any> {\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n ) {\n /**\n * TuiPrimitiveTextfieldComponent satisfies all required parts of\n * AbstractTuiControl interface. A new interface is not introduced\n * so AbstractTuiControl is automatically injected for all other controls.\n */\n super(textfield as any as AbstractTuiControl<unknown>);\n }\n\n get readOnly(): boolean {\n return this.textfield.readOnly || !this.textfield.editable;\n }\n\n onValueChange(value: string) {\n this.textfield.onModelChange(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n Inject,\n} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk';\nimport {\n TEXTFIELD_CONTROLLER_PROVIDER,\n TUI_DESCRIBED_BY_PROVIDERS,\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiDescribedByDirective,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\n// @dynamic\n@Component({\n selector: 'input[tuiTextfield], textarea[tuiTextfield]',\n template: '',\n providers: [\n TuiDescribedByDirective,\n TUI_DESCRIBED_BY_PROVIDERS,\n TEXTFIELD_CONTROLLER_PROVIDER,\n ],\n host: {\n type: 'text',\n '[attr.aria-placeholder]': 'controller.exampleText',\n '[attr.aria-invalid]': 'host.invalid',\n '[attr.disabled]': 'host.disabled || null',\n '[tabIndex]': 'host.focusable ? 0 : -1',\n '[readOnly]': 'host.readOnly',\n '[value]': 'host.value',\n '(input)': 'host.onValueChange($event.target.value)',\n },\n styleUrls: ['textfield.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiTextfieldComponent implements DoCheck {\n constructor(\n @Inject(TUI_TEXTFIELD_HOST) readonly host: TuiTextfieldHost,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiDescribedByDirective)\n private readonly describedBy: TuiDescribedByDirective,\n @Inject(TuiIdService)\n private readonly idService: TuiIdService,\n ) {\n this.host.process(this.elementRef.nativeElement);\n }\n\n @HostBinding('attr.aria-describedby')\n get computedDescribedBy(): string | null {\n return this.describedBy.computedDescribedBy;\n }\n\n @HostBinding('id')\n get id(): string {\n return this.elementRef.nativeElement.id || this.idService.generate();\n }\n\n ngDoCheck() {\n this.describedBy.tuiDescribedBy = this.id;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n ViewChild,\n} from '@angular/core';\nimport {MutationObserverDirective} from '@ng-web-apis/mutation-observer';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\nimport {defer, EMPTY} from 'rxjs';\nimport {distinctUntilChanged, map, startWith} from 'rxjs/operators';\n\nimport {TuiPrimitiveTextfieldComponent} from '../primitive-textfield.component';\n\n@Component({\n selector: 'tui-value-decoration',\n templateUrl: 'value-decoration.template.html',\n styleUrls: ['value-decoration.style.less'],\n // It follows Change Detection of PrimitiveTextfield\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiValueDecorationComponent {\n @ViewChild('pre', {read: ElementRef, static: true})\n private readonly pre?: ElementRef<HTMLElement>;\n\n @ViewChild(MutationObserverDirective, {static: true})\n private readonly directive?: MutationObserverDirective;\n\n readonly pre$ = defer(() => this.directive?.waMutationObserver ?? EMPTY).pipe(\n map(() => this.pre?.nativeElement.offsetWidth ?? 0),\n startWith(0),\n distinctUntilChanged(),\n );\n\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n private readonly controller: TuiTextfieldController,\n ) {}\n\n @HostBinding('class._table')\n get isContextTable(): boolean {\n return this.textfield.appearance === TuiAppearance.Table;\n }\n\n get value(): string {\n return this.textfield.value;\n }\n\n get filler(): string {\n const {focused, placeholder, exampleText, value, textfield} = this;\n\n if (focused && placeholder && exampleText) {\n return '';\n }\n\n return focused ? exampleText || textfield.filler.slice(value.length) : '';\n }\n\n get prefix(): string {\n return this.decorationsVisible ? this.textfield.prefix : '';\n }\n\n get postfix(): string {\n return this.decorationsVisible ? this.computedPostfix : '';\n }\n\n private get placeholder(): string {\n return this.textfield.nativeFocusableElement?.placeholder || '';\n }\n\n private get exampleText(): string {\n const exampleText = this.controller.exampleText || this.placeholder;\n\n return !this.value && this.focused ? exampleText : '';\n }\n\n private get decorationsVisible(): boolean {\n return !!this.value || this.focused;\n }\n\n private get focused(): boolean {\n return this.textfield.computedFocused && !this.textfield.readOnly;\n }\n\n private get computedPostfix(): string {\n return this.textfield.postfix && (this.filler || this.value)\n ? ` ${this.textfield.postfix}`\n : this.textfield.postfix;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MutationObserverModule} from '@ng-web-apis/mutation-observer';\nimport {\n TuiAutofilledModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\nimport {TuiTooltipModule} from '@taiga-ui/core/components/tooltip';\nimport {TuiWrapperModule} from '@taiga-ui/core/components/wrapper';\nimport {TuiDescribedByModule} from '@taiga-ui/core/directives/described-by';\nimport {TuiMaskAccessorModule} from '@taiga-ui/core/directives/mask-accessor';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\nimport {TuiPrimitiveTextfieldDirective} from './primitive-textfield.directive';\nimport {TuiTextfieldComponent} from './textfield/textfield.component';\nimport {TuiValueDecorationComponent} from './value-decoration/value-decoration.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TuiMaskAccessorModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n PolymorpheusModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiTooltipModule,\n TuiAutofilledModule,\n TuiDescribedByModule,\n MutationObserverModule,\n ],\n declarations: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n TuiValueDecorationComponent,\n ],\n exports: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n ],\n})\nexport class TuiPrimitiveTextfieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TuiTextfieldController","TUI_TEXTFIELD_WATCHED_CONTROLLER","TEXTFIELD_CONTROLLER_PROVIDER"],"mappings":"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"}
@@ -63,7 +63,7 @@ const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\/#!$%\\^&\\*;:{}=\\-_`~()]$/;
63
63
  const TUI_LATIN_REGEXP = /[A-z]/;
64
64
  const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;
65
65
 
66
- const VERSION = '2.35.0';
66
+ const VERSION = '2.36.0';
67
67
 
68
68
  /**
69
69
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: ReadonlyArray<string> = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.35.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAAa,cAAc,GAAG,EAAE;MACnB,kBAAkB,GAAG,GAAG;MACxB,kBAAkB,GAAG,IAAI;MACzB,iBAAiB,GAAG;;MCHpB,mBAAmB,GAA0B,CAAC,GAAG,EAAE,GAAG;;MCEtD,kBAAkB,GAA6B,IAAI,IAC5D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI;;MCA/B,0BAA0B,GAAqB,MAAM;;MCHrD,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;MAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;MAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;MAIa,cAAc,GAAG,iBAAiB;AAE/C;;;MAGa,cAAc,GAAG;;MCpBjB,eAAe,GAAG;;ACA/B;;;;MAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;MCRT,gBAAgB,GAAG,KAAK;MACxB,oBAAoB,GAAG,KAAK;MAC5B,qBAAqB,GAAG,OAAO;MAC/B,yBAAyB,GAAG,MAAM;MAClC,gCAAgC,GAAG,mCAAmC;MACtE,gBAAgB,GAAG,QAAQ;MAC3B,4BAA4B,GAAG;;MCN/B,OAAO,GAAG;;ACAvB;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: ReadonlyArray<string> = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.36.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAAa,cAAc,GAAG,EAAE;MACnB,kBAAkB,GAAG,GAAG;MACxB,kBAAkB,GAAG,IAAI;MACzB,iBAAiB,GAAG;;MCHpB,mBAAmB,GAA0B,CAAC,GAAG,EAAE,GAAG;;MCEtD,kBAAkB,GAA6B,IAAI,IAC5D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI;;MCA/B,0BAA0B,GAAqB,MAAM;;MCHrD,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;MAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;MAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;MAIa,cAAc,GAAG,iBAAiB;AAE/C;;;MAGa,cAAc,GAAG;;MCpBjB,eAAe,GAAG;;ACA/B;;;;MAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;MCRT,gBAAgB,GAAG,KAAK;MACxB,oBAAoB,GAAG,KAAK;MAC5B,qBAAqB,GAAG,OAAO;MAC/B,yBAAyB,GAAG,MAAM;MAClC,gCAAgC,GAAG,mCAAmC;MACtE,gBAAgB,GAAG,QAAQ;MAC3B,4BAA4B,GAAG;;MCN/B,OAAO,GAAG;;ACAvB;;;;;;"}
@@ -1,6 +1,6 @@
1
- import { __decorate, __param, __read } from 'tslib';
1
+ import { __assign, __decorate, __param, __read } from 'tslib';
2
2
  import { DOCUMENT, CommonModule } from '@angular/common';
3
- import { Inject, ElementRef, Input, HostBinding, Component, ChangeDetectionStrategy, NgZone, Directive, NgModule } from '@angular/core';
3
+ import { InjectionToken, Inject, ElementRef, Input, HostBinding, Component, ChangeDetectionStrategy, NgZone, Directive, NgModule } from '@angular/core';
4
4
  import { USER_AGENT, ANIMATION_FRAME } from '@ng-web-apis/common';
5
5
  import { isEdgeOlderThan, isIE, isSafari, blurNativeFocused, isNativeFocusedIn, TUI_IS_IOS, tuiDefaultProp, tuiRequiredSetter, tuiZonefree, TuiDestroyService } from '@taiga-ui/cdk';
6
6
  import { sizeBigger } from '@taiga-ui/core/utils/miscellaneous';
@@ -8,16 +8,31 @@ import { Observable } from 'rxjs';
8
8
  import { pairwise, takeUntil } from 'rxjs/operators';
9
9
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
10
10
 
11
+ /** Default values for the loader options. */
12
+ var TUI_LOADER_DEFAULT_OPTIONS = {
13
+ size: 'm',
14
+ inheritColor: false,
15
+ overlay: false,
16
+ };
17
+ var TUI_LOADER_OPTIONS = new InjectionToken('Default parameters for loader component', {
18
+ factory: function () { return TUI_LOADER_DEFAULT_OPTIONS; },
19
+ });
20
+ var tuiLoaderOptionsProvider = function (options) { return ({
21
+ provide: TUI_LOADER_OPTIONS,
22
+ useValue: __assign(__assign({}, TUI_LOADER_DEFAULT_OPTIONS), options),
23
+ }); };
24
+
11
25
  // @dynamic
12
26
  var TuiLoaderComponent = /** @class */ (function () {
13
- function TuiLoaderComponent(documentRef, elementRef, userAgent, isIos) {
27
+ function TuiLoaderComponent(documentRef, elementRef, userAgent, isIos, options) {
14
28
  this.documentRef = documentRef;
15
29
  this.elementRef = elementRef;
16
30
  this.userAgent = userAgent;
17
31
  this.isIos = isIos;
18
- this.size = 'm';
19
- this.inheritColor = false;
20
- this.overlay = false;
32
+ this.options = options;
33
+ this.size = this.options.size;
34
+ this.inheritColor = this.options.inheritColor;
35
+ this.overlay = this.options.overlay;
21
36
  // TODO: Remove null in 3.0
22
37
  this.textContent = null;
23
38
  this.loading = true;
@@ -67,7 +82,8 @@ var TuiLoaderComponent = /** @class */ (function () {
67
82
  { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
68
83
  { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
69
84
  { type: String, decorators: [{ type: Inject, args: [USER_AGENT,] }] },
70
- { type: Boolean, decorators: [{ type: Inject, args: [TUI_IS_IOS,] }] }
85
+ { type: Boolean, decorators: [{ type: Inject, args: [TUI_IS_IOS,] }] },
86
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_LOADER_OPTIONS,] }] }
71
87
  ]; };
72
88
  __decorate([
73
89
  Input(),
@@ -105,7 +121,8 @@ var TuiLoaderComponent = /** @class */ (function () {
105
121
  __param(0, Inject(DOCUMENT)),
106
122
  __param(1, Inject(ElementRef)),
107
123
  __param(2, Inject(USER_AGENT)),
108
- __param(3, Inject(TUI_IS_IOS))
124
+ __param(3, Inject(TUI_IS_IOS)),
125
+ __param(4, Inject(TUI_LOADER_OPTIONS))
109
126
  ], TuiLoaderComponent);
110
127
  return TuiLoaderComponent;
111
128
  }());
@@ -184,5 +201,5 @@ var TuiLoaderModule = /** @class */ (function () {
184
201
  * Generated bundle index. Do not edit.
185
202
  */
186
203
 
187
- export { TuiLoaderComponent, TuiLoaderDirective, TuiLoaderModule };
204
+ export { TUI_LOADER_DEFAULT_OPTIONS, TUI_LOADER_OPTIONS, TuiLoaderComponent, TuiLoaderDirective, TuiLoaderModule, tuiLoaderOptionsProvider };
188
205
  //# sourceMappingURL=taiga-ui-core-components-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-loader.js","sources":["ng://@taiga-ui/core/components/loader/loader.component.ts","ng://@taiga-ui/core/components/loader/loader.directive.ts","ng://@taiga-ui/core/components/loader/loader.module.ts","ng://@taiga-ui/core/components/loader/taiga-ui-core-components-loader.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n} from '@angular/core';\nimport {USER_AGENT} from '@ng-web-apis/common';\nimport {\n blurNativeFocused,\n isEdgeOlderThan,\n isIE,\n isNativeFocusedIn,\n isSafari,\n TUI_IS_IOS,\n tuiDefaultProp,\n tuiRequiredSetter,\n} from '@taiga-ui/cdk';\nimport {TuiSizeXS, TuiSizeXXL} from '@taiga-ui/core/types';\nimport {sizeBigger} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\n// @dynamic\n@Component({\n selector: 'tui-loader',\n templateUrl: './loader.template.html',\n styleUrls: ['./loader.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiLoaderComponent {\n @Input()\n @tuiDefaultProp()\n size: TuiSizeXS | TuiSizeXXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n inheritColor = false;\n\n @Input()\n @tuiDefaultProp()\n overlay = false;\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiDefaultProp()\n textContent: PolymorpheusContent | null = null;\n\n @Input()\n @tuiRequiredSetter()\n set showLoader(value: boolean) {\n // @bad TODO: https://github.com/angular/angular/issues/32083 think of a better way\n if (value && this.focused) {\n blurNativeFocused(this.documentRef);\n }\n\n this.loading = value;\n }\n\n @HostBinding('class._loading')\n loading = true;\n\n @HostBinding('class._animated-with-js')\n animatedWithJs = isEdgeOlderThan(17, this.userAgent) || isIE(this.userAgent);\n\n readonly isApple = isSafari(this.elementRef.nativeElement) || this.isIos;\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(USER_AGENT) private readonly userAgent: string,\n @Inject(TUI_IS_IOS) private readonly isIos: boolean,\n ) {}\n\n get hasOverlay(): boolean {\n return this.overlay && this.loading;\n }\n\n get hasText(): boolean {\n return !!this.textContent;\n }\n\n get isHorizontal(): boolean {\n return !sizeBigger(this.size);\n }\n\n get focused(): boolean {\n return isNativeFocusedIn(this.elementRef.nativeElement);\n }\n}\n","import {Directive, ElementRef, Inject, NgZone} from '@angular/core';\nimport {ANIMATION_FRAME, USER_AGENT} from '@ng-web-apis/common';\nimport {isEdgeOlderThan, isIE, TuiDestroyService, tuiZonefree} from '@taiga-ui/cdk';\nimport {Observable} from 'rxjs';\nimport {pairwise, takeUntil} from 'rxjs/operators';\n\nconst PERIMETER = 314;\nconst COEFFICIENT = 1.5;\n\n/**\n * @deprecated\n */\n@Directive({\n selector: 'circle',\n providers: [TuiDestroyService],\n})\nexport class TuiLoaderDirective {\n private strokeDasharray = PERIMETER;\n\n private strokeDashoffset = 0;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<SVGCircleElement>,\n @Inject(USER_AGENT) userAgent: string,\n ) {\n if (!isEdgeOlderThan(17, userAgent) && !isIE(userAgent)) {\n return;\n }\n\n animationFrame$\n .pipe(tuiZonefree(ngZone), pairwise(), takeUntil(destroy$))\n .subscribe(([cur, prev]) => {\n this.animate(prev - cur);\n });\n }\n\n private animate(delta: number) {\n if (this.strokeDasharray < 0) {\n this.strokeDasharray = PERIMETER * 2;\n this.strokeDashoffset = 0;\n }\n\n const strokeDasharray = Math.abs(this.strokeDasharray - PERIMETER);\n const fps = 1000 / delta;\n const offsetStep = 1 + Math.floor(this.strokeDasharray / PERIMETER);\n const {style} = this.elementRef.nativeElement;\n\n style.strokeDashoffset = String(this.strokeDashoffset);\n style.strokeDasharray = PERIMETER - strokeDasharray + ' ' + strokeDasharray;\n\n this.strokeDasharray -= PERIMETER / COEFFICIENT / fps;\n this.strokeDashoffset += (offsetStep * PERIMETER) / COEFFICIENT / fps;\n // this.elementRef.nativeElement.parentElement!.style.animation = 'none';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiLoaderComponent} from './loader.component';\nimport {TuiLoaderDirective} from './loader.directive';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusModule],\n declarations: [TuiLoaderComponent, TuiLoaderDirective],\n exports: [TuiLoaderComponent],\n})\nexport class TuiLoaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-components-loader.js","sources":["ng://@taiga-ui/core/components/loader/loader-options.ts","ng://@taiga-ui/core/components/loader/loader.component.ts","ng://@taiga-ui/core/components/loader/loader.directive.ts","ng://@taiga-ui/core/components/loader/loader.module.ts","ng://@taiga-ui/core/components/loader/taiga-ui-core-components-loader.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiSizeXS, TuiSizeXXL} from '@taiga-ui/core/types';\n\nexport interface TuiLoaderOptions {\n readonly size: TuiSizeXS | TuiSizeXXL;\n readonly inheritColor: boolean;\n readonly overlay: boolean;\n}\n\n/** Default values for the loader options. */\nexport const TUI_LOADER_DEFAULT_OPTIONS: TuiLoaderOptions = {\n size: 'm',\n inheritColor: false,\n overlay: false,\n};\n\nexport const TUI_LOADER_OPTIONS = new InjectionToken<TuiLoaderOptions>(\n 'Default parameters for loader component',\n {\n factory: () => TUI_LOADER_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiLoaderOptionsProvider: (\n options: Partial<TuiLoaderOptions>,\n) => ValueProvider = (options: Partial<TuiLoaderOptions>) => ({\n provide: TUI_LOADER_OPTIONS,\n useValue: {...TUI_LOADER_DEFAULT_OPTIONS, ...options},\n});\n","import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n} from '@angular/core';\nimport {USER_AGENT} from '@ng-web-apis/common';\nimport {\n blurNativeFocused,\n isEdgeOlderThan,\n isIE,\n isNativeFocusedIn,\n isSafari,\n TUI_IS_IOS,\n tuiDefaultProp,\n tuiRequiredSetter,\n} from '@taiga-ui/cdk';\nimport {sizeBigger} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nimport {TUI_LOADER_OPTIONS, TuiLoaderOptions} from './loader-options';\n\n// @dynamic\n@Component({\n selector: 'tui-loader',\n templateUrl: './loader.template.html',\n styleUrls: ['./loader.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiLoaderComponent {\n @Input()\n @tuiDefaultProp()\n size = this.options.size;\n\n @Input()\n @tuiDefaultProp()\n inheritColor = this.options.inheritColor;\n\n @Input()\n @tuiDefaultProp()\n overlay = this.options.overlay;\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiDefaultProp()\n textContent: PolymorpheusContent | null = null;\n\n @Input()\n @tuiRequiredSetter()\n set showLoader(value: boolean) {\n // @bad TODO: https://github.com/angular/angular/issues/32083 think of a better way\n if (value && this.focused) {\n blurNativeFocused(this.documentRef);\n }\n\n this.loading = value;\n }\n\n @HostBinding('class._loading')\n loading = true;\n\n @HostBinding('class._animated-with-js')\n animatedWithJs = isEdgeOlderThan(17, this.userAgent) || isIE(this.userAgent);\n\n readonly isApple = isSafari(this.elementRef.nativeElement) || this.isIos;\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(USER_AGENT) private readonly userAgent: string,\n @Inject(TUI_IS_IOS) private readonly isIos: boolean,\n @Inject(TUI_LOADER_OPTIONS) private readonly options: TuiLoaderOptions,\n ) {}\n\n get hasOverlay(): boolean {\n return this.overlay && this.loading;\n }\n\n get hasText(): boolean {\n return !!this.textContent;\n }\n\n get isHorizontal(): boolean {\n return !sizeBigger(this.size);\n }\n\n get focused(): boolean {\n return isNativeFocusedIn(this.elementRef.nativeElement);\n }\n}\n","import {Directive, ElementRef, Inject, NgZone} from '@angular/core';\nimport {ANIMATION_FRAME, USER_AGENT} from '@ng-web-apis/common';\nimport {isEdgeOlderThan, isIE, TuiDestroyService, tuiZonefree} from '@taiga-ui/cdk';\nimport {Observable} from 'rxjs';\nimport {pairwise, takeUntil} from 'rxjs/operators';\n\nconst PERIMETER = 314;\nconst COEFFICIENT = 1.5;\n\n/**\n * @deprecated\n */\n@Directive({\n selector: 'circle',\n providers: [TuiDestroyService],\n})\nexport class TuiLoaderDirective {\n private strokeDasharray = PERIMETER;\n\n private strokeDashoffset = 0;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<SVGCircleElement>,\n @Inject(USER_AGENT) userAgent: string,\n ) {\n if (!isEdgeOlderThan(17, userAgent) && !isIE(userAgent)) {\n return;\n }\n\n animationFrame$\n .pipe(tuiZonefree(ngZone), pairwise(), takeUntil(destroy$))\n .subscribe(([cur, prev]) => {\n this.animate(prev - cur);\n });\n }\n\n private animate(delta: number) {\n if (this.strokeDasharray < 0) {\n this.strokeDasharray = PERIMETER * 2;\n this.strokeDashoffset = 0;\n }\n\n const strokeDasharray = Math.abs(this.strokeDasharray - PERIMETER);\n const fps = 1000 / delta;\n const offsetStep = 1 + Math.floor(this.strokeDasharray / PERIMETER);\n const {style} = this.elementRef.nativeElement;\n\n style.strokeDashoffset = String(this.strokeDashoffset);\n style.strokeDasharray = PERIMETER - strokeDasharray + ' ' + strokeDasharray;\n\n this.strokeDasharray -= PERIMETER / COEFFICIENT / fps;\n this.strokeDashoffset += (offsetStep * PERIMETER) / COEFFICIENT / fps;\n // this.elementRef.nativeElement.parentElement!.style.animation = 'none';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiLoaderComponent} from './loader.component';\nimport {TuiLoaderDirective} from './loader.directive';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusModule],\n declarations: [TuiLoaderComponent, TuiLoaderDirective],\n exports: [TuiLoaderComponent],\n})\nexport class TuiLoaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}