@taiga-ui/core
Version:
Core library for creating Angular components and applications using Taiga UI
65 lines • 11.5 kB
JavaScript
import { CommonModule, DOCUMENT } 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";
import * as i3 from "@angular/common";
/**
* @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: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.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: [CommonModule], 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQvc2VsZWN0LmRpcmVjdGl2ZS50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQvc2VsZWN0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFFNUQ7O0dBRUc7QUFDSCxNQXlCYSxTQUFhLFNBQVEsZ0JBQW1CO0lBekJyRDs7UUEwQnFCLFFBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0IsUUFBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdqQyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztLQTBCM0I7SUF4Qm1CLFFBQVEsQ0FBQyxLQUFRO1FBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFjLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDdkQsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBYyxXQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRVMsS0FBSyxDQUFDLE1BQU07UUFDbEIsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7K0dBOUJRLFNBQVM7bUdBQVQsU0FBUyxtZUFqQlAsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQywwSUNwQmxELGdWQWlCQSwyQ0RGYyxZQUFZOztTQXNCYixTQUFTOzRGQUFULFNBQVM7a0JBekJyQixTQUFTO2lDQUNNLElBQUksWUFDTixzQkFBc0IsV0FDdkIsQ0FBQyxZQUFZLENBQUMsbUJBSU4sdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLHNCQUFzQixXQUFXLENBQUMsa0JBQzlCLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLFFBQzdDO3dCQUNGLE1BQU0sRUFBRSxjQUFjO3dCQUN0QixnQkFBZ0IsRUFBRSxvQkFBb0I7d0JBQ3RDLG1CQUFtQixFQUFFLFdBQVc7d0JBQ2hDLFNBQVMsRUFBRSxHQUFHO3dCQUNkLFdBQVcsRUFBRSxHQUFHO3dCQUNoQixZQUFZLEVBQUUsR0FBRzt3QkFDakIseUJBQXlCLEVBQUUsR0FBRzt3QkFDOUIseUJBQXlCLEVBQUUsR0FBRzt3QkFDOUIscUJBQXFCLEVBQUUsY0FBYzt3QkFDckMscUJBQXFCLEVBQUUsU0FBUzt3QkFDaEMscUJBQXFCLEVBQUUsVUFBVTt3QkFDakMsa0JBQWtCLEVBQUUsVUFBVTtxQkFDakM7OEJBT00sV0FBVztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlLCBET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dBX05BVklHQVRPUn0gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQge1R1aU5hdGl2ZVZhbGlkYXRvcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL25hdGl2ZS12YWxpZGF0b3InO1xuaW1wb3J0IHtUdWlBcHBlYXJhbmNlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2FwcGVhcmFuY2UnO1xuXG5pbXBvcnQge1R1aVRleHRmaWVsZEJhc2V9IGZyb20gJy4vdGV4dGZpZWxkLmRpcmVjdGl2ZSc7XG5pbXBvcnQge3R1aUFzVGV4dGZpZWxkQWNjZXNzb3J9IGZyb20gJy4vdGV4dGZpZWxkLWFjY2Vzc29yJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIFR1aVNlbGVjdH0gZnJvbSBAdGFpZ2EtdWkva2l0IGluc3RlYWQsIGRyb3AgaW4gdjVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NlbGVjdFt0dWlUZXh0ZmllbGRdJyxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LnRlbXBsYXRlLmh0bWwnLFxuICAgIC8vIFdlIHdhbnQgdGhpcyB0ZW1wbGF0ZSB0byBmb2xsb3cgY2hhbmdlIGRldGVjdGlvbiB0byBwYXJlbnQgdGV4dGZpZWxkLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvcHJlZmVyLW9uLXB1c2gtY29tcG9uZW50LWNoYW5nZS1kZXRlY3Rpb25cbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgcHJvdmlkZXJzOiBbdHVpQXNUZXh0ZmllbGRBY2Nlc3NvcihUdWlTZWxlY3QpXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1R1aU5hdGl2ZVZhbGlkYXRvciwgVHVpQXBwZWFyYW5jZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2lkXSc6ICd0ZXh0ZmllbGQuaWQnLFxuICAgICAgICAnW2NsYXNzLl9lbXB0eV0nOiAnc3RyaW5naWZpZWQgPT09IFwiXCInLFxuICAgICAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnYXJpYUxhYmVsJyxcbiAgICAgICAgJyhpbnB1dCknOiAnMCcsXG4gICAgICAgICcoZm9jdXNpbiknOiAnMCcsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJzAnLFxuICAgICAgICAnKGtleWRvd24uc3BhY2UucHJldmVudCknOiAnMCcsXG4gICAgICAgICcoa2V5ZG93bi5lbnRlci5wcmV2ZW50KSc6ICcwJyxcbiAgICAgICAgJyhrZXlkb3duLmJhY2tzcGFjZSknOiAnc2V0VmFsdWUoXCJcIiknLFxuICAgICAgICAnKG1vdXNlZG93bi5wcmV2ZW50KSc6ICdmb2N1cygpJyxcbiAgICAgICAgJyhrZXlkb3duLmNvbnRyb2wuYyknOiAnb25Db3B5KCknLFxuICAgICAgICAnKGtleWRvd24ubWV0YS5jKSc6ICdvbkNvcHkoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpU2VsZWN0PFQ+IGV4dGVuZHMgVHVpVGV4dGZpZWxkQmFzZTxUPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXYgPSBpbmplY3QoV0FfTkFWSUdBVE9SKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvYyA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIHNldFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmVsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHtidWJibGVzOiB0cnVlfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QuYWRkKCdfaW9zLWZpeCcpO1xuICAgICAgICB0aGlzLmVsLmZvY3VzKCk7XG4gICAgICAgIHRoaXMuZWwuY2xhc3NMaXN0LnJlbW92ZSgnX2lvcy1maXgnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGFyaWFMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jLnF1ZXJ5U2VsZWN0b3IoYGxhYmVsW2Zvcj1cIiR7dGhpcy5lbC5pZH1cIl1gKVxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMuZWwuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgfHwgdGhpcy5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHN0cmluZ2lmaWVkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZXJzLnN0cmluZ2lmeSgpKHRoaXMuY29udHJvbD8udmFsdWUgPz8gJycpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBvbkNvcHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMubmF2LmNsaXBib2FyZC53cml0ZVRleHQodGhpcy5zdHJpbmdpZmllZCk7XG4gICAgfVxufVxuIiwiPG9wdGlvblxuICAgICpuZ0lmPVwicGxhY2Vob2xkZXIgJiYgIXN0cmluZ2lmaWVkOyBlbHNlIHNlbGVjdGVkXCJcbiAgICBkaXNhYmxlZFxuICAgIHNlbGVjdGVkXG4gICAgdmFsdWU9XCJcIlxuPlxuICAgIHt7IHBsYWNlaG9sZGVyIH19XG48L29wdGlvbj5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0ZWQ+XG4gICAgPG9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBbc3RyaW5naWZpZWRdXCJcbiAgICAgICAgc2VsZWN0ZWRcbiAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgID5cbiAgICAgICAge3sgaXRlbSB9fVxuICAgIDwvb3B0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==