@taiga-ui/cdk 2.81.0 → 2.83.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 (46) hide show
  1. package/bundles/taiga-ui-cdk-constants.umd.js +1 -1
  2. package/bundles/taiga-ui-cdk-constants.umd.js.map +1 -1
  3. package/bundles/taiga-ui-cdk-constants.umd.min.js +1 -1
  4. package/bundles/taiga-ui-cdk-constants.umd.min.js.map +1 -1
  5. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js +40 -7
  6. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js.map +1 -1
  7. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js +1 -1
  8. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js.map +1 -1
  9. package/bundles/taiga-ui-cdk-directives-element.umd.js +17 -4
  10. package/bundles/taiga-ui-cdk-directives-element.umd.js.map +1 -1
  11. package/bundles/taiga-ui-cdk-directives-element.umd.min.js +1 -1
  12. package/bundles/taiga-ui-cdk-directives-element.umd.min.js.map +1 -1
  13. package/constants/taiga-ui-cdk-constants.metadata.json +1 -1
  14. package/constants/version.d.ts +1 -1
  15. package/constants/version.js +1 -1
  16. package/directives/auto-focus/autofocus.directive.d.ts +1 -0
  17. package/directives/auto-focus/handlers/sync.handler.d.ts +7 -0
  18. package/directives/auto-focus/index.d.ts +1 -0
  19. package/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.metadata.json +1 -1
  20. package/directives/element/element.directive.d.ts +2 -1
  21. package/directives/element/taiga-ui-cdk-directives-element.metadata.json +1 -1
  22. package/esm2015/constants/version.js +2 -2
  23. package/esm2015/directives/auto-focus/autofocus.directive.js +5 -2
  24. package/esm2015/directives/auto-focus/handlers/ios.handler.js +14 -8
  25. package/esm2015/directives/auto-focus/handlers/sync.handler.js +25 -0
  26. package/esm2015/directives/auto-focus/index.js +2 -1
  27. package/esm2015/directives/element/element.directive.js +17 -3
  28. package/esm5/constants/version.js +2 -2
  29. package/esm5/directives/auto-focus/autofocus.directive.js +6 -2
  30. package/esm5/directives/auto-focus/handlers/ios.handler.js +14 -8
  31. package/esm5/directives/auto-focus/handlers/sync.handler.js +27 -0
  32. package/esm5/directives/auto-focus/index.js +2 -1
  33. package/esm5/directives/element/element.directive.js +19 -6
  34. package/fesm2015/taiga-ui-cdk-constants.js +1 -1
  35. package/fesm2015/taiga-ui-cdk-constants.js.map +1 -1
  36. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js +38 -9
  37. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  38. package/fesm2015/taiga-ui-cdk-directives-element.js +16 -2
  39. package/fesm2015/taiga-ui-cdk-directives-element.js.map +1 -1
  40. package/fesm5/taiga-ui-cdk-constants.js +1 -1
  41. package/fesm5/taiga-ui-cdk-constants.js.map +1 -1
  42. package/fesm5/taiga-ui-cdk-directives-auto-focus.js +41 -9
  43. package/fesm5/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  44. package/fesm5/taiga-ui-cdk-directives-element.js +18 -5
  45. package/fesm5/taiga-ui-cdk-directives-element.js.map +1 -1
  46. package/package.json +1 -1
@@ -5,7 +5,7 @@ import { TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS } from '@taiga-ui/cdk/tokens';
5
5
  import { POLLING_TIME } from '@taiga-ui/cdk/constants';
6
6
  import { race, timer, Observable } from 'rxjs';
7
7
  import { throttleTime, map, skipWhile, take } from 'rxjs/operators';
8
- import { px } from '@taiga-ui/cdk/utils';
8
+ import { tuiPx } from '@taiga-ui/cdk/utils';
9
9
 
10
10
  let AbstractTuiAutofocusHandler = class AbstractTuiAutofocusHandler {
11
11
  constructor(tuiFocusableComponent, elementRef) {
@@ -113,15 +113,21 @@ let TuiIosAutofocusHandler = class TuiIosAutofocusHandler extends AbstractTuiAut
113
113
  makeFakeInput() {
114
114
  const fakeInput = this.renderer.createElement(`input`);
115
115
  const rect = this.element.getBoundingClientRect();
116
- fakeInput.style.height = px(rect.height);
117
- fakeInput.style.width = px(rect.width / 2);
116
+ fakeInput.setAttribute(`maxlength`, `0`);
117
+ // @note: don't use opacity: 0,
118
+ // sometimes it's doesn't work for emulate real input
119
+ fakeInput.style.height = tuiPx(rect.height);
120
+ fakeInput.style.width = tuiPx(rect.width / 2);
118
121
  fakeInput.style.position = `fixed`;
119
- fakeInput.style.opacity = `0`;
120
- fakeInput.style.fontSize = px(16); // disable possible auto zoom
122
+ fakeInput.style.zIndex = `-99999999`;
123
+ fakeInput.style.caretColor = `transparent`;
124
+ fakeInput.style.color = `transparent`;
125
+ fakeInput.style.cursor = `none`;
126
+ fakeInput.style.fontSize = tuiPx(16); // disable possible auto zoom
121
127
  fakeInput.readOnly = true; // prevent keyboard for fake input
122
128
  // @note: emulate position cursor before focus to real textfield element
123
- fakeInput.style.top = px(rect.top);
124
- fakeInput.style.left = px(rect.left);
129
+ fakeInput.style.top = tuiPx(rect.top);
130
+ fakeInput.style.left = tuiPx(rect.left);
125
131
  return fakeInput;
126
132
  }
127
133
  getDurationTimeBeforeFocus() {
@@ -205,9 +211,12 @@ let TuiAutoFocusDirective = class TuiAutoFocusDirective {
205
211
  }
206
212
  ngAfterViewInit() {
207
213
  if (this.autoFocus) {
208
- this.handler.setFocus();
214
+ this.focus();
209
215
  }
210
216
  }
217
+ focus() {
218
+ void Promise.resolve().then(() => this.handler.setFocus());
219
+ }
211
220
  };
212
221
  TuiAutoFocusDirective.ctorParameters = () => [
213
222
  { type: undefined, decorators: [{ type: Inject, args: [TUI_AUTOFOCUS_HANDLER,] }] }
@@ -232,9 +241,29 @@ TuiAutoFocusModule = __decorate([
232
241
  })
233
242
  ], TuiAutoFocusModule);
234
243
 
244
+ let TuiSynchronousAutofocusHandler = class TuiSynchronousAutofocusHandler extends AbstractTuiAutofocusHandler {
245
+ constructor(tuiFocusableComponent, elementRef) {
246
+ super(tuiFocusableComponent, elementRef);
247
+ }
248
+ setFocus() {
249
+ this.element.focus();
250
+ }
251
+ };
252
+ TuiSynchronousAutofocusHandler.ctorParameters = () => [
253
+ { type: undefined, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [TUI_FOCUSABLE_ITEM_ACCESSOR,] }] },
254
+ { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] }
255
+ ];
256
+ TuiSynchronousAutofocusHandler = __decorate([
257
+ Directive(),
258
+ __param(0, Optional()),
259
+ __param(0, Self()),
260
+ __param(0, Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)),
261
+ __param(1, Inject(ElementRef))
262
+ ], TuiSynchronousAutofocusHandler);
263
+
235
264
  /**
236
265
  * Generated bundle index. Do not edit.
237
266
  */
238
267
 
239
- export { AbstractTuiAutofocusHandler, TUI_AUTOFOCUS_HANDLER, TUI_AUTOFOCUS_PROVIDERS, TuiAutoFocusDirective, TuiAutoFocusModule, TuiDefaultAutofocusHandler, TuiIosAutofocusHandler, tuiAutofocusHandlerFactory };
268
+ export { AbstractTuiAutofocusHandler, TUI_AUTOFOCUS_HANDLER, TUI_AUTOFOCUS_PROVIDERS, TuiAutoFocusDirective, TuiAutoFocusModule, TuiDefaultAutofocusHandler, TuiIosAutofocusHandler, TuiSynchronousAutofocusHandler, tuiAutofocusHandlerFactory };
240
269
  //# sourceMappingURL=taiga-ui-cdk-directives-auto-focus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-auto-focus.js","sources":["ng://@taiga-ui/cdk/directives/auto-focus/handlers/abstract.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/default.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/ios.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.options.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.directive.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.module.ts","ng://@taiga-ui/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import {Directive, ElementRef} from '@angular/core';\nimport {\n TuiFocusableElementAccessor,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk/interfaces';\n\nimport {TuiAutofocusHandler} from '../autofocus.options';\n\n@Directive()\nexport abstract class AbstractTuiAutofocusHandler implements TuiAutofocusHandler {\n protected constructor(\n protected readonly tuiFocusableComponent: TuiFocusableElementAccessor | null,\n protected readonly elementRef: ElementRef<HTMLElement>,\n ) {}\n\n protected get element(): TuiNativeFocusableElement {\n return (\n this.tuiFocusableComponent?.nativeFocusableElement ||\n this.elementRef.nativeElement\n );\n }\n\n protected get isTextFieldElement(): boolean {\n return this.element.matches(`input, textarea`);\n }\n\n abstract setFocus(): void;\n}\n","import {Directive, ElementRef, Inject, Optional, Self} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\nimport {Observable, race, timer} from 'rxjs';\nimport {map, skipWhile, take, throttleTime} from 'rxjs/operators';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = `.ng-animating`;\n\n@Directive()\nexport class TuiDefaultAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n ) {\n super(tuiFocusableComponent, elementRef);\n }\n\n setFocus(): void {\n if (this.isTextFieldElement) {\n race(\n timer(TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(() => this.element.closest(NG_ANIMATION_SELECTOR)),\n skipWhile(Boolean),\n take(1),\n ),\n ).subscribe(() => this.element.focus());\n } else {\n this.element.focus();\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Inject,\n NgZone,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\nimport {px} from '@taiga-ui/cdk/utils';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\n// @dynamic\n@Directive()\nexport class TuiIosAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(WINDOW) private readonly windowRef: Window,\n ) {\n super(tuiFocusableComponent, elementRef);\n this.patchCssStyles();\n }\n\n setFocus(): void {\n if (this.isTextFieldElement) {\n this.ngZone.runOutsideAngular(() => this.iosWebkitAutofocus());\n } else {\n this.element.focus();\n }\n }\n\n private iosWebkitAutofocus(): void {\n const fakeInput: HTMLInputElement = this.makeFakeInput();\n const duration = this.getDurationTimeBeforeFocus();\n let fakeFocusTimeoutId = 0;\n let elementFocusTimeoutId = 0;\n\n const blurHandler = (): void => fakeInput.focus({preventScroll: true});\n const focusHandler = (): void => {\n clearTimeout(fakeFocusTimeoutId);\n\n fakeFocusTimeoutId = this.windowRef.setTimeout(() => {\n clearTimeout(elementFocusTimeoutId);\n\n fakeInput.removeEventListener(`blur`, blurHandler);\n fakeInput.removeEventListener(`focus`, focusHandler);\n\n elementFocusTimeoutId = this.windowRef.setTimeout(() => {\n this.element.focus({preventScroll: false});\n fakeInput.remove();\n }, duration);\n });\n };\n\n fakeInput.addEventListener(`blur`, blurHandler, {once: true});\n fakeInput.addEventListener(`focus`, focusHandler);\n\n if (this.insideDialog()) {\n this.windowRef.document.body.appendChild(fakeInput);\n } else {\n this.element.parentElement?.appendChild(fakeInput);\n }\n\n fakeInput.focus({preventScroll: true});\n }\n\n /**\n * @note:\n * emulate textfield position in layout with cursor\n * before focus to real textfield element\n */\n private makeFakeInput(): HTMLInputElement {\n const fakeInput: HTMLInputElement = this.renderer.createElement(`input`);\n const rect: DOMRect = this.element.getBoundingClientRect();\n\n fakeInput.style.height = px(rect.height);\n fakeInput.style.width = px(rect.width / 2);\n fakeInput.style.position = `fixed`;\n fakeInput.style.opacity = `0`;\n fakeInput.style.fontSize = px(16); // disable possible auto zoom\n fakeInput.readOnly = true; // prevent keyboard for fake input\n\n // @note: emulate position cursor before focus to real textfield element\n fakeInput.style.top = px(rect.top);\n fakeInput.style.left = px(rect.left);\n\n return fakeInput;\n }\n\n private getDurationTimeBeforeFocus(): number {\n return (\n parseFloat(\n this.windowRef\n .getComputedStyle(this.element)\n .getPropertyValue(`--tui-duration`),\n ) || 0\n );\n }\n\n /**\n * @note:\n * unfortunately, in older versions of iOS\n * there is a bug that the fake input cursor\n * will move along with the dialog animation\n * and then that dialog will be shaking\n */\n private insideDialog(): boolean {\n return !!this.element.closest(`tui-dialog`);\n }\n\n /**\n * @note:\n * This is necessary so that the viewport isn't recalculated\n * and then the dialogs don't shake.\n *\n * Also, we need to fixed height viewport,\n * so that when focusing the dialogs don't shake\n */\n private patchCssStyles(): void {\n const documentRef = this.windowRef.document;\n\n for (const element of [documentRef.documentElement, documentRef.body]) {\n element.style.setProperty(`overflow`, `auto`);\n element.style.setProperty(`height`, `100%`);\n }\n }\n}\n","import {\n ElementRef,\n InjectionToken,\n NgZone,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TuiDefaultAutofocusHandler} from './handlers/default.handler';\nimport {TuiIosAutofocusHandler} from './handlers/ios.handler';\n\nexport interface TuiAutofocusHandler {\n setFocus(): void;\n}\n\nexport const TUI_AUTOFOCUS_HANDLER = new InjectionToken<TuiAutofocusHandler>(\n `Autofocusing handler`,\n);\n\n// TODO: 3.0 remove in ivy compilation\nexport function tuiAutofocusHandlerFactory(\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n elementRef: ElementRef<HTMLElement>,\n animationFrame$: Observable<number>,\n renderer: Renderer2,\n ngZone: NgZone,\n windowRef: Window,\n isIos: boolean,\n): TuiAutofocusHandler {\n return isIos\n ? new TuiIosAutofocusHandler(\n tuiFocusableComponent,\n elementRef,\n renderer,\n ngZone,\n windowRef,\n )\n : new TuiDefaultAutofocusHandler(\n tuiFocusableComponent,\n elementRef,\n animationFrame$,\n );\n}\n\nexport const TUI_AUTOFOCUS_PROVIDERS = [\n {\n provide: TUI_AUTOFOCUS_HANDLER,\n // TODO: replace to useClass in v3.0\n useFactory: tuiAutofocusHandlerFactory,\n deps: [\n [new Optional(), new Self(), TUI_FOCUSABLE_ITEM_ACCESSOR],\n ElementRef,\n ANIMATION_FRAME,\n Renderer2,\n NgZone,\n WINDOW,\n TUI_IS_IOS,\n ],\n },\n];\n","import {AfterViewInit, Directive, Inject, Input} from '@angular/core';\n\nimport {\n TUI_AUTOFOCUS_HANDLER,\n TUI_AUTOFOCUS_PROVIDERS,\n TuiAutofocusHandler,\n} from './autofocus.options';\n\n// TODO: 3.0 change input name to tuiAutoFocus and handle empty string\n@Directive({\n selector: '[tuiAutoFocus]',\n providers: TUI_AUTOFOCUS_PROVIDERS,\n})\nexport class TuiAutoFocusDirective implements AfterViewInit {\n @Input()\n autoFocus = true;\n\n constructor(\n @Inject(TUI_AUTOFOCUS_HANDLER) private readonly handler: TuiAutofocusHandler,\n ) {}\n\n ngAfterViewInit(): void {\n if (this.autoFocus) {\n this.handler.setFocus();\n }\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiAutoFocusDirective} from './autofocus.directive';\n\n@NgModule({\n declarations: [TuiAutoFocusDirective],\n exports: [TuiAutoFocusDirective],\n})\nexport class TuiAutoFocusModule {}\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-cdk-directives-auto-focus.js","sources":["ng://@taiga-ui/cdk/directives/auto-focus/handlers/abstract.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/default.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/ios.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.options.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.directive.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.module.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/sync.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import {Directive, ElementRef} from '@angular/core';\nimport {\n TuiFocusableElementAccessor,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk/interfaces';\n\nimport {TuiAutofocusHandler} from '../autofocus.options';\n\n@Directive()\nexport abstract class AbstractTuiAutofocusHandler implements TuiAutofocusHandler {\n protected constructor(\n protected readonly tuiFocusableComponent: TuiFocusableElementAccessor | null,\n protected readonly elementRef: ElementRef<HTMLElement>,\n ) {}\n\n protected get element(): TuiNativeFocusableElement {\n return (\n this.tuiFocusableComponent?.nativeFocusableElement ||\n this.elementRef.nativeElement\n );\n }\n\n protected get isTextFieldElement(): boolean {\n return this.element.matches(`input, textarea`);\n }\n\n abstract setFocus(): void;\n}\n","import {Directive, ElementRef, Inject, Optional, Self} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\nimport {Observable, race, timer} from 'rxjs';\nimport {map, skipWhile, take, throttleTime} from 'rxjs/operators';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = `.ng-animating`;\n\n@Directive()\nexport class TuiDefaultAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n ) {\n super(tuiFocusableComponent, elementRef);\n }\n\n setFocus(): void {\n if (this.isTextFieldElement) {\n race(\n timer(TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(() => this.element.closest(NG_ANIMATION_SELECTOR)),\n skipWhile(Boolean),\n take(1),\n ),\n ).subscribe(() => this.element.focus());\n } else {\n this.element.focus();\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Inject,\n NgZone,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\nimport {tuiPx} from '@taiga-ui/cdk/utils';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\n// @dynamic\n@Directive()\nexport class TuiIosAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(WINDOW) private readonly windowRef: Window,\n ) {\n super(tuiFocusableComponent, elementRef);\n this.patchCssStyles();\n }\n\n setFocus(): void {\n if (this.isTextFieldElement) {\n this.ngZone.runOutsideAngular(() => this.iosWebkitAutofocus());\n } else {\n this.element.focus();\n }\n }\n\n private iosWebkitAutofocus(): void {\n const fakeInput: HTMLInputElement = this.makeFakeInput();\n const duration = this.getDurationTimeBeforeFocus();\n let fakeFocusTimeoutId = 0;\n let elementFocusTimeoutId = 0;\n\n const blurHandler = (): void => fakeInput.focus({preventScroll: true});\n const focusHandler = (): void => {\n clearTimeout(fakeFocusTimeoutId);\n\n fakeFocusTimeoutId = this.windowRef.setTimeout(() => {\n clearTimeout(elementFocusTimeoutId);\n\n fakeInput.removeEventListener(`blur`, blurHandler);\n fakeInput.removeEventListener(`focus`, focusHandler);\n\n elementFocusTimeoutId = this.windowRef.setTimeout(() => {\n this.element.focus({preventScroll: false});\n fakeInput.remove();\n }, duration);\n });\n };\n\n fakeInput.addEventListener(`blur`, blurHandler, {once: true});\n fakeInput.addEventListener(`focus`, focusHandler);\n\n if (this.insideDialog()) {\n this.windowRef.document.body.appendChild(fakeInput);\n } else {\n this.element.parentElement?.appendChild(fakeInput);\n }\n\n fakeInput.focus({preventScroll: true});\n }\n\n /**\n * @note:\n * emulate textfield position in layout with cursor\n * before focus to real textfield element\n */\n private makeFakeInput(): HTMLInputElement {\n const fakeInput: HTMLInputElement = this.renderer.createElement(`input`);\n const rect: DOMRect = this.element.getBoundingClientRect();\n\n fakeInput.setAttribute(`maxlength`, `0`);\n\n // @note: don't use opacity: 0,\n // sometimes it's doesn't work for emulate real input\n fakeInput.style.height = tuiPx(rect.height);\n fakeInput.style.width = tuiPx(rect.width / 2);\n fakeInput.style.position = `fixed`;\n fakeInput.style.zIndex = `-99999999`;\n fakeInput.style.caretColor = `transparent`;\n fakeInput.style.color = `transparent`;\n fakeInput.style.cursor = `none`;\n fakeInput.style.fontSize = tuiPx(16); // disable possible auto zoom\n fakeInput.readOnly = true; // prevent keyboard for fake input\n\n // @note: emulate position cursor before focus to real textfield element\n fakeInput.style.top = tuiPx(rect.top);\n fakeInput.style.left = tuiPx(rect.left);\n\n return fakeInput;\n }\n\n private getDurationTimeBeforeFocus(): number {\n return (\n parseFloat(\n this.windowRef\n .getComputedStyle(this.element)\n .getPropertyValue(`--tui-duration`),\n ) || 0\n );\n }\n\n /**\n * @note:\n * unfortunately, in older versions of iOS\n * there is a bug that the fake input cursor\n * will move along with the dialog animation\n * and then that dialog will be shaking\n */\n private insideDialog(): boolean {\n return !!this.element.closest(`tui-dialog`);\n }\n\n /**\n * @note:\n * This is necessary so that the viewport isn't recalculated\n * and then the dialogs don't shake.\n *\n * Also, we need to fixed height viewport,\n * so that when focusing the dialogs don't shake\n */\n private patchCssStyles(): void {\n const documentRef = this.windowRef.document;\n\n for (const element of [documentRef.documentElement, documentRef.body]) {\n element.style.setProperty(`overflow`, `auto`);\n element.style.setProperty(`height`, `100%`);\n }\n }\n}\n","import {\n ElementRef,\n InjectionToken,\n NgZone,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TuiDefaultAutofocusHandler} from './handlers/default.handler';\nimport {TuiIosAutofocusHandler} from './handlers/ios.handler';\n\nexport interface TuiAutofocusHandler {\n setFocus(): void;\n}\n\nexport const TUI_AUTOFOCUS_HANDLER = new InjectionToken<TuiAutofocusHandler>(\n `Autofocusing handler`,\n);\n\n// TODO: 3.0 remove in ivy compilation\nexport function tuiAutofocusHandlerFactory(\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n elementRef: ElementRef<HTMLElement>,\n animationFrame$: Observable<number>,\n renderer: Renderer2,\n ngZone: NgZone,\n windowRef: Window,\n isIos: boolean,\n): TuiAutofocusHandler {\n return isIos\n ? new TuiIosAutofocusHandler(\n tuiFocusableComponent,\n elementRef,\n renderer,\n ngZone,\n windowRef,\n )\n : new TuiDefaultAutofocusHandler(\n tuiFocusableComponent,\n elementRef,\n animationFrame$,\n );\n}\n\nexport const TUI_AUTOFOCUS_PROVIDERS = [\n {\n provide: TUI_AUTOFOCUS_HANDLER,\n // TODO: replace to useClass in v3.0\n useFactory: tuiAutofocusHandlerFactory,\n deps: [\n [new Optional(), new Self(), TUI_FOCUSABLE_ITEM_ACCESSOR],\n ElementRef,\n ANIMATION_FRAME,\n Renderer2,\n NgZone,\n WINDOW,\n TUI_IS_IOS,\n ],\n },\n];\n","import {AfterViewInit, Directive, Inject, Input} from '@angular/core';\n\nimport {\n TUI_AUTOFOCUS_HANDLER,\n TUI_AUTOFOCUS_PROVIDERS,\n TuiAutofocusHandler,\n} from './autofocus.options';\n\n// TODO: 3.0 change input name to tuiAutoFocus and handle empty string\n@Directive({\n selector: '[tuiAutoFocus]',\n providers: TUI_AUTOFOCUS_PROVIDERS,\n})\nexport class TuiAutoFocusDirective implements AfterViewInit {\n @Input()\n autoFocus = true;\n\n constructor(\n @Inject(TUI_AUTOFOCUS_HANDLER)\n private readonly handler: TuiAutofocusHandler,\n ) {}\n\n ngAfterViewInit(): void {\n if (this.autoFocus) {\n this.focus();\n }\n }\n\n focus(): void {\n void Promise.resolve().then(() => this.handler.setFocus());\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiAutoFocusDirective} from './autofocus.directive';\n\n@NgModule({\n declarations: [TuiAutoFocusDirective],\n exports: [TuiAutoFocusDirective],\n})\nexport class TuiAutoFocusModule {}\n","import {Directive, ElementRef, Inject, Optional, Self} from '@angular/core';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\n@Directive()\nexport class TuiSynchronousAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n ) {\n super(tuiFocusableComponent, elementRef);\n }\n\n setFocus(): void {\n this.element.focus();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,23 @@
1
1
  import { __decorate, __param } from 'tslib';
2
2
  import { ElementRef, Inject, Directive, NgModule } from '@angular/core';
3
3
 
4
- let TuiElementDirective = class TuiElementDirective extends ElementRef {
4
+ let TuiElementDirective = class TuiElementDirective {
5
5
  constructor({ nativeElement }) {
6
- super(nativeElement);
6
+ /**
7
+ * @note:
8
+ * Typically, when your constructor is invoked with new,
9
+ * an object is created, its constructor is assigned to
10
+ * the invoked constructor and the object is then assigned
11
+ * to this before executing any operations specified
12
+ * in your constructor method.
13
+ *
14
+ * ERROR TypeError: Class constructor ElementRef cannot be invoked without 'new'
15
+ * https://github.com/Tinkoff/taiga-ui/issues/3072
16
+ *
17
+ * This way we can instantiate object creation
18
+ * without additional prototype chain for possible fix bug.
19
+ */
20
+ return new ElementRef(nativeElement);
7
21
  }
8
22
  };
9
23
  TuiElementDirective.ctorParameters = () => [
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-element.js","sources":["ng://@taiga-ui/cdk/directives/element/element.directive.ts","ng://@taiga-ui/cdk/directives/element/element.module.ts","ng://@taiga-ui/cdk/directives/element/taiga-ui-cdk-directives-element.ts"],"sourcesContent":["import {Directive, ElementRef, Inject} from '@angular/core';\n\n@Directive({\n selector: '[tuiElement]',\n exportAs: 'elementRef',\n})\nexport class TuiElementDirective<T extends Element = HTMLElement> extends ElementRef<T> {\n constructor(@Inject(ElementRef) {nativeElement}: ElementRef<T>) {\n super(nativeElement);\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiElementDirective} from './element.directive';\n\n@NgModule({\n declarations: [TuiElementDirective],\n exports: [TuiElementDirective],\n})\nexport class TuiElementModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;IAMa,mBAAmB,GAAhC,MAAa,mBAAqD,SAAQ,UAAa;IACnF,YAAgC,EAAC,aAAa,EAAgB;QAC1D,KAAK,CAAC,aAAa,CAAC,CAAC;KACxB;EACJ;;YAHoD,UAAU,uBAA9C,MAAM,SAAC,UAAU;;AADrB,mBAAmB;IAJ/B,SAAS,CAAC;QACP,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,YAAY;KACzB,CAAC;IAEe,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;GADtB,mBAAmB,CAI/B;;ICFY,gBAAgB,GAA7B,MAAa,gBAAgB;EAAG;AAAnB,gBAAgB;IAJ5B,QAAQ,CAAC;QACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;QACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;KACjC,CAAC;GACW,gBAAgB,CAAG;;ACRhC;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-element.js","sources":["ng://@taiga-ui/cdk/directives/element/element.directive.ts","ng://@taiga-ui/cdk/directives/element/element.module.ts","ng://@taiga-ui/cdk/directives/element/taiga-ui-cdk-directives-element.ts"],"sourcesContent":["import {Directive, ElementRef, Inject} from '@angular/core';\n\n@Directive({\n selector: '[tuiElement]',\n exportAs: 'elementRef',\n})\nexport class TuiElementDirective<T extends Element = HTMLElement>\n implements ElementRef<T>\n{\n nativeElement!: T;\n\n constructor(@Inject(ElementRef) {nativeElement}: ElementRef<T>) {\n /**\n * @note:\n * Typically, when your constructor is invoked with new,\n * an object is created, its constructor is assigned to\n * the invoked constructor and the object is then assigned\n * to this before executing any operations specified\n * in your constructor method.\n *\n * ERROR TypeError: Class constructor ElementRef cannot be invoked without 'new'\n * https://github.com/Tinkoff/taiga-ui/issues/3072\n *\n * This way we can instantiate object creation\n * without additional prototype chain for possible fix bug.\n */\n return new ElementRef<T>(nativeElement);\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiElementDirective} from './element.directive';\n\n@NgModule({\n declarations: [TuiElementDirective],\n exports: [TuiElementDirective],\n})\nexport class TuiElementModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;IAMa,mBAAmB,GAAhC,MAAa,mBAAmB;IAK5B,YAAgC,EAAC,aAAa,EAAgB;;;;;;;;;;;;;;;QAe1D,OAAO,IAAI,UAAU,CAAI,aAAa,CAAC,CAAC;KAC3C;EACJ;;YAjBoD,UAAU,uBAA9C,MAAM,SAAC,UAAU;;AALrB,mBAAmB;IAJ/B,SAAS,CAAC;QACP,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,YAAY;KACzB,CAAC;IAMe,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;GALtB,mBAAmB,CAsB/B;;ICpBY,gBAAgB,GAA7B,MAAa,gBAAgB;EAAG;AAAnB,gBAAgB;IAJ5B,QAAQ,CAAC;QACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;QACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;KACjC,CAAC;GACW,gBAAgB,CAAG;;ACRhC;;;;;;"}
@@ -152,7 +152,7 @@ var CHAR_CURRENCY_SIGN = "\u00A4";
152
152
  */
153
153
  var CHAR_ZERO_WIDTH_SPACE = "\u200B";
154
154
 
155
- var TUI_VERSION = "2.81.0";
155
+ var TUI_VERSION = "2.83.0";
156
156
 
157
157
  /**
158
158
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-constants.js","sources":["ng://@taiga-ui/cdk/constants/always-false-handler.ts","ng://@taiga-ui/cdk/constants/always-true-handler.ts","ng://@taiga-ui/cdk/constants/browser.ts","ng://@taiga-ui/cdk/constants/empty.ts","ng://@taiga-ui/cdk/constants/stringify.ts","ng://@taiga-ui/cdk/constants/matcher.ts","ng://@taiga-ui/cdk/constants/parent-animation.ts","ng://@taiga-ui/cdk/constants/polling-time.ts","ng://@taiga-ui/cdk/constants/svg-node-filter.ts","ng://@taiga-ui/cdk/constants/unicode-chars.ts","ng://@taiga-ui/cdk/constants/version.ts","ng://@taiga-ui/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["/**\n * Handler that always returns `false`.\n */\nexport const ALWAYS_FALSE_HANDLER = (): false => false;\n","/**\n * Handler that always returns `true`.\n */\nexport const ALWAYS_TRUE_HANDLER = (): true => true;\n","export const CHROMIUM_EDGE_START_VERSION = 79;\n","import {QueryList} from '@angular/core';\nimport {ValidatorFn} from '@angular/forms';\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\n/** @deprecated use Validators.nullValidator */\nexport const EMPTY_VALIDATOR: ValidatorFn = () => null;\nexport const EMPTY_CLIENT_RECT: ClientRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n};\n","import {TuiStringHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Default method to turn arbitrary object into string\n */\nexport const TUI_DEFAULT_STRINGIFY: TuiStringHandler<unknown> = item => String(item);\n","import {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nimport {TUI_DEFAULT_STRINGIFY} from './stringify';\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = TUI_DEFAULT_STRINGIFY,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = TUI_DEFAULT_STRINGIFY,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n","import {animateChild, query, style, transition, trigger} from '@angular/animations';\n\nexport const TUI_PARENT_ANIMATION = trigger(`tuiParentAnimation`, [\n transition(`* => void`, [\n style({overflow: `hidden`}),\n query(`:scope > *`, [animateChild()], {optional: true}),\n ]),\n]);\n","export const POLLING_TIME = 1000 / 15;\n","// Filtering SVGElements for TreeWalker\n// Filter must be a function in IE, other modern browsers are compliant to this format\nexport const svgNodeFilter: NodeFilter = ((node: Node) =>\n `ownerSVGElement` in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT) as any;\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = `\\u00A0`;\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = `\\u2013`;\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = `\\u2014`;\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = `\\u00AB`;\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = `\\u00BB`;\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = `\\u002D`;\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `&minus;`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = `\\u2212`;\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = `\\u002B`;\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = `\\u2022`;\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = `\\u2026`;\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = `\\u00A4`;\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = `\\u200B`;\n","export const TUI_VERSION = `2.81.0`;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;;IAGa,oBAAoB,GAAG,cAAa,OAAA,KAAK;;ACHtD;;;IAGa,mBAAmB,GAAG,cAAY,OAAA,IAAI;;ICHtC,2BAA2B,GAAG;;ACG3C;;;;;IAKa,WAAW,GAAG,IAAI,SAAS,GAAQ;IACnC,WAAW,GAAO,GAAG;IACrB,cAAc,GAA6B,gBAAS;AACjE;IACa,eAAe,GAAgB,cAAM,OAAA,IAAI,IAAC;IAC1C,iBAAiB,GAAe;IACzC,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;;;ACjBZ;;;IAGa,qBAAqB,GAA8B,UAAA,IAAI,IAAI,OAAA,MAAM,CAAC,IAAI,CAAC;;ACDpF;;;;;;IAMa,mBAAmB,GAAG,UAC/B,IAAO,EACP,MAAc,EACd,SAAwD;IAAxD,0BAAA,EAAA,iCAAwD;IAC9C,OAAA,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAA5D,EAA6D;AAE3E;;;;;;IAMa,kBAAkB,GAAG,UAC9B,IAAO,EACP,MAAc,EACd,SAAwD;IAAxD,0BAAA,EAAA,iCAAwD;IAC9C,OAAA,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE;AAAtD,EAAuD;AAErE;;;;;;;IAOa,4BAA4B,GAAgC,UAAC,KAAK,EAAE,KAAK;IAClF,OAAA,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;AAA1C,EAA2C;AAE/C,SAAS,SAAS,CAAC,KAAc,EAAE,KAAc;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1F;;ICtCa,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,EAAE;IAC9D,UAAU,CAAC,WAAW,EAAE;QACpB,KAAK,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC;QAC3B,KAAK,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;KAC1D,CAAC;CACL;;ICPY,YAAY,GAAG,IAAI,GAAG;;ACAnC;AACA;IACa,aAAa,IAAgB,UAAC,IAAU;IACjD,OAAA,iBAAiB,IAAI,IAAI;UACnB,UAAU,CAAC,aAAa;UACxB,UAAU,CAAC,aAAa;AAF9B,CAE8B;;ACLlC;;;IAGa,mBAAmB,GAAG,SAAS;AAE5C;;;;;;;IAOa,YAAY,GAAG,SAAS;AAErC;;;;;;;IAOa,YAAY,GAAG,SAAS;AAErC;;;IAGa,UAAU,GAAG,SAAS;AAEnC;;;IAGa,UAAU,GAAG,SAAS;AAEnC;;;;;;;IAOa,WAAW,GAAG,IAAS;AAEpC;;;;;;IAMa,UAAU,GAAG,SAAS;AAEnC;;;IAGa,SAAS,GAAG,IAAS;AAElC;;;IAGa,WAAW,GAAG,SAAS;AAEpC;;;IAGa,aAAa,GAAG,SAAS;AAEtC;;;IAGa,kBAAkB,GAAG,SAAS;AAE3C;;;IAGa,qBAAqB,GAAG;;ICzExB,WAAW,GAAG;;ACA3B;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-constants.js","sources":["ng://@taiga-ui/cdk/constants/always-false-handler.ts","ng://@taiga-ui/cdk/constants/always-true-handler.ts","ng://@taiga-ui/cdk/constants/browser.ts","ng://@taiga-ui/cdk/constants/empty.ts","ng://@taiga-ui/cdk/constants/stringify.ts","ng://@taiga-ui/cdk/constants/matcher.ts","ng://@taiga-ui/cdk/constants/parent-animation.ts","ng://@taiga-ui/cdk/constants/polling-time.ts","ng://@taiga-ui/cdk/constants/svg-node-filter.ts","ng://@taiga-ui/cdk/constants/unicode-chars.ts","ng://@taiga-ui/cdk/constants/version.ts","ng://@taiga-ui/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["/**\n * Handler that always returns `false`.\n */\nexport const ALWAYS_FALSE_HANDLER = (): false => false;\n","/**\n * Handler that always returns `true`.\n */\nexport const ALWAYS_TRUE_HANDLER = (): true => true;\n","export const CHROMIUM_EDGE_START_VERSION = 79;\n","import {QueryList} from '@angular/core';\nimport {ValidatorFn} from '@angular/forms';\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\n/** @deprecated use Validators.nullValidator */\nexport const EMPTY_VALIDATOR: ValidatorFn = () => null;\nexport const EMPTY_CLIENT_RECT: ClientRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n};\n","import {TuiStringHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Default method to turn arbitrary object into string\n */\nexport const TUI_DEFAULT_STRINGIFY: TuiStringHandler<unknown> = item => String(item);\n","import {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nimport {TUI_DEFAULT_STRINGIFY} from './stringify';\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = TUI_DEFAULT_STRINGIFY,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = TUI_DEFAULT_STRINGIFY,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n","import {animateChild, query, style, transition, trigger} from '@angular/animations';\n\nexport const TUI_PARENT_ANIMATION = trigger(`tuiParentAnimation`, [\n transition(`* => void`, [\n style({overflow: `hidden`}),\n query(`:scope > *`, [animateChild()], {optional: true}),\n ]),\n]);\n","export const POLLING_TIME = 1000 / 15;\n","// Filtering SVGElements for TreeWalker\n// Filter must be a function in IE, other modern browsers are compliant to this format\nexport const svgNodeFilter: NodeFilter = ((node: Node) =>\n `ownerSVGElement` in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT) as any;\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = `\\u00A0`;\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = `\\u2013`;\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = `\\u2014`;\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = `\\u00AB`;\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = `\\u00BB`;\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = `\\u002D`;\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `&minus;`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = `\\u2212`;\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = `\\u002B`;\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = `\\u2022`;\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = `\\u2026`;\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = `\\u00A4`;\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = `\\u200B`;\n","export const TUI_VERSION = `2.83.0`;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;;IAGa,oBAAoB,GAAG,cAAa,OAAA,KAAK;;ACHtD;;;IAGa,mBAAmB,GAAG,cAAY,OAAA,IAAI;;ICHtC,2BAA2B,GAAG;;ACG3C;;;;;IAKa,WAAW,GAAG,IAAI,SAAS,GAAQ;IACnC,WAAW,GAAO,GAAG;IACrB,cAAc,GAA6B,gBAAS;AACjE;IACa,eAAe,GAAgB,cAAM,OAAA,IAAI,IAAC;IAC1C,iBAAiB,GAAe;IACzC,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;;;ACjBZ;;;IAGa,qBAAqB,GAA8B,UAAA,IAAI,IAAI,OAAA,MAAM,CAAC,IAAI,CAAC;;ACDpF;;;;;;IAMa,mBAAmB,GAAG,UAC/B,IAAO,EACP,MAAc,EACd,SAAwD;IAAxD,0BAAA,EAAA,iCAAwD;IAC9C,OAAA,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAA5D,EAA6D;AAE3E;;;;;;IAMa,kBAAkB,GAAG,UAC9B,IAAO,EACP,MAAc,EACd,SAAwD;IAAxD,0BAAA,EAAA,iCAAwD;IAC9C,OAAA,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE;AAAtD,EAAuD;AAErE;;;;;;;IAOa,4BAA4B,GAAgC,UAAC,KAAK,EAAE,KAAK;IAClF,OAAA,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;AAA1C,EAA2C;AAE/C,SAAS,SAAS,CAAC,KAAc,EAAE,KAAc;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1F;;ICtCa,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,EAAE;IAC9D,UAAU,CAAC,WAAW,EAAE;QACpB,KAAK,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC;QAC3B,KAAK,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;KAC1D,CAAC;CACL;;ICPY,YAAY,GAAG,IAAI,GAAG;;ACAnC;AACA;IACa,aAAa,IAAgB,UAAC,IAAU;IACjD,OAAA,iBAAiB,IAAI,IAAI;UACnB,UAAU,CAAC,aAAa;UACxB,UAAU,CAAC,aAAa;AAF9B,CAE8B;;ACLlC;;;IAGa,mBAAmB,GAAG,SAAS;AAE5C;;;;;;;IAOa,YAAY,GAAG,SAAS;AAErC;;;;;;;IAOa,YAAY,GAAG,SAAS;AAErC;;;IAGa,UAAU,GAAG,SAAS;AAEnC;;;IAGa,UAAU,GAAG,SAAS;AAEnC;;;;;;;IAOa,WAAW,GAAG,IAAS;AAEpC;;;;;;IAMa,UAAU,GAAG,SAAS;AAEnC;;;IAGa,SAAS,GAAG,IAAS;AAElC;;;IAGa,WAAW,GAAG,SAAS;AAEpC;;;IAGa,aAAa,GAAG,SAAS;AAEtC;;;IAGa,kBAAkB,GAAG,SAAS;AAE3C;;;IAGa,qBAAqB,GAAG;;ICzExB,WAAW,GAAG;;ACA3B;;;;;;"}
@@ -5,7 +5,7 @@ import { TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS } from '@taiga-ui/cdk/tokens';
5
5
  import { POLLING_TIME } from '@taiga-ui/cdk/constants';
6
6
  import { race, timer, Observable } from 'rxjs';
7
7
  import { throttleTime, map, skipWhile, take } from 'rxjs/operators';
8
- import { px } from '@taiga-ui/cdk/utils';
8
+ import { tuiPx } from '@taiga-ui/cdk/utils';
9
9
 
10
10
  var AbstractTuiAutofocusHandler = /** @class */ (function () {
11
11
  function AbstractTuiAutofocusHandler(tuiFocusableComponent, elementRef) {
@@ -130,15 +130,21 @@ var TuiIosAutofocusHandler = /** @class */ (function (_super) {
130
130
  TuiIosAutofocusHandler.prototype.makeFakeInput = function () {
131
131
  var fakeInput = this.renderer.createElement("input");
132
132
  var rect = this.element.getBoundingClientRect();
133
- fakeInput.style.height = px(rect.height);
134
- fakeInput.style.width = px(rect.width / 2);
133
+ fakeInput.setAttribute("maxlength", "0");
134
+ // @note: don't use opacity: 0,
135
+ // sometimes it's doesn't work for emulate real input
136
+ fakeInput.style.height = tuiPx(rect.height);
137
+ fakeInput.style.width = tuiPx(rect.width / 2);
135
138
  fakeInput.style.position = "fixed";
136
- fakeInput.style.opacity = "0";
137
- fakeInput.style.fontSize = px(16); // disable possible auto zoom
139
+ fakeInput.style.zIndex = "-99999999";
140
+ fakeInput.style.caretColor = "transparent";
141
+ fakeInput.style.color = "transparent";
142
+ fakeInput.style.cursor = "none";
143
+ fakeInput.style.fontSize = tuiPx(16); // disable possible auto zoom
138
144
  fakeInput.readOnly = true; // prevent keyboard for fake input
139
145
  // @note: emulate position cursor before focus to real textfield element
140
- fakeInput.style.top = px(rect.top);
141
- fakeInput.style.left = px(rect.left);
146
+ fakeInput.style.top = tuiPx(rect.top);
147
+ fakeInput.style.left = tuiPx(rect.left);
142
148
  return fakeInput;
143
149
  };
144
150
  TuiIosAutofocusHandler.prototype.getDurationTimeBeforeFocus = function () {
@@ -234,9 +240,13 @@ var TuiAutoFocusDirective = /** @class */ (function () {
234
240
  }
235
241
  TuiAutoFocusDirective.prototype.ngAfterViewInit = function () {
236
242
  if (this.autoFocus) {
237
- this.handler.setFocus();
243
+ this.focus();
238
244
  }
239
245
  };
246
+ TuiAutoFocusDirective.prototype.focus = function () {
247
+ var _this = this;
248
+ void Promise.resolve().then(function () { return _this.handler.setFocus(); });
249
+ };
240
250
  TuiAutoFocusDirective.ctorParameters = function () { return [
241
251
  { type: undefined, decorators: [{ type: Inject, args: [TUI_AUTOFOCUS_HANDLER,] }] }
242
252
  ]; };
@@ -265,9 +275,31 @@ var TuiAutoFocusModule = /** @class */ (function () {
265
275
  return TuiAutoFocusModule;
266
276
  }());
267
277
 
278
+ var TuiSynchronousAutofocusHandler = /** @class */ (function (_super) {
279
+ __extends(TuiSynchronousAutofocusHandler, _super);
280
+ function TuiSynchronousAutofocusHandler(tuiFocusableComponent, elementRef) {
281
+ return _super.call(this, tuiFocusableComponent, elementRef) || this;
282
+ }
283
+ TuiSynchronousAutofocusHandler.prototype.setFocus = function () {
284
+ this.element.focus();
285
+ };
286
+ TuiSynchronousAutofocusHandler.ctorParameters = function () { return [
287
+ { type: undefined, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [TUI_FOCUSABLE_ITEM_ACCESSOR,] }] },
288
+ { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] }
289
+ ]; };
290
+ TuiSynchronousAutofocusHandler = __decorate([
291
+ Directive(),
292
+ __param(0, Optional()),
293
+ __param(0, Self()),
294
+ __param(0, Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)),
295
+ __param(1, Inject(ElementRef))
296
+ ], TuiSynchronousAutofocusHandler);
297
+ return TuiSynchronousAutofocusHandler;
298
+ }(AbstractTuiAutofocusHandler));
299
+
268
300
  /**
269
301
  * Generated bundle index. Do not edit.
270
302
  */
271
303
 
272
- export { AbstractTuiAutofocusHandler, TUI_AUTOFOCUS_HANDLER, TUI_AUTOFOCUS_PROVIDERS, TuiAutoFocusDirective, TuiAutoFocusModule, TuiDefaultAutofocusHandler, TuiIosAutofocusHandler, tuiAutofocusHandlerFactory };
304
+ export { AbstractTuiAutofocusHandler, TUI_AUTOFOCUS_HANDLER, TUI_AUTOFOCUS_PROVIDERS, TuiAutoFocusDirective, TuiAutoFocusModule, TuiDefaultAutofocusHandler, TuiIosAutofocusHandler, TuiSynchronousAutofocusHandler, tuiAutofocusHandlerFactory };
273
305
  //# sourceMappingURL=taiga-ui-cdk-directives-auto-focus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-auto-focus.js","sources":["ng://@taiga-ui/cdk/directives/auto-focus/handlers/abstract.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/default.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/ios.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.options.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.directive.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.module.ts","ng://@taiga-ui/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import {Directive, ElementRef} from '@angular/core';\nimport {\n TuiFocusableElementAccessor,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk/interfaces';\n\nimport {TuiAutofocusHandler} from '../autofocus.options';\n\n@Directive()\nexport abstract class AbstractTuiAutofocusHandler implements TuiAutofocusHandler {\n protected constructor(\n protected readonly tuiFocusableComponent: TuiFocusableElementAccessor | null,\n protected readonly elementRef: ElementRef<HTMLElement>,\n ) {}\n\n protected get element(): TuiNativeFocusableElement {\n return (\n this.tuiFocusableComponent?.nativeFocusableElement ||\n this.elementRef.nativeElement\n );\n }\n\n protected get isTextFieldElement(): boolean {\n return this.element.matches(`input, textarea`);\n }\n\n abstract setFocus(): void;\n}\n","import {Directive, ElementRef, Inject, Optional, Self} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\nimport {Observable, race, timer} from 'rxjs';\nimport {map, skipWhile, take, throttleTime} from 'rxjs/operators';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = `.ng-animating`;\n\n@Directive()\nexport class TuiDefaultAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n ) {\n super(tuiFocusableComponent, elementRef);\n }\n\n setFocus(): void {\n if (this.isTextFieldElement) {\n race(\n timer(TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(() => this.element.closest(NG_ANIMATION_SELECTOR)),\n skipWhile(Boolean),\n take(1),\n ),\n ).subscribe(() => this.element.focus());\n } else {\n this.element.focus();\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Inject,\n NgZone,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\nimport {px} from '@taiga-ui/cdk/utils';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\n// @dynamic\n@Directive()\nexport class TuiIosAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(WINDOW) private readonly windowRef: Window,\n ) {\n super(tuiFocusableComponent, elementRef);\n this.patchCssStyles();\n }\n\n setFocus(): void {\n if (this.isTextFieldElement) {\n this.ngZone.runOutsideAngular(() => this.iosWebkitAutofocus());\n } else {\n this.element.focus();\n }\n }\n\n private iosWebkitAutofocus(): void {\n const fakeInput: HTMLInputElement = this.makeFakeInput();\n const duration = this.getDurationTimeBeforeFocus();\n let fakeFocusTimeoutId = 0;\n let elementFocusTimeoutId = 0;\n\n const blurHandler = (): void => fakeInput.focus({preventScroll: true});\n const focusHandler = (): void => {\n clearTimeout(fakeFocusTimeoutId);\n\n fakeFocusTimeoutId = this.windowRef.setTimeout(() => {\n clearTimeout(elementFocusTimeoutId);\n\n fakeInput.removeEventListener(`blur`, blurHandler);\n fakeInput.removeEventListener(`focus`, focusHandler);\n\n elementFocusTimeoutId = this.windowRef.setTimeout(() => {\n this.element.focus({preventScroll: false});\n fakeInput.remove();\n }, duration);\n });\n };\n\n fakeInput.addEventListener(`blur`, blurHandler, {once: true});\n fakeInput.addEventListener(`focus`, focusHandler);\n\n if (this.insideDialog()) {\n this.windowRef.document.body.appendChild(fakeInput);\n } else {\n this.element.parentElement?.appendChild(fakeInput);\n }\n\n fakeInput.focus({preventScroll: true});\n }\n\n /**\n * @note:\n * emulate textfield position in layout with cursor\n * before focus to real textfield element\n */\n private makeFakeInput(): HTMLInputElement {\n const fakeInput: HTMLInputElement = this.renderer.createElement(`input`);\n const rect: DOMRect = this.element.getBoundingClientRect();\n\n fakeInput.style.height = px(rect.height);\n fakeInput.style.width = px(rect.width / 2);\n fakeInput.style.position = `fixed`;\n fakeInput.style.opacity = `0`;\n fakeInput.style.fontSize = px(16); // disable possible auto zoom\n fakeInput.readOnly = true; // prevent keyboard for fake input\n\n // @note: emulate position cursor before focus to real textfield element\n fakeInput.style.top = px(rect.top);\n fakeInput.style.left = px(rect.left);\n\n return fakeInput;\n }\n\n private getDurationTimeBeforeFocus(): number {\n return (\n parseFloat(\n this.windowRef\n .getComputedStyle(this.element)\n .getPropertyValue(`--tui-duration`),\n ) || 0\n );\n }\n\n /**\n * @note:\n * unfortunately, in older versions of iOS\n * there is a bug that the fake input cursor\n * will move along with the dialog animation\n * and then that dialog will be shaking\n */\n private insideDialog(): boolean {\n return !!this.element.closest(`tui-dialog`);\n }\n\n /**\n * @note:\n * This is necessary so that the viewport isn't recalculated\n * and then the dialogs don't shake.\n *\n * Also, we need to fixed height viewport,\n * so that when focusing the dialogs don't shake\n */\n private patchCssStyles(): void {\n const documentRef = this.windowRef.document;\n\n for (const element of [documentRef.documentElement, documentRef.body]) {\n element.style.setProperty(`overflow`, `auto`);\n element.style.setProperty(`height`, `100%`);\n }\n }\n}\n","import {\n ElementRef,\n InjectionToken,\n NgZone,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TuiDefaultAutofocusHandler} from './handlers/default.handler';\nimport {TuiIosAutofocusHandler} from './handlers/ios.handler';\n\nexport interface TuiAutofocusHandler {\n setFocus(): void;\n}\n\nexport const TUI_AUTOFOCUS_HANDLER = new InjectionToken<TuiAutofocusHandler>(\n `Autofocusing handler`,\n);\n\n// TODO: 3.0 remove in ivy compilation\nexport function tuiAutofocusHandlerFactory(\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n elementRef: ElementRef<HTMLElement>,\n animationFrame$: Observable<number>,\n renderer: Renderer2,\n ngZone: NgZone,\n windowRef: Window,\n isIos: boolean,\n): TuiAutofocusHandler {\n return isIos\n ? new TuiIosAutofocusHandler(\n tuiFocusableComponent,\n elementRef,\n renderer,\n ngZone,\n windowRef,\n )\n : new TuiDefaultAutofocusHandler(\n tuiFocusableComponent,\n elementRef,\n animationFrame$,\n );\n}\n\nexport const TUI_AUTOFOCUS_PROVIDERS = [\n {\n provide: TUI_AUTOFOCUS_HANDLER,\n // TODO: replace to useClass in v3.0\n useFactory: tuiAutofocusHandlerFactory,\n deps: [\n [new Optional(), new Self(), TUI_FOCUSABLE_ITEM_ACCESSOR],\n ElementRef,\n ANIMATION_FRAME,\n Renderer2,\n NgZone,\n WINDOW,\n TUI_IS_IOS,\n ],\n },\n];\n","import {AfterViewInit, Directive, Inject, Input} from '@angular/core';\n\nimport {\n TUI_AUTOFOCUS_HANDLER,\n TUI_AUTOFOCUS_PROVIDERS,\n TuiAutofocusHandler,\n} from './autofocus.options';\n\n// TODO: 3.0 change input name to tuiAutoFocus and handle empty string\n@Directive({\n selector: '[tuiAutoFocus]',\n providers: TUI_AUTOFOCUS_PROVIDERS,\n})\nexport class TuiAutoFocusDirective implements AfterViewInit {\n @Input()\n autoFocus = true;\n\n constructor(\n @Inject(TUI_AUTOFOCUS_HANDLER) private readonly handler: TuiAutofocusHandler,\n ) {}\n\n ngAfterViewInit(): void {\n if (this.autoFocus) {\n this.handler.setFocus();\n }\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiAutoFocusDirective} from './autofocus.directive';\n\n@NgModule({\n declarations: [TuiAutoFocusDirective],\n exports: [TuiAutoFocusDirective],\n})\nexport class TuiAutoFocusModule {}\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-cdk-directives-auto-focus.js","sources":["ng://@taiga-ui/cdk/directives/auto-focus/handlers/abstract.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/default.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/ios.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.options.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.directive.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.module.ts","ng://@taiga-ui/cdk/directives/auto-focus/handlers/sync.handler.ts","ng://@taiga-ui/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import {Directive, ElementRef} from '@angular/core';\nimport {\n TuiFocusableElementAccessor,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk/interfaces';\n\nimport {TuiAutofocusHandler} from '../autofocus.options';\n\n@Directive()\nexport abstract class AbstractTuiAutofocusHandler implements TuiAutofocusHandler {\n protected constructor(\n protected readonly tuiFocusableComponent: TuiFocusableElementAccessor | null,\n protected readonly elementRef: ElementRef<HTMLElement>,\n ) {}\n\n protected get element(): TuiNativeFocusableElement {\n return (\n this.tuiFocusableComponent?.nativeFocusableElement ||\n this.elementRef.nativeElement\n );\n }\n\n protected get isTextFieldElement(): boolean {\n return this.element.matches(`input, textarea`);\n }\n\n abstract setFocus(): void;\n}\n","import {Directive, ElementRef, Inject, Optional, Self} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\nimport {Observable, race, timer} from 'rxjs';\nimport {map, skipWhile, take, throttleTime} from 'rxjs/operators';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = `.ng-animating`;\n\n@Directive()\nexport class TuiDefaultAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n ) {\n super(tuiFocusableComponent, elementRef);\n }\n\n setFocus(): void {\n if (this.isTextFieldElement) {\n race(\n timer(TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(() => this.element.closest(NG_ANIMATION_SELECTOR)),\n skipWhile(Boolean),\n take(1),\n ),\n ).subscribe(() => this.element.focus());\n } else {\n this.element.focus();\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Inject,\n NgZone,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\nimport {tuiPx} from '@taiga-ui/cdk/utils';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\n// @dynamic\n@Directive()\nexport class TuiIosAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(WINDOW) private readonly windowRef: Window,\n ) {\n super(tuiFocusableComponent, elementRef);\n this.patchCssStyles();\n }\n\n setFocus(): void {\n if (this.isTextFieldElement) {\n this.ngZone.runOutsideAngular(() => this.iosWebkitAutofocus());\n } else {\n this.element.focus();\n }\n }\n\n private iosWebkitAutofocus(): void {\n const fakeInput: HTMLInputElement = this.makeFakeInput();\n const duration = this.getDurationTimeBeforeFocus();\n let fakeFocusTimeoutId = 0;\n let elementFocusTimeoutId = 0;\n\n const blurHandler = (): void => fakeInput.focus({preventScroll: true});\n const focusHandler = (): void => {\n clearTimeout(fakeFocusTimeoutId);\n\n fakeFocusTimeoutId = this.windowRef.setTimeout(() => {\n clearTimeout(elementFocusTimeoutId);\n\n fakeInput.removeEventListener(`blur`, blurHandler);\n fakeInput.removeEventListener(`focus`, focusHandler);\n\n elementFocusTimeoutId = this.windowRef.setTimeout(() => {\n this.element.focus({preventScroll: false});\n fakeInput.remove();\n }, duration);\n });\n };\n\n fakeInput.addEventListener(`blur`, blurHandler, {once: true});\n fakeInput.addEventListener(`focus`, focusHandler);\n\n if (this.insideDialog()) {\n this.windowRef.document.body.appendChild(fakeInput);\n } else {\n this.element.parentElement?.appendChild(fakeInput);\n }\n\n fakeInput.focus({preventScroll: true});\n }\n\n /**\n * @note:\n * emulate textfield position in layout with cursor\n * before focus to real textfield element\n */\n private makeFakeInput(): HTMLInputElement {\n const fakeInput: HTMLInputElement = this.renderer.createElement(`input`);\n const rect: DOMRect = this.element.getBoundingClientRect();\n\n fakeInput.setAttribute(`maxlength`, `0`);\n\n // @note: don't use opacity: 0,\n // sometimes it's doesn't work for emulate real input\n fakeInput.style.height = tuiPx(rect.height);\n fakeInput.style.width = tuiPx(rect.width / 2);\n fakeInput.style.position = `fixed`;\n fakeInput.style.zIndex = `-99999999`;\n fakeInput.style.caretColor = `transparent`;\n fakeInput.style.color = `transparent`;\n fakeInput.style.cursor = `none`;\n fakeInput.style.fontSize = tuiPx(16); // disable possible auto zoom\n fakeInput.readOnly = true; // prevent keyboard for fake input\n\n // @note: emulate position cursor before focus to real textfield element\n fakeInput.style.top = tuiPx(rect.top);\n fakeInput.style.left = tuiPx(rect.left);\n\n return fakeInput;\n }\n\n private getDurationTimeBeforeFocus(): number {\n return (\n parseFloat(\n this.windowRef\n .getComputedStyle(this.element)\n .getPropertyValue(`--tui-duration`),\n ) || 0\n );\n }\n\n /**\n * @note:\n * unfortunately, in older versions of iOS\n * there is a bug that the fake input cursor\n * will move along with the dialog animation\n * and then that dialog will be shaking\n */\n private insideDialog(): boolean {\n return !!this.element.closest(`tui-dialog`);\n }\n\n /**\n * @note:\n * This is necessary so that the viewport isn't recalculated\n * and then the dialogs don't shake.\n *\n * Also, we need to fixed height viewport,\n * so that when focusing the dialogs don't shake\n */\n private patchCssStyles(): void {\n const documentRef = this.windowRef.document;\n\n for (const element of [documentRef.documentElement, documentRef.body]) {\n element.style.setProperty(`overflow`, `auto`);\n element.style.setProperty(`height`, `100%`);\n }\n }\n}\n","import {\n ElementRef,\n InjectionToken,\n NgZone,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TuiDefaultAutofocusHandler} from './handlers/default.handler';\nimport {TuiIosAutofocusHandler} from './handlers/ios.handler';\n\nexport interface TuiAutofocusHandler {\n setFocus(): void;\n}\n\nexport const TUI_AUTOFOCUS_HANDLER = new InjectionToken<TuiAutofocusHandler>(\n `Autofocusing handler`,\n);\n\n// TODO: 3.0 remove in ivy compilation\nexport function tuiAutofocusHandlerFactory(\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n elementRef: ElementRef<HTMLElement>,\n animationFrame$: Observable<number>,\n renderer: Renderer2,\n ngZone: NgZone,\n windowRef: Window,\n isIos: boolean,\n): TuiAutofocusHandler {\n return isIos\n ? new TuiIosAutofocusHandler(\n tuiFocusableComponent,\n elementRef,\n renderer,\n ngZone,\n windowRef,\n )\n : new TuiDefaultAutofocusHandler(\n tuiFocusableComponent,\n elementRef,\n animationFrame$,\n );\n}\n\nexport const TUI_AUTOFOCUS_PROVIDERS = [\n {\n provide: TUI_AUTOFOCUS_HANDLER,\n // TODO: replace to useClass in v3.0\n useFactory: tuiAutofocusHandlerFactory,\n deps: [\n [new Optional(), new Self(), TUI_FOCUSABLE_ITEM_ACCESSOR],\n ElementRef,\n ANIMATION_FRAME,\n Renderer2,\n NgZone,\n WINDOW,\n TUI_IS_IOS,\n ],\n },\n];\n","import {AfterViewInit, Directive, Inject, Input} from '@angular/core';\n\nimport {\n TUI_AUTOFOCUS_HANDLER,\n TUI_AUTOFOCUS_PROVIDERS,\n TuiAutofocusHandler,\n} from './autofocus.options';\n\n// TODO: 3.0 change input name to tuiAutoFocus and handle empty string\n@Directive({\n selector: '[tuiAutoFocus]',\n providers: TUI_AUTOFOCUS_PROVIDERS,\n})\nexport class TuiAutoFocusDirective implements AfterViewInit {\n @Input()\n autoFocus = true;\n\n constructor(\n @Inject(TUI_AUTOFOCUS_HANDLER)\n private readonly handler: TuiAutofocusHandler,\n ) {}\n\n ngAfterViewInit(): void {\n if (this.autoFocus) {\n this.focus();\n }\n }\n\n focus(): void {\n void Promise.resolve().then(() => this.handler.setFocus());\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiAutoFocusDirective} from './autofocus.directive';\n\n@NgModule({\n declarations: [TuiAutoFocusDirective],\n exports: [TuiAutoFocusDirective],\n})\nexport class TuiAutoFocusModule {}\n","import {Directive, ElementRef, Inject, Optional, Self} from '@angular/core';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk/tokens';\n\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\n@Directive()\nexport class TuiSynchronousAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n ) {\n super(tuiFocusableComponent, elementRef);\n }\n\n setFocus(): void {\n this.element.focus();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,24 @@
1
- import { __extends, __decorate, __param } from 'tslib';
1
+ import { __decorate, __param } from 'tslib';
2
2
  import { ElementRef, Inject, Directive, NgModule } from '@angular/core';
3
3
 
4
- var TuiElementDirective = /** @class */ (function (_super) {
5
- __extends(TuiElementDirective, _super);
4
+ var TuiElementDirective = /** @class */ (function () {
6
5
  function TuiElementDirective(_a) {
7
6
  var nativeElement = _a.nativeElement;
8
- return _super.call(this, nativeElement) || this;
7
+ /**
8
+ * @note:
9
+ * Typically, when your constructor is invoked with new,
10
+ * an object is created, its constructor is assigned to
11
+ * the invoked constructor and the object is then assigned
12
+ * to this before executing any operations specified
13
+ * in your constructor method.
14
+ *
15
+ * ERROR TypeError: Class constructor ElementRef cannot be invoked without 'new'
16
+ * https://github.com/Tinkoff/taiga-ui/issues/3072
17
+ *
18
+ * This way we can instantiate object creation
19
+ * without additional prototype chain for possible fix bug.
20
+ */
21
+ return new ElementRef(nativeElement);
9
22
  }
10
23
  TuiElementDirective.ctorParameters = function () { return [
11
24
  { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] }
@@ -18,7 +31,7 @@ var TuiElementDirective = /** @class */ (function (_super) {
18
31
  __param(0, Inject(ElementRef))
19
32
  ], TuiElementDirective);
20
33
  return TuiElementDirective;
21
- }(ElementRef));
34
+ }());
22
35
 
23
36
  var TuiElementModule = /** @class */ (function () {
24
37
  function TuiElementModule() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-element.js","sources":["ng://@taiga-ui/cdk/directives/element/element.directive.ts","ng://@taiga-ui/cdk/directives/element/element.module.ts","ng://@taiga-ui/cdk/directives/element/taiga-ui-cdk-directives-element.ts"],"sourcesContent":["import {Directive, ElementRef, Inject} from '@angular/core';\n\n@Directive({\n selector: '[tuiElement]',\n exportAs: 'elementRef',\n})\nexport class TuiElementDirective<T extends Element = HTMLElement> extends ElementRef<T> {\n constructor(@Inject(ElementRef) {nativeElement}: ElementRef<T>) {\n super(nativeElement);\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiElementDirective} from './element.directive';\n\n@NgModule({\n declarations: [TuiElementDirective],\n exports: [TuiElementDirective],\n})\nexport class TuiElementModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;IAM0E,uCAAa;IACnF,6BAAgC,EAA8B;YAA7B,gCAAa;eAC1C,kBAAM,aAAa,CAAC;KACvB;;gBAFgD,UAAU,uBAA9C,MAAM,SAAC,UAAU;;IADrB,mBAAmB;QAJ/B,SAAS,CAAC;YACP,QAAQ,EAAE,cAAc;YACxB,QAAQ,EAAE,YAAY;SACzB,CAAC;QAEe,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;OADtB,mBAAmB,CAI/B;IAAD,0BAAC;CAAA,CAJyE,UAAU;;;ICEpF;KAAgC;IAAnB,gBAAgB;QAJ5B,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;YACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC;OACW,gBAAgB,CAAG;IAAD,uBAAC;CAAhC;;ACRA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-element.js","sources":["ng://@taiga-ui/cdk/directives/element/element.directive.ts","ng://@taiga-ui/cdk/directives/element/element.module.ts","ng://@taiga-ui/cdk/directives/element/taiga-ui-cdk-directives-element.ts"],"sourcesContent":["import {Directive, ElementRef, Inject} from '@angular/core';\n\n@Directive({\n selector: '[tuiElement]',\n exportAs: 'elementRef',\n})\nexport class TuiElementDirective<T extends Element = HTMLElement>\n implements ElementRef<T>\n{\n nativeElement!: T;\n\n constructor(@Inject(ElementRef) {nativeElement}: ElementRef<T>) {\n /**\n * @note:\n * Typically, when your constructor is invoked with new,\n * an object is created, its constructor is assigned to\n * the invoked constructor and the object is then assigned\n * to this before executing any operations specified\n * in your constructor method.\n *\n * ERROR TypeError: Class constructor ElementRef cannot be invoked without 'new'\n * https://github.com/Tinkoff/taiga-ui/issues/3072\n *\n * This way we can instantiate object creation\n * without additional prototype chain for possible fix bug.\n */\n return new ElementRef<T>(nativeElement);\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiElementDirective} from './element.directive';\n\n@NgModule({\n declarations: [TuiElementDirective],\n exports: [TuiElementDirective],\n})\nexport class TuiElementModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;IAWI,6BAAgC,EAA8B;YAA7B,gCAAa;;;;;;;;;;;;;;;QAe1C,OAAO,IAAI,UAAU,CAAI,aAAa,CAAC,CAAC;KAC3C;;gBAhBgD,UAAU,uBAA9C,MAAM,SAAC,UAAU;;IALrB,mBAAmB;QAJ/B,SAAS,CAAC;YACP,QAAQ,EAAE,cAAc;YACxB,QAAQ,EAAE,YAAY;SACzB,CAAC;QAMe,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;OALtB,mBAAmB,CAsB/B;IAAD,0BAAC;CAtBD;;;ICEA;KAAgC;IAAnB,gBAAgB;QAJ5B,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;YACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC;OACW,gBAAgB,CAAG;IAAD,uBAAC;CAAhC;;ACRA;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/cdk",
3
- "version": "2.81.0",
3
+ "version": "2.83.0",
4
4
  "description": "Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance",
5
5
  "keywords": [
6
6
  "angular",