@taiga-ui/kit 4.47.0-canary.fb0273b → 4.48.0-canary.0b5890f
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/index.d.ts +1 -0
- package/components/input-date-multi/input-date-multi.directive.d.ts +1 -1
- package/components/input-phone/index.d.ts +2 -0
- package/components/input-phone/input-phone.directive.d.ts +27 -0
- package/components/input-phone/input-phone.options.d.ts +8 -0
- package/components/input-phone/utils/complete-phone-insertion-preprocessor.d.ts +9 -0
- package/components/input-phone/utils/create-phone-mask-expression.d.ts +7 -0
- package/directives/copy/copy.component.d.ts +15 -0
- package/directives/copy/copy.d.ts +3 -0
- package/directives/copy/copy.directive.d.ts +3 -3
- package/directives/copy/index.d.ts +2 -0
- package/esm2022/components/index.mjs +2 -1
- package/esm2022/components/input-date-multi/input-date-multi.directive.mjs +5 -11
- package/esm2022/components/input-phone/index.mjs +3 -0
- package/esm2022/components/input-phone/input-phone.directive.mjs +137 -0
- package/esm2022/components/input-phone/input-phone.options.mjs +9 -0
- package/esm2022/components/input-phone/taiga-ui-kit-components-input-phone.mjs +5 -0
- package/esm2022/components/input-phone/utils/complete-phone-insertion-preprocessor.mjs +41 -0
- package/esm2022/components/input-phone/utils/create-phone-mask-expression.mjs +17 -0
- package/esm2022/directives/copy/copy.component.mjs +48 -0
- package/esm2022/directives/copy/copy.directive.mjs +7 -7
- package/esm2022/directives/copy/copy.mjs +4 -0
- package/esm2022/directives/copy/copy.options.mjs +2 -4
- package/esm2022/directives/copy/index.mjs +4 -1
- package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +4 -10
- package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-phone.mjs +206 -0
- package/fesm2022/taiga-ui-kit-components-input-phone.mjs.map +1 -0
- package/fesm2022/taiga-ui-kit-components.mjs +1 -0
- package/fesm2022/taiga-ui-kit-components.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-copy.mjs +57 -18
- package/fesm2022/taiga-ui-kit-directives-copy.mjs.map +1 -1
- package/package.json +26 -20
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ClipboardModule } from '@angular/cdk/clipboard';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';
|
|
3
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
|
|
5
|
+
import { tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
6
|
+
import { TuiButton } from '@taiga-ui/core/components/button';
|
|
7
|
+
import { TuiIcon } from '@taiga-ui/core/components/icon';
|
|
8
|
+
import { TUI_NOTIFICATION_OPTIONS } from '@taiga-ui/core/components/notification';
|
|
9
|
+
import { TuiHint } from '@taiga-ui/core/directives/hint';
|
|
10
|
+
import { TUI_COPY_TEXTS } from '@taiga-ui/kit/tokens';
|
|
11
|
+
import { BehaviorSubject, map, startWith, switchMap, timer } from 'rxjs';
|
|
12
|
+
import { TUI_COPY_OPTIONS } from './copy.options';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "@angular/cdk/clipboard";
|
|
15
|
+
import * as i2 from "@taiga-ui/core/directives/hint";
|
|
16
|
+
class TuiCopyComponent {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.notification = inject(TUI_NOTIFICATION_OPTIONS);
|
|
19
|
+
this.options = inject(TUI_COPY_OPTIONS);
|
|
20
|
+
this.copied$ = new BehaviorSubject(false);
|
|
21
|
+
this.texts = toSignal(inject(TUI_COPY_TEXTS));
|
|
22
|
+
this.hint = toSignal(this.copied$.pipe(switchMap((copied) => timer(2000).pipe(map(TUI_FALSE_HANDLER), startWith(copied)))));
|
|
23
|
+
this.size = 'm';
|
|
24
|
+
}
|
|
25
|
+
get icon() {
|
|
26
|
+
return tuiIsString(this.options.icon)
|
|
27
|
+
? this.options.icon
|
|
28
|
+
: this.options.icon(this.size);
|
|
29
|
+
}
|
|
30
|
+
get check() {
|
|
31
|
+
return tuiIsString(this.notification.icon)
|
|
32
|
+
? this.notification.icon
|
|
33
|
+
: this.notification.icon('positive');
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCopyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCopyComponent, isStandalone: true, selector: "tui-copy", inputs: { size: "size" }, host: { listeners: { "pointerdown": "copied$.next(false)" }, properties: { "attr.data-size": "size" } }, ngImport: i0, template: "<span\n #content\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top\"\n class=\"t-content\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [tuiHint]=\"template\"\n [tuiHintManual]=\"!!hint()\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n>\n <ng-content />\n</span>\n<button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [attr.aria-label]=\"texts()?.[0]\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [iconStart]=\"icon\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n></button>\n<ng-template #template>\n <tui-icon\n class=\"t-icon\"\n [icon]=\"check\"\n />\n {{ texts()?.[1] }}\n</ng-template>\n", styles: [":host{cursor:pointer}:host[data-size=m]{--t-size: min( calc(1em + 1px) , 1rem)}:host[data-size=l]{--t-size: max(calc(1em / 1.57), min(max(calc(1em / 1.18), 1.25rem), 1.5rem))}@media (hover: hover) and (pointer: fine){:host:hover .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}:host:hover .t-button{opacity:1}}:host:has(.t-button:focus-visible) .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}.t-content{transition-property:opacity,-webkit-mask;transition-property:opacity,mask;transition-property:opacity,mask,-webkit-mask;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-mask:linear-gradient(to var(--tui-inline-start),transparent calc(1.25 * var(--t-size)),black calc(2 * var(--t-size))) no-repeat,linear-gradient(to var(--tui-inline-end),black,black calc(2 * var(--t-size)),transparent calc(2 * var(--t-size))) no-repeat;mask:linear-gradient(to var(--tui-inline-start),transparent calc(1.25 * var(--t-size)),black calc(2 * var(--t-size))) no-repeat,linear-gradient(to var(--tui-inline-end),black,black calc(2 * var(--t-size)),transparent calc(2 * var(--t-size))) no-repeat;-webkit-mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0;mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0}.t-button{opacity:0;border-radius:0;font-size:inherit!important;margin-inline-start:calc(-1 * var(--t-size));--t-size: inherit}.t-button:before{font-size:var(--t-size)}.t-button:focus-visible{opacity:1}.t-icon{font-size:1rem;margin-inline-end:.25rem;vertical-align:text-top;color:var(--tui-text-positive)}\n"], dependencies: [{ kind: "ngmodule", type: ClipboardModule }, { kind: "directive", type: i1.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37
|
+
}
|
|
38
|
+
export { TuiCopyComponent };
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCopyComponent, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{ standalone: true, selector: 'tui-copy', imports: [ClipboardModule, TuiButton, TuiHint, TuiIcon], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
42
|
+
'[attr.data-size]': 'size',
|
|
43
|
+
'(pointerdown)': 'copied$.next(false)',
|
|
44
|
+
}, template: "<span\n #content\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top\"\n class=\"t-content\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [tuiHint]=\"template\"\n [tuiHintManual]=\"!!hint()\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n>\n <ng-content />\n</span>\n<button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [attr.aria-label]=\"texts()?.[0]\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [iconStart]=\"icon\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n></button>\n<ng-template #template>\n <tui-icon\n class=\"t-icon\"\n [icon]=\"check\"\n />\n {{ texts()?.[1] }}\n</ng-template>\n", styles: [":host{cursor:pointer}:host[data-size=m]{--t-size: min( calc(1em + 1px) , 1rem)}:host[data-size=l]{--t-size: max(calc(1em / 1.57), min(max(calc(1em / 1.18), 1.25rem), 1.5rem))}@media (hover: hover) and (pointer: fine){:host:hover .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}:host:hover .t-button{opacity:1}}:host:has(.t-button:focus-visible) .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}.t-content{transition-property:opacity,-webkit-mask;transition-property:opacity,mask;transition-property:opacity,mask,-webkit-mask;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-mask:linear-gradient(to var(--tui-inline-start),transparent calc(1.25 * var(--t-size)),black calc(2 * var(--t-size))) no-repeat,linear-gradient(to var(--tui-inline-end),black,black calc(2 * var(--t-size)),transparent calc(2 * var(--t-size))) no-repeat;mask:linear-gradient(to var(--tui-inline-start),transparent calc(1.25 * var(--t-size)),black calc(2 * var(--t-size))) no-repeat,linear-gradient(to var(--tui-inline-end),black,black calc(2 * var(--t-size)),transparent calc(2 * var(--t-size))) no-repeat;-webkit-mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0;mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0}.t-button{opacity:0;border-radius:0;font-size:inherit!important;margin-inline-start:calc(-1 * var(--t-size));--t-size: inherit}.t-button:before{font-size:var(--t-size)}.t-button:focus-visible{opacity:1}.t-icon{font-size:1rem;margin-inline-end:.25rem;vertical-align:text-top;color:var(--tui-text-positive)}\n"] }]
|
|
45
|
+
}], propDecorators: { size: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}] } });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvZGlyZWN0aXZlcy9jb3B5L2NvcHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2RpcmVjdGl2ZXMvY29weS9jb3B5LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRXZELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV2RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUVoRCxNQVlhLGdCQUFnQjtJQVo3QjtRQWF1QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2hELFlBQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDOUMsVUFBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUN6QyxTQUFJLEdBQUcsUUFBUSxDQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDYixTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUM5RCxDQUNKLENBQ0osQ0FBQztRQUdLLFNBQUksR0FBYSxHQUFHLENBQUM7S0FhL0I7SUFYRyxJQUFjLElBQUk7UUFDZCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQWMsS0FBSztRQUNmLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7K0dBMUJRLGdCQUFnQjttR0FBaEIsZ0JBQWdCLHVNQzNCN0IsMnZCQThCQSwwcEREWmMsZUFBZSwwTkFBRSxTQUFTLDRaQUFXLE9BQU87O1NBUzdDLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQVo1QixTQUFTO2lDQUNNLElBQUksWUFDTixVQUFVLFdBQ1gsQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsbUJBR3RDLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0Ysa0JBQWtCLEVBQUUsTUFBTTt3QkFDMUIsZUFBZSxFQUFFLHFCQUFxQjtxQkFDekM7OEJBZ0JNLElBQUk7c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2xpcGJvYXJkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvY2xpcGJvYXJkJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1RVSV9GQUxTRV9IQU5ETEVSfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge3R1aUlzU3RyaW5nfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUdWlCdXR0b259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7VHVpSWNvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7VFVJX05PVElGSUNBVElPTl9PUFRJT05TfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL25vdGlmaWNhdGlvbic7XG5pbXBvcnQge1R1aUhpbnR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaGludCc7XG5pbXBvcnQgdHlwZSB7VHVpU2l6ZUx9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcbmltcG9ydCB7VFVJX0NPUFlfVEVYVFN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0NPUFlfT1BUSU9OU30gZnJvbSAnLi9jb3B5Lm9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNvcHknLFxuICAgIGltcG9ydHM6IFtDbGlwYm9hcmRNb2R1bGUsIFR1aUJ1dHRvbiwgVHVpSGludCwgVHVpSWNvbl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvcHkudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29weS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zaXplXSc6ICdzaXplJyxcbiAgICAgICAgJyhwb2ludGVyZG93biknOiAnY29waWVkJC5uZXh0KGZhbHNlKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ29weUNvbXBvbmVudCB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vdGlmaWNhdGlvbiA9IGluamVjdChUVUlfTk9USUZJQ0FUSU9OX09QVElPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9DT1BZX09QVElPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb3BpZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRleHRzID0gdG9TaWduYWwoaW5qZWN0KFRVSV9DT1BZX1RFWFRTKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGhpbnQgPSB0b1NpZ25hbChcbiAgICAgICAgdGhpcy5jb3BpZWQkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGNvcGllZCkgPT5cbiAgICAgICAgICAgICAgICB0aW1lcigyMDAwKS5waXBlKG1hcChUVUlfRkFMU0VfSEFORExFUiksIHN0YXJ0V2l0aChjb3BpZWQpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNpemU6IFR1aVNpemVMID0gJ20nO1xuXG4gICAgcHJvdGVjdGVkIGdldCBpY29uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0dWlJc1N0cmluZyh0aGlzLm9wdGlvbnMuaWNvbilcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zLmljb25cbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zLmljb24odGhpcy5zaXplKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNoZWNrKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0dWlJc1N0cmluZyh0aGlzLm5vdGlmaWNhdGlvbi5pY29uKVxuICAgICAgICAgICAgPyB0aGlzLm5vdGlmaWNhdGlvbi5pY29uXG4gICAgICAgICAgICA6IHRoaXMubm90aWZpY2F0aW9uLmljb24oJ3Bvc2l0aXZlJyk7XG4gICAgfVxufVxuIiwiPHNwYW5cbiAgICAjY29udGVudFxuICAgIHR1aUhpbnRBcHBlYXJhbmNlPVwiZGFya1wiXG4gICAgdHVpSGludERpcmVjdGlvbj1cInRvcFwiXG4gICAgY2xhc3M9XCJ0LWNvbnRlbnRcIlxuICAgIFtjZGtDb3B5VG9DbGlwYm9hcmRdPVwiY29udGVudC50ZXh0Q29udGVudCA/PyAnJ1wiXG4gICAgW3R1aUhpbnRdPVwidGVtcGxhdGVcIlxuICAgIFt0dWlIaW50TWFudWFsXT1cIiEhaGludCgpXCJcbiAgICAoY2RrQ29weVRvQ2xpcGJvYXJkQ29waWVkKT1cImNvcGllZCQubmV4dCgkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGVudCAvPlxuPC9zcGFuPlxuPGJ1dHRvblxuICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICBzaXplPVwieHNcIlxuICAgIHR1aUljb25CdXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInQtYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHRzKCk/LlswXVwiXG4gICAgW2Nka0NvcHlUb0NsaXBib2FyZF09XCJjb250ZW50LnRleHRDb250ZW50ID8/ICcnXCJcbiAgICBbaWNvblN0YXJ0XT1cImljb25cIlxuICAgIChjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQpPVwiY29waWVkJC5uZXh0KCRldmVudClcIlxuPjwvYnV0dG9uPlxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICA8dHVpLWljb25cbiAgICAgICAgY2xhc3M9XCJ0LWljb25cIlxuICAgICAgICBbaWNvbl09XCJjaGVja1wiXG4gICAgLz5cbiAgICB7eyB0ZXh0cygpPy5bMV0gfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -12,7 +12,7 @@ import { TUI_COPY_OPTIONS } from './copy.options';
|
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
import * as i1 from "@taiga-ui/core/directives/appearance";
|
|
14
14
|
import * as i2 from "@taiga-ui/core/directives/hint";
|
|
15
|
-
class
|
|
15
|
+
class TuiCopyDirective {
|
|
16
16
|
constructor() {
|
|
17
17
|
this.options = inject(TUI_COPY_OPTIONS);
|
|
18
18
|
this.copied$ = new Subject();
|
|
@@ -30,16 +30,16 @@ class TuiCopy {
|
|
|
30
30
|
this.doc.execCommand('copy');
|
|
31
31
|
this.copied$.next();
|
|
32
32
|
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type:
|
|
34
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type:
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCopyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
34
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiCopyDirective, isStandalone: true, selector: "tui-icon[tuiCopy]", inputs: { tuiCopy: "tuiCopy" }, host: { listeners: { "click": "copy()" }, properties: { "style.pointer-events": "disabled ? \"none\" : null", "style.opacity": "disabled ? \"var(--tui-disabled-opacity)\" : null", "style.border-width.rem": "textfield.options.size() === \"l\" ? null : 0.25" }, styleAttribute: "cursor: pointer" }, providers: [
|
|
35
35
|
{
|
|
36
36
|
provide: TUI_APPEARANCE_OPTIONS,
|
|
37
37
|
useValue: { appearance: 'icon' },
|
|
38
38
|
},
|
|
39
39
|
], hostDirectives: [{ directive: i1.TuiWithAppearance }, { directive: i2.TuiHintDirective, inputs: ["tuiHintAppearance", "tuiHintAppearance", "tuiHintContext", "tuiHintContext"] }], ngImport: i0 }); }
|
|
40
40
|
}
|
|
41
|
-
export {
|
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type:
|
|
41
|
+
export { TuiCopyDirective };
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCopyDirective, decorators: [{
|
|
43
43
|
type: Directive,
|
|
44
44
|
args: [{
|
|
45
45
|
standalone: true,
|
|
@@ -62,10 +62,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
62
62
|
'(click)': 'copy()',
|
|
63
63
|
'[style.pointer-events]': 'disabled ? "none" : null',
|
|
64
64
|
'[style.opacity]': 'disabled ? "var(--tui-disabled-opacity)" : null',
|
|
65
|
-
'[style.border]': 'textfield.options.size() === "
|
|
65
|
+
'[style.border-width.rem]': 'textfield.options.size() === "l" ? null : 0.25',
|
|
66
66
|
},
|
|
67
67
|
}]
|
|
68
68
|
}], propDecorators: { tuiCopy: [{
|
|
69
69
|
type: Input
|
|
70
70
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvZGlyZWN0aXZlcy9jb3B5L2NvcHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsV0FBVyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDbkYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsaUJBQWlCLEdBQ3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRS9ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRWhELE1Bd0JhLGdCQUFnQjtJQXhCN0I7UUF5QnFCLFlBQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM5QixRQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJCLGNBQVMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxQyxTQUFJLEdBQUcsbUJBQW1CLENBQ3pDLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsUUFBUSxDQUNKLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNYLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ1osR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNmLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FDcEIsQ0FDSixFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDbEIsQ0FDSixDQUNKLEVBQ0QsRUFBQyxZQUFZLEVBQUUsRUFBRSxFQUFDLENBQ3JCLENBQ0osQ0FBQztRQUVpQixVQUFLLEdBQUcsbUJBQW1CLENBQzFDLE9BQU8sRUFDUCxNQUFNLEVBQ04sUUFBUSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FDOUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDL0UsQ0FDSixDQUFDO1FBR0ssWUFBTyxHQUFHLEVBQUUsQ0FBQztLQVd2QjtJQVRHLElBQWMsUUFBUTtRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUN0RCxDQUFDO0lBRVMsSUFBSTtRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBOUNRLGdCQUFnQjttR0FBaEIsZ0JBQWdCLHlZQXJCZDtZQUNQO2dCQUNJLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLFFBQVEsRUFBRSxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7YUFDakM7U0FDSjs7U0FnQlEsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBeEI1QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLHNCQUFzQjs0QkFDL0IsUUFBUSxFQUFFLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzt5QkFDakM7cUJBQ0o7b0JBQ0QsY0FBYyxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakI7NEJBQ0ksU0FBUyxFQUFFLGdCQUFnQjs0QkFDM0IsTUFBTSxFQUFFLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUM7eUJBQ2xEO3FCQUNKO29CQUNELElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsaUJBQWlCO3dCQUN4QixTQUFTLEVBQUUsUUFBUTt3QkFDbkIsd0JBQXdCLEVBQUUsMEJBQTBCO3dCQUNwRCxpQkFBaUIsRUFBRSxpREFBaUQ7d0JBQ3BFLDBCQUEwQixFQUFFLGdEQUFnRDtxQkFDL0U7aUJBQ0o7OEJBcUNVLE9BQU87c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge2NvbXB1dGVkLCBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHt0dWlEaXJlY3RpdmVCaW5kaW5nLCB0dWlJc1N0cmluZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VHVpSWNvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7VHVpVGV4dGZpZWxkQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIFRVSV9BUFBFQVJBTkNFX09QVElPTlMsXG4gICAgVHVpV2l0aEFwcGVhcmFuY2UsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvYXBwZWFyYW5jZSc7XG5pbXBvcnQge1R1aUhpbnREaXJlY3RpdmV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaGludCc7XG5pbXBvcnQge1RVSV9DT1BZX1RFWFRTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge21hcCwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRpbWVyfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfQ09QWV9PUFRJT05TfSBmcm9tICcuL2NvcHkub3B0aW9ucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktaWNvblt0dWlDb3B5XScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9BUFBFQVJBTkNFX09QVElPTlMsXG4gICAgICAgICAgICB1c2VWYWx1ZToge2FwcGVhcmFuY2U6ICdpY29uJ30sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICBUdWlXaXRoQXBwZWFyYW5jZSxcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBUdWlIaW50RGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ3R1aUhpbnRBcHBlYXJhbmNlJywgJ3R1aUhpbnRDb250ZXh0J10sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHN0eWxlOiAnY3Vyc29yOiBwb2ludGVyJyxcbiAgICAgICAgJyhjbGljayknOiAnY29weSgpJyxcbiAgICAgICAgJ1tzdHlsZS5wb2ludGVyLWV2ZW50c10nOiAnZGlzYWJsZWQgPyBcIm5vbmVcIiA6IG51bGwnLFxuICAgICAgICAnW3N0eWxlLm9wYWNpdHldJzogJ2Rpc2FibGVkID8gXCJ2YXIoLS10dWktZGlzYWJsZWQtb3BhY2l0eSlcIiA6IG51bGwnLFxuICAgICAgICAnW3N0eWxlLmJvcmRlci13aWR0aC5yZW1dJzogJ3RleHRmaWVsZC5vcHRpb25zLnNpemUoKSA9PT0gXCJsXCIgPyBudWxsIDogMC4yNScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ29weURpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9DT1BZX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29waWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2MgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRleHRmaWVsZCA9IGluamVjdChUdWlUZXh0ZmllbGRDb21wb25lbnQpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBoaW50ID0gdHVpRGlyZWN0aXZlQmluZGluZyhcbiAgICAgICAgVHVpSGludERpcmVjdGl2ZSxcbiAgICAgICAgJ3R1aUhpbnQnLFxuICAgICAgICB0b1NpZ25hbChcbiAgICAgICAgICAgIGluamVjdChUVUlfQ09QWV9URVhUUykucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKFtjb3B5LCBjb3BpZWRdKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcGllZCQucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyKDMwMDApLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBjb3B5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKGNvcGllZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoY29weSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB7aW5pdGlhbFZhbHVlOiAnJ30sXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29ucyA9IHR1aURpcmVjdGl2ZUJpbmRpbmcoXG4gICAgICAgIFR1aUljb24sXG4gICAgICAgICdpY29uJyxcbiAgICAgICAgY29tcHV0ZWQoKHNpemUgPSB0aGlzLnRleHRmaWVsZC5vcHRpb25zLnNpemUoKSkgPT5cbiAgICAgICAgICAgIHR1aUlzU3RyaW5nKHRoaXMub3B0aW9ucy5pY29uKSA/IHRoaXMub3B0aW9ucy5pY29uIDogdGhpcy5vcHRpb25zLmljb24oc2l6ZSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR1aUNvcHkgPSAnJztcblxuICAgIHByb3RlY3RlZCBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy50ZXh0ZmllbGQuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvcHkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dGZpZWxkLmlucHV0Py5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgICAgICB0aGlzLmRvYy5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICB0aGlzLmNvcGllZCQubmV4dCgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TuiCopyComponent } from './copy.component';
|
|
2
|
+
import { TuiCopyDirective } from './copy.directive';
|
|
3
|
+
export const TuiCopy = [TuiCopyComponent, TuiCopyDirective];
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9kaXJlY3RpdmVzL2NvcHkvY29weS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUdWlDb3B5Q29tcG9uZW50fSBmcm9tICcuL2NvcHkuY29tcG9uZW50JztcbmltcG9ydCB7VHVpQ29weURpcmVjdGl2ZX0gZnJvbSAnLi9jb3B5LmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBUdWlDb3B5ID0gW1R1aUNvcHlDb21wb25lbnQsIFR1aUNvcHlEaXJlY3RpdmVdIGFzIGNvbnN0O1xuIl19
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
|
|
2
|
-
export const [TUI_COPY_OPTIONS, tuiCopyOptionsProvider] = tuiCreateOptions({
|
|
3
|
-
|
|
4
|
-
});
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2RpcmVjdGl2ZXMvY29weS9jb3B5Lm9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFPeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxHQUNuRCxnQkFBZ0IsQ0FBaUI7SUFDN0IsSUFBSSxFQUFFLFdBQVc7Q0FDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1R1aVN0cmluZ0hhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlDcmVhdGVPcHRpb25zfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RpJztcbmltcG9ydCB0eXBlIHtUdWlTaXplTCwgVHVpU2l6ZVN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUdWlDb3B5T3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgaWNvbjogVHVpU3RyaW5nSGFuZGxlcjxUdWlTaXplTCB8IFR1aVNpemVTPiB8IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFtUVUlfQ09QWV9PUFRJT05TLCB0dWlDb3B5T3B0aW9uc1Byb3ZpZGVyXSA9XG4gICAgdHVpQ3JlYXRlT3B0aW9uczxUdWlDb3B5T3B0aW9ucz4oe1xuICAgICAgICBpY29uOiAnQHR1aS5jb3B5JyxcbiAgICB9KTtcbiJdfQ==
|
|
2
|
+
export const [TUI_COPY_OPTIONS, tuiCopyOptionsProvider] = tuiCreateOptions({ icon: '@tui.copy' });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2RpcmVjdGl2ZXMvY29weS9jb3B5Lm9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFPeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxHQUNuRCxnQkFBZ0IsQ0FBaUIsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtUdWlTdHJpbmdIYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpQ3JlYXRlT3B0aW9uc30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kaSc7XG5pbXBvcnQgdHlwZSB7VHVpU2l6ZUwsIFR1aVNpemVTfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVpQ29weU9wdGlvbnMge1xuICAgIHJlYWRvbmx5IGljb246IFR1aVN0cmluZ0hhbmRsZXI8VHVpU2l6ZUwgfCBUdWlTaXplUz4gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBbVFVJX0NPUFlfT1BUSU9OUywgdHVpQ29weU9wdGlvbnNQcm92aWRlcl0gPVxuICAgIHR1aUNyZWF0ZU9wdGlvbnM8VHVpQ29weU9wdGlvbnM+KHtpY29uOiAnQHR1aS5jb3B5J30pO1xuIl19
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// TODO: Move to components in v5
|
|
2
|
+
export * from './copy';
|
|
3
|
+
export * from './copy.component';
|
|
1
4
|
export * from './copy.directive';
|
|
2
5
|
export * from './copy.options';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvZGlyZWN0aXZlcy9jb3B5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IE1vdmUgdG8gY29tcG9uZW50cyBpbiB2NVxuZXhwb3J0ICogZnJvbSAnLi9jb3B5JztcbmV4cG9ydCAqIGZyb20gJy4vY29weS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3B5LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvcHkub3B0aW9ucyc7XG4iXX0=
|
|
@@ -12,12 +12,13 @@ import { TuiMonth, DATE_FILLER_LENGTH, TuiDay } from '@taiga-ui/cdk/date-time';
|
|
|
12
12
|
import * as i1 from '@taiga-ui/cdk/directives/native-validator';
|
|
13
13
|
import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator';
|
|
14
14
|
import { tuiFallbackValueProvider } from '@taiga-ui/cdk/tokens';
|
|
15
|
+
import { tuiArrayToggle } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
15
16
|
import * as i4 from '@taiga-ui/core/components/textfield';
|
|
16
17
|
import { tuiTextfieldIconBinding, tuiInjectAuxiliary, tuiAsTextfieldAccessor, TuiTextfieldBase } from '@taiga-ui/core/components/textfield';
|
|
17
18
|
import * as i2 from '@taiga-ui/core/directives/dropdown';
|
|
18
19
|
import { TuiDropdownAuto } from '@taiga-ui/core/directives/dropdown';
|
|
19
20
|
import { TUI_DATE_FORMAT, TUI_DEFAULT_DATE_FORMAT } from '@taiga-ui/core/tokens';
|
|
20
|
-
import { TUI_INPUT_DATE_OPTIONS_NEW, TUI_DATE_ADAPTER } from '@taiga-ui/kit/components/input-date';
|
|
21
|
+
import { TUI_INPUT_DATE_OPTIONS_NEW, tuiWithDateFiller, TUI_DATE_ADAPTER } from '@taiga-ui/kit/components/input-date';
|
|
21
22
|
import { tuiMaskito } from '@taiga-ui/kit/utils';
|
|
22
23
|
|
|
23
24
|
class TuiInputDateMultiDirective extends TuiInputChipBaseDirective {
|
|
@@ -25,6 +26,7 @@ class TuiInputDateMultiDirective extends TuiInputChipBaseDirective {
|
|
|
25
26
|
super(...arguments);
|
|
26
27
|
this.dateOptions = inject(TUI_INPUT_DATE_OPTIONS_NEW);
|
|
27
28
|
this.icon = tuiTextfieldIconBinding(TUI_INPUT_DATE_OPTIONS_NEW);
|
|
29
|
+
this.filler = tuiWithDateFiller();
|
|
28
30
|
this.stringify = this.handlers.stringify.set((item) => item.toString(this.format().mode, this.format().separator));
|
|
29
31
|
this.mask = tuiMaskito(computed(() => maskitoDateOptionsGenerator({
|
|
30
32
|
separator: this.format().separator,
|
|
@@ -56,10 +58,6 @@ class TuiInputDateMultiDirective extends TuiInputChipBaseDirective {
|
|
|
56
58
|
set maxSetter(max) {
|
|
57
59
|
this.max.set(max || this.dateOptions.max);
|
|
58
60
|
}
|
|
59
|
-
clear() {
|
|
60
|
-
this.onChange([]);
|
|
61
|
-
this.open.set(this.interactive());
|
|
62
|
-
}
|
|
63
61
|
processCalendar(calendar) {
|
|
64
62
|
calendar.value = this.value();
|
|
65
63
|
calendar.min = this.min();
|
|
@@ -83,11 +81,7 @@ class TuiInputDateMultiDirective extends TuiInputChipBaseDirective {
|
|
|
83
81
|
this.scrollTo();
|
|
84
82
|
}
|
|
85
83
|
updateValue(day) {
|
|
86
|
-
|
|
87
|
-
const newValue = exist
|
|
88
|
-
? this.value().filter((x) => !x.daySame(day))
|
|
89
|
-
: this.value().concat(day);
|
|
90
|
-
this.setValue(newValue);
|
|
84
|
+
this.setValue(tuiArrayToggle(this.value(), day, (a, b) => a.daySame(b)));
|
|
91
85
|
}
|
|
92
86
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputDateMultiDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
93
87
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputDateMultiDirective, isStandalone: true, selector: "input[tuiInputDateMulti]", inputs: { minSetter: ["min", "minSetter"], maxSetter: ["max", "maxSetter"] }, host: { listeners: { "keydown.enter.prevent": "0" } }, providers: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-components-input-date-multi.mjs","sources":["../../../projects/kit/components/input-date-multi/input-date-multi.directive.ts","../../../projects/kit/components/input-date-multi/input-date-multi.ts","../../../projects/kit/components/input-date-multi/taiga-ui-kit-components-input-date-multi.ts"],"sourcesContent":["import {computed, Directive, effect, inject, Input, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {maskitoDateOptionsGenerator} from '@maskito/kit';\nimport {tuiAsControl} from '@taiga-ui/cdk/classes';\nimport {TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\nimport {DATE_FILLER_LENGTH, TuiDay, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {\n tuiAsTextfieldAccessor,\n tuiInjectAuxiliary,\n TuiTextfieldBase,\n tuiTextfieldIconBinding,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownAuto} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_DATE_FORMAT, TUI_DEFAULT_DATE_FORMAT} from '@taiga-ui/core/tokens';\nimport {TuiInputChipBaseDirective} from '@taiga-ui/kit/components/input-chip';\nimport {\n TUI_DATE_ADAPTER,\n TUI_INPUT_DATE_OPTIONS_NEW,\n} from '@taiga-ui/kit/components/input-date';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputDateMulti]',\n providers: [\n tuiAsControl(TuiInputDateMultiDirective),\n tuiFallbackValueProvider([]),\n tuiAsTextfieldAccessor(TuiInputDateMultiDirective),\n ],\n hostDirectives: [\n TuiNativeValidator,\n TuiDropdownAuto,\n MaskitoDirective,\n {\n directive: TuiTextfieldBase,\n inputs: ['invalid', 'focused', 'readOnly', 'state'],\n },\n ],\n host: {\n '(keydown.enter.prevent)': '0',\n },\n})\nexport class TuiInputDateMultiDirective extends TuiInputChipBaseDirective<TuiDay> {\n private readonly dateOptions = inject(TUI_INPUT_DATE_OPTIONS_NEW);\n\n protected readonly icon = tuiTextfieldIconBinding(TUI_INPUT_DATE_OPTIONS_NEW);\n protected readonly stringify = this.handlers.stringify.set((item) =>\n item.toString(this.format().mode, this.format().separator),\n );\n\n protected readonly mask = tuiMaskito(\n computed(() =>\n maskitoDateOptionsGenerator({\n separator: this.format().separator,\n mode: TUI_DATE_ADAPTER[this.format().mode],\n min: this.min().toLocalNativeDate(),\n max: this.max().toLocalNativeDate(),\n }),\n ),\n );\n\n protected readonly format = toSignal(inject(TUI_DATE_FORMAT), {\n initialValue: TUI_DEFAULT_DATE_FORMAT,\n });\n\n protected readonly calendarIn = effect(() => {\n if (this.calendar()) {\n this.processCalendar(this.calendar()!);\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly calendarOut = effect((onCleanup) => {\n const subscription = this.calendar()?.dayClick.subscribe((day) => {\n this.updateValue(day);\n });\n\n onCleanup(() => subscription?.unsubscribe());\n });\n\n public readonly min = signal(this.dateOptions.min);\n public readonly max = signal(this.dateOptions.max);\n\n public readonly calendar = tuiInjectAuxiliary<TuiCalendar>(\n (x) => x instanceof TuiCalendar,\n );\n\n @Input('min')\n public set minSetter(min: TuiDay | null) {\n this.min.set(min || this.dateOptions.min);\n }\n\n @Input('max')\n public set maxSetter(max: TuiDay | null) {\n this.max.set(max || this.dateOptions.max);\n }\n\n protected clear(): void {\n this.onChange([]);\n this.open.set(this.interactive());\n }\n\n protected processCalendar(calendar: TuiCalendar): void {\n calendar.value = this.value();\n calendar.min = this.min();\n calendar.max = this.max();\n calendar.month =\n this.value()?.[this.value().length - 1] ?? TuiMonth.currentLocal();\n }\n\n protected onClick(): void {\n this.open.update((open) => !open);\n }\n\n protected onValueChange(value: string): void {\n const newValue =\n value.length === DATE_FILLER_LENGTH\n ? TuiDay.normalizeParse(value, this.format().mode)\n : null;\n\n if (newValue && !this.handlers.disabledItemHandler()(newValue)) {\n this.updateValue(newValue);\n }\n }\n\n protected override onEnter(): void {\n this.onValueChange(this.textfield.value().trim());\n this.scrollTo();\n }\n\n private updateValue(day: TuiDay): void {\n const exist = this.value().find((x) => x.daySame(day));\n const newValue = exist\n ? this.value().filter((x) => !x.daySame(day))\n : this.value().concat(day);\n\n this.setValue(newValue);\n }\n}\n","import {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TuiInputChipComponent} from '@taiga-ui/kit/components/input-chip';\n\nimport {TuiInputDateMultiDirective} from './input-date-multi.directive';\n\nexport const TuiInputDateMulti = [\n TuiInputDateMultiDirective,\n TuiCalendar,\n TuiInputChipComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-components-input-date-multi.mjs","sources":["../../../projects/kit/components/input-date-multi/input-date-multi.directive.ts","../../../projects/kit/components/input-date-multi/input-date-multi.ts","../../../projects/kit/components/input-date-multi/taiga-ui-kit-components-input-date-multi.ts"],"sourcesContent":["import {computed, Directive, effect, inject, Input, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {maskitoDateOptionsGenerator} from '@maskito/kit';\nimport {tuiAsControl} from '@taiga-ui/cdk/classes';\nimport {TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\nimport {DATE_FILLER_LENGTH, TuiDay, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {\n tuiAsTextfieldAccessor,\n tuiInjectAuxiliary,\n TuiTextfieldBase,\n tuiTextfieldIconBinding,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownAuto} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_DATE_FORMAT, TUI_DEFAULT_DATE_FORMAT} from '@taiga-ui/core/tokens';\nimport {TuiInputChipBaseDirective} from '@taiga-ui/kit/components/input-chip';\nimport {\n TUI_DATE_ADAPTER,\n TUI_INPUT_DATE_OPTIONS_NEW,\n tuiWithDateFiller,\n} from '@taiga-ui/kit/components/input-date';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputDateMulti]',\n providers: [\n tuiAsControl(TuiInputDateMultiDirective),\n tuiFallbackValueProvider([]),\n tuiAsTextfieldAccessor(TuiInputDateMultiDirective),\n ],\n hostDirectives: [\n TuiNativeValidator,\n TuiDropdownAuto,\n MaskitoDirective,\n {\n directive: TuiTextfieldBase,\n inputs: ['invalid', 'focused', 'readOnly', 'state'],\n },\n ],\n host: {\n '(keydown.enter.prevent)': '0',\n },\n})\nexport class TuiInputDateMultiDirective extends TuiInputChipBaseDirective<TuiDay> {\n private readonly dateOptions = inject(TUI_INPUT_DATE_OPTIONS_NEW);\n\n protected readonly icon = tuiTextfieldIconBinding(TUI_INPUT_DATE_OPTIONS_NEW);\n protected readonly filler = tuiWithDateFiller();\n protected readonly stringify = this.handlers.stringify.set((item) =>\n item.toString(this.format().mode, this.format().separator),\n );\n\n protected readonly mask = tuiMaskito(\n computed(() =>\n maskitoDateOptionsGenerator({\n separator: this.format().separator,\n mode: TUI_DATE_ADAPTER[this.format().mode],\n min: this.min().toLocalNativeDate(),\n max: this.max().toLocalNativeDate(),\n }),\n ),\n );\n\n protected readonly format = toSignal(inject(TUI_DATE_FORMAT), {\n initialValue: TUI_DEFAULT_DATE_FORMAT,\n });\n\n protected readonly calendarIn = effect(() => {\n if (this.calendar()) {\n this.processCalendar(this.calendar()!);\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly calendarOut = effect((onCleanup) => {\n const subscription = this.calendar()?.dayClick.subscribe((day) => {\n this.updateValue(day);\n });\n\n onCleanup(() => subscription?.unsubscribe());\n });\n\n public readonly min = signal(this.dateOptions.min);\n public readonly max = signal(this.dateOptions.max);\n\n public readonly calendar = tuiInjectAuxiliary<TuiCalendar>(\n (x) => x instanceof TuiCalendar,\n );\n\n @Input('min')\n public set minSetter(min: TuiDay | null) {\n this.min.set(min || this.dateOptions.min);\n }\n\n @Input('max')\n public set maxSetter(max: TuiDay | null) {\n this.max.set(max || this.dateOptions.max);\n }\n\n protected processCalendar(calendar: TuiCalendar): void {\n calendar.value = this.value();\n calendar.min = this.min();\n calendar.max = this.max();\n calendar.month =\n this.value()?.[this.value().length - 1] ?? TuiMonth.currentLocal();\n }\n\n protected onClick(): void {\n this.open.update((open) => !open);\n }\n\n protected onValueChange(value: string): void {\n const newValue =\n value.length === DATE_FILLER_LENGTH\n ? TuiDay.normalizeParse(value, this.format().mode)\n : null;\n\n if (newValue && !this.handlers.disabledItemHandler()(newValue)) {\n this.updateValue(newValue);\n }\n }\n\n protected override onEnter(): void {\n this.onValueChange(this.textfield.value().trim());\n this.scrollTo();\n }\n\n private updateValue(day: TuiDay): void {\n this.setValue(tuiArrayToggle(this.value(), day, (a, b) => a.daySame(b)));\n }\n}\n","import {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TuiInputChipComponent} from '@taiga-ui/kit/components/input-chip';\n\nimport {TuiInputDateMultiDirective} from './input-date-multi.directive';\n\nexport const TuiInputDateMulti = [\n TuiInputDateMultiDirective,\n TuiCalendar,\n TuiInputChipComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, computed, effect, untracked, signal, Directive, Input } from '@angular/core';
|
|
3
|
+
import * as i2 from '@maskito/angular';
|
|
4
|
+
import { MaskitoDirective } from '@maskito/angular';
|
|
5
|
+
import { maskitoTransform, MASKITO_DEFAULT_OPTIONS } from '@maskito/core';
|
|
6
|
+
import { maskitoPrefixPostprocessorGenerator, maskitoCaretGuard } from '@maskito/kit';
|
|
7
|
+
import { TUI_IDENTITY_VALUE_TRANSFORMER, TuiControl, tuiAsControl, tuiValueTransformerFrom } from '@taiga-ui/cdk/classes';
|
|
8
|
+
import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
|
|
9
|
+
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
10
|
+
import * as i1 from '@taiga-ui/core/components/textfield';
|
|
11
|
+
import { TuiTextfieldDirective, TuiTextfieldComponent, TuiWithTextfield } from '@taiga-ui/core/components/textfield';
|
|
12
|
+
import { tuiMaskito } from '@taiga-ui/kit/utils';
|
|
13
|
+
import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
|
|
14
|
+
|
|
15
|
+
const TUI_INPUT_PHONE_DEFAULT_OPTIONS = {
|
|
16
|
+
mask: '+1 ### ###-####',
|
|
17
|
+
allowText: false,
|
|
18
|
+
valueTransformer: TUI_IDENTITY_VALUE_TRANSFORMER,
|
|
19
|
+
};
|
|
20
|
+
const [TUI_INPUT_PHONE_OPTIONS, tuiInputPhoneOptionsProvider] = tuiCreateOptions(TUI_INPUT_PHONE_DEFAULT_OPTIONS);
|
|
21
|
+
|
|
22
|
+
const countDigits = (value) => value.replaceAll(/\D/g, '').length;
|
|
23
|
+
/**
|
|
24
|
+
* `InputPhone` component sets country code as non-removable prefix.
|
|
25
|
+
* This prefix appears on focus and cannot be erased.
|
|
26
|
+
* But users sometimes can copy complete phone number (from any different source)
|
|
27
|
+
* and try to insert the whole string inside our `InputPhone` textfield.
|
|
28
|
+
* This preprocessor helps to avoid country prefix duplication on paste/drop/autofill events.
|
|
29
|
+
*/
|
|
30
|
+
function tuiCreateCompletePhoneInsertionPreprocessor(countryCode, phoneMaskAfterCountryCode) {
|
|
31
|
+
const completePhoneLength = (countryCode + phoneMaskAfterCountryCode).replaceAll(/[^#\d]+/g, '').length;
|
|
32
|
+
const trimCountryPrefix = (value) => countryCode === '+7'
|
|
33
|
+
? value.replace(/^(\+?\s*7?\s?8?)\s?/, '')
|
|
34
|
+
: value.replace(new RegExp(`^(\\+?\\s*${countryCode.replace('+', '')}?)\\s?`), '');
|
|
35
|
+
return ({ elementState, data }) => {
|
|
36
|
+
const { value, selection } = elementState;
|
|
37
|
+
return {
|
|
38
|
+
elementState: {
|
|
39
|
+
selection,
|
|
40
|
+
value:
|
|
41
|
+
/**
|
|
42
|
+
* The only possible case when `value` includes digits more
|
|
43
|
+
* than mask expression allows – browser autofill.
|
|
44
|
+
* It means that we are inside `input`-event
|
|
45
|
+
* and mask are ready to reject "extra" characters.
|
|
46
|
+
* We should cut leading country prefix to save trailing characters!
|
|
47
|
+
*/
|
|
48
|
+
countDigits(value) > completePhoneLength
|
|
49
|
+
? trimCountryPrefix(value)
|
|
50
|
+
: value,
|
|
51
|
+
},
|
|
52
|
+
data: countDigits(data) >= completePhoneLength || data.startsWith(countryCode)
|
|
53
|
+
? /**
|
|
54
|
+
* User tries to insert/drop the complete phone number (with country prefix).
|
|
55
|
+
* We should drop already existing non-removable prefix.
|
|
56
|
+
*/
|
|
57
|
+
trimCountryPrefix(data)
|
|
58
|
+
: data,
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Create {@link https://maskito.dev/core-concepts/mask-expression pattern mask expression} for phone number
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* tuiCreatePhoneMaskExpression('+1', '(###) ###-####');
|
|
68
|
+
*/
|
|
69
|
+
function tuiCreatePhoneMaskExpression(countryCode, phoneMaskAfterCountryCode) {
|
|
70
|
+
return [
|
|
71
|
+
...countryCode.split(''),
|
|
72
|
+
' ',
|
|
73
|
+
...phoneMaskAfterCountryCode
|
|
74
|
+
.replaceAll(/[^#\- ()]+/g, '')
|
|
75
|
+
.split('')
|
|
76
|
+
.map((item) => (item === '#' ? /\d/ : item)),
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const MASK_SYMBOLS = /[ \-_()]/g;
|
|
81
|
+
function isText(value) {
|
|
82
|
+
return Number.isNaN(parseInt(value.replaceAll(MASK_SYMBOLS, ''), 10));
|
|
83
|
+
}
|
|
84
|
+
class TuiInputPhone extends TuiControl {
|
|
85
|
+
constructor() {
|
|
86
|
+
super(...arguments);
|
|
87
|
+
this.textfield = inject(TuiTextfieldDirective);
|
|
88
|
+
this.host = inject(TuiTextfieldComponent);
|
|
89
|
+
this.nonRemovablePrefix = computed(() => `${this.countryCode()} `);
|
|
90
|
+
this.inputMode = computed(() => (this.allowText() ? 'text' : 'numeric'));
|
|
91
|
+
this.valueEffect = effect(() => {
|
|
92
|
+
const value = this.value() ?? '';
|
|
93
|
+
if (!value) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.textfield.value.set(maskitoTransform(value, this.mask()));
|
|
97
|
+
}, TUI_ALLOW_SIGNAL_WRITES);
|
|
98
|
+
this.blurEffect = effect(() => {
|
|
99
|
+
const incomplete = untracked(() => !this.value());
|
|
100
|
+
if (!this.host.focused() && incomplete) {
|
|
101
|
+
this.textfield.value.set('');
|
|
102
|
+
}
|
|
103
|
+
if (this.host.focused() && incomplete && !this.allowText()) {
|
|
104
|
+
this.textfield.value.set(this.nonRemovablePrefix());
|
|
105
|
+
}
|
|
106
|
+
}, TUI_ALLOW_SIGNAL_WRITES);
|
|
107
|
+
this.options = inject(TUI_INPUT_PHONE_OPTIONS);
|
|
108
|
+
this.el = tuiInjectElement();
|
|
109
|
+
this.mask = computed(() => this.calculateMask(this.countryCode(), this.phoneMask(), this.nonRemovablePrefix(), this.allowText()));
|
|
110
|
+
this.maskito = tuiMaskito(computed(() => this.mask()));
|
|
111
|
+
this.countryCode = signal(extractCountryCode(this.options.mask));
|
|
112
|
+
this.allowText = signal(this.options.allowText);
|
|
113
|
+
this.phoneMask = signal(extractMask(this.options.mask));
|
|
114
|
+
}
|
|
115
|
+
// TODO(v5): replace with signal input
|
|
116
|
+
set allowTextSetter(allow) {
|
|
117
|
+
this.allowText.set(allow);
|
|
118
|
+
}
|
|
119
|
+
// TODO(v5): replace with signal input
|
|
120
|
+
set maskSetter(mask) {
|
|
121
|
+
this.countryCode.set(extractCountryCode(mask));
|
|
122
|
+
this.phoneMask.set(extractMask(mask));
|
|
123
|
+
}
|
|
124
|
+
onInput(value) {
|
|
125
|
+
if (!value && !this.allowText()) {
|
|
126
|
+
this.textfield.value.set(this.nonRemovablePrefix());
|
|
127
|
+
}
|
|
128
|
+
const parsed = isText(value)
|
|
129
|
+
? value
|
|
130
|
+
: value.replaceAll(MASK_SYMBOLS, '').slice(0, this.maxPhoneLength);
|
|
131
|
+
this.onChange(parsed === this.countryCode() || isText(parsed) ? '' : parsed);
|
|
132
|
+
}
|
|
133
|
+
get maxPhoneLength() {
|
|
134
|
+
return (this.countryCode().length + this.phoneMask().replaceAll(/[^#]+/g, '').length);
|
|
135
|
+
}
|
|
136
|
+
calculateMask(countryCode, phoneMaskAfterCountryCode, nonRemovablePrefix, allowText) {
|
|
137
|
+
const mask = tuiCreatePhoneMaskExpression(countryCode, phoneMaskAfterCountryCode);
|
|
138
|
+
const preprocessors = [
|
|
139
|
+
tuiCreateCompletePhoneInsertionPreprocessor(countryCode, phoneMaskAfterCountryCode),
|
|
140
|
+
];
|
|
141
|
+
return allowText
|
|
142
|
+
? {
|
|
143
|
+
mask: ({ value }) => isText(value) && value !== '+'
|
|
144
|
+
? MASKITO_DEFAULT_OPTIONS.mask
|
|
145
|
+
: mask,
|
|
146
|
+
preprocessors,
|
|
147
|
+
}
|
|
148
|
+
: {
|
|
149
|
+
mask,
|
|
150
|
+
preprocessors,
|
|
151
|
+
postprocessors: [
|
|
152
|
+
maskitoPrefixPostprocessorGenerator(nonRemovablePrefix),
|
|
153
|
+
],
|
|
154
|
+
plugins: [
|
|
155
|
+
maskitoCaretGuard((value, [from, to]) => [
|
|
156
|
+
from === to ? nonRemovablePrefix.length : 0,
|
|
157
|
+
value.length,
|
|
158
|
+
]),
|
|
159
|
+
],
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputPhone, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
163
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputPhone, isStandalone: true, selector: "input[tuiInputPhone]", inputs: { allowTextSetter: ["allowText", "allowTextSetter"], maskSetter: ["mask", "maskSetter"] }, host: { attributes: { "type": "tel" }, listeners: { "input": "onInput($event.target.value)" }, properties: { "inputMode": "inputMode()", "disabled": "disabled()" } }, providers: [
|
|
164
|
+
tuiAsControl(TuiInputPhone),
|
|
165
|
+
tuiValueTransformerFrom(TUI_INPUT_PHONE_OPTIONS),
|
|
166
|
+
], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithTextfield }, { directive: i2.MaskitoDirective }], ngImport: i0 }); }
|
|
167
|
+
}
|
|
168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputPhone, decorators: [{
|
|
169
|
+
type: Directive,
|
|
170
|
+
args: [{
|
|
171
|
+
standalone: true,
|
|
172
|
+
selector: 'input[tuiInputPhone]',
|
|
173
|
+
providers: [
|
|
174
|
+
tuiAsControl(TuiInputPhone),
|
|
175
|
+
tuiValueTransformerFrom(TUI_INPUT_PHONE_OPTIONS),
|
|
176
|
+
],
|
|
177
|
+
hostDirectives: [TuiWithTextfield, MaskitoDirective],
|
|
178
|
+
host: {
|
|
179
|
+
type: 'tel',
|
|
180
|
+
'[inputMode]': 'inputMode()',
|
|
181
|
+
'[disabled]': 'disabled()',
|
|
182
|
+
'(input)': 'onInput($event.target.value)',
|
|
183
|
+
},
|
|
184
|
+
}]
|
|
185
|
+
}], propDecorators: { allowTextSetter: [{
|
|
186
|
+
type: Input,
|
|
187
|
+
args: ['allowText']
|
|
188
|
+
}], maskSetter: [{
|
|
189
|
+
type: Input,
|
|
190
|
+
args: ['mask']
|
|
191
|
+
}] } });
|
|
192
|
+
function extractCountryCode(mask) {
|
|
193
|
+
const match = /^(\+\d+)/.exec(mask);
|
|
194
|
+
return match?.[1] || '';
|
|
195
|
+
}
|
|
196
|
+
function extractMask(mask) {
|
|
197
|
+
const match = /^\+\d+(.*)$/.exec(mask);
|
|
198
|
+
return match?.[1]?.trim() || '';
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Generated bundle index. Do not edit.
|
|
203
|
+
*/
|
|
204
|
+
|
|
205
|
+
export { TUI_INPUT_PHONE_DEFAULT_OPTIONS, TUI_INPUT_PHONE_OPTIONS, TuiInputPhone, tuiInputPhoneOptionsProvider };
|
|
206
|
+
//# sourceMappingURL=taiga-ui-kit-components-input-phone.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-components-input-phone.mjs","sources":["../../../projects/kit/components/input-phone/input-phone.options.ts","../../../projects/kit/components/input-phone/utils/complete-phone-insertion-preprocessor.ts","../../../projects/kit/components/input-phone/utils/create-phone-mask-expression.ts","../../../projects/kit/components/input-phone/input-phone.directive.ts","../../../projects/kit/components/input-phone/taiga-ui-kit-components-input-phone.ts"],"sourcesContent":["import type {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER} from '@taiga-ui/cdk/classes';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputPhoneOptions {\n readonly allowText: boolean;\n readonly mask: string;\n readonly valueTransformer: TuiValueTransformer<string | null, any>;\n}\n\nexport const TUI_INPUT_PHONE_DEFAULT_OPTIONS: TuiInputPhoneOptions = {\n mask: '+1 ### ###-####',\n allowText: false,\n valueTransformer: TUI_IDENTITY_VALUE_TRANSFORMER,\n};\n\nexport const [TUI_INPUT_PHONE_OPTIONS, tuiInputPhoneOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_PHONE_DEFAULT_OPTIONS,\n);\n","import type {MaskitoPreprocessor} from '@maskito/core';\n\nconst countDigits = (value: string): number => value.replaceAll(/\\D/g, '').length;\n\n/**\n * `InputPhone` component sets country code as non-removable prefix.\n * This prefix appears on focus and cannot be erased.\n * But users sometimes can copy complete phone number (from any different source)\n * and try to insert the whole string inside our `InputPhone` textfield.\n * This preprocessor helps to avoid country prefix duplication on paste/drop/autofill events.\n */\nexport function tuiCreateCompletePhoneInsertionPreprocessor(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n): MaskitoPreprocessor {\n const completePhoneLength = (countryCode + phoneMaskAfterCountryCode).replaceAll(\n /[^#\\d]+/g,\n '',\n ).length;\n\n const trimCountryPrefix = (value: string): string =>\n countryCode === '+7'\n ? value.replace(/^(\\+?\\s*7?\\s?8?)\\s?/, '')\n : value.replace(\n new RegExp(`^(\\\\+?\\\\s*${countryCode.replace('+', '')}?)\\\\s?`),\n '',\n );\n\n return ({elementState, data}) => {\n const {value, selection} = elementState;\n\n return {\n elementState: {\n selection,\n value:\n /**\n * The only possible case when `value` includes digits more\n * than mask expression allows – browser autofill.\n * It means that we are inside `input`-event\n * and mask are ready to reject \"extra\" characters.\n * We should cut leading country prefix to save trailing characters!\n */\n countDigits(value) > completePhoneLength\n ? trimCountryPrefix(value)\n : value,\n },\n data:\n countDigits(data) >= completePhoneLength || data.startsWith(countryCode)\n ? /**\n * User tries to insert/drop the complete phone number (with country prefix).\n * We should drop already existing non-removable prefix.\n */\n trimCountryPrefix(data)\n : data,\n };\n };\n}\n","/**\n * Create {@link https://maskito.dev/core-concepts/mask-expression pattern mask expression} for phone number\n *\n * @example\n * tuiCreatePhoneMaskExpression('+1', '(###) ###-####');\n */\nexport function tuiCreatePhoneMaskExpression(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n): Array<RegExp | string> {\n return [\n ...countryCode.split(''),\n ' ',\n ...phoneMaskAfterCountryCode\n .replaceAll(/[^#\\- ()]+/g, '')\n .split('')\n .map((item) => (item === '#' ? /\\d/ : item)),\n ];\n}\n","import {\n computed,\n Directive,\n effect,\n inject,\n Input,\n signal,\n untracked,\n} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport type {MaskitoOptions} from '@maskito/core';\nimport {MASKITO_DEFAULT_OPTIONS, maskitoTransform} from '@maskito/core';\nimport {maskitoCaretGuard, maskitoPrefixPostprocessorGenerator} from '@maskito/kit';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_PHONE_OPTIONS} from './input-phone.options';\nimport {tuiCreateCompletePhoneInsertionPreprocessor} from './utils/complete-phone-insertion-preprocessor';\nimport {tuiCreatePhoneMaskExpression} from './utils/create-phone-mask-expression';\n\nconst MASK_SYMBOLS = /[ \\-_()]/g;\n\nfunction isText(value: string): boolean {\n return Number.isNaN(parseInt(value.replaceAll(MASK_SYMBOLS, ''), 10));\n}\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputPhone]',\n providers: [\n tuiAsControl(TuiInputPhone),\n tuiValueTransformerFrom(TUI_INPUT_PHONE_OPTIONS),\n ],\n hostDirectives: [TuiWithTextfield, MaskitoDirective],\n host: {\n type: 'tel',\n '[inputMode]': 'inputMode()',\n '[disabled]': 'disabled()',\n '(input)': 'onInput($event.target.value)',\n },\n})\nexport class TuiInputPhone extends TuiControl<string | null> {\n private readonly textfield = inject(TuiTextfieldDirective);\n private readonly host: TuiTextfieldComponent<string> = inject(TuiTextfieldComponent);\n\n protected readonly nonRemovablePrefix = computed(() => `${this.countryCode()} `);\n protected inputMode = computed(() => (this.allowText() ? 'text' : 'numeric'));\n\n protected readonly valueEffect = effect(() => {\n const value = this.value() ?? '';\n\n if (!value) {\n return;\n }\n\n this.textfield.value.set(maskitoTransform(value, this.mask()));\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly blurEffect = effect(() => {\n const incomplete = untracked(() => !this.value());\n\n if (!this.host.focused() && incomplete) {\n this.textfield.value.set('');\n }\n\n if (this.host.focused() && incomplete && !this.allowText()) {\n this.textfield.value.set(this.nonRemovablePrefix());\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly options = inject(TUI_INPUT_PHONE_OPTIONS);\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n\n protected readonly mask = computed(() =>\n this.calculateMask(\n this.countryCode(),\n this.phoneMask(),\n this.nonRemovablePrefix(),\n this.allowText(),\n ),\n );\n\n protected readonly maskito = tuiMaskito(computed(() => this.mask()));\n\n public readonly countryCode = signal(extractCountryCode(this.options.mask));\n public readonly allowText = signal(this.options.allowText);\n public readonly phoneMask = signal(extractMask(this.options.mask));\n\n // TODO(v5): replace with signal input\n @Input('allowText')\n public set allowTextSetter(allow: boolean) {\n this.allowText.set(allow);\n }\n\n // TODO(v5): replace with signal input\n @Input('mask')\n public set maskSetter(mask: string) {\n this.countryCode.set(extractCountryCode(mask));\n this.phoneMask.set(extractMask(mask));\n }\n\n protected onInput(value: string): void {\n if (!value && !this.allowText()) {\n this.textfield.value.set(this.nonRemovablePrefix());\n }\n\n const parsed = isText(value)\n ? value\n : value.replaceAll(MASK_SYMBOLS, '').slice(0, this.maxPhoneLength);\n\n this.onChange(parsed === this.countryCode() || isText(parsed) ? '' : parsed);\n }\n\n private get maxPhoneLength(): number {\n return (\n this.countryCode().length + this.phoneMask().replaceAll(/[^#]+/g, '').length\n );\n }\n\n private calculateMask(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n nonRemovablePrefix: string,\n allowText: boolean,\n ): MaskitoOptions {\n const mask = tuiCreatePhoneMaskExpression(countryCode, phoneMaskAfterCountryCode);\n const preprocessors = [\n tuiCreateCompletePhoneInsertionPreprocessor(\n countryCode,\n phoneMaskAfterCountryCode,\n ),\n ];\n\n return allowText\n ? {\n mask: ({value}) =>\n isText(value) && value !== '+'\n ? (MASKITO_DEFAULT_OPTIONS.mask as RegExp)\n : mask,\n preprocessors,\n }\n : {\n mask,\n preprocessors,\n postprocessors: [\n maskitoPrefixPostprocessorGenerator(nonRemovablePrefix),\n ],\n plugins: [\n maskitoCaretGuard((value, [from, to]) => [\n from === to ? nonRemovablePrefix.length : 0,\n value.length,\n ]),\n ],\n };\n }\n}\n\nfunction extractCountryCode(mask: string): string {\n const match = /^(\\+\\d+)/.exec(mask);\n\n return match?.[1] || '';\n}\n\nfunction extractMask(mask: string): string {\n const match = /^\\+\\d+(.*)$/.exec(mask);\n\n return match?.[1]?.trim() || '';\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,7 @@ export * from '@taiga-ui/kit/components/input-month';
|
|
|
33
33
|
export * from '@taiga-ui/kit/components/input-month-range';
|
|
34
34
|
export * from '@taiga-ui/kit/components/input-number';
|
|
35
35
|
export * from '@taiga-ui/kit/components/input-password';
|
|
36
|
+
export * from '@taiga-ui/kit/components/input-phone';
|
|
36
37
|
export * from '@taiga-ui/kit/components/input-phone-international';
|
|
37
38
|
export * from '@taiga-ui/kit/components/input-pin';
|
|
38
39
|
export * from '@taiga-ui/kit/components/input-slider';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-components.mjs","sources":["../../../projects/kit/components/taiga-ui-kit-components.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-components.mjs","sources":["../../../projects/kit/components/taiga-ui-kit-components.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG"}
|