UNPKG

@taiga-ui/core

Version:

Core library for creating Angular components and applications using Taiga UI

64 lines 11.5 kB
import { DOCUMENT, NgFor, NgIf } from '@angular/common'; import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core'; import { WA_NAVIGATOR } from '@ng-web-apis/common'; import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator'; import { TuiAppearance } from '@taiga-ui/core/directives/appearance'; import { TuiTextfieldBase } from './textfield.directive'; import { tuiAsTextfieldAccessor } from './textfield-accessor'; import * as i0 from "@angular/core"; import * as i1 from "@taiga-ui/cdk/directives/native-validator"; import * as i2 from "@taiga-ui/core/directives/appearance"; /** * @deprecated use {@link TuiSelect} from @taiga-ui/kit instead, drop in v5 */ class TuiSelect extends TuiTextfieldBase { constructor() { super(...arguments); this.nav = inject(WA_NAVIGATOR); this.doc = inject(DOCUMENT); this.placeholder = ''; } setValue(value) { this.control?.control?.setValue(value); this.el.dispatchEvent(new Event('input', { bubbles: true })); } focus() { this.el.classList.add('_ios-fix'); this.el.focus(); this.el.classList.remove('_ios-fix'); } get ariaLabel() { return this.doc.querySelector(`label[for="${this.el.id}"]`) ? null : this.el.getAttribute('aria-label') || this.placeholder; } get stringified() { return this.handlers.stringify()(this.control?.value ?? ''); } async onCopy() { await this.nav.clipboard.writeText(this.stringified); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSelect, deps: null, target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSelect, isStandalone: true, selector: "select[tuiTextfield]", inputs: { placeholder: "placeholder" }, host: { listeners: { "input": "0", "focusin": "0", "focusout": "0", "keydown.space.prevent": "0", "keydown.enter.prevent": "0", "keydown.backspace": "setValue(\"\")", "mousedown.prevent": "focus()", "keydown.control.c": "onCopy()", "keydown.meta.c": "onCopy()" }, properties: { "id": "textfield.id", "class._empty": "stringified === \"\"", "attr.aria-label": "ariaLabel" } }, providers: [tuiAsTextfieldAccessor(TuiSelect)], usesInheritance: true, hostDirectives: [{ directive: i1.TuiNativeValidator }, { directive: i2.TuiAppearance }], ngImport: i0, template: "<option\n *ngIf=\"placeholder && !stringified; else selected\"\n disabled\n selected\n value=\"\"\n>\n {{ placeholder }}\n</option>\n<ng-template #selected>\n <option\n *ngFor=\"let item of [stringified]\"\n selected\n [value]=\"item\"\n >\n {{ item }}\n </option>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); } } export { TuiSelect }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSelect, decorators: [{ type: Component, args: [{ standalone: true, selector: 'select[tuiTextfield]', imports: [NgFor, NgIf], changeDetection: ChangeDetectionStrategy.Default, providers: [tuiAsTextfieldAccessor(TuiSelect)], hostDirectives: [TuiNativeValidator, TuiAppearance], host: { '[id]': 'textfield.id', '[class._empty]': 'stringified === ""', '[attr.aria-label]': 'ariaLabel', '(input)': '0', '(focusin)': '0', '(focusout)': '0', '(keydown.space.prevent)': '0', '(keydown.enter.prevent)': '0', '(keydown.backspace)': 'setValue("")', '(mousedown.prevent)': 'focus()', '(keydown.control.c)': 'onCopy()', '(keydown.meta.c)': 'onCopy()', }, template: "<option\n *ngIf=\"placeholder && !stringified; else selected\"\n disabled\n selected\n value=\"\"\n>\n {{ placeholder }}\n</option>\n<ng-template #selected>\n <option\n *ngFor=\"let item of [stringified]\"\n selected\n [value]=\"item\"\n >\n {{ item }}\n </option>\n</ng-template>\n" }] }], propDecorators: { placeholder: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQvc2VsZWN0LmRpcmVjdGl2ZS50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQvc2VsZWN0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFbkUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFFNUQ7O0dBRUc7QUFDSCxNQXlCYSxTQUFhLFNBQVEsZ0JBQW1CO0lBekJyRDs7UUEwQnFCLFFBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0IsUUFBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdqQyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztLQTBCM0I7SUF4Qm1CLFFBQVEsQ0FBQyxLQUFRO1FBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFjLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDdkQsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBYyxXQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRVMsS0FBSyxDQUFDLE1BQU07UUFDbEIsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7K0dBOUJRLFNBQVM7bUdBQVQsU0FBUyxtZUFqQlAsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQywwSUNwQmxELGdWQWlCQSw0Q0RGYyxLQUFLLG1IQUFFLElBQUk7O1NBc0JaLFNBQVM7NEZBQVQsU0FBUztrQkF6QnJCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHNCQUFzQixXQUN2QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsbUJBSUwsdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLHNCQUFzQixXQUFXLENBQUMsa0JBQzlCLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLFFBQzdDO3dCQUNGLE1BQU0sRUFBRSxjQUFjO3dCQUN0QixnQkFBZ0IsRUFBRSxvQkFBb0I7d0JBQ3RDLG1CQUFtQixFQUFFLFdBQVc7d0JBQ2hDLFNBQVMsRUFBRSxHQUFHO3dCQUNkLFdBQVcsRUFBRSxHQUFHO3dCQUNoQixZQUFZLEVBQUUsR0FBRzt3QkFDakIseUJBQXlCLEVBQUUsR0FBRzt3QkFDOUIseUJBQXlCLEVBQUUsR0FBRzt3QkFDOUIscUJBQXFCLEVBQUUsY0FBYzt3QkFDckMscUJBQXFCLEVBQUUsU0FBUzt3QkFDaEMscUJBQXFCLEVBQUUsVUFBVTt3QkFDakMsa0JBQWtCLEVBQUUsVUFBVTtxQkFDakM7OEJBT00sV0FBVztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9DVU1FTlQsIE5nRm9yLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V0FfTkFWSUdBVE9SfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7VHVpTmF0aXZlVmFsaWRhdG9yfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvbmF0aXZlLXZhbGlkYXRvcic7XG5pbXBvcnQge1R1aUFwcGVhcmFuY2V9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvYXBwZWFyYW5jZSc7XG5cbmltcG9ydCB7VHVpVGV4dGZpZWxkQmFzZX0gZnJvbSAnLi90ZXh0ZmllbGQuZGlyZWN0aXZlJztcbmltcG9ydCB7dHVpQXNUZXh0ZmllbGRBY2Nlc3Nvcn0gZnJvbSAnLi90ZXh0ZmllbGQtYWNjZXNzb3InO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgVHVpU2VsZWN0fSBmcm9tIEB0YWlnYS11aS9raXQgaW5zdGVhZCwgZHJvcCBpbiB2NVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2VsZWN0W3R1aVRleHRmaWVsZF0nLFxuICAgIGltcG9ydHM6IFtOZ0ZvciwgTmdJZl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC50ZW1wbGF0ZS5odG1sJyxcbiAgICAvLyBXZSB3YW50IHRoaXMgdGVtcGxhdGUgdG8gZm9sbG93IGNoYW5nZSBkZXRlY3Rpb24gdG8gcGFyZW50IHRleHRmaWVsZC5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3ByZWZlci1vbi1wdXNoLWNvbXBvbmVudC1jaGFuZ2UtZGV0ZWN0aW9uXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIHByb3ZpZGVyczogW3R1aUFzVGV4dGZpZWxkQWNjZXNzb3IoVHVpU2VsZWN0KV0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlOYXRpdmVWYWxpZGF0b3IsIFR1aUFwcGVhcmFuY2VdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tpZF0nOiAndGV4dGZpZWxkLmlkJyxcbiAgICAgICAgJ1tjbGFzcy5fZW1wdHldJzogJ3N0cmluZ2lmaWVkID09PSBcIlwiJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCcsXG4gICAgICAgICcoaW5wdXQpJzogJzAnLFxuICAgICAgICAnKGZvY3VzaW4pJzogJzAnLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICcwJyxcbiAgICAgICAgJyhrZXlkb3duLnNwYWNlLnByZXZlbnQpJzogJzAnLFxuICAgICAgICAnKGtleWRvd24uZW50ZXIucHJldmVudCknOiAnMCcsXG4gICAgICAgICcoa2V5ZG93bi5iYWNrc3BhY2UpJzogJ3NldFZhbHVlKFwiXCIpJyxcbiAgICAgICAgJyhtb3VzZWRvd24ucHJldmVudCknOiAnZm9jdXMoKScsXG4gICAgICAgICcoa2V5ZG93bi5jb250cm9sLmMpJzogJ29uQ29weSgpJyxcbiAgICAgICAgJyhrZXlkb3duLm1ldGEuYyknOiAnb25Db3B5KCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVNlbGVjdDxUPiBleHRlbmRzIFR1aVRleHRmaWVsZEJhc2U8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF2ID0gaW5qZWN0KFdBX05BVklHQVRPUik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2MgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRyb2w/LmNvbnRyb2w/LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5lbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7YnViYmxlczogdHJ1ZX0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWwuY2xhc3NMaXN0LmFkZCgnX2lvcy1maXgnKTtcbiAgICAgICAgdGhpcy5lbC5mb2N1cygpO1xuICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5yZW1vdmUoJ19pb3MtZml4Jyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBhcmlhTGFiZWwoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvYy5xdWVyeVNlbGVjdG9yKGBsYWJlbFtmb3I9XCIke3RoaXMuZWwuaWR9XCJdYClcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLmVsLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpIHx8IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBzdHJpbmdpZmllZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVycy5zdHJpbmdpZnkoKSh0aGlzLmNvbnRyb2w/LnZhbHVlID8/ICcnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgb25Db3B5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLm5hdi5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMuc3RyaW5naWZpZWQpO1xuICAgIH1cbn1cbiIsIjxvcHRpb25cbiAgICAqbmdJZj1cInBsYWNlaG9sZGVyICYmICFzdHJpbmdpZmllZDsgZWxzZSBzZWxlY3RlZFwiXG4gICAgZGlzYWJsZWRcbiAgICBzZWxlY3RlZFxuICAgIHZhbHVlPVwiXCJcbj5cbiAgICB7eyBwbGFjZWhvbGRlciB9fVxuPC9vcHRpb24+XG48bmctdGVtcGxhdGUgI3NlbGVjdGVkPlxuICAgIDxvcHRpb25cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgW3N0cmluZ2lmaWVkXVwiXG4gICAgICAgIHNlbGVjdGVkXG4gICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICA+XG4gICAgICAgIHt7IGl0ZW0gfX1cbiAgICA8L29wdGlvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=