@taiga-ui/kit
Version:
Taiga UI Angular main components kit
71 lines • 11.6 kB
JavaScript
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==