UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

71 lines 11.6 kB
import { DOCUMENT } from '@angular/common'; import { computed, Directive, inject, Input } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; import { tuiDirectiveBinding, tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous'; import { TuiIcon } from '@taiga-ui/core/components/icon'; import { TuiTextfieldComponent } from '@taiga-ui/core/components/textfield'; import { TUI_APPEARANCE_OPTIONS, TuiWithAppearance, } from '@taiga-ui/core/directives/appearance'; import { TuiHintDirective } from '@taiga-ui/core/directives/hint'; import { TUI_COPY_TEXTS } from '@taiga-ui/kit/tokens'; import { map, startWith, Subject, switchMap, timer } from 'rxjs'; import { TUI_COPY_OPTIONS } from './copy.options'; import * as i0 from "@angular/core"; import * as i1 from "@taiga-ui/core/directives/appearance"; import * as i2 from "@taiga-ui/core/directives/hint"; class TuiCopyDirective { constructor() { this.options = inject(TUI_COPY_OPTIONS); this.copied$ = new Subject(); this.doc = inject(DOCUMENT); this.textfield = inject(TuiTextfieldComponent); this.hint = tuiDirectiveBinding(TuiHintDirective, 'tuiHint', toSignal(inject(TUI_COPY_TEXTS).pipe(switchMap(([copy, copied]) => this.copied$.pipe(switchMap(() => timer(3000).pipe(map(() => copy), startWith(copied))), startWith(copy)))), { initialValue: '' })); this.icons = tuiDirectiveBinding(TuiIcon, 'icon', computed((size = this.textfield.options.size()) => tuiIsString(this.options.icon) ? this.options.icon : this.options.icon(size))); this.tuiCopy = ''; } get disabled() { return !this.textfield.input?.nativeElement.value; } copy() { this.textfield.input?.nativeElement.select(); this.doc.execCommand('copy'); this.copied$.next(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCopyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } 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: [ { provide: TUI_APPEARANCE_OPTIONS, useValue: { appearance: 'icon' }, }, ], hostDirectives: [{ directive: i1.TuiWithAppearance }, { directive: i2.TuiHintDirective, inputs: ["tuiHintAppearance", "tuiHintAppearance", "tuiHintContext", "tuiHintContext"] }], ngImport: i0 }); } } export { TuiCopyDirective }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCopyDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: 'tui-icon[tuiCopy]', providers: [ { provide: TUI_APPEARANCE_OPTIONS, useValue: { appearance: 'icon' }, }, ], hostDirectives: [ TuiWithAppearance, { directive: TuiHintDirective, inputs: ['tuiHintAppearance', 'tuiHintContext'], }, ], host: { style: 'cursor: pointer', '(click)': 'copy()', '[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', }, }] }], propDecorators: { tuiCopy: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvZGlyZWN0aXZlcy9jb3B5L2NvcHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsV0FBVyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDbkYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsaUJBQWlCLEdBQ3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRS9ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRWhELE1Bd0JhLGdCQUFnQjtJQXhCN0I7UUF5QnFCLFlBQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM5QixRQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJCLGNBQVMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxQyxTQUFJLEdBQUcsbUJBQW1CLENBQ3pDLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsUUFBUSxDQUNKLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNYLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ1osR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNmLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FDcEIsQ0FDSixFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDbEIsQ0FDSixDQUNKLEVBQ0QsRUFBQyxZQUFZLEVBQUUsRUFBRSxFQUFDLENBQ3JCLENBQ0osQ0FBQztRQUVpQixVQUFLLEdBQUcsbUJBQW1CLENBQzFDLE9BQU8sRUFDUCxNQUFNLEVBQ04sUUFBUSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FDOUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDL0UsQ0FDSixDQUFDO1FBR0ssWUFBTyxHQUFHLEVBQUUsQ0FBQztLQVd2QjtJQVRHLElBQWMsUUFBUTtRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUN0RCxDQUFDO0lBRVMsSUFBSTtRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBOUNRLGdCQUFnQjttR0FBaEIsZ0JBQWdCLHlZQXJCZDtZQUNQO2dCQUNJLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLFFBQVEsRUFBRSxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7YUFDakM7U0FDSjs7U0FnQlEsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBeEI1QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLHNCQUFzQjs0QkFDL0IsUUFBUSxFQUFFLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzt5QkFDakM7cUJBQ0o7b0JBQ0QsY0FBYyxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakI7NEJBQ0ksU0FBUyxFQUFFLGdCQUFnQjs0QkFDM0IsTUFBTSxFQUFFLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUM7eUJBQ2xEO3FCQUNKO29CQUNELElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsaUJBQWlCO3dCQUN4QixTQUFTLEVBQUUsUUFBUTt3QkFDbkIsd0JBQXdCLEVBQUUsMEJBQTBCO3dCQUNwRCxpQkFBaUIsRUFBRSxpREFBaUQ7d0JBQ3BFLDBCQUEwQixFQUFFLGdEQUFnRDtxQkFDL0U7aUJBQ0o7OEJBcUNVLE9BQU87c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge2NvbXB1dGVkLCBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHt0dWlEaXJlY3RpdmVCaW5kaW5nLCB0dWlJc1N0cmluZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VHVpSWNvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7VHVpVGV4dGZpZWxkQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIFRVSV9BUFBFQVJBTkNFX09QVElPTlMsXG4gICAgVHVpV2l0aEFwcGVhcmFuY2UsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvYXBwZWFyYW5jZSc7XG5pbXBvcnQge1R1aUhpbnREaXJlY3RpdmV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaGludCc7XG5pbXBvcnQge1RVSV9DT1BZX1RFWFRTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge21hcCwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRpbWVyfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfQ09QWV9PUFRJT05TfSBmcm9tICcuL2NvcHkub3B0aW9ucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktaWNvblt0dWlDb3B5XScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9BUFBFQVJBTkNFX09QVElPTlMsXG4gICAgICAgICAgICB1c2VWYWx1ZToge2FwcGVhcmFuY2U6ICdpY29uJ30sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICBUdWlXaXRoQXBwZWFyYW5jZSxcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBUdWlIaW50RGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ3R1aUhpbnRBcHBlYXJhbmNlJywgJ3R1aUhpbnRDb250ZXh0J10sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHN0eWxlOiAnY3Vyc29yOiBwb2ludGVyJyxcbiAgICAgICAgJyhjbGljayknOiAnY29weSgpJyxcbiAgICAgICAgJ1tzdHlsZS5wb2ludGVyLWV2ZW50c10nOiAnZGlzYWJsZWQgPyBcIm5vbmVcIiA6IG51bGwnLFxuICAgICAgICAnW3N0eWxlLm9wYWNpdHldJzogJ2Rpc2FibGVkID8gXCJ2YXIoLS10dWktZGlzYWJsZWQtb3BhY2l0eSlcIiA6IG51bGwnLFxuICAgICAgICAnW3N0eWxlLmJvcmRlci13aWR0aC5yZW1dJzogJ3RleHRmaWVsZC5vcHRpb25zLnNpemUoKSA9PT0gXCJsXCIgPyBudWxsIDogMC4yNScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ29weURpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9DT1BZX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29waWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2MgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRleHRmaWVsZCA9IGluamVjdChUdWlUZXh0ZmllbGRDb21wb25lbnQpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBoaW50ID0gdHVpRGlyZWN0aXZlQmluZGluZyhcbiAgICAgICAgVHVpSGludERpcmVjdGl2ZSxcbiAgICAgICAgJ3R1aUhpbnQnLFxuICAgICAgICB0b1NpZ25hbChcbiAgICAgICAgICAgIGluamVjdChUVUlfQ09QWV9URVhUUykucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKFtjb3B5LCBjb3BpZWRdKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcGllZCQucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyKDMwMDApLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBjb3B5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKGNvcGllZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoY29weSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB7aW5pdGlhbFZhbHVlOiAnJ30sXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29ucyA9IHR1aURpcmVjdGl2ZUJpbmRpbmcoXG4gICAgICAgIFR1aUljb24sXG4gICAgICAgICdpY29uJyxcbiAgICAgICAgY29tcHV0ZWQoKHNpemUgPSB0aGlzLnRleHRmaWVsZC5vcHRpb25zLnNpemUoKSkgPT5cbiAgICAgICAgICAgIHR1aUlzU3RyaW5nKHRoaXMub3B0aW9ucy5pY29uKSA/IHRoaXMub3B0aW9ucy5pY29uIDogdGhpcy5vcHRpb25zLmljb24oc2l6ZSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR1aUNvcHkgPSAnJztcblxuICAgIHByb3RlY3RlZCBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy50ZXh0ZmllbGQuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvcHkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dGZpZWxkLmlucHV0Py5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgICAgICB0aGlzLmRvYy5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICB0aGlzLmNvcGllZCQubmV4dCgpO1xuICAgIH1cbn1cbiJdfQ==