@taiga-ui/cdk 2.82.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.
- package/bundles/taiga-ui-cdk-constants.umd.js +1 -1
- package/bundles/taiga-ui-cdk-constants.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-constants.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-constants.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js +40 -7
- package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-element.umd.js +17 -4
- package/bundles/taiga-ui-cdk-directives-element.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-element.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-directives-element.umd.min.js.map +1 -1
- package/constants/taiga-ui-cdk-constants.metadata.json +1 -1
- package/constants/version.d.ts +1 -1
- package/constants/version.js +1 -1
- package/directives/auto-focus/autofocus.directive.d.ts +1 -0
- package/directives/auto-focus/handlers/sync.handler.d.ts +7 -0
- package/directives/auto-focus/index.d.ts +1 -0
- package/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.metadata.json +1 -1
- package/directives/element/element.directive.d.ts +2 -1
- package/directives/element/taiga-ui-cdk-directives-element.metadata.json +1 -1
- package/esm2015/constants/version.js +2 -2
- package/esm2015/directives/auto-focus/autofocus.directive.js +5 -2
- package/esm2015/directives/auto-focus/handlers/ios.handler.js +14 -8
- package/esm2015/directives/auto-focus/handlers/sync.handler.js +25 -0
- package/esm2015/directives/auto-focus/index.js +2 -1
- package/esm2015/directives/element/element.directive.js +17 -3
- package/esm5/constants/version.js +2 -2
- package/esm5/directives/auto-focus/autofocus.directive.js +6 -2
- package/esm5/directives/auto-focus/handlers/ios.handler.js +14 -8
- package/esm5/directives/auto-focus/handlers/sync.handler.js +27 -0
- package/esm5/directives/auto-focus/index.js +2 -1
- package/esm5/directives/element/element.directive.js +19 -6
- package/fesm2015/taiga-ui-cdk-constants.js +1 -1
- package/fesm2015/taiga-ui-cdk-constants.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-directives-auto-focus.js +38 -9
- package/fesm2015/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-directives-element.js +16 -2
- package/fesm2015/taiga-ui-cdk-directives-element.js.map +1 -1
- package/fesm5/taiga-ui-cdk-constants.js +1 -1
- package/fesm5/taiga-ui-cdk-constants.js.map +1 -1
- package/fesm5/taiga-ui-cdk-directives-auto-focus.js +41 -9
- package/fesm5/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
- package/fesm5/taiga-ui-cdk-directives-element.js +18 -5
- package/fesm5/taiga-ui-cdk-directives-element.js.map +1 -1
- 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 {
|
|
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.
|
|
117
|
-
|
|
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.
|
|
120
|
-
fakeInput.style.
|
|
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 =
|
|
124
|
-
fakeInput.style.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.
|
|
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
|
|
4
|
+
let TuiElementDirective = class TuiElementDirective {
|
|
5
5
|
constructor({ nativeElement }) {
|
|
6
|
-
|
|
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
|
|
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;;;;;;"}
|
|
@@ -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 `−`. 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.
|
|
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 `−`. 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 {
|
|
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.
|
|
134
|
-
|
|
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.
|
|
137
|
-
fakeInput.style.
|
|
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 =
|
|
141
|
-
fakeInput.style.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.
|
|
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 {
|
|
1
|
+
import { __decorate, __param } from 'tslib';
|
|
2
2
|
import { ElementRef, Inject, Directive, NgModule } from '@angular/core';
|
|
3
3
|
|
|
4
|
-
var TuiElementDirective = /** @class */ (function (
|
|
5
|
-
__extends(TuiElementDirective, _super);
|
|
4
|
+
var TuiElementDirective = /** @class */ (function () {
|
|
6
5
|
function TuiElementDirective(_a) {
|
|
7
6
|
var nativeElement = _a.nativeElement;
|
|
8
|
-
|
|
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
|
-
}(
|
|
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
|
|
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