@taiga-ui/kit
Version:
Taiga UI Angular main components kit
89 lines • 11.7 kB
JavaScript
import { __decorate, __param } from "tslib";
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Inject, Input, Optional, Output, Self, } from '@angular/core';
import { NgControl } from '@angular/forms';
import { AbstractTuiMultipleControl, ALWAYS_FALSE_HANDLER, isNativeFocusedIn, TUI_DEFAULT_IDENTITY_MATCHER, TUI_DEFAULT_STRINGIFY, tuiDefaultProp, tuiPure, } from '@taiga-ui/cdk';
const TUI_DEFAULT_CONTENT_STRINGIFY = item => TUI_DEFAULT_STRINGIFY(item.$implicit);
const ɵ0 = TUI_DEFAULT_CONTENT_STRINGIFY;
// @bad TODO: Add active zone to track focus
let TuiFilterComponent = class TuiFilterComponent extends AbstractTuiMultipleControl {
constructor(control, changeDetectorRef, elementRef) {
super(control, changeDetectorRef);
this.elementRef = elementRef;
this.identityMatcher = TUI_DEFAULT_IDENTITY_MATCHER;
this.items = [];
this.size = 'm';
this.content = TUI_DEFAULT_CONTENT_STRINGIFY;
this.badgeHandler = item => Number(item);
this.disabledItemHandler = ALWAYS_FALSE_HANDLER;
this.toggledItem = new EventEmitter();
}
get focused() {
return isNativeFocusedIn(this.elementRef.nativeElement);
}
getItemContentContext($implicit) {
return {
$implicit,
};
}
onCheckbox(value, item) {
this.toggledItem.emit(item);
this.updateValue(value
? [...this.value, item]
: this.value.filter(arrItem => !this.identityMatcher(arrItem, item)));
}
isCheckboxEnabled(item) {
return this.value.some(arrItem => this.identityMatcher(arrItem, item));
}
};
TuiFilterComponent.ctorParameters = () => [
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] }
];
__decorate([
Input(),
tuiDefaultProp()
], TuiFilterComponent.prototype, "identityMatcher", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiFilterComponent.prototype, "items", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-size'),
tuiDefaultProp()
], TuiFilterComponent.prototype, "size", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiFilterComponent.prototype, "content", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiFilterComponent.prototype, "badgeHandler", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiFilterComponent.prototype, "disabledItemHandler", void 0);
__decorate([
Output()
], TuiFilterComponent.prototype, "toggledItem", void 0);
__decorate([
tuiPure
], TuiFilterComponent.prototype, "getItemContentContext", null);
TuiFilterComponent = __decorate([
Component({
selector: 'tui-filter',
template: "<ng-container *ngFor=\"let item of items\">\n <tui-checkbox-block\n automation-id=\"tui-filter__checkbox\"\n class=\"item\"\n [disabled]=\"disabledItemHandler(item)\"\n [hideCheckbox]=\"true\"\n [ngModel]=\"isCheckboxEnabled(item)\"\n [size]=\"size\"\n (ngModelChange)=\"onCheckbox($event, item)\"\n >\n <div automation-id=\"tui-filter__content\" class=\"content\">\n <div\n polymorpheus-outlet\n [content]=\"content\"\n [context]=\"getItemContentContext(item)\"\n ></div>\n <tui-badge\n *ngIf=\"badgeHandler(item) as badgeValue\"\n automation-id=\"tui-filter__badge\"\n class=\"badge\"\n status=\"light\"\n [class.badge_disabled]=\"disabledItemHandler(item)\"\n [size]=\"size\"\n [value]=\"badgeValue\"\n ></tui-badge>\n </div>\n </tui-checkbox-block>\n</ng-container>\n",
changeDetection: ChangeDetectionStrategy.OnPush,
styles: [":host{display:block;margin-bottom:-4px}.content{display:flex;align-items:center}.item{margin-right:4px;margin-bottom:4px}.item:last-child,:host[data-tui-host-size='l'] .item:last-child{margin-right:0}:host[data-tui-host-size='l'] .item{margin-right:8px;margin-bottom:8px}.badge{margin-left:4px}.badge_disabled{opacity:var(--tui-disabled-opacity)}"]
}),
__param(0, Optional()),
__param(0, Self()),
__param(0, Inject(NgControl)),
__param(1, Inject(ChangeDetectorRef)),
__param(2, Inject(ElementRef))
], TuiFilterComponent);
export { TuiFilterComponent };
export { ɵ0 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9maWx0ZXIvIiwic291cmNlcyI6WyJmaWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLDRCQUE0QixFQUM1QixxQkFBcUIsRUFHckIsY0FBYyxFQUdkLE9BQU8sR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixNQUFNLDZCQUE2QixHQUUvQixJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFFbEQsNENBQTRDO0FBTzVDLElBQWEsa0JBQWtCLEdBQS9CLE1BQWEsa0JBQXNCLFNBQVEsMEJBQTZCO0lBNkJwRSxZQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBQzFCLFVBQW1DO1FBRXhFLEtBQUssQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUZHLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBaEM1RSxvQkFBZSxHQUEwQiw0QkFBNEIsQ0FBQztRQUl0RSxVQUFLLEdBQXFCLEVBQUUsQ0FBQztRQUs3QixTQUFJLEdBQXdCLEdBQUcsQ0FBQztRQUloQyxZQUFPLEdBQTZCLDZCQUE2QixDQUFDO1FBSWxFLGlCQUFZLEdBQTBCLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSTNELHdCQUFtQixHQUF5QixvQkFBb0IsQ0FBQztRQUd4RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFXN0MsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBR0QscUJBQXFCLENBQUMsU0FBWTtRQUM5QixPQUFPO1lBQ0gsU0FBUztTQUNaLENBQUM7SUFDTixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWMsRUFBRSxJQUFPO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQ1osS0FBSztZQUNELENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDdkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUMzRSxDQUFDO0lBQ04sQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQU87UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNKLENBQUE7O1lBOUJnQixTQUFTLHVCQUhqQixRQUFRLFlBQ1IsSUFBSSxZQUNKLE1BQU0sU0FBQyxTQUFTO1lBRTZCLGlCQUFpQix1QkFBOUQsTUFBTSxTQUFDLGlCQUFpQjtZQUN3QixVQUFVLHVCQUExRCxNQUFNLFNBQUMsVUFBVTs7QUFoQ3RCO0lBRkMsS0FBSyxFQUFFO0lBQ1AsY0FBYyxFQUFFOzJEQUNxRDtBQUl0RTtJQUZDLEtBQUssRUFBRTtJQUNQLGNBQWMsRUFBRTtpREFDWTtBQUs3QjtJQUhDLEtBQUssRUFBRTtJQUNQLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQztJQUN0QyxjQUFjLEVBQUU7Z0RBQ2U7QUFJaEM7SUFGQyxLQUFLLEVBQUU7SUFDUCxjQUFjLEVBQUU7bURBQ2lEO0FBSWxFO0lBRkMsS0FBSyxFQUFFO0lBQ1AsY0FBYyxFQUFFO3dEQUMwQztBQUkzRDtJQUZDLEtBQUssRUFBRTtJQUNQLGNBQWMsRUFBRTsrREFDZ0Q7QUFHakU7SUFEQyxNQUFNLEVBQUU7dURBQ29DO0FBa0I3QztJQURDLE9BQU87K0RBS1A7QUFqRFEsa0JBQWtCO0lBTjlCLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxZQUFZO1FBQ3RCLHloQ0FBcUM7UUFFckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O0tBQ2xELENBQUM7SUErQk8sV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUNWLFdBQUEsSUFBSSxFQUFFLENBQUE7SUFDTixXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUVqQixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3pCLFdBQUEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0dBbkNkLGtCQUFrQixDQStEOUI7U0EvRFksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpTXVsdGlwbGVDb250cm9sLFxuICAgIEFMV0FZU19GQUxTRV9IQU5ETEVSLFxuICAgIGlzTmF0aXZlRm9jdXNlZEluLFxuICAgIFRVSV9ERUZBVUxUX0lERU5USVRZX01BVENIRVIsXG4gICAgVFVJX0RFRkFVTFRfU1RSSU5HSUZZLFxuICAgIFR1aUJvb2xlYW5IYW5kbGVyLFxuICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQsXG4gICAgdHVpRGVmYXVsdFByb3AsXG4gICAgVHVpSGFuZGxlcixcbiAgICBUdWlJZGVudGl0eU1hdGNoZXIsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1R1aVNpemVMLCBUdWlTaXplU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuXG5jb25zdCBUVUlfREVGQVVMVF9DT05URU5UX1NUUklOR0lGWTogUG9seW1vcnBoZXVzQ29udGVudDxcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0PGFueT5cbj4gPSBpdGVtID0+IFRVSV9ERUZBVUxUX1NUUklOR0lGWShpdGVtLiRpbXBsaWNpdCk7XG5cbi8vIEBiYWQgVE9ETzogQWRkIGFjdGl2ZSB6b25lIHRvIHRyYWNrIGZvY3VzXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1maWx0ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHVpRmlsdGVyQ29tcG9uZW50PFQ+IGV4dGVuZHMgQWJzdHJhY3RUdWlNdWx0aXBsZUNvbnRyb2w8VD4ge1xuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBpZGVudGl0eU1hdGNoZXI6IFR1aUlkZW50aXR5TWF0Y2hlcjxUPiA9IFRVSV9ERUZBVUxUX0lERU5USVRZX01BVENIRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaXRlbXM6IFJlYWRvbmx5QXJyYXk8VD4gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdHVpLWhvc3Qtc2l6ZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzaXplOiBUdWlTaXplUyB8IFR1aVNpemVMID0gJ20nO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8YW55PiA9IFRVSV9ERUZBVUxUX0NPTlRFTlRfU1RSSU5HSUZZO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGJhZGdlSGFuZGxlcjogVHVpSGFuZGxlcjxULCBudW1iZXI+ID0gaXRlbSA9PiBOdW1iZXIoaXRlbSk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VD4gPSBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHRvZ2dsZWRJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hdGl2ZUZvY3VzZWRJbih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBnZXRJdGVtQ29udGVudENvbnRleHQoJGltcGxpY2l0OiBUKTogVHVpQ29udGV4dFdpdGhJbXBsaWNpdDxUPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkaW1wbGljaXQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25DaGVja2JveCh2YWx1ZTogYm9vbGVhbiwgaXRlbTogVCkge1xuICAgICAgICB0aGlzLnRvZ2dsZWRJdGVtLmVtaXQoaXRlbSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgID8gWy4uLnRoaXMudmFsdWUsIGl0ZW1dXG4gICAgICAgICAgICAgICAgOiB0aGlzLnZhbHVlLmZpbHRlcihhcnJJdGVtID0+ICF0aGlzLmlkZW50aXR5TWF0Y2hlcihhcnJJdGVtLCBpdGVtKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNDaGVja2JveEVuYWJsZWQoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5zb21lKGFyckl0ZW0gPT4gdGhpcy5pZGVudGl0eU1hdGNoZXIoYXJySXRlbSwgaXRlbSkpO1xuICAgIH1cbn1cbiJdfQ==