@taiga-ui/cdk 4.24.0-canary.1f60df9 → 4.24.0-canary.5da8fec
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/constants/version.d.ts +1 -1
- package/constants/version.js +1 -1
- package/directives/font-size/font-size.directive.d.ts +1 -5
- package/esm2022/constants/version.mjs +2 -2
- package/esm2022/directives/auto-focus/autofocus.options.mjs +2 -2
- package/esm2022/directives/font-size/font-size.directive.mjs +4 -9
- package/fesm2022/taiga-ui-cdk-constants.mjs +1 -1
- package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs +1 -1
- package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-font-size.mjs +3 -8
- package/fesm2022/taiga-ui-cdk-directives-font-size.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/ng-update/utils/templates/replace-tag.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-money.d.ts +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-money.js +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-number-precision.d.ts +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-number-precision.js +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-prevent-default.d.ts +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-progress-segmented.d.ts +1 -1
- package/schematics/utils/angular-json-manipulations.js +1 -1
package/constants/version.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export declare const TUI_VERSION = "4.24.0-canary.
|
1
|
+
export declare const TUI_VERSION = "4.24.0-canary.5da8fec";
|
package/constants/version.js
CHANGED
@@ -1,10 +1,6 @@
|
|
1
|
-
import type { TuiStringHandler } from '@taiga-ui/cdk/types';
|
2
1
|
import * as i0 from "@angular/core";
|
3
|
-
export declare const TUI_FONT_SIZE_HANDLER: import("@angular/core").InjectionToken<
|
2
|
+
export declare const TUI_FONT_SIZE_HANDLER: import("@angular/core").InjectionToken<(size: number) => void>;
|
4
3
|
export declare class TuiFontSize {
|
5
|
-
private readonly el;
|
6
|
-
private readonly handler;
|
7
|
-
private readonly callback;
|
8
4
|
protected readonly nothing: () => void;
|
9
5
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiFontSize, never>;
|
10
6
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TuiFontSize, never, never, {}, {}, never, never, true, never>;
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export const TUI_VERSION = '4.24.0-canary.
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
1
|
+
export const TUI_VERSION = '4.24.0-canary.5da8fec';
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jb25zdGFudHMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVFVJX1ZFUlNJT04gPSAnNC4yNC4wLWNhbmFyeS41ZGE4ZmVjJztcbiJdfQ==
|
@@ -22,10 +22,10 @@ export const TUI_AUTOFOCUS_PROVIDERS = [
|
|
22
22
|
TUI_IS_IOS,
|
23
23
|
TUI_AUTOFOCUS_OPTIONS,
|
24
24
|
],
|
25
|
-
// eslint-disable-next-line max-params
|
25
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
26
26
|
useFactory: (el, animationFrame$, renderer, zone, win, isIos, options) => isIos
|
27
27
|
? new TuiIosAutofocusHandler(el, renderer, zone, win, options)
|
28
28
|
: new TuiDefaultAutofocusHandler(el, animationFrame$, zone, options),
|
29
29
|
},
|
30
30
|
];
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZvY3VzLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9hdXRvLWZvY3VzL2F1dG9mb2N1cy5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxjQUFjLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQVk5RCxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLDJCQUEyQixDQUFDLEdBQzdELGdCQUFnQixDQUFzQjtJQUNsQyxLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSw0Q0FBNEM7SUFDbkQsYUFBYSxFQUFFLEtBQUs7Q0FDdkIsQ0FBQyxDQUFDO0FBRVAsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxFQUF1QixDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ25DO1FBQ0ksT0FBTyxFQUFFLHFCQUFxQjtRQUM5QixJQUFJLEVBQUU7WUFDRixVQUFVO1lBQ1Ysa0JBQWtCO1lBQ2xCLFNBQVM7WUFDVCxNQUFNO1lBQ04sU0FBUztZQUNULFVBQVU7WUFDVixxQkFBcUI7U0FDeEI7UUFFRCx5REFBeUQ7UUFDekQsVUFBVSxFQUFFLENBQ1IsRUFBMkIsRUFDM0IsZUFBbUMsRUFDbkMsUUFBbUIsRUFDbkIsSUFBWSxFQUNaLEdBQVcsRUFDWCxLQUFjLEVBQ2QsT0FBNEIsRUFDOUIsRUFBRSxDQUNBLEtBQUs7WUFDRCxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDO1lBQzlELENBQUMsQ0FBQyxJQUFJLDBCQUEwQixDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztLQUMvRTtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIE5nWm9uZSwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V0FfQU5JTUFUSU9OX0ZSQU1FLCBXQV9XSU5ET1d9IGZyb20gJ0BuZy13ZWItYXBpcy9jb21tb24nO1xuaW1wb3J0IHtUVUlfSVNfSU9TfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUNyZWF0ZU9wdGlvbnMsIHR1aUNyZWF0ZVRva2VufSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzJztcbmltcG9ydCB0eXBlIHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUdWlEZWZhdWx0QXV0b2ZvY3VzSGFuZGxlcn0gZnJvbSAnLi9oYW5kbGVycy9kZWZhdWx0LmhhbmRsZXInO1xuaW1wb3J0IHtUdWlJb3NBdXRvZm9jdXNIYW5kbGVyfSBmcm9tICcuL2hhbmRsZXJzL2lvcy5oYW5kbGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBUdWlBdXRvZm9jdXNIYW5kbGVyIHtcbiAgICBzZXRGb2N1cygpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR1aUF1dG9mb2N1c09wdGlvbnMge1xuICAgIHJlYWRvbmx5IGRlbGF5OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgcXVlcnk6IHN0cmluZztcbiAgICByZWFkb25seSBwcmV2ZW50U2Nyb2xsOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgW1RVSV9BVVRPRk9DVVNfT1BUSU9OUywgdHVpQXV0b0ZvY3VzT3B0aW9uc1Byb3ZpZGVyXSA9XG4gICAgdHVpQ3JlYXRlT3B0aW9uczxUdWlBdXRvZm9jdXNPcHRpb25zPih7XG4gICAgICAgIGRlbGF5OiBOYU4sIC8vIE5hTiA9IG5vIGRlbGF5L3N5bmNcbiAgICAgICAgcXVlcnk6ICdpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW2NvbnRlbnRlZGl0YWJsZV0nLFxuICAgICAgICBwcmV2ZW50U2Nyb2xsOiBmYWxzZSxcbiAgICB9KTtcblxuZXhwb3J0IGNvbnN0IFRVSV9BVVRPRk9DVVNfSEFORExFUiA9IHR1aUNyZWF0ZVRva2VuPFR1aUF1dG9mb2N1c0hhbmRsZXI+KCk7XG5cbmV4cG9ydCBjb25zdCBUVUlfQVVUT0ZPQ1VTX1BST1ZJREVSUyA9IFtcbiAgICB7XG4gICAgICAgIHByb3ZpZGU6IFRVSV9BVVRPRk9DVVNfSEFORExFUixcbiAgICAgICAgZGVwczogW1xuICAgICAgICAgICAgRWxlbWVudFJlZixcbiAgICAgICAgICAgIFdBX0FOSU1BVElPTl9GUkFNRSxcbiAgICAgICAgICAgIFJlbmRlcmVyMixcbiAgICAgICAgICAgIE5nWm9uZSxcbiAgICAgICAgICAgIFdBX1dJTkRPVyxcbiAgICAgICAgICAgIFRVSV9JU19JT1MsXG4gICAgICAgICAgICBUVUlfQVVUT0ZPQ1VTX09QVElPTlMsXG4gICAgICAgIF0sXG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tYXgtcGFyYW1zXG4gICAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgICAgIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgICAgIGFuaW1hdGlvbkZyYW1lJDogT2JzZXJ2YWJsZTxudW1iZXI+LFxuICAgICAgICAgICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgIHpvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgIHdpbjogV2luZG93LFxuICAgICAgICAgICAgaXNJb3M6IGJvb2xlYW4sXG4gICAgICAgICAgICBvcHRpb25zOiBUdWlBdXRvZm9jdXNPcHRpb25zLFxuICAgICAgICApID0+XG4gICAgICAgICAgICBpc0lvc1xuICAgICAgICAgICAgICAgID8gbmV3IFR1aUlvc0F1dG9mb2N1c0hhbmRsZXIoZWwsIHJlbmRlcmVyLCB6b25lLCB3aW4sIG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgOiBuZXcgVHVpRGVmYXVsdEF1dG9mb2N1c0hhbmRsZXIoZWwsIGFuaW1hdGlvbkZyYW1lJCwgem9uZSwgb3B0aW9ucyksXG4gICAgfSxcbl07XG4iXX0=
|
@@ -1,19 +1,14 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/member-ordering */
|
2
1
|
import { isPlatformBrowser } from '@angular/common';
|
3
2
|
import { DestroyRef, Directive, inject, PLATFORM_ID } from '@angular/core';
|
4
3
|
import { WA_WINDOW } from '@ng-web-apis/common';
|
5
4
|
import { EMPTY_FUNCTION } from '@taiga-ui/cdk/constants';
|
6
|
-
import {
|
7
|
-
import { tuiCreateTokenFromFactory, tuiFontSizeWatcher, } from '@taiga-ui/cdk/utils/miscellaneous';
|
5
|
+
import { tuiCreateToken, tuiFontSizeWatcher } from '@taiga-ui/cdk/utils/miscellaneous';
|
8
6
|
import * as i0 from "@angular/core";
|
9
|
-
export const TUI_FONT_SIZE_HANDLER =
|
7
|
+
export const TUI_FONT_SIZE_HANDLER = tuiCreateToken(EMPTY_FUNCTION);
|
10
8
|
class TuiFontSize {
|
11
9
|
constructor() {
|
12
|
-
this.el = tuiInjectElement();
|
13
|
-
this.handler = inject(TUI_FONT_SIZE_HANDLER);
|
14
|
-
this.callback = (size) => this.el.style.setProperty('--tui-font-size', this.handler(size));
|
15
10
|
this.nothing = inject(DestroyRef).onDestroy(isPlatformBrowser(inject(PLATFORM_ID)) && typeof ResizeObserver !== 'undefined'
|
16
|
-
? tuiFontSizeWatcher(
|
11
|
+
? tuiFontSizeWatcher(inject(TUI_FONT_SIZE_HANDLER), inject(WA_WINDOW))
|
17
12
|
: EMPTY_FUNCTION);
|
18
13
|
}
|
19
14
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFontSize, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
@@ -26,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
26
21
|
standalone: true,
|
27
22
|
}]
|
28
23
|
}] });
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1zaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9kaXJlY3RpdmVzL2ZvbnQtc2l6ZS9mb250LXNpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7O0FBRXJGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUM5QixjQUFjLENBQXlCLGNBQWMsQ0FBQyxDQUFDO0FBRTNELE1BR2EsV0FBVztJQUh4QjtRQUl1QixZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FDckQsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksT0FBTyxjQUFjLEtBQUssV0FBVztZQUMzRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLENBQUMsQ0FBQyxjQUFjLENBQ3ZCLENBQUM7S0FDTDsrR0FOWSxXQUFXO21HQUFYLFdBQVc7O1NBQVgsV0FBVzs0RkFBWCxXQUFXO2tCQUh2QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Rlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgaW5qZWN0LCBQTEFURk9STV9JRH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dBX1dJTkRPV30gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQge0VNUFRZX0ZVTkNUSU9OfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge3R1aUNyZWF0ZVRva2VuLCB0dWlGb250U2l6ZVdhdGNoZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5cbmV4cG9ydCBjb25zdCBUVUlfRk9OVF9TSVpFX0hBTkRMRVIgPVxuICAgIHR1aUNyZWF0ZVRva2VuPChzaXplOiBudW1iZXIpID0+IHZvaWQ+KEVNUFRZX0ZVTkNUSU9OKTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpRm9udFNpemUge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBub3RoaW5nID0gaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveShcbiAgICAgICAgaXNQbGF0Zm9ybUJyb3dzZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSkgJiYgdHlwZW9mIFJlc2l6ZU9ic2VydmVyICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyB0dWlGb250U2l6ZVdhdGNoZXIoaW5qZWN0KFRVSV9GT05UX1NJWkVfSEFORExFUiksIGluamVjdChXQV9XSU5ET1cpKVxuICAgICAgICAgICAgOiBFTVBUWV9GVU5DVElPTixcbiAgICApO1xufVxuIl19
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import type {CreateEffectOptions} from '@angular/core';\nimport {VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\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 = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import type {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\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> = String,\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> = String,\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","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\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","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.mastercard',\n '@tui.maestro',\n '@tui.amex',\n '@tui.diners-club',\n '@tui.discover',\n '@tui.humo',\n '@tui.jcb',\n '@tui.ru-pay',\n '@tui.union-pay',\n '@tui.uzcard',\n '@tui.verve',\n '@tui.external-link',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.languages',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.calendar',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.24.0-canary.
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import type {CreateEffectOptions} from '@angular/core';\nimport {VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\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 = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import type {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\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> = String,\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> = String,\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","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\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","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.mastercard',\n '@tui.maestro',\n '@tui.amex',\n '@tui.diners-club',\n '@tui.discover',\n '@tui.humo',\n '@tui.jcb',\n '@tui.ru-pay',\n '@tui.union-pay',\n '@tui.uzcard',\n '@tui.verve',\n '@tui.external-link',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.languages',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.calendar',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.24.0-canary.5da8fec';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -184,7 +184,7 @@ const TUI_AUTOFOCUS_PROVIDERS = [
|
|
184
184
|
TUI_IS_IOS,
|
185
185
|
TUI_AUTOFOCUS_OPTIONS,
|
186
186
|
],
|
187
|
-
// eslint-disable-next-line max-params
|
187
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
188
188
|
useFactory: (el, animationFrame$, renderer, zone, win, isIos, options) => isIos
|
189
189
|
? new TuiIosAutofocusHandler(el, renderer, zone, win, options)
|
190
190
|
: new TuiDefaultAutofocusHandler(el, animationFrame$, zone, options),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-auto-focus.mjs","sources":["../../../projects/cdk/directives/auto-focus/handlers/abstract.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/default.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/ios.handler.ts","../../../projects/cdk/directives/auto-focus/autofocus.options.ts","../../../projects/cdk/directives/auto-focus/autofocus.directive.ts","../../../projects/cdk/directives/auto-focus/handlers/sync.handler.ts","../../../projects/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import type {ElementRef} from '@angular/core';\n\nimport type {TuiAutofocusHandler, TuiAutofocusOptions} from '../autofocus.options';\n\nexport abstract class AbstractTuiAutofocusHandler implements TuiAutofocusHandler {\n constructor(\n protected readonly el: ElementRef<HTMLElement>,\n protected readonly options: TuiAutofocusOptions,\n ) {}\n\n public abstract setFocus(): void;\n\n protected get element(): HTMLElement {\n // TODO: Remove when legacy controls are dropped\n const el = this.el.nativeElement.tagName.includes('-')\n ? this.el.nativeElement.querySelector<HTMLElement>(this.options.query)\n : this.el.nativeElement;\n\n return el || this.el.nativeElement;\n }\n\n protected get isTextFieldElement(): boolean {\n return this.element.matches(this.options.query);\n }\n}\n","import type {ElementRef, NgZone} from '@angular/core';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport type {Observable} from 'rxjs';\nimport {map, race, skipWhile, take, throttleTime, timer} from 'rxjs';\n\nimport type {TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = '.ng-animating';\n\nexport class TuiDefaultAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n el: ElementRef<HTMLElement>,\n private readonly animationFrame$: Observable<number>,\n private readonly zone: NgZone,\n options: TuiAutofocusOptions,\n ) {\n super(el, options);\n }\n\n public setFocus(): void {\n if (this.isTextFieldElement) {\n race(\n timer(this.options.delay || TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(100, tuiZonefreeScheduler(this.zone)),\n map(() => this.element.closest(NG_ANIMATION_SELECTOR)),\n skipWhile(Boolean),\n take(1),\n ),\n ).subscribe(() =>\n this.element.focus({preventScroll: this.options.preventScroll}),\n );\n } else {\n this.element.focus({preventScroll: true});\n }\n }\n}\n","import type {ElementRef, NgZone, Renderer2} from '@angular/core';\nimport {tuiIsPresent, tuiPx} from '@taiga-ui/cdk/utils';\n\nimport type {TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TEXTFIELD_ATTRS = [\n 'type',\n 'inputMode',\n 'autocomplete',\n 'accept',\n 'min',\n 'max',\n 'step',\n 'pattern',\n 'size',\n 'maxlength',\n] as const;\n\nexport class TuiIosAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n el: ElementRef<HTMLElement>,\n private readonly renderer: Renderer2,\n private readonly zone: NgZone,\n private readonly win: Window,\n options: TuiAutofocusOptions,\n ) {\n super(el, options);\n }\n\n public setFocus(): void {\n if (this.isTextFieldElement) {\n this.zone.runOutsideAngular(() => this.iosWebkitAutofocus());\n } else {\n this.element.focus({preventScroll: true});\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.win.setTimeout(() => {\n clearTimeout(elementFocusTimeoutId);\n\n fakeInput.removeEventListener('blur', blurHandler);\n fakeInput.removeEventListener('focus', focusHandler);\n\n elementFocusTimeoutId = this.win.setTimeout(() => {\n this.element.focus({preventScroll: this.options.preventScroll});\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.win.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 * required note:\n * [fakeInput.readOnly = true] ~\n * don't use {readOnly: true} value, it's doesn't work for emulate autofill\n *\n * [fakeInput.style.opacity = 0] ~\n * don't use {opacity: 0}, sometimes it's doesn't work for emulate real input\n *\n * [fakeInput.style.fontSize = 16px] ~\n * disable possible auto zoom\n *\n * [fakeInput.style.top/left] ~\n * emulate position cursor 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 this.patchFakeInputFromFocusableElement(fakeInput);\n\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.border = 'none';\n fakeInput.style.outline = 'none';\n fakeInput.style.color = 'transparent';\n fakeInput.style.background = 'transparent';\n fakeInput.style.cursor = 'none';\n fakeInput.style.fontSize = tuiPx(16);\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.win\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 * inherit basic attributes values from real input\n * for help iOS detect what do you want see on keyboard,\n * for example [inputMode=numeric, autocomplete=cc-number]\n */\n private patchFakeInputFromFocusableElement(fakeInput: HTMLInputElement): void {\n TEXTFIELD_ATTRS.forEach((attr) => {\n const value = this.element.getAttribute(attr);\n\n if (tuiIsPresent(value)) {\n fakeInput.setAttribute(attr, value);\n }\n });\n }\n}\n","import {ElementRef, NgZone, Renderer2} from '@angular/core';\nimport {WA_ANIMATION_FRAME, WA_WINDOW} from '@ng-web-apis/common';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {tuiCreateOptions, tuiCreateToken} from '@taiga-ui/cdk/utils';\nimport type {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 interface TuiAutofocusOptions {\n readonly delay: number;\n readonly query: string;\n readonly preventScroll: boolean;\n}\n\nexport const [TUI_AUTOFOCUS_OPTIONS, tuiAutoFocusOptionsProvider] =\n tuiCreateOptions<TuiAutofocusOptions>({\n delay: NaN, // NaN = no delay/sync\n query: 'input, textarea, select, [contenteditable]',\n preventScroll: false,\n });\n\nexport const TUI_AUTOFOCUS_HANDLER = tuiCreateToken<TuiAutofocusHandler>();\n\nexport const TUI_AUTOFOCUS_PROVIDERS = [\n {\n provide: TUI_AUTOFOCUS_HANDLER,\n deps: [\n ElementRef,\n WA_ANIMATION_FRAME,\n Renderer2,\n NgZone,\n WA_WINDOW,\n TUI_IS_IOS,\n TUI_AUTOFOCUS_OPTIONS,\n ],\n // eslint-disable-next-line max-params\n useFactory: (\n el: ElementRef<HTMLElement>,\n animationFrame$: Observable<number>,\n renderer: Renderer2,\n zone: NgZone,\n win: Window,\n isIos: boolean,\n options: TuiAutofocusOptions,\n ) =>\n isIos\n ? new TuiIosAutofocusHandler(el, renderer, zone, win, options)\n : new TuiDefaultAutofocusHandler(el, animationFrame$, zone, options),\n },\n];\n","import type {BooleanInput} from '@angular/cdk/coercion';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport type {AfterViewInit} from '@angular/core';\nimport {DestroyRef, Directive, inject, Input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {timer} from 'rxjs';\n\nimport {\n TUI_AUTOFOCUS_HANDLER,\n TUI_AUTOFOCUS_OPTIONS,\n TUI_AUTOFOCUS_PROVIDERS,\n} from './autofocus.options';\n\n@Directive({\n standalone: true,\n selector: '[tuiAutoFocus]',\n providers: TUI_AUTOFOCUS_PROVIDERS,\n})\nexport class TuiAutoFocus implements AfterViewInit {\n private readonly handler = inject(TUI_AUTOFOCUS_HANDLER);\n private readonly options = inject(TUI_AUTOFOCUS_OPTIONS);\n private readonly destroyRef = inject(DestroyRef);\n\n @Input({\n alias: 'tuiAutoFocus',\n transform: coerceBooleanProperty,\n })\n public autoFocus: BooleanInput;\n\n public ngAfterViewInit(): void {\n if (this.autoFocus) {\n this.focus();\n }\n }\n\n public focus(): void {\n if (Number.isNaN(this.options.delay)) {\n void Promise.resolve().then(() => this.handler.setFocus());\n } else {\n timer(this.options.delay)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handler.setFocus());\n }\n }\n}\n","import {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nexport class TuiSynchronousAutofocusHandler extends AbstractTuiAutofocusHandler {\n public setFocus(): void {\n this.element.focus({preventScroll: true});\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;MAIsB,2BAA2B,CAAA;IAC7C,WACuB,CAAA,EAA2B,EAC3B,OAA4B,EAAA;QAD5B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAyB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAqB;KAC/C;AAIJ,IAAA,IAAc,OAAO,GAAA;;AAEjB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClD,cAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAc,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACtE,cAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AAE5B,QAAA,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;KACtC;AAED,IAAA,IAAc,kBAAkB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACnD;AACJ;;AChBD,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAExC,MAAO,0BAA2B,SAAQ,2BAA2B,CAAA;AACvE,IAAA,WAAA,CACI,EAA2B,EACV,eAAmC,EACnC,IAAY,EAC7B,OAA4B,EAAA;AAE5B,QAAA,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAJF,IAAe,CAAA,eAAA,GAAf,eAAe,CAAoB;QACnC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KAIhC;IAEM,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CACA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,EACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,YAAY,CAAC,GAAG,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAClD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,EACtD,SAAS,CAAC,OAAO,CAAC,EAClB,IAAI,CAAC,CAAC,CAAC,CACV,CACJ,CAAC,SAAS,CAAC,MACR,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAC,CAAC,CAClE,CAAC;AACL,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7C,SAAA;KACJ;AACJ;;AChCD,MAAM,eAAe,GAAG;IACpB,MAAM;IACN,WAAW;IACX,cAAc;IACd,QAAQ;IACR,KAAK;IACL,KAAK;IACL,MAAM;IACN,SAAS;IACT,MAAM;IACN,WAAW;CACL,CAAC;AAEL,MAAO,sBAAuB,SAAQ,2BAA2B,CAAA;IACnE,WACI,CAAA,EAA2B,EACV,QAAmB,EACnB,IAAY,EACZ,GAAW,EAC5B,OAA4B,EAAA;AAE5B,QAAA,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QALF,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;KAI/B;IAEM,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAChE,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7C,SAAA;KACJ;IAEO,kBAAkB,GAAA;AACtB,QAAA,MAAM,SAAS,GAAqB,IAAI,CAAC,aAAa,EAAE,CAAC;AACzD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACnD,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAE9B,QAAA,MAAM,WAAW,GAAG,MAAY,SAAS,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,MAAW;YAC5B,YAAY,CAAC,kBAAkB,CAAC,CAAC;YAEjC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAK;gBAC1C,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAEpC,gBAAA,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACnD,gBAAA,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAErD,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAK;AAC7C,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAC,CAAC,CAAC;oBAChE,SAAS,CAAC,MAAM,EAAE,CAAC;iBACtB,EAAE,QAAQ,CAAC,CAAC;AACjB,aAAC,CAAC,CAAC;AACP,SAAC,CAAC;AAEF,QAAA,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;AAC9D,QAAA,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAElD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;AACtD,SAAA;QAED,SAAS,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;KAC1C;AAED;;;;;;;;;;;;;;;;;AAiBG;IACK,aAAa,GAAA;QACjB,MAAM,SAAS,GAAqB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,IAAI,GAAY,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAE3D,QAAA,IAAI,CAAC,kCAAkC,CAAC,SAAS,CAAC,CAAC;QAEnD,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,QAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;AACnC,QAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;AACrC,QAAA,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;AAC3C,QAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,QAAA,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACjC,QAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC;AACtC,QAAA,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;AAC3C,QAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAChC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACrC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExC,QAAA,OAAO,SAAS,CAAC;KACpB;IAEO,0BAA0B,GAAA;AAC9B,QAAA,QACI,UAAU,CACN,IAAI,CAAC,GAAG;AACH,aAAA,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,aAAA,gBAAgB,CAAC,gBAAgB,CAAC,CAC1C,IAAI,CAAC,EACR;KACL;AAED;;;;;;AAMG;IACK,YAAY,GAAA;QAChB,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;KAC/C;AAED;;;;;AAKG;AACK,IAAA,kCAAkC,CAAC,SAA2B,EAAA;AAClE,QAAA,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAE9C,YAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AACrB,gBAAA,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AACJ;;MCnIY,CAAC,qBAAqB,EAAE,2BAA2B,CAAC,GAC7D,gBAAgB,CAAsB;AAClC,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,KAAK,EAAE,4CAA4C;AACnD,IAAA,aAAa,EAAE,KAAK;AACvB,CAAA,EAAE;AAEM,MAAA,qBAAqB,GAAG,cAAc,GAAwB;AAE9D,MAAA,uBAAuB,GAAG;AACnC,IAAA;AACI,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,IAAI,EAAE;YACF,UAAU;YACV,kBAAkB;YAClB,SAAS;YACT,MAAM;YACN,SAAS;YACT,UAAU;YACV,qBAAqB;AACxB,SAAA;;AAED,QAAA,UAAU,EAAE,CACR,EAA2B,EAC3B,eAAmC,EACnC,QAAmB,EACnB,IAAY,EACZ,GAAW,EACX,KAAc,EACd,OAA4B,KAE5B,KAAK;AACD,cAAE,IAAI,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;cAC5D,IAAI,0BAA0B,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC;AAC/E,KAAA;;;ACxCL,MAKa,YAAY,CAAA;AALzB,IAAA,WAAA,GAAA;AAMqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAuBpD,KAAA;IAfU,eAAe,GAAA;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,SAAA;KACJ;IAEM,KAAK,GAAA;QACR,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClC,YAAA,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9D,SAAA;AAAM,aAAA;AACH,YAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACpB,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACzC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,SAAA;KACJ;+GAzBQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,cAAA,EAAA,WAAA,EAON,qBAAqB,CAAA,EAAA,EAAA,SAAA,EATzB,uBAAuB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEzB,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE,uBAAuB;AACrC,iBAAA,CAAA;8BAUU,SAAS,EAAA,CAAA;sBAJf,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;AACH,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,SAAS,EAAE,qBAAqB;AACnC,qBAAA,CAAA;;;ACxBC,MAAO,8BAA+B,SAAQ,2BAA2B,CAAA;IACpE,QAAQ,GAAA;QACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;KAC7C;AACJ;;ACND;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-auto-focus.mjs","sources":["../../../projects/cdk/directives/auto-focus/handlers/abstract.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/default.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/ios.handler.ts","../../../projects/cdk/directives/auto-focus/autofocus.options.ts","../../../projects/cdk/directives/auto-focus/autofocus.directive.ts","../../../projects/cdk/directives/auto-focus/handlers/sync.handler.ts","../../../projects/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import type {ElementRef} from '@angular/core';\n\nimport type {TuiAutofocusHandler, TuiAutofocusOptions} from '../autofocus.options';\n\nexport abstract class AbstractTuiAutofocusHandler implements TuiAutofocusHandler {\n constructor(\n protected readonly el: ElementRef<HTMLElement>,\n protected readonly options: TuiAutofocusOptions,\n ) {}\n\n public abstract setFocus(): void;\n\n protected get element(): HTMLElement {\n // TODO: Remove when legacy controls are dropped\n const el = this.el.nativeElement.tagName.includes('-')\n ? this.el.nativeElement.querySelector<HTMLElement>(this.options.query)\n : this.el.nativeElement;\n\n return el || this.el.nativeElement;\n }\n\n protected get isTextFieldElement(): boolean {\n return this.element.matches(this.options.query);\n }\n}\n","import type {ElementRef, NgZone} from '@angular/core';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport type {Observable} from 'rxjs';\nimport {map, race, skipWhile, take, throttleTime, timer} from 'rxjs';\n\nimport type {TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = '.ng-animating';\n\nexport class TuiDefaultAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n el: ElementRef<HTMLElement>,\n private readonly animationFrame$: Observable<number>,\n private readonly zone: NgZone,\n options: TuiAutofocusOptions,\n ) {\n super(el, options);\n }\n\n public setFocus(): void {\n if (this.isTextFieldElement) {\n race(\n timer(this.options.delay || TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(100, tuiZonefreeScheduler(this.zone)),\n map(() => this.element.closest(NG_ANIMATION_SELECTOR)),\n skipWhile(Boolean),\n take(1),\n ),\n ).subscribe(() =>\n this.element.focus({preventScroll: this.options.preventScroll}),\n );\n } else {\n this.element.focus({preventScroll: true});\n }\n }\n}\n","import type {ElementRef, NgZone, Renderer2} from '@angular/core';\nimport {tuiIsPresent, tuiPx} from '@taiga-ui/cdk/utils';\n\nimport type {TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TEXTFIELD_ATTRS = [\n 'type',\n 'inputMode',\n 'autocomplete',\n 'accept',\n 'min',\n 'max',\n 'step',\n 'pattern',\n 'size',\n 'maxlength',\n] as const;\n\nexport class TuiIosAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n el: ElementRef<HTMLElement>,\n private readonly renderer: Renderer2,\n private readonly zone: NgZone,\n private readonly win: Window,\n options: TuiAutofocusOptions,\n ) {\n super(el, options);\n }\n\n public setFocus(): void {\n if (this.isTextFieldElement) {\n this.zone.runOutsideAngular(() => this.iosWebkitAutofocus());\n } else {\n this.element.focus({preventScroll: true});\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.win.setTimeout(() => {\n clearTimeout(elementFocusTimeoutId);\n\n fakeInput.removeEventListener('blur', blurHandler);\n fakeInput.removeEventListener('focus', focusHandler);\n\n elementFocusTimeoutId = this.win.setTimeout(() => {\n this.element.focus({preventScroll: this.options.preventScroll});\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.win.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 * required note:\n * [fakeInput.readOnly = true] ~\n * don't use {readOnly: true} value, it's doesn't work for emulate autofill\n *\n * [fakeInput.style.opacity = 0] ~\n * don't use {opacity: 0}, sometimes it's doesn't work for emulate real input\n *\n * [fakeInput.style.fontSize = 16px] ~\n * disable possible auto zoom\n *\n * [fakeInput.style.top/left] ~\n * emulate position cursor 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 this.patchFakeInputFromFocusableElement(fakeInput);\n\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.border = 'none';\n fakeInput.style.outline = 'none';\n fakeInput.style.color = 'transparent';\n fakeInput.style.background = 'transparent';\n fakeInput.style.cursor = 'none';\n fakeInput.style.fontSize = tuiPx(16);\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.win\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 * inherit basic attributes values from real input\n * for help iOS detect what do you want see on keyboard,\n * for example [inputMode=numeric, autocomplete=cc-number]\n */\n private patchFakeInputFromFocusableElement(fakeInput: HTMLInputElement): void {\n TEXTFIELD_ATTRS.forEach((attr) => {\n const value = this.element.getAttribute(attr);\n\n if (tuiIsPresent(value)) {\n fakeInput.setAttribute(attr, value);\n }\n });\n }\n}\n","import {ElementRef, NgZone, Renderer2} from '@angular/core';\nimport {WA_ANIMATION_FRAME, WA_WINDOW} from '@ng-web-apis/common';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {tuiCreateOptions, tuiCreateToken} from '@taiga-ui/cdk/utils';\nimport type {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 interface TuiAutofocusOptions {\n readonly delay: number;\n readonly query: string;\n readonly preventScroll: boolean;\n}\n\nexport const [TUI_AUTOFOCUS_OPTIONS, tuiAutoFocusOptionsProvider] =\n tuiCreateOptions<TuiAutofocusOptions>({\n delay: NaN, // NaN = no delay/sync\n query: 'input, textarea, select, [contenteditable]',\n preventScroll: false,\n });\n\nexport const TUI_AUTOFOCUS_HANDLER = tuiCreateToken<TuiAutofocusHandler>();\n\nexport const TUI_AUTOFOCUS_PROVIDERS = [\n {\n provide: TUI_AUTOFOCUS_HANDLER,\n deps: [\n ElementRef,\n WA_ANIMATION_FRAME,\n Renderer2,\n NgZone,\n WA_WINDOW,\n TUI_IS_IOS,\n TUI_AUTOFOCUS_OPTIONS,\n ],\n\n // eslint-disable-next-line @typescript-eslint/max-params\n useFactory: (\n el: ElementRef<HTMLElement>,\n animationFrame$: Observable<number>,\n renderer: Renderer2,\n zone: NgZone,\n win: Window,\n isIos: boolean,\n options: TuiAutofocusOptions,\n ) =>\n isIos\n ? new TuiIosAutofocusHandler(el, renderer, zone, win, options)\n : new TuiDefaultAutofocusHandler(el, animationFrame$, zone, options),\n },\n];\n","import type {BooleanInput} from '@angular/cdk/coercion';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport type {AfterViewInit} from '@angular/core';\nimport {DestroyRef, Directive, inject, Input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {timer} from 'rxjs';\n\nimport {\n TUI_AUTOFOCUS_HANDLER,\n TUI_AUTOFOCUS_OPTIONS,\n TUI_AUTOFOCUS_PROVIDERS,\n} from './autofocus.options';\n\n@Directive({\n standalone: true,\n selector: '[tuiAutoFocus]',\n providers: TUI_AUTOFOCUS_PROVIDERS,\n})\nexport class TuiAutoFocus implements AfterViewInit {\n private readonly handler = inject(TUI_AUTOFOCUS_HANDLER);\n private readonly options = inject(TUI_AUTOFOCUS_OPTIONS);\n private readonly destroyRef = inject(DestroyRef);\n\n @Input({\n alias: 'tuiAutoFocus',\n transform: coerceBooleanProperty,\n })\n public autoFocus: BooleanInput;\n\n public ngAfterViewInit(): void {\n if (this.autoFocus) {\n this.focus();\n }\n }\n\n public focus(): void {\n if (Number.isNaN(this.options.delay)) {\n void Promise.resolve().then(() => this.handler.setFocus());\n } else {\n timer(this.options.delay)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handler.setFocus());\n }\n }\n}\n","import {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nexport class TuiSynchronousAutofocusHandler extends AbstractTuiAutofocusHandler {\n public setFocus(): void {\n this.element.focus({preventScroll: true});\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -3,18 +3,13 @@ import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, DestroyRef, PLATFORM_ID, Directive } from '@angular/core';
|
4
4
|
import { WA_WINDOW } from '@ng-web-apis/common';
|
5
5
|
import { EMPTY_FUNCTION } from '@taiga-ui/cdk/constants';
|
6
|
-
import {
|
7
|
-
import { tuiCreateTokenFromFactory, tuiFontSizeWatcher } from '@taiga-ui/cdk/utils/miscellaneous';
|
6
|
+
import { tuiCreateToken, tuiFontSizeWatcher } from '@taiga-ui/cdk/utils/miscellaneous';
|
8
7
|
|
9
|
-
|
10
|
-
const TUI_FONT_SIZE_HANDLER = tuiCreateTokenFromFactory(() => (size) => `${Math.max(size, 16)}`);
|
8
|
+
const TUI_FONT_SIZE_HANDLER = tuiCreateToken(EMPTY_FUNCTION);
|
11
9
|
class TuiFontSize {
|
12
10
|
constructor() {
|
13
|
-
this.el = tuiInjectElement();
|
14
|
-
this.handler = inject(TUI_FONT_SIZE_HANDLER);
|
15
|
-
this.callback = (size) => this.el.style.setProperty('--tui-font-size', this.handler(size));
|
16
11
|
this.nothing = inject(DestroyRef).onDestroy(isPlatformBrowser(inject(PLATFORM_ID)) && typeof ResizeObserver !== 'undefined'
|
17
|
-
? tuiFontSizeWatcher(
|
12
|
+
? tuiFontSizeWatcher(inject(TUI_FONT_SIZE_HANDLER), inject(WA_WINDOW))
|
18
13
|
: EMPTY_FUNCTION);
|
19
14
|
}
|
20
15
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFontSize, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-font-size.mjs","sources":["../../../projects/cdk/directives/font-size/font-size.directive.ts","../../../projects/cdk/directives/font-size/taiga-ui-cdk-directives-font-size.ts"],"sourcesContent":["
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-font-size.mjs","sources":["../../../projects/cdk/directives/font-size/font-size.directive.ts","../../../projects/cdk/directives/font-size/taiga-ui-cdk-directives-font-size.ts"],"sourcesContent":["import {isPlatformBrowser} from '@angular/common';\nimport {DestroyRef, Directive, inject, PLATFORM_ID} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {tuiCreateToken, tuiFontSizeWatcher} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_FONT_SIZE_HANDLER =\n tuiCreateToken<(size: number) => void>(EMPTY_FUNCTION);\n\n@Directive({\n standalone: true,\n})\nexport class TuiFontSize {\n protected readonly nothing = inject(DestroyRef).onDestroy(\n isPlatformBrowser(inject(PLATFORM_ID)) && typeof ResizeObserver !== 'undefined'\n ? tuiFontSizeWatcher(inject(TUI_FONT_SIZE_HANDLER), inject(WA_WINDOW))\n : EMPTY_FUNCTION,\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAMa,qBAAqB,GAC9B,cAAc,CAAyB,cAAc,EAAE;AAE3D,MAGa,WAAW,CAAA;AAHxB,IAAA,WAAA,GAAA;AAIuB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACrD,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,OAAO,cAAc,KAAK,WAAW;AAC3E,cAAE,kBAAkB,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;cACpE,cAAc,CACvB,CAAC;AACL,KAAA;+GANY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACXD;;AAEG;;;;"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@taiga-ui/cdk",
|
3
|
-
"version": "4.24.0-canary.
|
3
|
+
"version": "4.24.0-canary.5da8fec",
|
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",
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.replaceTag = void 0;
|
4
4
|
const START_TAG_OFFSET = 1;
|
5
5
|
const END_TAG_OFFSET = 2;
|
6
|
-
// eslint-disable-next-line max-params
|
6
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
7
7
|
function replaceTag(recorder, sourceCodeLocation, from, to, templateOffset = 0, addAttributes = []) {
|
8
8
|
var _a, _b, _c;
|
9
9
|
const startTagOffset = (_b = (_a = sourceCodeLocation === null || sourceCodeLocation === void 0 ? void 0 : sourceCodeLocation.startTag) === null || _a === void 0 ? void 0 : _a.startOffset) !== null && _b !== void 0 ? _b : 0;
|
@@ -10,9 +10,9 @@ const get_execution_time_1 = require("../../utils/get-execution-time");
|
|
10
10
|
const steps_1 = require("../steps");
|
11
11
|
const replace_services_1 = require("../steps/replace-services");
|
12
12
|
const get_file_system_1 = require("../utils/get-file-system");
|
13
|
-
const enums_1 = require("../v4/steps/constants/enums");
|
14
13
|
const steps_2 = require("./steps");
|
15
14
|
const constants_1 = require("./steps/constants");
|
15
|
+
const enums_1 = require("./steps/constants/enums");
|
16
16
|
const functions_1 = require("./steps/constants/functions");
|
17
17
|
const modules_to_replace_1 = require("./steps/constants/modules-to-replace");
|
18
18
|
const types_1 = require("./steps/constants/types");
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { UpdateRecorder } from '@angular-devkit/schematics';
|
2
2
|
import type { DevkitFileSystem } from 'ng-morph';
|
3
|
-
import type { TemplateResource } from '
|
3
|
+
import type { TemplateResource } from '../../../interfaces';
|
4
4
|
export declare function migrateMoney({ resource, recorder, fileSystem, }: {
|
5
5
|
fileSystem: DevkitFileSystem;
|
6
6
|
recorder: UpdateRecorder;
|
@@ -1,12 +1,12 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.migrateMoney = void 0;
|
4
|
-
const remove_attrs_1 = require("../../../../ng-update/v4/steps/utils/remove-attrs");
|
5
4
|
const add_import_to_closest_module_1 = require("../../../../utils/add-import-to-closest-module");
|
6
5
|
const elements_1 = require("../../../../utils/templates/elements");
|
7
6
|
const inputs_1 = require("../../../../utils/templates/inputs");
|
8
7
|
const template_resource_1 = require("../../../../utils/templates/template-resource");
|
9
8
|
const clean_object_1 = require("../utils/clean-object");
|
9
|
+
const remove_attrs_1 = require("../utils/remove-attrs");
|
10
10
|
function migrateMoney({ resource, recorder, fileSystem, }) {
|
11
11
|
const template = (0, template_resource_1.getTemplateFromTemplateResource)(resource, fileSystem);
|
12
12
|
const templateOffset = (0, template_resource_1.getTemplateOffset)(resource);
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { UpdateRecorder } from '@angular-devkit/schematics';
|
2
2
|
import type { DevkitFileSystem } from 'ng-morph';
|
3
|
-
import type { TemplateResource } from '
|
3
|
+
import type { TemplateResource } from '../../../interfaces';
|
4
4
|
export declare function migrateNumberPrecision({ resource, recorder, fileSystem, }: {
|
5
5
|
fileSystem: DevkitFileSystem;
|
6
6
|
recorder: UpdateRecorder;
|
@@ -1,12 +1,12 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.migrateNumberPrecision = void 0;
|
4
|
-
const remove_attrs_1 = require("../../../../ng-update/v4/steps/utils/remove-attrs");
|
5
4
|
const add_import_to_closest_module_1 = require("../../../../utils/add-import-to-closest-module");
|
6
5
|
const elements_1 = require("../../../../utils/templates/elements");
|
7
6
|
const inputs_1 = require("../../../../utils/templates/inputs");
|
8
7
|
const template_resource_1 = require("../../../../utils/templates/template-resource");
|
9
8
|
const normalize_attr_value_1 = require("../utils/normalize-attr-value");
|
9
|
+
const remove_attrs_1 = require("../utils/remove-attrs");
|
10
10
|
function migrateNumberPrecision({ resource, recorder, fileSystem, }) {
|
11
11
|
const template = (0, template_resource_1.getTemplateFromTemplateResource)(resource, fileSystem);
|
12
12
|
const templateOffset = (0, template_resource_1.getTemplateOffset)(resource);
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { UpdateRecorder } from '@angular-devkit/schematics';
|
2
2
|
import type { DevkitFileSystem } from 'ng-morph';
|
3
|
-
import type { TemplateResource } from '
|
3
|
+
import type { TemplateResource } from '../../../interfaces';
|
4
4
|
export declare function migratePreventDefault({ resource, recorder, fileSystem, }: {
|
5
5
|
fileSystem: DevkitFileSystem;
|
6
6
|
recorder: UpdateRecorder;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { UpdateRecorder } from '@angular-devkit/schematics';
|
2
2
|
import type { DevkitFileSystem } from 'ng-morph';
|
3
|
-
import type { TemplateResource } from '
|
3
|
+
import type { TemplateResource } from '../../../interfaces';
|
4
4
|
export declare function migrateProgressSegmented({ resource, recorder, fileSystem, }: {
|
5
5
|
fileSystem: DevkitFileSystem;
|
6
6
|
recorder: UpdateRecorder;
|
@@ -31,7 +31,7 @@ function isInvalidAngularJson(tree) {
|
|
31
31
|
});
|
32
32
|
}
|
33
33
|
exports.isInvalidAngularJson = isInvalidAngularJson;
|
34
|
-
// eslint-disable-next-line max-params
|
34
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
35
35
|
function addStylesToAngularJson(options, context, taigaStyles, filter, stylesToReplace, tree) {
|
36
36
|
const MANUAL_MIGRATION_TIPS = `Add styles ${taigaStyles.join(',')} to angular.json manually.`;
|
37
37
|
return (0, workspace_1.updateWorkspace)((workspace) => {
|