@taiga-ui/experimental 4.18.0-canary.d26f32b → 4.19.0-canary.2a86fb0
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/components/hint/hint.component.d.ts +34 -0
- package/components/hint/index.d.ts +1 -0
- package/components/index.d.ts +2 -0
- package/components/input-phone-international/index.d.ts +1 -0
- package/components/input-phone-international/input-phone-international.component.d.ts +46 -0
- package/esm2022/components/hint/hint.component.mjs +115 -0
- package/esm2022/components/hint/index.mjs +2 -0
- package/esm2022/components/hint/taiga-ui-experimental-components-hint.mjs +5 -0
- package/esm2022/components/index.mjs +3 -0
- package/esm2022/components/input-phone-international/index.mjs +2 -0
- package/esm2022/components/input-phone-international/input-phone-international.component.mjs +181 -0
- package/esm2022/components/input-phone-international/taiga-ui-experimental-components-input-phone-international.mjs +5 -0
- package/esm2022/components/taiga-ui-experimental-components.mjs +5 -0
- package/esm2022/index.mjs +2 -2
- package/fesm2022/taiga-ui-experimental-components-hint.mjs +121 -0
- package/fesm2022/taiga-ui-experimental-components-hint.mjs.map +1 -0
- package/fesm2022/taiga-ui-experimental-components-input-phone-international.mjs +187 -0
- package/fesm2022/taiga-ui-experimental-components-input-phone-international.mjs.map +1 -0
- package/fesm2022/taiga-ui-experimental-components.mjs +7 -0
- package/fesm2022/taiga-ui-experimental-components.mjs.map +1 -0
- package/fesm2022/taiga-ui-experimental.mjs +1 -3
- package/fesm2022/taiga-ui-experimental.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +23 -5
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Provider } from '@angular/core';
|
|
2
|
+
import { TuiRectAccessor } from '@taiga-ui/core/classes';
|
|
3
|
+
import type { TuiHintDirective } from '@taiga-ui/core/directives/hint';
|
|
4
|
+
import { TuiHintPointer } from '@taiga-ui/core/directives/hint';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@taiga-ui/core/directives/appearance";
|
|
7
|
+
export declare class TuiHintComponent<C = any> {
|
|
8
|
+
private readonly el;
|
|
9
|
+
private readonly hover;
|
|
10
|
+
private readonly vvs;
|
|
11
|
+
private readonly viewport;
|
|
12
|
+
protected readonly dummy: {
|
|
13
|
+
value: string;
|
|
14
|
+
params: {
|
|
15
|
+
end: number;
|
|
16
|
+
start: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
protected readonly options: import("@angular/animations").AnimationOptions;
|
|
20
|
+
protected readonly pointer: TuiHintPointer | null;
|
|
21
|
+
protected readonly accessor: TuiRectAccessor;
|
|
22
|
+
protected readonly hint: TuiHintDirective<C>;
|
|
23
|
+
protected readonly isMobile: boolean;
|
|
24
|
+
protected readonly content: import("@angular/core").WritableSignal<import("@taiga-ui/polymorpheus").PolymorpheusContent<C>>;
|
|
25
|
+
protected readonly theme: string | null | undefined;
|
|
26
|
+
protected readonly appearance: import("@angular/core").WritableSignal<string>;
|
|
27
|
+
constructor();
|
|
28
|
+
protected onClick(target: HTMLElement): void;
|
|
29
|
+
private apply;
|
|
30
|
+
private update;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TuiHintComponent<any>, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TuiHintComponent<any>, "tui-hint", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.TuiAppearance; inputs: {}; outputs: {}; }]>;
|
|
33
|
+
}
|
|
34
|
+
export declare function tuiProvideExperimentalHint(): Provider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './hint.component';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './input-phone-international.component';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { QueryList } from '@angular/core';
|
|
2
|
+
import { ElementRef, TemplateRef } from '@angular/core';
|
|
3
|
+
import type { MaskitoOptions } from '@maskito/core';
|
|
4
|
+
import { TuiControl } from '@taiga-ui/cdk/classes';
|
|
5
|
+
import type { TuiCountryIsoCode } from '@taiga-ui/i18n/types';
|
|
6
|
+
import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
|
|
7
|
+
import type { MetadataJson } from 'libphonenumber-js/core';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@maskito/angular";
|
|
10
|
+
import * as i2 from "@taiga-ui/core/components/textfield";
|
|
11
|
+
export declare class TuiInputPhoneInternational extends TuiControl<string> {
|
|
12
|
+
protected readonly list: QueryList<ElementRef<HTMLButtonElement>>;
|
|
13
|
+
protected readonly el: HTMLInputElement;
|
|
14
|
+
protected readonly ios: boolean;
|
|
15
|
+
protected readonly icons: import("@taiga-ui/core/tokens").TuiCommonIcons;
|
|
16
|
+
protected readonly options: import("@taiga-ui/kit/components/input-phone-international").TuiInputPhoneInternationalOptions;
|
|
17
|
+
protected readonly countries: import("@angular/core").WritableSignal<readonly TuiCountryIsoCode[]>;
|
|
18
|
+
protected readonly code: import("@angular/core").WritableSignal<TuiCountryIsoCode>;
|
|
19
|
+
protected readonly label: import("@angular/core").Signal<string | undefined>;
|
|
20
|
+
protected readonly metadata: import("@angular/core").Signal<MetadataJson | undefined>;
|
|
21
|
+
protected readonly names: import("@angular/core").Signal<Record<TuiCountryIsoCode, string> | undefined>;
|
|
22
|
+
protected readonly open: import("@angular/core").WritableSignal<boolean>;
|
|
23
|
+
protected readonly dropdown: import("@angular/core").WritableSignal<import("@taiga-ui/polymorpheus").PolymorpheusComponent<unknown> | import("@taiga-ui/polymorpheus").PolymorpheusPrimitive | import("@taiga-ui/polymorpheus").PolymorpheusHandler<any> | import("@taiga-ui/polymorpheus").PolymorpheusTemplate<"" | Partial<any>> | TemplateRef<Partial<any>>>;
|
|
24
|
+
protected readonly search: import("@angular/core").WritableSignal<string>;
|
|
25
|
+
protected readonly size: import("@angular/core").WritableSignal<"m" | "l" | "s">;
|
|
26
|
+
protected readonly mask: import("@angular/core").Signal<MaskitoOptions | null>;
|
|
27
|
+
protected readonly masked: import("@angular/core").Signal<string>;
|
|
28
|
+
protected readonly filtered: import("@angular/core").Signal<{
|
|
29
|
+
iso: TuiCountryIsoCode;
|
|
30
|
+
name: string;
|
|
31
|
+
code: string;
|
|
32
|
+
}[]>;
|
|
33
|
+
protected readonly enabled: import("@angular/core").Signal<boolean>;
|
|
34
|
+
protected readonly $: import("rxjs").Subscription;
|
|
35
|
+
countrySearch: boolean;
|
|
36
|
+
readonly countryIsoCodeChange: import("rxjs").Observable<TuiCountryIsoCode>;
|
|
37
|
+
set countriesValue(value: readonly TuiCountryIsoCode[]);
|
|
38
|
+
set isoCode(code: TuiCountryIsoCode);
|
|
39
|
+
protected set template(template: PolymorpheusContent);
|
|
40
|
+
protected get unmasked(): string;
|
|
41
|
+
protected onPaste(event: Event): void;
|
|
42
|
+
protected onItemClick(code: TuiCountryIsoCode): void;
|
|
43
|
+
private computeMask;
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputPhoneInternational, never>;
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputPhoneInternational, "input[tuiInputPhoneInternational]", never, { "countrySearch": { "alias": "countrySearch"; "required": false; }; "countriesValue": { "alias": "countries"; "required": false; }; "isoCode": { "alias": "countryIsoCode"; "required": false; }; }, { "countryIsoCodeChange": "countryIsoCodeChange"; }, never, never, true, [{ directive: typeof i1.MaskitoDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithTextfield; inputs: {}; outputs: {}; }]>;
|
|
46
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
|
|
5
|
+
import { TuiHoveredService } from '@taiga-ui/cdk/directives/hovered';
|
|
6
|
+
import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
|
|
7
|
+
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
8
|
+
import { tuiClamp } from '@taiga-ui/cdk/utils/math';
|
|
9
|
+
import { tuiPure, tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
10
|
+
import { tuiFadeIn, tuiScaleIn } from '@taiga-ui/core/animations';
|
|
11
|
+
import { TuiRectAccessor } from '@taiga-ui/core/classes';
|
|
12
|
+
import { tuiButtonOptionsProvider } from '@taiga-ui/core/components/button';
|
|
13
|
+
import { TuiAppearance, tuiAppearance } from '@taiga-ui/core/directives/appearance';
|
|
14
|
+
import { TUI_HINT_COMPONENT, TUI_HINT_PROVIDERS, TuiHintHover, TuiHintPointer, TuiHintUnstyledComponent, } from '@taiga-ui/core/directives/hint';
|
|
15
|
+
import { TuiPositionService, TuiVisualViewportService } from '@taiga-ui/core/services';
|
|
16
|
+
import { TUI_ANIMATIONS_SPEED, TUI_VIEWPORT } from '@taiga-ui/core/tokens';
|
|
17
|
+
import { tuiIsObscured, tuiToAnimationOptions } from '@taiga-ui/core/utils';
|
|
18
|
+
import { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
|
|
19
|
+
import { map, takeWhile } from 'rxjs';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@taiga-ui/core/directives/appearance";
|
|
22
|
+
const GAP = 8;
|
|
23
|
+
class TuiHintComponent {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.el = tuiInjectElement();
|
|
26
|
+
this.hover = inject(TuiHintHover);
|
|
27
|
+
this.vvs = inject(TuiVisualViewportService);
|
|
28
|
+
this.viewport = inject(TUI_VIEWPORT);
|
|
29
|
+
this.dummy = { value: '', params: { end: 1, start: 1 } };
|
|
30
|
+
this.options = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED), 'cubic-bezier(0.35, 1.3, 0.25, 1)');
|
|
31
|
+
this.pointer = inject(TuiHintPointer, { optional: true });
|
|
32
|
+
this.accessor = inject(TuiRectAccessor);
|
|
33
|
+
this.hint = injectContext().$implicit;
|
|
34
|
+
this.isMobile = inject(TUI_IS_MOBILE);
|
|
35
|
+
this.content = this.hint.component.component === TuiHintUnstyledComponent
|
|
36
|
+
? signal('')
|
|
37
|
+
: this.hint.content;
|
|
38
|
+
this.theme = this.hint.el
|
|
39
|
+
.closest('[tuiTheme]')
|
|
40
|
+
?.getAttribute('tuiTheme');
|
|
41
|
+
this.appearance = tuiAppearance(this.hint.appearance);
|
|
42
|
+
inject(TuiPositionService)
|
|
43
|
+
.pipe(takeWhile(() => this.hint.el.isConnected), map((point) => this.vvs.correct(point)), takeUntilDestroyed())
|
|
44
|
+
.subscribe({
|
|
45
|
+
next: ([top, left]) => this.update(top, left),
|
|
46
|
+
complete: () => this.hover.toggle(false),
|
|
47
|
+
});
|
|
48
|
+
inject(TuiHoveredService)
|
|
49
|
+
.pipe(takeUntilDestroyed())
|
|
50
|
+
.subscribe((hover) => this.hover.toggle(hover));
|
|
51
|
+
}
|
|
52
|
+
onClick(target) {
|
|
53
|
+
if ((!target.closest('tui-hint') && !this.hint.el.contains(target)) ||
|
|
54
|
+
tuiIsObscured(this.hint.el)) {
|
|
55
|
+
this.hover.toggle(false);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
apply(top, left, beakTop, beakLeft) {
|
|
59
|
+
this.el.style.top = top;
|
|
60
|
+
this.el.style.left = left;
|
|
61
|
+
this.el.style.setProperty('--top', `${beakTop}%`);
|
|
62
|
+
this.el.style.setProperty('--left', `${beakLeft}%`);
|
|
63
|
+
this.el.style.setProperty('--rotate', !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg');
|
|
64
|
+
}
|
|
65
|
+
update(top, left) {
|
|
66
|
+
const { clientHeight, clientWidth } = this.el;
|
|
67
|
+
const rect = this.accessor.getClientRect();
|
|
68
|
+
const viewport = this.viewport.getClientRect();
|
|
69
|
+
if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const safeLeft = tuiClamp(left, GAP, viewport.width - clientWidth - GAP);
|
|
73
|
+
const [beakTop, beakLeft] = this.vvs.correct([
|
|
74
|
+
rect.top + rect.height / 2 - top,
|
|
75
|
+
rect.left + rect.width / 2 - safeLeft,
|
|
76
|
+
]);
|
|
77
|
+
this.apply(tuiPx(Math.round(top)), tuiPx(Math.round(safeLeft)), Math.round((tuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100), Math.round((tuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100));
|
|
78
|
+
}
|
|
79
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiHintComponent, isStandalone: true, selector: "tui-hint", host: { listeners: { "document:click": "onClick($event.target)" }, properties: { "@tuiScaleIn": "isMobile ? options : dummy", "@tuiFadeIn": "options", "class._untouchable": "pointer", "class._mobile": "isMobile", "attr.tuiTheme": "theme" } }, providers: [TUI_HINT_PROVIDERS, tuiButtonOptionsProvider({ size: 's' })], hostDirectives: [{ directive: i1.TuiAppearance }], ngImport: i0, template: `
|
|
81
|
+
<ng-content />
|
|
82
|
+
<span
|
|
83
|
+
*polymorpheusOutlet="content() as text; context: hint.context"
|
|
84
|
+
[innerHTML]="text"
|
|
85
|
+
></span>
|
|
86
|
+
`, isInline: true, styles: [":host{position:absolute;max-inline-size:20rem;padding:.75rem 1rem;background:var(--tui-background-accent-1);border-radius:var(--tui-radius-l);color:var(--tui-text-primary-on-accent-1);box-sizing:border-box;font:var(--tui-font-text-s);white-space:pre-line;overflow-wrap:break-word;transform-origin:var(--left) var(--top)}:host:before{content:\"\";position:absolute;top:var(--top);left:var(--left);inline-size:.75rem;block-size:.5rem;background:inherit;-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 12 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.61336 1.69607L2.44882 2.96493C1.84795 3.61964 0.949361 3.99951 0.00053941 4C0.000359608 4 0.000179805 4 0 4C0.000179863 4 0.000359764 4 0.000539623 4C0.949362 4.00049 1.84795 4.38036 2.44882 5.03506L3.61336 6.30394C4.55981 7.33517 5.03303 7.85079 5.63254 7.96535C5.87433 8.01155 6.12436 8.01155 6.36616 7.96535C6.96567 7.85079 7.43889 7.33517 8.38534 6.30393L9.54988 5.03507C10.1511 4.37994 11.0505 4 12 4C11.0505 4 10.1511 3.62006 9.54988 2.96493L8.38534 1.69606C7.43889 0.664826 6.96567 0.149207 6.36616 0.0346517C6.12436 -0.0115506 5.87433 -0.0115506 5.63254 0.0346517C5.03303 0.149207 4.55981 0.664827 3.61336 1.69607Z\" /></svg>');mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 12 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.61336 1.69607L2.44882 2.96493C1.84795 3.61964 0.949361 3.99951 0.00053941 4C0.000359608 4 0.000179805 4 0 4C0.000179863 4 0.000359764 4 0.000539623 4C0.949362 4.00049 1.84795 4.38036 2.44882 5.03506L3.61336 6.30394C4.55981 7.33517 5.03303 7.85079 5.63254 7.96535C5.87433 8.01155 6.12436 8.01155 6.36616 7.96535C6.96567 7.85079 7.43889 7.33517 8.38534 6.30393L9.54988 5.03507C10.1511 4.37994 11.0505 4 12 4C11.0505 4 10.1511 3.62006 9.54988 2.96493L8.38534 1.69606C7.43889 0.664826 6.96567 0.149207 6.36616 0.0346517C6.12436 -0.0115506 5.87433 -0.0115506 5.63254 0.0346517C5.03303 0.149207 4.55981 0.664827 3.61336 1.69607Z\" /></svg>');transform:translate(-50%,-50%) rotate(var(--rotate))}:host._mobile{font:var(--tui-font-text-m)}:host._mobile:before{inline-size:1.5rem;block-size:1.125rem;-webkit-mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 18\"><path d=\"M7.22854 3.81615L4.89971 6.6711C3.69732 8.14514 1.8988 9 0 9C1.8988 9 3.69732 9.85486 4.89971 11.3289L7.22854 14.1839L7.22854 14.1839C9.12123 16.5041 10.0676 17.6643 11.2665 17.922C11.75 18.026 12.25 18.026 12.7335 17.922C13.9324 17.6643 14.8788 16.5041 16.7715 14.1839L19.1003 11.3289C20.3027 9.85486 22.1012 9 24 9C22.1012 9 20.3027 8.14514 19.1003 6.6711L16.7715 3.81614C14.8788 1.49586 13.9324 0.335716 12.7335 0.0779663C12.25 -0.0259888 11.75 -0.0259888 11.2665 0.0779663C10.0676 0.335716 9.12123 1.49586 7.22854 3.81614L7.22854 3.81615Z\" /></svg>');mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 18\"><path d=\"M7.22854 3.81615L4.89971 6.6711C3.69732 8.14514 1.8988 9 0 9C1.8988 9 3.69732 9.85486 4.89971 11.3289L7.22854 14.1839L7.22854 14.1839C9.12123 16.5041 10.0676 17.6643 11.2665 17.922C11.75 18.026 12.25 18.026 12.7335 17.922C13.9324 17.6643 14.8788 16.5041 16.7715 14.1839L19.1003 11.3289C20.3027 9.85486 22.1012 9 24 9C22.1012 9 20.3027 8.14514 19.1003 6.6711L16.7715 3.81614C14.8788 1.49586 13.9324 0.335716 12.7335 0.0779663C12.25 -0.0259888 11.75 -0.0259888 11.2665 0.0779663C10.0676 0.335716 9.12123 1.49586 7.22854 3.81614L7.22854 3.81615Z\" /></svg>')}:host:not([style*=top]){visibility:hidden}:host._untouchable{pointer-events:none}:host ::ng-deep [tuiTitle]{margin-block-end:.75rem}:host ::ng-deep [tuiTitle] [tuiSubtitle]{color:var(--tui-text-secondary)}:host ::ng-deep [tuiTitle]+footer{margin-block-start:.75rem}:host ::ng-deep [tuiIconButton][data-appearance=icon][data-size=xs]{float:inline-end;margin-inline-end:-.25rem}:host ::ng-deep img{display:block;border-radius:var(--tui-radius-m)}:host ::ng-deep footer{display:flex;justify-content:flex-end;gap:.5rem;inline-size:18rem;margin:1rem 0 .25rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], animations: [tuiFadeIn, tuiScaleIn], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
87
|
+
}
|
|
88
|
+
__decorate([
|
|
89
|
+
tuiPure
|
|
90
|
+
], TuiHintComponent.prototype, "apply", null);
|
|
91
|
+
export { TuiHintComponent };
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHintComponent, decorators: [{
|
|
93
|
+
type: Component,
|
|
94
|
+
args: [{ standalone: true, selector: 'tui-hint', imports: [PolymorpheusOutlet], template: `
|
|
95
|
+
<ng-content />
|
|
96
|
+
<span
|
|
97
|
+
*polymorpheusOutlet="content() as text; context: hint.context"
|
|
98
|
+
[innerHTML]="text"
|
|
99
|
+
></span>
|
|
100
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, providers: [TUI_HINT_PROVIDERS, tuiButtonOptionsProvider({ size: 's' })], animations: [tuiFadeIn, tuiScaleIn], hostDirectives: [TuiAppearance], host: {
|
|
101
|
+
'[@tuiScaleIn]': 'isMobile ? options : dummy',
|
|
102
|
+
'[@tuiFadeIn]': 'options',
|
|
103
|
+
'[class._untouchable]': 'pointer',
|
|
104
|
+
'[class._mobile]': 'isMobile',
|
|
105
|
+
'[attr.tuiTheme]': 'theme',
|
|
106
|
+
'(document:click)': 'onClick($event.target)',
|
|
107
|
+
}, styles: [":host{position:absolute;max-inline-size:20rem;padding:.75rem 1rem;background:var(--tui-background-accent-1);border-radius:var(--tui-radius-l);color:var(--tui-text-primary-on-accent-1);box-sizing:border-box;font:var(--tui-font-text-s);white-space:pre-line;overflow-wrap:break-word;transform-origin:var(--left) var(--top)}:host:before{content:\"\";position:absolute;top:var(--top);left:var(--left);inline-size:.75rem;block-size:.5rem;background:inherit;-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 12 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.61336 1.69607L2.44882 2.96493C1.84795 3.61964 0.949361 3.99951 0.00053941 4C0.000359608 4 0.000179805 4 0 4C0.000179863 4 0.000359764 4 0.000539623 4C0.949362 4.00049 1.84795 4.38036 2.44882 5.03506L3.61336 6.30394C4.55981 7.33517 5.03303 7.85079 5.63254 7.96535C5.87433 8.01155 6.12436 8.01155 6.36616 7.96535C6.96567 7.85079 7.43889 7.33517 8.38534 6.30393L9.54988 5.03507C10.1511 4.37994 11.0505 4 12 4C11.0505 4 10.1511 3.62006 9.54988 2.96493L8.38534 1.69606C7.43889 0.664826 6.96567 0.149207 6.36616 0.0346517C6.12436 -0.0115506 5.87433 -0.0115506 5.63254 0.0346517C5.03303 0.149207 4.55981 0.664827 3.61336 1.69607Z\" /></svg>');mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 12 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.61336 1.69607L2.44882 2.96493C1.84795 3.61964 0.949361 3.99951 0.00053941 4C0.000359608 4 0.000179805 4 0 4C0.000179863 4 0.000359764 4 0.000539623 4C0.949362 4.00049 1.84795 4.38036 2.44882 5.03506L3.61336 6.30394C4.55981 7.33517 5.03303 7.85079 5.63254 7.96535C5.87433 8.01155 6.12436 8.01155 6.36616 7.96535C6.96567 7.85079 7.43889 7.33517 8.38534 6.30393L9.54988 5.03507C10.1511 4.37994 11.0505 4 12 4C11.0505 4 10.1511 3.62006 9.54988 2.96493L8.38534 1.69606C7.43889 0.664826 6.96567 0.149207 6.36616 0.0346517C6.12436 -0.0115506 5.87433 -0.0115506 5.63254 0.0346517C5.03303 0.149207 4.55981 0.664827 3.61336 1.69607Z\" /></svg>');transform:translate(-50%,-50%) rotate(var(--rotate))}:host._mobile{font:var(--tui-font-text-m)}:host._mobile:before{inline-size:1.5rem;block-size:1.125rem;-webkit-mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 18\"><path d=\"M7.22854 3.81615L4.89971 6.6711C3.69732 8.14514 1.8988 9 0 9C1.8988 9 3.69732 9.85486 4.89971 11.3289L7.22854 14.1839L7.22854 14.1839C9.12123 16.5041 10.0676 17.6643 11.2665 17.922C11.75 18.026 12.25 18.026 12.7335 17.922C13.9324 17.6643 14.8788 16.5041 16.7715 14.1839L19.1003 11.3289C20.3027 9.85486 22.1012 9 24 9C22.1012 9 20.3027 8.14514 19.1003 6.6711L16.7715 3.81614C14.8788 1.49586 13.9324 0.335716 12.7335 0.0779663C12.25 -0.0259888 11.75 -0.0259888 11.2665 0.0779663C10.0676 0.335716 9.12123 1.49586 7.22854 3.81614L7.22854 3.81615Z\" /></svg>');mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 18\"><path d=\"M7.22854 3.81615L4.89971 6.6711C3.69732 8.14514 1.8988 9 0 9C1.8988 9 3.69732 9.85486 4.89971 11.3289L7.22854 14.1839L7.22854 14.1839C9.12123 16.5041 10.0676 17.6643 11.2665 17.922C11.75 18.026 12.25 18.026 12.7335 17.922C13.9324 17.6643 14.8788 16.5041 16.7715 14.1839L19.1003 11.3289C20.3027 9.85486 22.1012 9 24 9C22.1012 9 20.3027 8.14514 19.1003 6.6711L16.7715 3.81614C14.8788 1.49586 13.9324 0.335716 12.7335 0.0779663C12.25 -0.0259888 11.75 -0.0259888 11.2665 0.0779663C10.0676 0.335716 9.12123 1.49586 7.22854 3.81614L7.22854 3.81615Z\" /></svg>')}:host:not([style*=top]){visibility:hidden}:host._untouchable{pointer-events:none}:host ::ng-deep [tuiTitle]{margin-block-end:.75rem}:host ::ng-deep [tuiTitle] [tuiSubtitle]{color:var(--tui-text-secondary)}:host ::ng-deep [tuiTitle]+footer{margin-block-start:.75rem}:host ::ng-deep [tuiIconButton][data-appearance=icon][data-size=xs]{float:inline-end;margin-inline-end:-.25rem}:host ::ng-deep img{display:block;border-radius:var(--tui-radius-m)}:host ::ng-deep footer{display:flex;justify-content:flex-end;gap:.5rem;inline-size:18rem;margin:1rem 0 .25rem}\n"] }]
|
|
108
|
+
}], ctorParameters: function () { return []; }, propDecorators: { apply: [] } });
|
|
109
|
+
export function tuiProvideExperimentalHint() {
|
|
110
|
+
return {
|
|
111
|
+
provide: TUI_HINT_COMPONENT,
|
|
112
|
+
useValue: TuiHintComponent,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcmltZW50YWwvY29tcG9uZW50cy9oaW50L2hpbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxhQUFhLEVBQUUsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFbEYsT0FBTyxFQUNILGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGNBQWMsRUFDZCx3QkFBd0IsR0FDM0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztB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LFNBQVM7aUNBQ00sSUFBSSxZQUNOLFVBQVUsV0FDWCxDQUFDLGtCQUFrQixDQUFDLFlBQ25COzs7Ozs7S0FNVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGtCQUFrQixFQUFFLHdCQUF3QixDQUFDLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUMsY0FDMUQsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLGtCQUNuQixDQUFDLGFBQWEsQ0FBQyxRQUN6Qjt3QkFDRixlQUFlLEVBQUUsNEJBQTRCO3dCQUM3QyxjQUFjLEVBQUUsU0FBUzt3QkFDekIsc0JBQXNCLEVBQUUsU0FBUzt3QkFDakMsaUJBQWlCLEVBQUUsVUFBVTt3QkFDN0IsaUJBQWlCLEVBQUUsT0FBTzt3QkFDMUIsa0JBQWtCLEVBQUUsd0JBQXdCO3FCQUMvQzswRUF5RE8sS0FBSztBQW1DakIsTUFBTSxVQUFVLDBCQUEwQjtJQUN0QyxPQUFPO1FBQ0gsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixRQUFRLEVBQUUsZ0JBQWdCO0tBQzdCLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Byb3ZpZGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7RU1QVFlfQ0xJRU5UX1JFQ1R9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpSG92ZXJlZFNlcnZpY2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9ob3ZlcmVkJztcbmltcG9ydCB7VFVJX0lTX01PQklMRX0gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aUNvbnRleHR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUNsYW1wfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuaW1wb3J0IHt0dWlQdXJlLCB0dWlQeH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7dHVpRmFkZUluLCB0dWlTY2FsZUlufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9hbmltYXRpb25zJztcbmltcG9ydCB7VHVpUmVjdEFjY2Vzc29yfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jbGFzc2VzJztcbmltcG9ydCB7dHVpQnV0dG9uT3B0aW9uc1Byb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1R1aUFwcGVhcmFuY2UsIHR1aUFwcGVhcmFuY2V9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvYXBwZWFyYW5jZSc7XG5pbXBvcnQgdHlwZSB7VHVpSGludERpcmVjdGl2ZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9oaW50JztcbmltcG9ydCB7XG4gICAgVFVJX0hJTlRfQ09NUE9ORU5ULFxuICAgIFRVSV9ISU5UX1BST1ZJREVSUyxcbiAgICBUdWlIaW50SG92ZXIsXG4gICAgVHVpSGludFBvaW50ZXIsXG4gICAgVHVpSGludFVuc3R5bGVkQ29tcG9uZW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2hpbnQnO1xuaW1wb3J0IHtUdWlQb3NpdGlvblNlcnZpY2UsIFR1aVZpc3VhbFZpZXdwb3J0U2VydmljZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvc2VydmljZXMnO1xuaW1wb3J0IHtUVUlfQU5JTUFUSU9OU19TUEVFRCwgVFVJX1ZJRVdQT1JUfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlJc09ic2N1cmVkLCB0dWlUb0FuaW1hdGlvbk9wdGlvbnN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzJztcbmltcG9ydCB7aW5qZWN0Q29udGV4dCwgUG9seW1vcnBoZXVzT3V0bGV0fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7bWFwLCB0YWtlV2hpbGV9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBHQVAgPSA4O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWhpbnQnLFxuICAgIGltcG9ydHM6IFtQb2x5bW9ycGhldXNPdXRsZXRdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY29udGVudCgpIGFzIHRleHQ7IGNvbnRleHQ6IGhpbnQuY29udGV4dFwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cInRleHRcIlxuICAgICAgICA+PC9zcGFuPlxuICAgIGAsXG4gICAgc3R5bGVVcmxzOiBbJy4vaGludC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbVFVJX0hJTlRfUFJPVklERVJTLCB0dWlCdXR0b25PcHRpb25zUHJvdmlkZXIoe3NpemU6ICdzJ30pXSxcbiAgICBhbmltYXRpb25zOiBbdHVpRmFkZUluLCB0dWlTY2FsZUluXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1R1aUFwcGVhcmFuY2VdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tAdHVpU2NhbGVJbl0nOiAnaXNNb2JpbGUgPyBvcHRpb25zIDogZHVtbXknLFxuICAgICAgICAnW0B0dWlGYWRlSW5dJzogJ29wdGlvbnMnLFxuICAgICAgICAnW2NsYXNzLl91bnRvdWNoYWJsZV0nOiAncG9pbnRlcicsXG4gICAgICAgICdbY2xhc3MuX21vYmlsZV0nOiAnaXNNb2JpbGUnLFxuICAgICAgICAnW2F0dHIudHVpVGhlbWVdJzogJ3RoZW1lJyxcbiAgICAgICAgJyhkb2N1bWVudDpjbGljayknOiAnb25DbGljaygkZXZlbnQudGFyZ2V0KScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSGludENvbXBvbmVudDxDID0gYW55PiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvdmVyID0gaW5qZWN0KFR1aUhpbnRIb3Zlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2dnMgPSBpbmplY3QoVHVpVmlzdWFsVmlld3BvcnRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdwb3J0ID0gaW5qZWN0KFRVSV9WSUVXUE9SVCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHVtbXkgPSB7dmFsdWU6ICcnLCBwYXJhbXM6IHtlbmQ6IDEsIHN0YXJ0OiAxfX07XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSB0dWlUb0FuaW1hdGlvbk9wdGlvbnMoXG4gICAgICAgIGluamVjdChUVUlfQU5JTUFUSU9OU19TUEVFRCksXG4gICAgICAgICdjdWJpYy1iZXppZXIoMC4zNSwgMS4zLCAwLjI1LCAxKScsXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBwb2ludGVyID0gaW5qZWN0KFR1aUhpbnRQb2ludGVyLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWNjZXNzb3IgPSBpbmplY3QoVHVpUmVjdEFjY2Vzc29yKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGludCA9IGluamVjdENvbnRleHQ8VHVpQ29udGV4dDxUdWlIaW50RGlyZWN0aXZlPEM+Pj4oKS4kaW1wbGljaXQ7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTW9iaWxlID0gaW5qZWN0KFRVSV9JU19NT0JJTEUpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRlbnQgPVxuICAgICAgICB0aGlzLmhpbnQuY29tcG9uZW50LmNvbXBvbmVudCA9PT0gVHVpSGludFVuc3R5bGVkQ29tcG9uZW50XG4gICAgICAgICAgICA/IHNpZ25hbCgnJylcbiAgICAgICAgICAgIDogdGhpcy5oaW50LmNvbnRlbnQ7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGhlbWUgPSB0aGlzLmhpbnQuZWxcbiAgICAgICAgLmNsb3Nlc3QoJ1t0dWlUaGVtZV0nKVxuICAgICAgICA/LmdldEF0dHJpYnV0ZSgndHVpVGhlbWUnKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcHBlYXJhbmNlID0gdHVpQXBwZWFyYW5jZSh0aGlzLmhpbnQuYXBwZWFyYW5jZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5qZWN0KFR1aVBvc2l0aW9uU2VydmljZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLmhpbnQuZWwuaXNDb25uZWN0ZWQpLFxuICAgICAgICAgICAgICAgIG1hcCgocG9pbnQpID0+IHRoaXMudnZzLmNvcnJlY3QocG9pbnQpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChbdG9wLCBsZWZ0XSkgPT4gdGhpcy51cGRhdGUodG9wLCBsZWZ0KSxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5ob3Zlci50b2dnbGUoZmFsc2UpLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaW5qZWN0KFR1aUhvdmVyZWRTZXJ2aWNlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChob3ZlcikgPT4gdGhpcy5ob3Zlci50b2dnbGUoaG92ZXIpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DbGljayh0YXJnZXQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICghdGFyZ2V0LmNsb3Nlc3QoJ3R1aS1oaW50JykgJiYgIXRoaXMuaGludC5lbC5jb250YWlucyh0YXJnZXQpKSB8fFxuICAgICAgICAgICAgdHVpSXNPYnNjdXJlZCh0aGlzLmhpbnQuZWwpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5ob3Zlci50b2dnbGUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGFwcGx5KHRvcDogc3RyaW5nLCBsZWZ0OiBzdHJpbmcsIGJlYWtUb3A6IG51bWJlciwgYmVha0xlZnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmVsLnN0eWxlLnRvcCA9IHRvcDtcbiAgICAgICAgdGhpcy5lbC5zdHlsZS5sZWZ0ID0gbGVmdDtcbiAgICAgICAgdGhpcy5lbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10b3AnLCBgJHtiZWFrVG9wfSVgKTtcbiAgICAgICAgdGhpcy5lbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1sZWZ0JywgYCR7YmVha0xlZnR9JWApO1xuICAgICAgICB0aGlzLmVsLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgJy0tcm90YXRlJyxcbiAgICAgICAgICAgICFiZWFrTGVmdCB8fCBNYXRoLmNlaWwoYmVha0xlZnQpID09PSAxMDAgPyAnOTBkZWcnIDogJzBkZWcnLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlKHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2NsaWVudEhlaWdodCwgY2xpZW50V2lkdGh9ID0gdGhpcy5lbDtcbiAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuYWNjZXNzb3IuZ2V0Q2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnQuZ2V0Q2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmIChyZWN0ID09PSBFTVBUWV9DTElFTlRfUkVDVCB8fCAhY2xpZW50SGVpZ2h0IHx8ICFjbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2FmZUxlZnQgPSB0dWlDbGFtcChsZWZ0LCBHQVAsIHZpZXdwb3J0LndpZHRoIC0gY2xpZW50V2lkdGggLSBHQVApO1xuICAgICAgICBjb25zdCBbYmVha1RvcCwgYmVha0xlZnRdID0gdGhpcy52dnMuY29ycmVjdChbXG4gICAgICAgICAgICByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMiAtIHRvcCxcbiAgICAgICAgICAgIHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyIC0gc2FmZUxlZnQsXG4gICAgICAgIF0pO1xuXG4gICAgICAgIHRoaXMuYXBwbHkoXG4gICAgICAgICAgICB0dWlQeChNYXRoLnJvdW5kKHRvcCkpLFxuICAgICAgICAgICAgdHVpUHgoTWF0aC5yb3VuZChzYWZlTGVmdCkpLFxuICAgICAgICAgICAgTWF0aC5yb3VuZCgodHVpQ2xhbXAoYmVha1RvcCwgMCwgY2xpZW50SGVpZ2h0KSAvIGNsaWVudEhlaWdodCkgKiAxMDApLFxuICAgICAgICAgICAgTWF0aC5yb3VuZCgodHVpQ2xhbXAoYmVha0xlZnQsIDAsIGNsaWVudFdpZHRoKSAvIGNsaWVudFdpZHRoKSAqIDEwMCksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpUHJvdmlkZUV4cGVyaW1lbnRhbEhpbnQoKTogUHJvdmlkZXIge1xuICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGU6IFRVSV9ISU5UX0NPTVBPTkVOVCxcbiAgICAgICAgdXNlVmFsdWU6IFR1aUhpbnRDb21wb25lbnQsXG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './hint.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcmltZW50YWwvY29tcG9uZW50cy9oaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2hpbnQuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWktZXhwZXJpbWVudGFsLWNvbXBvbmVudHMtaGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVyaW1lbnRhbC9jb21wb25lbnRzL2hpbnQvdGFpZ2EtdWktZXhwZXJpbWVudGFsLWNvbXBvbmVudHMtaGludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from '@taiga-ui/experimental/components/hint';
|
|
2
|
+
export * from '@taiga-ui/experimental/components/input-phone-international';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcmltZW50YWwvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkRBQTZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICdAdGFpZ2EtdWkvZXhwZXJpbWVudGFsL2NvbXBvbmVudHMvaGludCc7XG5leHBvcnQgKiBmcm9tICdAdGFpZ2EtdWkvZXhwZXJpbWVudGFsL2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './input-phone-international.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcmltZW50YWwvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { NgForOf, NgIf } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, Input, Output, signal, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation, } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
import { MaskitoDirective } from '@maskito/angular';
|
|
6
|
+
import { MASKITO_DEFAULT_OPTIONS, maskitoInitialCalibrationPlugin, maskitoTransform, } from '@maskito/core';
|
|
7
|
+
import { maskitoGetCountryFromNumber, maskitoPhoneOptionsGenerator } from '@maskito/phone';
|
|
8
|
+
import { tuiAsControl, TuiControl } from '@taiga-ui/cdk/classes';
|
|
9
|
+
import { CHAR_PLUS, EMPTY_QUERY, TUI_DEFAULT_MATCHER } from '@taiga-ui/cdk/constants';
|
|
10
|
+
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
11
|
+
import { TuiAutoFocus, tuiAutoFocusOptionsProvider, } from '@taiga-ui/cdk/directives/auto-focus';
|
|
12
|
+
import { TUI_IS_IOS, tuiFallbackValueProvider } from '@taiga-ui/cdk/tokens';
|
|
13
|
+
import { tuiInjectElement, tuiIsInputEvent } from '@taiga-ui/cdk/utils/dom';
|
|
14
|
+
import { tuiDirectiveBinding } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
15
|
+
import { TuiButton } from '@taiga-ui/core/components/button';
|
|
16
|
+
import { TuiDataList, TuiOption } from '@taiga-ui/core/components/data-list';
|
|
17
|
+
import { TuiIcon } from '@taiga-ui/core/components/icon';
|
|
18
|
+
import { TUI_TEXTFIELD_OPTIONS, TuiTextfield, TuiTextfieldContent, TuiTextfieldDropdownDirective, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
|
|
19
|
+
import { tuiDropdown, TuiDropdownOpen, tuiDropdownOpen, } from '@taiga-ui/core/directives/dropdown';
|
|
20
|
+
import { TuiTitle } from '@taiga-ui/core/directives/title';
|
|
21
|
+
import { TuiFlagPipe } from '@taiga-ui/core/pipes';
|
|
22
|
+
import { TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
|
|
23
|
+
import { TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS } from '@taiga-ui/kit/components/input-phone-international';
|
|
24
|
+
import { TuiChevron } from '@taiga-ui/kit/directives/chevron';
|
|
25
|
+
import { TUI_COUNTRIES, TUI_INTERNATIONAL_SEARCH } from '@taiga-ui/kit/tokens';
|
|
26
|
+
import { tuiGetCallingCode, tuiMaskito } from '@taiga-ui/kit/utils';
|
|
27
|
+
import { TuiCell } from '@taiga-ui/layout/components/cell';
|
|
28
|
+
import { validatePhoneNumberLength } from 'libphonenumber-js';
|
|
29
|
+
import { filter, from, skip } from 'rxjs';
|
|
30
|
+
import * as i0 from "@angular/core";
|
|
31
|
+
import * as i1 from "@maskito/angular";
|
|
32
|
+
import * as i2 from "@taiga-ui/core/components/textfield";
|
|
33
|
+
import * as i3 from "@angular/forms";
|
|
34
|
+
import * as i4 from "@taiga-ui/core/components/data-list";
|
|
35
|
+
const NOT_FORM_CONTROL_SYMBOLS = /[^+\d]/g;
|
|
36
|
+
class TuiInputPhoneInternational extends TuiControl {
|
|
37
|
+
constructor() {
|
|
38
|
+
super(...arguments);
|
|
39
|
+
this.list = EMPTY_QUERY;
|
|
40
|
+
this.el = tuiInjectElement();
|
|
41
|
+
this.ios = inject(TUI_IS_IOS);
|
|
42
|
+
this.icons = inject(TUI_COMMON_ICONS);
|
|
43
|
+
this.options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);
|
|
44
|
+
this.countries = signal(this.options.countries);
|
|
45
|
+
this.code = signal(this.options.countryIsoCode);
|
|
46
|
+
this.label = toSignal(inject(TUI_INTERNATIONAL_SEARCH));
|
|
47
|
+
this.metadata = toSignal(from(this.options.metadata));
|
|
48
|
+
this.names = toSignal(inject(TUI_COUNTRIES));
|
|
49
|
+
this.open = tuiDropdownOpen();
|
|
50
|
+
this.dropdown = tuiDropdown(null);
|
|
51
|
+
this.search = signal('');
|
|
52
|
+
this.size = inject(TUI_TEXTFIELD_OPTIONS).size;
|
|
53
|
+
this.mask = tuiMaskito(computed(() => this.computeMask(this.code(), this.metadata())));
|
|
54
|
+
this.masked = computed(() => maskitoTransform(this.value(), this.mask() || MASKITO_DEFAULT_OPTIONS) ||
|
|
55
|
+
this.el.value);
|
|
56
|
+
this.filtered = computed(() => this.countries()
|
|
57
|
+
.map((iso) => ({
|
|
58
|
+
iso,
|
|
59
|
+
name: this.names()?.[iso] || '',
|
|
60
|
+
code: tuiGetCallingCode(iso, this.metadata()),
|
|
61
|
+
}))
|
|
62
|
+
.filter(({ name, code }) => TUI_DEFAULT_MATCHER(name + code, this.search())));
|
|
63
|
+
this.enabled = tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownEnabled', this.interactive, {});
|
|
64
|
+
this.$ = inject(TuiActiveZone)
|
|
65
|
+
.tuiActiveZoneChange.pipe(filter(() => !this.readOnly()), takeUntilDestroyed())
|
|
66
|
+
.subscribe((active) => {
|
|
67
|
+
const prefix = `${tuiGetCallingCode(this.code(), this.metadata())} `;
|
|
68
|
+
const fallback = active ? this.el.value || prefix : this.el.value;
|
|
69
|
+
this.search.set('');
|
|
70
|
+
this.el.value = this.el.value === prefix ? '' : fallback;
|
|
71
|
+
});
|
|
72
|
+
this.countrySearch = false;
|
|
73
|
+
this.countryIsoCodeChange = toObservable(this.code).pipe(skip(1));
|
|
74
|
+
}
|
|
75
|
+
set countriesValue(value) {
|
|
76
|
+
this.countries.set(value);
|
|
77
|
+
}
|
|
78
|
+
set isoCode(code) {
|
|
79
|
+
this.code.set(code);
|
|
80
|
+
}
|
|
81
|
+
set template(template) {
|
|
82
|
+
this.dropdown.set(template);
|
|
83
|
+
}
|
|
84
|
+
get unmasked() {
|
|
85
|
+
const value = this.el.value.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');
|
|
86
|
+
return value === tuiGetCallingCode(this.code(), this.metadata()) ? '' : value;
|
|
87
|
+
}
|
|
88
|
+
onPaste(event) {
|
|
89
|
+
const metadata = this.metadata();
|
|
90
|
+
const data = tuiIsInputEvent(event) && event.data;
|
|
91
|
+
if (!data ||
|
|
92
|
+
!metadata ||
|
|
93
|
+
(!event.inputType.includes('Drop') && !event.inputType.includes('Paste'))) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const value = data.startsWith(CHAR_PLUS) ? data : CHAR_PLUS + data;
|
|
97
|
+
const code = maskitoGetCountryFromNumber(value, metadata);
|
|
98
|
+
if (code && validatePhoneNumberLength(value) !== 'TOO_SHORT') {
|
|
99
|
+
this.code.set(code);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
onItemClick(code) {
|
|
103
|
+
this.el.focus();
|
|
104
|
+
this.el.value = this.unmasked;
|
|
105
|
+
this.open.set(false);
|
|
106
|
+
this.code.set(code);
|
|
107
|
+
this.search.set('');
|
|
108
|
+
this.el.value = maskitoTransform(this.el.value || tuiGetCallingCode(code, this.metadata()), this.mask() || MASKITO_DEFAULT_OPTIONS);
|
|
109
|
+
this.onChange(this.unmasked);
|
|
110
|
+
}
|
|
111
|
+
computeMask(countryIsoCode, metadata) {
|
|
112
|
+
if (!metadata) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
const { plugins, ...options } = maskitoPhoneOptionsGenerator({
|
|
116
|
+
countryIsoCode,
|
|
117
|
+
metadata,
|
|
118
|
+
separator: this.options.separator,
|
|
119
|
+
});
|
|
120
|
+
return {
|
|
121
|
+
...options,
|
|
122
|
+
plugins: [...plugins, maskitoInitialCalibrationPlugin()],
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputPhoneInternational, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputPhoneInternational, isStandalone: true, selector: "input[tuiInputPhoneInternational]", inputs: { countrySearch: "countrySearch", countriesValue: ["countries", "countriesValue"], isoCode: ["countryIsoCode", "isoCode"] }, outputs: { countryIsoCodeChange: "countryIsoCodeChange" }, host: { attributes: { "type": "tel" }, listeners: { "blur": "onTouched()", "input": "onChange(unmasked)", "click": "open.set(false)", "beforeinput.capture": "onPaste($event)" }, properties: { "attr.readonly": "readOnly() || null", "attr.inputmode": "!ios && open() ? \"none\" : null", "disabled": "disabled()", "value": "masked()" } }, providers: [
|
|
127
|
+
tuiAsControl(TuiInputPhoneInternational),
|
|
128
|
+
tuiFallbackValueProvider(''),
|
|
129
|
+
tuiAutoFocusOptionsProvider({ preventScroll: true }),
|
|
130
|
+
], viewQueries: [{ propertyName: "template", first: true, predicate: TuiTextfieldDropdownDirective, descendants: true, read: TemplateRef }, { propertyName: "list", predicate: TuiOption, descendants: true, read: ElementRef }], usesInheritance: true, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithTextfield }], ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (mousedown.prevent)=\"interactive() && open.set(!open())\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()?.[code()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"code() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-container *tuiTextfieldDropdown>\n <div\n *ngIf=\"countrySearch\"\n #element\n class=\"t-ipi-search\"\n >\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiTextfield\n type=\"text\"\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!!element.closest('tui-dropdown-mobile')\"\n (keydown.arrowDown)=\"list.get(0)?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n\n <tui-data-list class=\"t-ipi-options\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n [tuiCell]=\"size()\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]{left:var(--t-offset);border-start-start-radius:0;border-end-start-radius:0;inline-size:calc(100% - var(--t-offset))}tui-root:has(tui-dropdown-mobile) [tuiInputPhoneInternational][tuiInputPhoneInternational]{caret-color:transparent}[tuiInputPhoneInternational][tuiInputPhoneInternational]+label{padding-left:var(--t-offset)}tui-textfield[data-size=s]{--t-offset: 4.125rem}tui-textfield[data-size=s] .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]{--t-offset: 4.875rem}tui-textfield[data-size=m] .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]{--t-offset: 5.25rem}tui-textfield[data-size=l] .t-ipi-flag{margin:0 -.1875rem}.t-ipi-select{position:absolute;left:0;border-radius:inherit;border-start-end-radius:0;border-end-end-radius:0}.t-ipi-select_readonly{pointer-events:none}.t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}.t-ipi-code{color:var(--tui-text-secondary)}.t-ipi-search{position:sticky;top:0;z-index:1;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){.t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}tui-dropdown-mobile .t-ipi-search{background:var(--tui-background-elevation-1)}tui-dropdown-mobile .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiCell, selector: "[tuiCell]:not(ng-template)", inputs: ["tuiCell"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i4.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i4.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "component", type: i2.TuiTextfieldComponent, selector: "tui-textfield", inputs: ["stringify", "content", "filler"] }, { kind: "directive", type: i2.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: i2.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i2.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
131
|
+
}
|
|
132
|
+
export { TuiInputPhoneInternational };
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputPhoneInternational, decorators: [{
|
|
134
|
+
type: Component,
|
|
135
|
+
args: [{ standalone: true, selector: 'input[tuiInputPhoneInternational]', imports: [
|
|
136
|
+
FormsModule,
|
|
137
|
+
NgForOf,
|
|
138
|
+
NgIf,
|
|
139
|
+
TuiAutoFocus,
|
|
140
|
+
TuiButton,
|
|
141
|
+
TuiCell,
|
|
142
|
+
TuiChevron,
|
|
143
|
+
TuiDataList,
|
|
144
|
+
TuiFlagPipe,
|
|
145
|
+
TuiIcon,
|
|
146
|
+
TuiTextfield,
|
|
147
|
+
TuiTextfieldContent,
|
|
148
|
+
TuiTitle,
|
|
149
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
150
|
+
tuiAsControl(TuiInputPhoneInternational),
|
|
151
|
+
tuiFallbackValueProvider(''),
|
|
152
|
+
tuiAutoFocusOptionsProvider({ preventScroll: true }),
|
|
153
|
+
], hostDirectives: [MaskitoDirective, TuiWithTextfield], host: {
|
|
154
|
+
type: 'tel',
|
|
155
|
+
'[attr.readonly]': 'readOnly() || null',
|
|
156
|
+
'[attr.inputmode]': '!ios && open() ? "none" : null',
|
|
157
|
+
'[disabled]': 'disabled()',
|
|
158
|
+
'[value]': 'masked()',
|
|
159
|
+
'(blur)': 'onTouched()',
|
|
160
|
+
'(input)': 'onChange(unmasked)',
|
|
161
|
+
'(click)': 'open.set(false)',
|
|
162
|
+
'(beforeinput.capture)': 'onPaste($event)',
|
|
163
|
+
}, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (mousedown.prevent)=\"interactive() && open.set(!open())\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()?.[code()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"code() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-container *tuiTextfieldDropdown>\n <div\n *ngIf=\"countrySearch\"\n #element\n class=\"t-ipi-search\"\n >\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiTextfield\n type=\"text\"\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!!element.closest('tui-dropdown-mobile')\"\n (keydown.arrowDown)=\"list.get(0)?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n\n <tui-data-list class=\"t-ipi-options\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n [tuiCell]=\"size()\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]{left:var(--t-offset);border-start-start-radius:0;border-end-start-radius:0;inline-size:calc(100% - var(--t-offset))}tui-root:has(tui-dropdown-mobile) [tuiInputPhoneInternational][tuiInputPhoneInternational]{caret-color:transparent}[tuiInputPhoneInternational][tuiInputPhoneInternational]+label{padding-left:var(--t-offset)}tui-textfield[data-size=s]{--t-offset: 4.125rem}tui-textfield[data-size=s] .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]{--t-offset: 4.875rem}tui-textfield[data-size=m] .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]{--t-offset: 5.25rem}tui-textfield[data-size=l] .t-ipi-flag{margin:0 -.1875rem}.t-ipi-select{position:absolute;left:0;border-radius:inherit;border-start-end-radius:0;border-end-end-radius:0}.t-ipi-select_readonly{pointer-events:none}.t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}.t-ipi-code{color:var(--tui-text-secondary)}.t-ipi-search{position:sticky;top:0;z-index:1;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){.t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}tui-dropdown-mobile .t-ipi-search{background:var(--tui-background-elevation-1)}tui-dropdown-mobile .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}\n"] }]
|
|
164
|
+
}], propDecorators: { list: [{
|
|
165
|
+
type: ViewChildren,
|
|
166
|
+
args: [TuiOption, { read: ElementRef }]
|
|
167
|
+
}], countrySearch: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], countryIsoCodeChange: [{
|
|
170
|
+
type: Output
|
|
171
|
+
}], countriesValue: [{
|
|
172
|
+
type: Input,
|
|
173
|
+
args: ['countries']
|
|
174
|
+
}], isoCode: [{
|
|
175
|
+
type: Input,
|
|
176
|
+
args: ['countryIsoCode']
|
|
177
|
+
}], template: [{
|
|
178
|
+
type: ViewChild,
|
|
179
|
+
args: [TuiTextfieldDropdownDirective, { read: TemplateRef }]
|
|
180
|
+
}] } });
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcmltZW50YWwvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJpbWVudGFsL2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUNILHVCQUF1QixFQUN2QiwrQkFBK0IsRUFDL0IsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQywyQkFBMkIsRUFBRSw0QkFBNEIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFD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RG5DLE1BQU07Z0JBSUksY0FBYztzQkFEeEIsS0FBSzt1QkFBQyxXQUFXO2dCQU1QLE9BQU87c0JBRGpCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQU1ULFFBQVE7c0JBRHJCLFNBQVM7dUJBQUMsNkJBQTZCLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ0Zvck9mLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWFza2l0b0RpcmVjdGl2ZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQgdHlwZSB7TWFza2l0b09wdGlvbnN9IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBNQVNLSVRPX0RFRkFVTFRfT1BUSU9OUyxcbiAgICBtYXNraXRvSW5pdGlhbENhbGlicmF0aW9uUGx1Z2luLFxuICAgIG1hc2tpdG9UcmFuc2Zvcm0sXG59IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHttYXNraXRvR2V0Q291bnRyeUZyb21OdW1iZXIsIG1hc2tpdG9QaG9uZU9wdGlvbnNHZW5lcmF0b3J9IGZyb20gJ0BtYXNraXRvL3Bob25lJztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtDSEFSX1BMVVMsIEVNUFRZX1FVRVJZLCBUVUlfREVGQVVMVF9NQVRDSEVSfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9hY3RpdmUtem9uZSc7XG5pbXBvcnQge1xuICAgIFR1aUF1dG9Gb2N1cyxcbiAgICB0dWlBdXRvRm9jdXNPcHRpb25zUHJvdmlkZXIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9hdXRvLWZvY3VzJztcbmltcG9ydCB7VFVJX0lTX0lPUywgdHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnQsIHR1aUlzSW5wdXRFdmVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlEaXJlY3RpdmVCaW5kaW5nfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUdWlCdXR0b259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7VHVpRGF0YUxpc3QsIFR1aU9wdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QnO1xuaW1wb3J0IHtUdWlJY29ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHtcbiAgICBUVUlfVEVYVEZJRUxEX09QVElPTlMsXG4gICAgVHVpVGV4dGZpZWxkLFxuICAgIFR1aVRleHRmaWVsZENvbnRlbnQsXG4gICAgVHVpVGV4dGZpZWxkRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgVHVpV2l0aFRleHRmaWVsZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHtcbiAgICB0dWlEcm9wZG93bixcbiAgICBUdWlEcm9wZG93bk9wZW4sXG4gICAgdHVpRHJvcGRvd25PcGVuLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VHVpVGl0bGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvdGl0bGUnO1xuaW1wb3J0IHtUdWlGbGFnUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvcGlwZXMnO1xuaW1wb3J0IHtUVUlfQ09NTU9OX0lDT05TfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aUNvdW50cnlJc29Db2RlfSBmcm9tICdAdGFpZ2EtdWkvaTE4bi90eXBlcyc7XG5pbXBvcnQge1RVSV9JTlBVVF9QSE9ORV9JTlRFUk5BVElPTkFMX09QVElPTlN9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsJztcbmltcG9ydCB7VHVpQ2hldnJvbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9kaXJlY3RpdmVzL2NoZXZyb24nO1xuaW1wb3J0IHtUVUlfQ09VTlRSSUVTLCBUVUlfSU5URVJOQVRJT05BTF9TRUFSQ0h9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0Q2FsbGluZ0NvZGUsIHR1aU1hc2tpdG99IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuaW1wb3J0IHtUdWlDZWxsfSBmcm9tICdAdGFpZ2EtdWkvbGF5b3V0L2NvbXBvbmVudHMvY2VsbCc7XG5pbXBvcnQgdHlwZSB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQge3ZhbGlkYXRlUGhvbmVOdW1iZXJMZW5ndGh9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB0eXBlIHtNZXRhZGF0YUpzb259IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzL2NvcmUnO1xuaW1wb3J0IHtmaWx0ZXIsIGZyb20sIHNraXB9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBOT1RfRk9STV9DT05UUk9MX1NZTUJPTFMgPSAvW14rXFxkXS9nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxdJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ0Zvck9mLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBUdWlBdXRvRm9jdXMsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpQ2VsbCxcbiAgICAgICAgVHVpQ2hldnJvbixcbiAgICAgICAgVHVpRGF0YUxpc3QsXG4gICAgICAgIFR1aUZsYWdQaXBlLFxuICAgICAgICBUdWlJY29uLFxuICAgICAgICBUdWlUZXh0ZmllbGQsXG4gICAgICAgIFR1aVRleHRmaWVsZENvbnRlbnQsXG4gICAgICAgIFR1aVRpdGxlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5zdHlsZS5sZXNzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsKSxcbiAgICAgICAgdHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyKCcnKSxcbiAgICAgICAgdHVpQXV0b0ZvY3VzT3B0aW9uc1Byb3ZpZGVyKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSksXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW01hc2tpdG9EaXJlY3RpdmUsIFR1aVdpdGhUZXh0ZmllbGRdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICdbYXR0ci5yZWFkb25seV0nOiAncmVhZE9ubHkoKSB8fCBudWxsJyxcbiAgICAgICAgJ1thdHRyLmlucHV0bW9kZV0nOiAnIWlvcyAmJiBvcGVuKCkgPyBcIm5vbmVcIiA6IG51bGwnLFxuICAgICAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcbiAgICAgICAgJ1t2YWx1ZV0nOiAnbWFza2VkKCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnb25DaGFuZ2UodW5tYXNrZWQpJyxcbiAgICAgICAgJyhjbGljayknOiAnb3Blbi5zZXQoZmFsc2UpJyxcbiAgICAgICAgJyhiZWZvcmVpbnB1dC5jYXB0dXJlKSc6ICdvblBhc3RlKCRldmVudCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsIGV4dGVuZHMgVHVpQ29udHJvbDxzdHJpbmc+IHtcbiAgICBAVmlld0NoaWxkcmVuKFR1aU9wdGlvbiwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByb3RlY3RlZCByZWFkb25seSBsaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlvcyA9IGluamVjdChUVUlfSVNfSU9TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3QoVFVJX0NPTU1PTl9JQ09OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvdW50cmllcyA9IHNpZ25hbCh0aGlzLm9wdGlvbnMuY291bnRyaWVzKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29kZSA9IHNpZ25hbCh0aGlzLm9wdGlvbnMuY291bnRyeUlzb0NvZGUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsYWJlbCA9IHRvU2lnbmFsKGluamVjdChUVUlfSU5URVJOQVRJT05BTF9TRUFSQ0gpKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWV0YWRhdGEgPSB0b1NpZ25hbChmcm9tKHRoaXMub3B0aW9ucy5tZXRhZGF0YSkpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBuYW1lcyA9IHRvU2lnbmFsKGluamVjdChUVUlfQ09VTlRSSUVTKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZW4gPSB0dWlEcm9wZG93bk9wZW4oKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd24gPSB0dWlEcm9wZG93bihudWxsKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VhcmNoID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzaXplID0gaW5qZWN0KFRVSV9URVhURklFTERfT1BUSU9OUykuc2l6ZTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrID0gdHVpTWFza2l0byhcbiAgICAgICAgY29tcHV0ZWQoKCkgPT4gdGhpcy5jb21wdXRlTWFzayh0aGlzLmNvZGUoKSwgdGhpcy5tZXRhZGF0YSgpKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrZWQgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIG1hc2tpdG9UcmFuc2Zvcm0odGhpcy52YWx1ZSgpLCB0aGlzLm1hc2soKSB8fCBNQVNLSVRPX0RFRkFVTFRfT1BUSU9OUykgfHxcbiAgICAgICAgICAgIHRoaXMuZWwudmFsdWUsXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJlZCA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMuY291bnRyaWVzKClcbiAgICAgICAgICAgIC5tYXAoKGlzbykgPT4gKHtcbiAgICAgICAgICAgICAgICBpc28sXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lcygpPy5baXNvXSB8fCAnJyxcbiAgICAgICAgICAgICAgICBjb2RlOiB0dWlHZXRDYWxsaW5nQ29kZShpc28sIHRoaXMubWV0YWRhdGEoKSksXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHtuYW1lLCBjb2RlfSkgPT4gVFVJX0RFRkFVTFRfTUFUQ0hFUihuYW1lICsgY29kZSwgdGhpcy5zZWFyY2goKSkpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW5hYmxlZCA9IHR1aURpcmVjdGl2ZUJpbmRpbmcoXG4gICAgICAgIFR1aURyb3Bkb3duT3BlbixcbiAgICAgICAgJ3R1aURyb3Bkb3duRW5hYmxlZCcsXG4gICAgICAgIHRoaXMuaW50ZXJhY3RpdmUsXG4gICAgICAgIHt9LFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgJCA9IGluamVjdChUdWlBY3RpdmVab25lKVxuICAgICAgICAudHVpQWN0aXZlWm9uZUNoYW5nZS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLnJlYWRPbmx5KCkpLFxuICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoYWN0aXZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcmVmaXggPSBgJHt0dWlHZXRDYWxsaW5nQ29kZSh0aGlzLmNvZGUoKSwgdGhpcy5tZXRhZGF0YSgpKX0gYDtcbiAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrID0gYWN0aXZlID8gdGhpcy5lbC52YWx1ZSB8fCBwcmVmaXggOiB0aGlzLmVsLnZhbHVlO1xuXG4gICAgICAgICAgICB0aGlzLnNlYXJjaC5zZXQoJycpO1xuICAgICAgICAgICAgdGhpcy5lbC52YWx1ZSA9IHRoaXMuZWwudmFsdWUgPT09IHByZWZpeCA/ICcnIDogZmFsbGJhY2s7XG4gICAgICAgIH0pO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY291bnRyeVNlYXJjaCA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGNvdW50cnlJc29Db2RlQ2hhbmdlID0gdG9PYnNlcnZhYmxlKHRoaXMuY29kZSkucGlwZShza2lwKDEpKTtcblxuICAgIEBJbnB1dCgnY291bnRyaWVzJylcbiAgICBwdWJsaWMgc2V0IGNvdW50cmllc1ZhbHVlKHZhbHVlOiByZWFkb25seSBUdWlDb3VudHJ5SXNvQ29kZVtdKSB7XG4gICAgICAgIHRoaXMuY291bnRyaWVzLnNldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCdjb3VudHJ5SXNvQ29kZScpXG4gICAgcHVibGljIHNldCBpc29Db2RlKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgIHRoaXMuY29kZS5zZXQoY29kZSk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZChUdWlUZXh0ZmllbGREcm9wZG93bkRpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmfSlcbiAgICBwcm90ZWN0ZWQgc2V0IHRlbXBsYXRlKHRlbXBsYXRlOiBQb2x5bW9ycGhldXNDb250ZW50KSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uc2V0KHRlbXBsYXRlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHVubWFza2VkKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lbC52YWx1ZS5yZXBsYWNlQWxsKE5PVF9GT1JNX0NPTlRST0xfU1lNQk9MUywgJycpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHVpR2V0Q2FsbGluZ0NvZGUodGhpcy5jb2RlKCksIHRoaXMubWV0YWRhdGEoKSkgPyAnJyA6IHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblBhc3RlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMubWV0YWRhdGEoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHR1aUlzSW5wdXRFdmVudChldmVudCkgJiYgZXZlbnQuZGF0YTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhZGF0YSB8fFxuICAgICAgICAgICAgIW1ldGFkYXRhIHx8XG4gICAgICAgICAgICAoIWV2ZW50LmlucHV0VHlwZS5pbmNsdWRlcygnRHJvcCcpICYmICFldmVudC5pbnB1dFR5cGUuaW5jbHVkZXMoJ1Bhc3RlJykpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhLnN0YXJ0c1dpdGgoQ0hBUl9QTFVTKSA/IGRhdGEgOiBDSEFSX1BMVVMgKyBkYXRhO1xuICAgICAgICBjb25zdCBjb2RlID0gbWFza2l0b0dldENvdW50cnlGcm9tTnVtYmVyKHZhbHVlLCBtZXRhZGF0YSk7XG5cbiAgICAgICAgaWYgKGNvZGUgJiYgdmFsaWRhdGVQaG9uZU51bWJlckxlbmd0aCh2YWx1ZSkgIT09ICdUT09fU0hPUlQnKSB7XG4gICAgICAgICAgICB0aGlzLmNvZGUuc2V0KGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uSXRlbUNsaWNrKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWwuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5lbC52YWx1ZSA9IHRoaXMudW5tYXNrZWQ7XG4gICAgICAgIHRoaXMub3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNvZGUuc2V0KGNvZGUpO1xuICAgICAgICB0aGlzLnNlYXJjaC5zZXQoJycpO1xuICAgICAgICB0aGlzLmVsLnZhbHVlID0gbWFza2l0b1RyYW5zZm9ybShcbiAgICAgICAgICAgIHRoaXMuZWwudmFsdWUgfHwgdHVpR2V0Q2FsbGluZ0NvZGUoY29kZSwgdGhpcy5tZXRhZGF0YSgpKSxcbiAgICAgICAgICAgIHRoaXMubWFzaygpIHx8IE1BU0tJVE9fREVGQVVMVF9PUFRJT05TLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudW5tYXNrZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcHV0ZU1hc2soXG4gICAgICAgIGNvdW50cnlJc29Db2RlOiBUdWlDb3VudHJ5SXNvQ29kZSxcbiAgICAgICAgbWV0YWRhdGE/OiBNZXRhZGF0YUpzb24sXG4gICAgKTogTWFza2l0b09wdGlvbnMgfCBudWxsIHtcbiAgICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7cGx1Z2lucywgLi4ub3B0aW9uc30gPSBtYXNraXRvUGhvbmVPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgIGNvdW50cnlJc29Db2RlLFxuICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAgICBzZXBhcmF0b3I6IHRoaXMub3B0aW9ucy5zZXBhcmF0b3IsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgcGx1Z2luczogWy4uLnBsdWdpbnMsIG1hc2tpdG9Jbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4oKV0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHVpVGV4dGZpZWxkQ29udGVudD5cbiAgICA8YnV0dG9uXG4gICAgICAgIGFwcGVhcmFuY2U9XCJ0ZXh0ZmllbGRcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgIHR1aUNoZXZyb25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1pcGktc2VsZWN0XCJcbiAgICAgICAgW2F0dHIuZGF0YS1tb2RlXT1cIm1vZGUoKVwiXG4gICAgICAgIFtjbGFzcy50LWlwaS1zZWxlY3RfcmVhZG9ubHldPVwicmVhZE9ubHkoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgW3NpemVdPVwic2l6ZSgpXCJcbiAgICAgICAgW3R1aUFwcGVhcmFuY2VGb2N1c109XCJvcGVuKClcIlxuICAgICAgICAobW91c2Vkb3duLnByZXZlbnQpPVwiaW50ZXJhY3RpdmUoKSAmJiBvcGVuLnNldCghb3BlbigpKVwiXG4gICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgICBjbGFzcz1cInQtaXBpLWZsYWdcIlxuICAgICAgICAgICAgW2FsdF09XCJuYW1lcygpPy5bY29kZSgpXVwiXG4gICAgICAgICAgICBbY2xhc3MudC1pcGktZmxhZ19zbWFsbF09XCJzaXplKCkgPT09ICdzJ1wiXG4gICAgICAgICAgICBbc3JjXT1cImNvZGUoKSB8IHR1aUZsYWdcIlxuICAgICAgICAvPlxuICAgIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICp0dWlUZXh0ZmllbGREcm9wZG93bj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiY291bnRyeVNlYXJjaFwiXG4gICAgICAgICNlbGVtZW50XG4gICAgICAgIGNsYXNzPVwidC1pcGktc2VhcmNoXCJcbiAgICA+XG4gICAgICAgIDx0dWktdGV4dGZpZWxkXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cImljb25zLnNlYXJjaFwiXG4gICAgICAgICAgICBbdHVpVGV4dGZpZWxkU2l6ZV09XCJzaXplKCkgPT09ICdzJyA/ICdzJyA6ICdtJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIFtmb2N1c2VkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgW3R1aUF1dG9Gb2N1c109XCIhIWVsZW1lbnQuY2xvc2VzdCgndHVpLWRyb3Bkb3duLW1vYmlsZScpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwibGlzdC5nZXQoMCk/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaC5zZXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8dHVpLWRhdGEtbGlzdCBjbGFzcz1cInQtaXBpLW9wdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWQoKVwiXG4gICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW3R1aUNlbGxdPVwic2l6ZSgpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtLmlzbylcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtaXBpLWZsYWdcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50LWlwaS1mbGFnX3NtYWxsXT1cInNpemUoKSA9PT0gJ3MnXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaXNvIHwgdHVpRmxhZ1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gdHVpVGl0bGU+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0LWlwaS1jb2RlXCI+e3sgaXRlbS5jb2RlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L3R1aS1kYXRhLWxpc3Q+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWktZXhwZXJpbWVudGFsLWNvbXBvbmVudHMtaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVyaW1lbnRhbC9jb21wb25lbnRzL2lucHV0LXBob25lLWludGVybmF0aW9uYWwvdGFpZ2EtdWktZXhwZXJpbWVudGFsLWNvbXBvbmVudHMtaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWktZXhwZXJpbWVudGFsLWNvbXBvbmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcmltZW50YWwvY29tcG9uZW50cy90YWlnYS11aS1leHBlcmltZW50YWwtY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
package/esm2022/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from '@taiga-ui/experimental/components';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9leHBlcmltZW50YWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJ0B0YWlnYS11aS9leHBlcmltZW50YWwvY29tcG9uZW50cyc7XG4iXX0=
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, signal, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
4
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
|
|
6
|
+
import { TuiHoveredService } from '@taiga-ui/cdk/directives/hovered';
|
|
7
|
+
import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
|
|
8
|
+
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
9
|
+
import { tuiClamp } from '@taiga-ui/cdk/utils/math';
|
|
10
|
+
import { tuiPx, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
11
|
+
import { tuiFadeIn, tuiScaleIn } from '@taiga-ui/core/animations';
|
|
12
|
+
import { TuiRectAccessor } from '@taiga-ui/core/classes';
|
|
13
|
+
import { tuiButtonOptionsProvider } from '@taiga-ui/core/components/button';
|
|
14
|
+
import * as i1 from '@taiga-ui/core/directives/appearance';
|
|
15
|
+
import { tuiAppearance, TuiAppearance } from '@taiga-ui/core/directives/appearance';
|
|
16
|
+
import { TuiHintHover, TuiHintPointer, TuiHintUnstyledComponent, TUI_HINT_PROVIDERS, TUI_HINT_COMPONENT } from '@taiga-ui/core/directives/hint';
|
|
17
|
+
import { TuiVisualViewportService, TuiPositionService } from '@taiga-ui/core/services';
|
|
18
|
+
import { TUI_VIEWPORT, TUI_ANIMATIONS_SPEED } from '@taiga-ui/core/tokens';
|
|
19
|
+
import { tuiToAnimationOptions, tuiIsObscured } from '@taiga-ui/core/utils';
|
|
20
|
+
import { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
|
|
21
|
+
import { takeWhile, map } from 'rxjs';
|
|
22
|
+
|
|
23
|
+
const GAP = 8;
|
|
24
|
+
class TuiHintComponent {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.el = tuiInjectElement();
|
|
27
|
+
this.hover = inject(TuiHintHover);
|
|
28
|
+
this.vvs = inject(TuiVisualViewportService);
|
|
29
|
+
this.viewport = inject(TUI_VIEWPORT);
|
|
30
|
+
this.dummy = { value: '', params: { end: 1, start: 1 } };
|
|
31
|
+
this.options = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED), 'cubic-bezier(0.35, 1.3, 0.25, 1)');
|
|
32
|
+
this.pointer = inject(TuiHintPointer, { optional: true });
|
|
33
|
+
this.accessor = inject(TuiRectAccessor);
|
|
34
|
+
this.hint = injectContext().$implicit;
|
|
35
|
+
this.isMobile = inject(TUI_IS_MOBILE);
|
|
36
|
+
this.content = this.hint.component.component === TuiHintUnstyledComponent
|
|
37
|
+
? signal('')
|
|
38
|
+
: this.hint.content;
|
|
39
|
+
this.theme = this.hint.el
|
|
40
|
+
.closest('[tuiTheme]')
|
|
41
|
+
?.getAttribute('tuiTheme');
|
|
42
|
+
this.appearance = tuiAppearance(this.hint.appearance);
|
|
43
|
+
inject(TuiPositionService)
|
|
44
|
+
.pipe(takeWhile(() => this.hint.el.isConnected), map((point) => this.vvs.correct(point)), takeUntilDestroyed())
|
|
45
|
+
.subscribe({
|
|
46
|
+
next: ([top, left]) => this.update(top, left),
|
|
47
|
+
complete: () => this.hover.toggle(false),
|
|
48
|
+
});
|
|
49
|
+
inject(TuiHoveredService)
|
|
50
|
+
.pipe(takeUntilDestroyed())
|
|
51
|
+
.subscribe((hover) => this.hover.toggle(hover));
|
|
52
|
+
}
|
|
53
|
+
onClick(target) {
|
|
54
|
+
if ((!target.closest('tui-hint') && !this.hint.el.contains(target)) ||
|
|
55
|
+
tuiIsObscured(this.hint.el)) {
|
|
56
|
+
this.hover.toggle(false);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
apply(top, left, beakTop, beakLeft) {
|
|
60
|
+
this.el.style.top = top;
|
|
61
|
+
this.el.style.left = left;
|
|
62
|
+
this.el.style.setProperty('--top', `${beakTop}%`);
|
|
63
|
+
this.el.style.setProperty('--left', `${beakLeft}%`);
|
|
64
|
+
this.el.style.setProperty('--rotate', !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg');
|
|
65
|
+
}
|
|
66
|
+
update(top, left) {
|
|
67
|
+
const { clientHeight, clientWidth } = this.el;
|
|
68
|
+
const rect = this.accessor.getClientRect();
|
|
69
|
+
const viewport = this.viewport.getClientRect();
|
|
70
|
+
if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const safeLeft = tuiClamp(left, GAP, viewport.width - clientWidth - GAP);
|
|
74
|
+
const [beakTop, beakLeft] = this.vvs.correct([
|
|
75
|
+
rect.top + rect.height / 2 - top,
|
|
76
|
+
rect.left + rect.width / 2 - safeLeft,
|
|
77
|
+
]);
|
|
78
|
+
this.apply(tuiPx(Math.round(top)), tuiPx(Math.round(safeLeft)), Math.round((tuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100), Math.round((tuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100));
|
|
79
|
+
}
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiHintComponent, isStandalone: true, selector: "tui-hint", host: { listeners: { "document:click": "onClick($event.target)" }, properties: { "@tuiScaleIn": "isMobile ? options : dummy", "@tuiFadeIn": "options", "class._untouchable": "pointer", "class._mobile": "isMobile", "attr.tuiTheme": "theme" } }, providers: [TUI_HINT_PROVIDERS, tuiButtonOptionsProvider({ size: 's' })], hostDirectives: [{ directive: i1.TuiAppearance }], ngImport: i0, template: `
|
|
82
|
+
<ng-content />
|
|
83
|
+
<span
|
|
84
|
+
*polymorpheusOutlet="content() as text; context: hint.context"
|
|
85
|
+
[innerHTML]="text"
|
|
86
|
+
></span>
|
|
87
|
+
`, isInline: true, styles: [":host{position:absolute;max-inline-size:20rem;padding:.75rem 1rem;background:var(--tui-background-accent-1);border-radius:var(--tui-radius-l);color:var(--tui-text-primary-on-accent-1);box-sizing:border-box;font:var(--tui-font-text-s);white-space:pre-line;overflow-wrap:break-word;transform-origin:var(--left) var(--top)}:host:before{content:\"\";position:absolute;top:var(--top);left:var(--left);inline-size:.75rem;block-size:.5rem;background:inherit;-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 12 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.61336 1.69607L2.44882 2.96493C1.84795 3.61964 0.949361 3.99951 0.00053941 4C0.000359608 4 0.000179805 4 0 4C0.000179863 4 0.000359764 4 0.000539623 4C0.949362 4.00049 1.84795 4.38036 2.44882 5.03506L3.61336 6.30394C4.55981 7.33517 5.03303 7.85079 5.63254 7.96535C5.87433 8.01155 6.12436 8.01155 6.36616 7.96535C6.96567 7.85079 7.43889 7.33517 8.38534 6.30393L9.54988 5.03507C10.1511 4.37994 11.0505 4 12 4C11.0505 4 10.1511 3.62006 9.54988 2.96493L8.38534 1.69606C7.43889 0.664826 6.96567 0.149207 6.36616 0.0346517C6.12436 -0.0115506 5.87433 -0.0115506 5.63254 0.0346517C5.03303 0.149207 4.55981 0.664827 3.61336 1.69607Z\" /></svg>');mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 12 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.61336 1.69607L2.44882 2.96493C1.84795 3.61964 0.949361 3.99951 0.00053941 4C0.000359608 4 0.000179805 4 0 4C0.000179863 4 0.000359764 4 0.000539623 4C0.949362 4.00049 1.84795 4.38036 2.44882 5.03506L3.61336 6.30394C4.55981 7.33517 5.03303 7.85079 5.63254 7.96535C5.87433 8.01155 6.12436 8.01155 6.36616 7.96535C6.96567 7.85079 7.43889 7.33517 8.38534 6.30393L9.54988 5.03507C10.1511 4.37994 11.0505 4 12 4C11.0505 4 10.1511 3.62006 9.54988 2.96493L8.38534 1.69606C7.43889 0.664826 6.96567 0.149207 6.36616 0.0346517C6.12436 -0.0115506 5.87433 -0.0115506 5.63254 0.0346517C5.03303 0.149207 4.55981 0.664827 3.61336 1.69607Z\" /></svg>');transform:translate(-50%,-50%) rotate(var(--rotate))}:host._mobile{font:var(--tui-font-text-m)}:host._mobile:before{inline-size:1.5rem;block-size:1.125rem;-webkit-mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 18\"><path d=\"M7.22854 3.81615L4.89971 6.6711C3.69732 8.14514 1.8988 9 0 9C1.8988 9 3.69732 9.85486 4.89971 11.3289L7.22854 14.1839L7.22854 14.1839C9.12123 16.5041 10.0676 17.6643 11.2665 17.922C11.75 18.026 12.25 18.026 12.7335 17.922C13.9324 17.6643 14.8788 16.5041 16.7715 14.1839L19.1003 11.3289C20.3027 9.85486 22.1012 9 24 9C22.1012 9 20.3027 8.14514 19.1003 6.6711L16.7715 3.81614C14.8788 1.49586 13.9324 0.335716 12.7335 0.0779663C12.25 -0.0259888 11.75 -0.0259888 11.2665 0.0779663C10.0676 0.335716 9.12123 1.49586 7.22854 3.81614L7.22854 3.81615Z\" /></svg>');mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 18\"><path d=\"M7.22854 3.81615L4.89971 6.6711C3.69732 8.14514 1.8988 9 0 9C1.8988 9 3.69732 9.85486 4.89971 11.3289L7.22854 14.1839L7.22854 14.1839C9.12123 16.5041 10.0676 17.6643 11.2665 17.922C11.75 18.026 12.25 18.026 12.7335 17.922C13.9324 17.6643 14.8788 16.5041 16.7715 14.1839L19.1003 11.3289C20.3027 9.85486 22.1012 9 24 9C22.1012 9 20.3027 8.14514 19.1003 6.6711L16.7715 3.81614C14.8788 1.49586 13.9324 0.335716 12.7335 0.0779663C12.25 -0.0259888 11.75 -0.0259888 11.2665 0.0779663C10.0676 0.335716 9.12123 1.49586 7.22854 3.81614L7.22854 3.81615Z\" /></svg>')}:host:not([style*=top]){visibility:hidden}:host._untouchable{pointer-events:none}:host ::ng-deep [tuiTitle]{margin-block-end:.75rem}:host ::ng-deep [tuiTitle] [tuiSubtitle]{color:var(--tui-text-secondary)}:host ::ng-deep [tuiTitle]+footer{margin-block-start:.75rem}:host ::ng-deep [tuiIconButton][data-appearance=icon][data-size=xs]{float:inline-end;margin-inline-end:-.25rem}:host ::ng-deep img{display:block;border-radius:var(--tui-radius-m)}:host ::ng-deep footer{display:flex;justify-content:flex-end;gap:.5rem;inline-size:18rem;margin:1rem 0 .25rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], animations: [tuiFadeIn, tuiScaleIn], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
88
|
+
}
|
|
89
|
+
__decorate([
|
|
90
|
+
tuiPure
|
|
91
|
+
], TuiHintComponent.prototype, "apply", null);
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHintComponent, decorators: [{
|
|
93
|
+
type: Component,
|
|
94
|
+
args: [{ standalone: true, selector: 'tui-hint', imports: [PolymorpheusOutlet], template: `
|
|
95
|
+
<ng-content />
|
|
96
|
+
<span
|
|
97
|
+
*polymorpheusOutlet="content() as text; context: hint.context"
|
|
98
|
+
[innerHTML]="text"
|
|
99
|
+
></span>
|
|
100
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, providers: [TUI_HINT_PROVIDERS, tuiButtonOptionsProvider({ size: 's' })], animations: [tuiFadeIn, tuiScaleIn], hostDirectives: [TuiAppearance], host: {
|
|
101
|
+
'[@tuiScaleIn]': 'isMobile ? options : dummy',
|
|
102
|
+
'[@tuiFadeIn]': 'options',
|
|
103
|
+
'[class._untouchable]': 'pointer',
|
|
104
|
+
'[class._mobile]': 'isMobile',
|
|
105
|
+
'[attr.tuiTheme]': 'theme',
|
|
106
|
+
'(document:click)': 'onClick($event.target)',
|
|
107
|
+
}, styles: [":host{position:absolute;max-inline-size:20rem;padding:.75rem 1rem;background:var(--tui-background-accent-1);border-radius:var(--tui-radius-l);color:var(--tui-text-primary-on-accent-1);box-sizing:border-box;font:var(--tui-font-text-s);white-space:pre-line;overflow-wrap:break-word;transform-origin:var(--left) var(--top)}:host:before{content:\"\";position:absolute;top:var(--top);left:var(--left);inline-size:.75rem;block-size:.5rem;background:inherit;-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 12 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.61336 1.69607L2.44882 2.96493C1.84795 3.61964 0.949361 3.99951 0.00053941 4C0.000359608 4 0.000179805 4 0 4C0.000179863 4 0.000359764 4 0.000539623 4C0.949362 4.00049 1.84795 4.38036 2.44882 5.03506L3.61336 6.30394C4.55981 7.33517 5.03303 7.85079 5.63254 7.96535C5.87433 8.01155 6.12436 8.01155 6.36616 7.96535C6.96567 7.85079 7.43889 7.33517 8.38534 6.30393L9.54988 5.03507C10.1511 4.37994 11.0505 4 12 4C11.0505 4 10.1511 3.62006 9.54988 2.96493L8.38534 1.69606C7.43889 0.664826 6.96567 0.149207 6.36616 0.0346517C6.12436 -0.0115506 5.87433 -0.0115506 5.63254 0.0346517C5.03303 0.149207 4.55981 0.664827 3.61336 1.69607Z\" /></svg>');mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 12 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.61336 1.69607L2.44882 2.96493C1.84795 3.61964 0.949361 3.99951 0.00053941 4C0.000359608 4 0.000179805 4 0 4C0.000179863 4 0.000359764 4 0.000539623 4C0.949362 4.00049 1.84795 4.38036 2.44882 5.03506L3.61336 6.30394C4.55981 7.33517 5.03303 7.85079 5.63254 7.96535C5.87433 8.01155 6.12436 8.01155 6.36616 7.96535C6.96567 7.85079 7.43889 7.33517 8.38534 6.30393L9.54988 5.03507C10.1511 4.37994 11.0505 4 12 4C11.0505 4 10.1511 3.62006 9.54988 2.96493L8.38534 1.69606C7.43889 0.664826 6.96567 0.149207 6.36616 0.0346517C6.12436 -0.0115506 5.87433 -0.0115506 5.63254 0.0346517C5.03303 0.149207 4.55981 0.664827 3.61336 1.69607Z\" /></svg>');transform:translate(-50%,-50%) rotate(var(--rotate))}:host._mobile{font:var(--tui-font-text-m)}:host._mobile:before{inline-size:1.5rem;block-size:1.125rem;-webkit-mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 18\"><path d=\"M7.22854 3.81615L4.89971 6.6711C3.69732 8.14514 1.8988 9 0 9C1.8988 9 3.69732 9.85486 4.89971 11.3289L7.22854 14.1839L7.22854 14.1839C9.12123 16.5041 10.0676 17.6643 11.2665 17.922C11.75 18.026 12.25 18.026 12.7335 17.922C13.9324 17.6643 14.8788 16.5041 16.7715 14.1839L19.1003 11.3289C20.3027 9.85486 22.1012 9 24 9C22.1012 9 20.3027 8.14514 19.1003 6.6711L16.7715 3.81614C14.8788 1.49586 13.9324 0.335716 12.7335 0.0779663C12.25 -0.0259888 11.75 -0.0259888 11.2665 0.0779663C10.0676 0.335716 9.12123 1.49586 7.22854 3.81614L7.22854 3.81615Z\" /></svg>');mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 18\"><path d=\"M7.22854 3.81615L4.89971 6.6711C3.69732 8.14514 1.8988 9 0 9C1.8988 9 3.69732 9.85486 4.89971 11.3289L7.22854 14.1839L7.22854 14.1839C9.12123 16.5041 10.0676 17.6643 11.2665 17.922C11.75 18.026 12.25 18.026 12.7335 17.922C13.9324 17.6643 14.8788 16.5041 16.7715 14.1839L19.1003 11.3289C20.3027 9.85486 22.1012 9 24 9C22.1012 9 20.3027 8.14514 19.1003 6.6711L16.7715 3.81614C14.8788 1.49586 13.9324 0.335716 12.7335 0.0779663C12.25 -0.0259888 11.75 -0.0259888 11.2665 0.0779663C10.0676 0.335716 9.12123 1.49586 7.22854 3.81614L7.22854 3.81615Z\" /></svg>')}:host:not([style*=top]){visibility:hidden}:host._untouchable{pointer-events:none}:host ::ng-deep [tuiTitle]{margin-block-end:.75rem}:host ::ng-deep [tuiTitle] [tuiSubtitle]{color:var(--tui-text-secondary)}:host ::ng-deep [tuiTitle]+footer{margin-block-start:.75rem}:host ::ng-deep [tuiIconButton][data-appearance=icon][data-size=xs]{float:inline-end;margin-inline-end:-.25rem}:host ::ng-deep img{display:block;border-radius:var(--tui-radius-m)}:host ::ng-deep footer{display:flex;justify-content:flex-end;gap:.5rem;inline-size:18rem;margin:1rem 0 .25rem}\n"] }]
|
|
108
|
+
}], ctorParameters: function () { return []; }, propDecorators: { apply: [] } });
|
|
109
|
+
function tuiProvideExperimentalHint() {
|
|
110
|
+
return {
|
|
111
|
+
provide: TUI_HINT_COMPONENT,
|
|
112
|
+
useValue: TuiHintComponent,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Generated bundle index. Do not edit.
|
|
118
|
+
*/
|
|
119
|
+
|
|
120
|
+
export { TuiHintComponent, tuiProvideExperimentalHint };
|
|
121
|
+
//# sourceMappingURL=taiga-ui-experimental-components-hint.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taiga-ui-experimental-components-hint.mjs","sources":["../../../projects/experimental/components/hint/hint.component.ts","../../../projects/experimental/components/hint/taiga-ui-experimental-components-hint.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {ChangeDetectionStrategy, Component, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure, tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiFadeIn, tuiScaleIn} from '@taiga-ui/core/animations';\nimport {TuiRectAccessor} from '@taiga-ui/core/classes';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiAppearance, tuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport type {TuiHintDirective} from '@taiga-ui/core/directives/hint';\nimport {\n TUI_HINT_COMPONENT,\n TUI_HINT_PROVIDERS,\n TuiHintHover,\n TuiHintPointer,\n TuiHintUnstyledComponent,\n} from '@taiga-ui/core/directives/hint';\nimport {TuiPositionService, TuiVisualViewportService} from '@taiga-ui/core/services';\nimport {TUI_ANIMATIONS_SPEED, TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {tuiIsObscured, tuiToAnimationOptions} from '@taiga-ui/core/utils';\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {map, takeWhile} from 'rxjs';\n\nconst GAP = 8;\n\n@Component({\n standalone: true,\n selector: 'tui-hint',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"content() as text; context: hint.context\"\n [innerHTML]=\"text\"\n ></span>\n `,\n styleUrls: ['./hint.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TUI_HINT_PROVIDERS, tuiButtonOptionsProvider({size: 's'})],\n animations: [tuiFadeIn, tuiScaleIn],\n hostDirectives: [TuiAppearance],\n host: {\n '[@tuiScaleIn]': 'isMobile ? options : dummy',\n '[@tuiFadeIn]': 'options',\n '[class._untouchable]': 'pointer',\n '[class._mobile]': 'isMobile',\n '[attr.tuiTheme]': 'theme',\n '(document:click)': 'onClick($event.target)',\n },\n})\nexport class TuiHintComponent<C = any> {\n private readonly el = tuiInjectElement();\n private readonly hover = inject(TuiHintHover);\n private readonly vvs = inject(TuiVisualViewportService);\n private readonly viewport = inject(TUI_VIEWPORT);\n\n protected readonly dummy = {value: '', params: {end: 1, start: 1}};\n protected readonly options = tuiToAnimationOptions(\n inject(TUI_ANIMATIONS_SPEED),\n 'cubic-bezier(0.35, 1.3, 0.25, 1)',\n );\n\n protected readonly pointer = inject(TuiHintPointer, {optional: true});\n protected readonly accessor = inject(TuiRectAccessor);\n protected readonly hint = injectContext<TuiContext<TuiHintDirective<C>>>().$implicit;\n protected readonly isMobile = inject(TUI_IS_MOBILE);\n\n protected readonly content =\n this.hint.component.component === TuiHintUnstyledComponent\n ? signal('')\n : this.hint.content;\n\n protected readonly theme = this.hint.el\n .closest('[tuiTheme]')\n ?.getAttribute('tuiTheme');\n\n protected readonly appearance = tuiAppearance(this.hint.appearance);\n\n constructor() {\n inject(TuiPositionService)\n .pipe(\n takeWhile(() => this.hint.el.isConnected),\n map((point) => this.vvs.correct(point)),\n takeUntilDestroyed(),\n )\n .subscribe({\n next: ([top, left]) => this.update(top, left),\n complete: () => this.hover.toggle(false),\n });\n\n inject(TuiHoveredService)\n .pipe(takeUntilDestroyed())\n .subscribe((hover) => this.hover.toggle(hover));\n }\n\n protected onClick(target: HTMLElement): void {\n if (\n (!target.closest('tui-hint') && !this.hint.el.contains(target)) ||\n tuiIsObscured(this.hint.el)\n ) {\n this.hover.toggle(false);\n }\n }\n\n @tuiPure\n private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\n this.el.style.top = top;\n this.el.style.left = left;\n this.el.style.setProperty('--top', `${beakTop}%`);\n this.el.style.setProperty('--left', `${beakLeft}%`);\n this.el.style.setProperty(\n '--rotate',\n !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg',\n );\n }\n\n private update(top: number, left: number): void {\n const {clientHeight, clientWidth} = this.el;\n const rect = this.accessor.getClientRect();\n const viewport = this.viewport.getClientRect();\n\n if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\n return;\n }\n\n const safeLeft = tuiClamp(left, GAP, viewport.width - clientWidth - GAP);\n const [beakTop, beakLeft] = this.vvs.correct([\n rect.top + rect.height / 2 - top,\n rect.left + rect.width / 2 - safeLeft,\n ]);\n\n this.apply(\n tuiPx(Math.round(top)),\n tuiPx(Math.round(safeLeft)),\n Math.round((tuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100),\n Math.round((tuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100),\n );\n }\n}\n\nexport function tuiProvideExperimentalHint(): Provider {\n return {\n provide: TUI_HINT_COMPONENT,\n useValue: TuiHintComponent,\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { NgForOf, NgIf } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, signal, computed, TemplateRef, ElementRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChildren, Input, Output, ViewChild } from '@angular/core';
|
|
4
|
+
import { toSignal, takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
5
|
+
import * as i3 from '@angular/forms';
|
|
6
|
+
import { FormsModule } from '@angular/forms';
|
|
7
|
+
import * as i1 from '@maskito/angular';
|
|
8
|
+
import { MaskitoDirective } from '@maskito/angular';
|
|
9
|
+
import { maskitoTransform, MASKITO_DEFAULT_OPTIONS, maskitoInitialCalibrationPlugin } from '@maskito/core';
|
|
10
|
+
import { maskitoGetCountryFromNumber, maskitoPhoneOptionsGenerator } from '@maskito/phone';
|
|
11
|
+
import { TuiControl, tuiAsControl } from '@taiga-ui/cdk/classes';
|
|
12
|
+
import { EMPTY_QUERY, TUI_DEFAULT_MATCHER, CHAR_PLUS } from '@taiga-ui/cdk/constants';
|
|
13
|
+
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
14
|
+
import { tuiAutoFocusOptionsProvider, TuiAutoFocus } from '@taiga-ui/cdk/directives/auto-focus';
|
|
15
|
+
import { TUI_IS_IOS, tuiFallbackValueProvider } from '@taiga-ui/cdk/tokens';
|
|
16
|
+
import { tuiInjectElement, tuiIsInputEvent } from '@taiga-ui/cdk/utils/dom';
|
|
17
|
+
import { tuiDirectiveBinding } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
18
|
+
import { TuiButton } from '@taiga-ui/core/components/button';
|
|
19
|
+
import * as i4 from '@taiga-ui/core/components/data-list';
|
|
20
|
+
import { TuiOption, TuiDataList } from '@taiga-ui/core/components/data-list';
|
|
21
|
+
import { TuiIcon } from '@taiga-ui/core/components/icon';
|
|
22
|
+
import * as i2 from '@taiga-ui/core/components/textfield';
|
|
23
|
+
import { TUI_TEXTFIELD_OPTIONS, TuiTextfieldDropdownDirective, TuiTextfieldContent, TuiTextfield, TuiWithTextfield } from '@taiga-ui/core/components/textfield';
|
|
24
|
+
import { tuiDropdownOpen, tuiDropdown, TuiDropdownOpen } from '@taiga-ui/core/directives/dropdown';
|
|
25
|
+
import { TuiTitle } from '@taiga-ui/core/directives/title';
|
|
26
|
+
import { TuiFlagPipe } from '@taiga-ui/core/pipes';
|
|
27
|
+
import { TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
|
|
28
|
+
import { TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS } from '@taiga-ui/kit/components/input-phone-international';
|
|
29
|
+
import { TuiChevron } from '@taiga-ui/kit/directives/chevron';
|
|
30
|
+
import { TUI_INTERNATIONAL_SEARCH, TUI_COUNTRIES } from '@taiga-ui/kit/tokens';
|
|
31
|
+
import { tuiMaskito, tuiGetCallingCode } from '@taiga-ui/kit/utils';
|
|
32
|
+
import { TuiCell } from '@taiga-ui/layout/components/cell';
|
|
33
|
+
import { validatePhoneNumberLength } from 'libphonenumber-js';
|
|
34
|
+
import { from, filter, skip } from 'rxjs';
|
|
35
|
+
|
|
36
|
+
const NOT_FORM_CONTROL_SYMBOLS = /[^+\d]/g;
|
|
37
|
+
class TuiInputPhoneInternational extends TuiControl {
|
|
38
|
+
constructor() {
|
|
39
|
+
super(...arguments);
|
|
40
|
+
this.list = EMPTY_QUERY;
|
|
41
|
+
this.el = tuiInjectElement();
|
|
42
|
+
this.ios = inject(TUI_IS_IOS);
|
|
43
|
+
this.icons = inject(TUI_COMMON_ICONS);
|
|
44
|
+
this.options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);
|
|
45
|
+
this.countries = signal(this.options.countries);
|
|
46
|
+
this.code = signal(this.options.countryIsoCode);
|
|
47
|
+
this.label = toSignal(inject(TUI_INTERNATIONAL_SEARCH));
|
|
48
|
+
this.metadata = toSignal(from(this.options.metadata));
|
|
49
|
+
this.names = toSignal(inject(TUI_COUNTRIES));
|
|
50
|
+
this.open = tuiDropdownOpen();
|
|
51
|
+
this.dropdown = tuiDropdown(null);
|
|
52
|
+
this.search = signal('');
|
|
53
|
+
this.size = inject(TUI_TEXTFIELD_OPTIONS).size;
|
|
54
|
+
this.mask = tuiMaskito(computed(() => this.computeMask(this.code(), this.metadata())));
|
|
55
|
+
this.masked = computed(() => maskitoTransform(this.value(), this.mask() || MASKITO_DEFAULT_OPTIONS) ||
|
|
56
|
+
this.el.value);
|
|
57
|
+
this.filtered = computed(() => this.countries()
|
|
58
|
+
.map((iso) => ({
|
|
59
|
+
iso,
|
|
60
|
+
name: this.names()?.[iso] || '',
|
|
61
|
+
code: tuiGetCallingCode(iso, this.metadata()),
|
|
62
|
+
}))
|
|
63
|
+
.filter(({ name, code }) => TUI_DEFAULT_MATCHER(name + code, this.search())));
|
|
64
|
+
this.enabled = tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownEnabled', this.interactive, {});
|
|
65
|
+
this.$ = inject(TuiActiveZone)
|
|
66
|
+
.tuiActiveZoneChange.pipe(filter(() => !this.readOnly()), takeUntilDestroyed())
|
|
67
|
+
.subscribe((active) => {
|
|
68
|
+
const prefix = `${tuiGetCallingCode(this.code(), this.metadata())} `;
|
|
69
|
+
const fallback = active ? this.el.value || prefix : this.el.value;
|
|
70
|
+
this.search.set('');
|
|
71
|
+
this.el.value = this.el.value === prefix ? '' : fallback;
|
|
72
|
+
});
|
|
73
|
+
this.countrySearch = false;
|
|
74
|
+
this.countryIsoCodeChange = toObservable(this.code).pipe(skip(1));
|
|
75
|
+
}
|
|
76
|
+
set countriesValue(value) {
|
|
77
|
+
this.countries.set(value);
|
|
78
|
+
}
|
|
79
|
+
set isoCode(code) {
|
|
80
|
+
this.code.set(code);
|
|
81
|
+
}
|
|
82
|
+
set template(template) {
|
|
83
|
+
this.dropdown.set(template);
|
|
84
|
+
}
|
|
85
|
+
get unmasked() {
|
|
86
|
+
const value = this.el.value.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');
|
|
87
|
+
return value === tuiGetCallingCode(this.code(), this.metadata()) ? '' : value;
|
|
88
|
+
}
|
|
89
|
+
onPaste(event) {
|
|
90
|
+
const metadata = this.metadata();
|
|
91
|
+
const data = tuiIsInputEvent(event) && event.data;
|
|
92
|
+
if (!data ||
|
|
93
|
+
!metadata ||
|
|
94
|
+
(!event.inputType.includes('Drop') && !event.inputType.includes('Paste'))) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const value = data.startsWith(CHAR_PLUS) ? data : CHAR_PLUS + data;
|
|
98
|
+
const code = maskitoGetCountryFromNumber(value, metadata);
|
|
99
|
+
if (code && validatePhoneNumberLength(value) !== 'TOO_SHORT') {
|
|
100
|
+
this.code.set(code);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
onItemClick(code) {
|
|
104
|
+
this.el.focus();
|
|
105
|
+
this.el.value = this.unmasked;
|
|
106
|
+
this.open.set(false);
|
|
107
|
+
this.code.set(code);
|
|
108
|
+
this.search.set('');
|
|
109
|
+
this.el.value = maskitoTransform(this.el.value || tuiGetCallingCode(code, this.metadata()), this.mask() || MASKITO_DEFAULT_OPTIONS);
|
|
110
|
+
this.onChange(this.unmasked);
|
|
111
|
+
}
|
|
112
|
+
computeMask(countryIsoCode, metadata) {
|
|
113
|
+
if (!metadata) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
const { plugins, ...options } = maskitoPhoneOptionsGenerator({
|
|
117
|
+
countryIsoCode,
|
|
118
|
+
metadata,
|
|
119
|
+
separator: this.options.separator,
|
|
120
|
+
});
|
|
121
|
+
return {
|
|
122
|
+
...options,
|
|
123
|
+
plugins: [...plugins, maskitoInitialCalibrationPlugin()],
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputPhoneInternational, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
127
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputPhoneInternational, isStandalone: true, selector: "input[tuiInputPhoneInternational]", inputs: { countrySearch: "countrySearch", countriesValue: ["countries", "countriesValue"], isoCode: ["countryIsoCode", "isoCode"] }, outputs: { countryIsoCodeChange: "countryIsoCodeChange" }, host: { attributes: { "type": "tel" }, listeners: { "blur": "onTouched()", "input": "onChange(unmasked)", "click": "open.set(false)", "beforeinput.capture": "onPaste($event)" }, properties: { "attr.readonly": "readOnly() || null", "attr.inputmode": "!ios && open() ? \"none\" : null", "disabled": "disabled()", "value": "masked()" } }, providers: [
|
|
128
|
+
tuiAsControl(TuiInputPhoneInternational),
|
|
129
|
+
tuiFallbackValueProvider(''),
|
|
130
|
+
tuiAutoFocusOptionsProvider({ preventScroll: true }),
|
|
131
|
+
], viewQueries: [{ propertyName: "template", first: true, predicate: TuiTextfieldDropdownDirective, descendants: true, read: TemplateRef }, { propertyName: "list", predicate: TuiOption, descendants: true, read: ElementRef }], usesInheritance: true, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithTextfield }], ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (mousedown.prevent)=\"interactive() && open.set(!open())\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()?.[code()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"code() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-container *tuiTextfieldDropdown>\n <div\n *ngIf=\"countrySearch\"\n #element\n class=\"t-ipi-search\"\n >\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiTextfield\n type=\"text\"\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!!element.closest('tui-dropdown-mobile')\"\n (keydown.arrowDown)=\"list.get(0)?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n\n <tui-data-list class=\"t-ipi-options\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n [tuiCell]=\"size()\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]{left:var(--t-offset);border-start-start-radius:0;border-end-start-radius:0;inline-size:calc(100% - var(--t-offset))}tui-root:has(tui-dropdown-mobile) [tuiInputPhoneInternational][tuiInputPhoneInternational]{caret-color:transparent}[tuiInputPhoneInternational][tuiInputPhoneInternational]+label{padding-left:var(--t-offset)}tui-textfield[data-size=s]{--t-offset: 4.125rem}tui-textfield[data-size=s] .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]{--t-offset: 4.875rem}tui-textfield[data-size=m] .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]{--t-offset: 5.25rem}tui-textfield[data-size=l] .t-ipi-flag{margin:0 -.1875rem}.t-ipi-select{position:absolute;left:0;border-radius:inherit;border-start-end-radius:0;border-end-end-radius:0}.t-ipi-select_readonly{pointer-events:none}.t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}.t-ipi-code{color:var(--tui-text-secondary)}.t-ipi-search{position:sticky;top:0;z-index:1;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){.t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}tui-dropdown-mobile .t-ipi-search{background:var(--tui-background-elevation-1)}tui-dropdown-mobile .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiCell, selector: "[tuiCell]:not(ng-template)", inputs: ["tuiCell"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i4.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i4.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "component", type: i2.TuiTextfieldComponent, selector: "tui-textfield", inputs: ["stringify", "content", "filler"] }, { kind: "directive", type: i2.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: i2.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i2.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
132
|
+
}
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputPhoneInternational, decorators: [{
|
|
134
|
+
type: Component,
|
|
135
|
+
args: [{ standalone: true, selector: 'input[tuiInputPhoneInternational]', imports: [
|
|
136
|
+
FormsModule,
|
|
137
|
+
NgForOf,
|
|
138
|
+
NgIf,
|
|
139
|
+
TuiAutoFocus,
|
|
140
|
+
TuiButton,
|
|
141
|
+
TuiCell,
|
|
142
|
+
TuiChevron,
|
|
143
|
+
TuiDataList,
|
|
144
|
+
TuiFlagPipe,
|
|
145
|
+
TuiIcon,
|
|
146
|
+
TuiTextfield,
|
|
147
|
+
TuiTextfieldContent,
|
|
148
|
+
TuiTitle,
|
|
149
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
150
|
+
tuiAsControl(TuiInputPhoneInternational),
|
|
151
|
+
tuiFallbackValueProvider(''),
|
|
152
|
+
tuiAutoFocusOptionsProvider({ preventScroll: true }),
|
|
153
|
+
], hostDirectives: [MaskitoDirective, TuiWithTextfield], host: {
|
|
154
|
+
type: 'tel',
|
|
155
|
+
'[attr.readonly]': 'readOnly() || null',
|
|
156
|
+
'[attr.inputmode]': '!ios && open() ? "none" : null',
|
|
157
|
+
'[disabled]': 'disabled()',
|
|
158
|
+
'[value]': 'masked()',
|
|
159
|
+
'(blur)': 'onTouched()',
|
|
160
|
+
'(input)': 'onChange(unmasked)',
|
|
161
|
+
'(click)': 'open.set(false)',
|
|
162
|
+
'(beforeinput.capture)': 'onPaste($event)',
|
|
163
|
+
}, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (mousedown.prevent)=\"interactive() && open.set(!open())\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()?.[code()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"code() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-container *tuiTextfieldDropdown>\n <div\n *ngIf=\"countrySearch\"\n #element\n class=\"t-ipi-search\"\n >\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiTextfield\n type=\"text\"\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!!element.closest('tui-dropdown-mobile')\"\n (keydown.arrowDown)=\"list.get(0)?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n\n <tui-data-list class=\"t-ipi-options\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n [tuiCell]=\"size()\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]{left:var(--t-offset);border-start-start-radius:0;border-end-start-radius:0;inline-size:calc(100% - var(--t-offset))}tui-root:has(tui-dropdown-mobile) [tuiInputPhoneInternational][tuiInputPhoneInternational]{caret-color:transparent}[tuiInputPhoneInternational][tuiInputPhoneInternational]+label{padding-left:var(--t-offset)}tui-textfield[data-size=s]{--t-offset: 4.125rem}tui-textfield[data-size=s] .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]{--t-offset: 4.875rem}tui-textfield[data-size=m] .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]{--t-offset: 5.25rem}tui-textfield[data-size=l] .t-ipi-flag{margin:0 -.1875rem}.t-ipi-select{position:absolute;left:0;border-radius:inherit;border-start-end-radius:0;border-end-end-radius:0}.t-ipi-select_readonly{pointer-events:none}.t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}.t-ipi-code{color:var(--tui-text-secondary)}.t-ipi-search{position:sticky;top:0;z-index:1;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){.t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}tui-dropdown-mobile .t-ipi-search{background:var(--tui-background-elevation-1)}tui-dropdown-mobile .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}\n"] }]
|
|
164
|
+
}], propDecorators: { list: [{
|
|
165
|
+
type: ViewChildren,
|
|
166
|
+
args: [TuiOption, { read: ElementRef }]
|
|
167
|
+
}], countrySearch: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], countryIsoCodeChange: [{
|
|
170
|
+
type: Output
|
|
171
|
+
}], countriesValue: [{
|
|
172
|
+
type: Input,
|
|
173
|
+
args: ['countries']
|
|
174
|
+
}], isoCode: [{
|
|
175
|
+
type: Input,
|
|
176
|
+
args: ['countryIsoCode']
|
|
177
|
+
}], template: [{
|
|
178
|
+
type: ViewChild,
|
|
179
|
+
args: [TuiTextfieldDropdownDirective, { read: TemplateRef }]
|
|
180
|
+
}] } });
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Generated bundle index. Do not edit.
|
|
184
|
+
*/
|
|
185
|
+
|
|
186
|
+
export { TuiInputPhoneInternational };
|
|
187
|
+
//# sourceMappingURL=taiga-ui-experimental-components-input-phone-international.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taiga-ui-experimental-components-input-phone-international.mjs","sources":["../../../projects/experimental/components/input-phone-international/input-phone-international.component.ts","../../../projects/experimental/components/input-phone-international/input-phone-international.template.html","../../../projects/experimental/components/input-phone-international/taiga-ui-experimental-components-input-phone-international.ts"],"sourcesContent":["import {NgForOf, NgIf} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n Input,\n Output,\n signal,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport type {MaskitoOptions} from '@maskito/core';\nimport {\n MASKITO_DEFAULT_OPTIONS,\n maskitoInitialCalibrationPlugin,\n maskitoTransform,\n} from '@maskito/core';\nimport {maskitoGetCountryFromNumber, maskitoPhoneOptionsGenerator} from '@maskito/phone';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_PLUS, EMPTY_QUERY, TUI_DEFAULT_MATCHER} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {\n TuiAutoFocus,\n tuiAutoFocusOptionsProvider,\n} from '@taiga-ui/cdk/directives/auto-focus';\nimport {TUI_IS_IOS, tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement, tuiIsInputEvent} from '@taiga-ui/cdk/utils/dom';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList, TuiOption} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfield,\n TuiTextfieldContent,\n TuiTextfieldDropdownDirective,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {\n tuiDropdown,\n TuiDropdownOpen,\n tuiDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TuiTitle} from '@taiga-ui/core/directives/title';\nimport {TuiFlagPipe} from '@taiga-ui/core/pipes';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport type {TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS} from '@taiga-ui/kit/components/input-phone-international';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {TUI_COUNTRIES, TUI_INTERNATIONAL_SEARCH} from '@taiga-ui/kit/tokens';\nimport {tuiGetCallingCode, tuiMaskito} from '@taiga-ui/kit/utils';\nimport {TuiCell} from '@taiga-ui/layout/components/cell';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {validatePhoneNumberLength} from 'libphonenumber-js';\nimport type {MetadataJson} from 'libphonenumber-js/core';\nimport {filter, from, skip} from 'rxjs';\n\nconst NOT_FORM_CONTROL_SYMBOLS = /[^+\\d]/g;\n\n@Component({\n standalone: true,\n selector: 'input[tuiInputPhoneInternational]',\n imports: [\n FormsModule,\n NgForOf,\n NgIf,\n TuiAutoFocus,\n TuiButton,\n TuiCell,\n TuiChevron,\n TuiDataList,\n TuiFlagPipe,\n TuiIcon,\n TuiTextfield,\n TuiTextfieldContent,\n TuiTitle,\n ],\n templateUrl: './input-phone-international.template.html',\n styleUrls: ['./input-phone-international.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsControl(TuiInputPhoneInternational),\n tuiFallbackValueProvider(''),\n tuiAutoFocusOptionsProvider({preventScroll: true}),\n ],\n hostDirectives: [MaskitoDirective, TuiWithTextfield],\n host: {\n type: 'tel',\n '[attr.readonly]': 'readOnly() || null',\n '[attr.inputmode]': '!ios && open() ? \"none\" : null',\n '[disabled]': 'disabled()',\n '[value]': 'masked()',\n '(blur)': 'onTouched()',\n '(input)': 'onChange(unmasked)',\n '(click)': 'open.set(false)',\n '(beforeinput.capture)': 'onPaste($event)',\n },\n})\nexport class TuiInputPhoneInternational extends TuiControl<string> {\n @ViewChildren(TuiOption, {read: ElementRef})\n protected readonly list: QueryList<ElementRef<HTMLButtonElement>> = EMPTY_QUERY;\n\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly ios = inject(TUI_IS_IOS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);\n protected readonly countries = signal(this.options.countries);\n protected readonly code = signal(this.options.countryIsoCode);\n protected readonly label = toSignal(inject(TUI_INTERNATIONAL_SEARCH));\n protected readonly metadata = toSignal(from(this.options.metadata));\n protected readonly names = toSignal(inject(TUI_COUNTRIES));\n protected readonly open = tuiDropdownOpen();\n protected readonly dropdown = tuiDropdown(null);\n protected readonly search = signal<string>('');\n protected readonly size = inject(TUI_TEXTFIELD_OPTIONS).size;\n\n protected readonly mask = tuiMaskito(\n computed(() => this.computeMask(this.code(), this.metadata())),\n );\n\n protected readonly masked = computed(\n () =>\n maskitoTransform(this.value(), this.mask() || MASKITO_DEFAULT_OPTIONS) ||\n this.el.value,\n );\n\n protected readonly filtered = computed(() =>\n this.countries()\n .map((iso) => ({\n iso,\n name: this.names()?.[iso] || '',\n code: tuiGetCallingCode(iso, this.metadata()),\n }))\n .filter(({name, code}) => TUI_DEFAULT_MATCHER(name + code, this.search())),\n );\n\n protected readonly enabled = tuiDirectiveBinding(\n TuiDropdownOpen,\n 'tuiDropdownEnabled',\n this.interactive,\n {},\n );\n\n protected readonly $ = inject(TuiActiveZone)\n .tuiActiveZoneChange.pipe(\n filter(() => !this.readOnly()),\n takeUntilDestroyed(),\n )\n .subscribe((active) => {\n const prefix = `${tuiGetCallingCode(this.code(), this.metadata())} `;\n const fallback = active ? this.el.value || prefix : this.el.value;\n\n this.search.set('');\n this.el.value = this.el.value === prefix ? '' : fallback;\n });\n\n @Input()\n public countrySearch = false;\n\n @Output()\n public readonly countryIsoCodeChange = toObservable(this.code).pipe(skip(1));\n\n @Input('countries')\n public set countriesValue(value: readonly TuiCountryIsoCode[]) {\n this.countries.set(value);\n }\n\n @Input('countryIsoCode')\n public set isoCode(code: TuiCountryIsoCode) {\n this.code.set(code);\n }\n\n @ViewChild(TuiTextfieldDropdownDirective, {read: TemplateRef})\n protected set template(template: PolymorpheusContent) {\n this.dropdown.set(template);\n }\n\n protected get unmasked(): string {\n const value = this.el.value.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');\n\n return value === tuiGetCallingCode(this.code(), this.metadata()) ? '' : value;\n }\n\n protected onPaste(event: Event): void {\n const metadata = this.metadata();\n const data = tuiIsInputEvent(event) && event.data;\n\n if (\n !data ||\n !metadata ||\n (!event.inputType.includes('Drop') && !event.inputType.includes('Paste'))\n ) {\n return;\n }\n\n const value = data.startsWith(CHAR_PLUS) ? data : CHAR_PLUS + data;\n const code = maskitoGetCountryFromNumber(value, metadata);\n\n if (code && validatePhoneNumberLength(value) !== 'TOO_SHORT') {\n this.code.set(code);\n }\n }\n\n protected onItemClick(code: TuiCountryIsoCode): void {\n this.el.focus();\n this.el.value = this.unmasked;\n this.open.set(false);\n this.code.set(code);\n this.search.set('');\n this.el.value = maskitoTransform(\n this.el.value || tuiGetCallingCode(code, this.metadata()),\n this.mask() || MASKITO_DEFAULT_OPTIONS,\n );\n this.onChange(this.unmasked);\n }\n\n private computeMask(\n countryIsoCode: TuiCountryIsoCode,\n metadata?: MetadataJson,\n ): MaskitoOptions | null {\n if (!metadata) {\n return null;\n }\n\n const {plugins, ...options} = maskitoPhoneOptionsGenerator({\n countryIsoCode,\n metadata,\n separator: this.options.separator,\n });\n\n return {\n ...options,\n plugins: [...plugins, maskitoInitialCalibrationPlugin()],\n };\n }\n}\n","<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (mousedown.prevent)=\"interactive() && open.set(!open())\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()?.[code()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"code() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-container *tuiTextfieldDropdown>\n <div\n *ngIf=\"countrySearch\"\n #element\n class=\"t-ipi-search\"\n >\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiTextfield\n type=\"text\"\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!!element.closest('tui-dropdown-mobile')\"\n (keydown.arrowDown)=\"list.get(0)?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n\n <tui-data-list class=\"t-ipi-options\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n [tuiCell]=\"size()\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taiga-ui-experimental-components.mjs","sources":["../../../projects/experimental/components/taiga-ui-experimental-components.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;AAEG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-experimental.mjs","sources":["../../../projects/experimental/
|
|
1
|
+
{"version":3,"file":"taiga-ui-experimental.mjs","sources":["../../../projects/experimental/taiga-ui-experimental.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;AAEG"}
|
package/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from '@taiga-ui/experimental/components';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ui/experimental",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.19.0-canary.2a86fb0",
|
|
4
4
|
"description": "A package with Taiga UI experimental components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"peerDependencies": {
|
|
14
14
|
"@angular/common": ">=16.0.0",
|
|
15
15
|
"@angular/core": ">=16.0.0",
|
|
16
|
-
"@taiga-ui/addon-commerce": "^4.
|
|
17
|
-
"@taiga-ui/cdk": "^4.
|
|
18
|
-
"@taiga-ui/core": "^4.
|
|
19
|
-
"@taiga-ui/kit": "^4.
|
|
16
|
+
"@taiga-ui/addon-commerce": "^4.19.0",
|
|
17
|
+
"@taiga-ui/cdk": "^4.19.0",
|
|
18
|
+
"@taiga-ui/core": "^4.19.0",
|
|
19
|
+
"@taiga-ui/kit": "^4.19.0",
|
|
20
20
|
"@taiga-ui/polymorpheus": "^4.7.4",
|
|
21
21
|
"rxjs": ">=7.0.0"
|
|
22
22
|
},
|
|
@@ -31,6 +31,24 @@
|
|
|
31
31
|
"esm2022": "./esm2022/taiga-ui-experimental.mjs",
|
|
32
32
|
"esm": "./esm2022/taiga-ui-experimental.mjs",
|
|
33
33
|
"default": "./fesm2022/taiga-ui-experimental.mjs"
|
|
34
|
+
},
|
|
35
|
+
"./components": {
|
|
36
|
+
"types": "./components/index.d.ts",
|
|
37
|
+
"esm2022": "./esm2022/components/taiga-ui-experimental-components.mjs",
|
|
38
|
+
"esm": "./esm2022/components/taiga-ui-experimental-components.mjs",
|
|
39
|
+
"default": "./fesm2022/taiga-ui-experimental-components.mjs"
|
|
40
|
+
},
|
|
41
|
+
"./components/hint": {
|
|
42
|
+
"types": "./components/hint/index.d.ts",
|
|
43
|
+
"esm2022": "./esm2022/components/hint/taiga-ui-experimental-components-hint.mjs",
|
|
44
|
+
"esm": "./esm2022/components/hint/taiga-ui-experimental-components-hint.mjs",
|
|
45
|
+
"default": "./fesm2022/taiga-ui-experimental-components-hint.mjs"
|
|
46
|
+
},
|
|
47
|
+
"./components/input-phone-international": {
|
|
48
|
+
"types": "./components/input-phone-international/index.d.ts",
|
|
49
|
+
"esm2022": "./esm2022/components/input-phone-international/taiga-ui-experimental-components-input-phone-international.mjs",
|
|
50
|
+
"esm": "./esm2022/components/input-phone-international/taiga-ui-experimental-components-input-phone-international.mjs",
|
|
51
|
+
"default": "./fesm2022/taiga-ui-experimental-components-input-phone-international.mjs"
|
|
34
52
|
}
|
|
35
53
|
},
|
|
36
54
|
"sideEffects": false,
|