UNPKG

@taiga-ui/kit

Version:
97 lines 12.6 kB
import { __decorate, __extends, __param, __read, __spread } 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'; var TUI_DEFAULT_CONTENT_STRINGIFY = function (item) { return TUI_DEFAULT_STRINGIFY(item.$implicit); }; var ɵ0 = TUI_DEFAULT_CONTENT_STRINGIFY; // @bad TODO: Add active zone to track focus var TuiFilterComponent = /** @class */ (function (_super) { __extends(TuiFilterComponent, _super); function TuiFilterComponent(control, changeDetectorRef, elementRef) { var _this = _super.call(this, control, changeDetectorRef) || this; _this.elementRef = elementRef; _this.identityMatcher = TUI_DEFAULT_IDENTITY_MATCHER; _this.items = []; _this.size = 'm'; _this.content = TUI_DEFAULT_CONTENT_STRINGIFY; _this.badgeHandler = function (item) { return Number(item); }; _this.disabledItemHandler = ALWAYS_FALSE_HANDLER; _this.toggledItem = new EventEmitter(); return _this; } Object.defineProperty(TuiFilterComponent.prototype, "focused", { get: function () { return isNativeFocusedIn(this.elementRef.nativeElement); }, enumerable: true, configurable: true }); TuiFilterComponent.prototype.getItemContentContext = function ($implicit) { return { $implicit: $implicit, }; }; TuiFilterComponent.prototype.onCheckbox = function (value, item) { var _this = this; this.toggledItem.emit(item); this.updateValue(value ? __spread(this.value, [item]) : this.value.filter(function (arrItem) { return !_this.identityMatcher(arrItem, item); })); }; TuiFilterComponent.prototype.isCheckboxEnabled = function (item) { var _this = this; return this.value.some(function (arrItem) { return _this.identityMatcher(arrItem, item); }); }; TuiFilterComponent.ctorParameters = function () { return [ { 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); return TuiFilterComponent; }(AbstractTuiMultipleControl)); export { TuiFilterComponent }; export { ɵ0 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9maWx0ZXIvIiwic291cmNlcyI6WyJmaWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLDRCQUE0QixFQUM1QixxQkFBcUIsRUFHckIsY0FBYyxFQUdkLE9BQU8sR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixJQUFNLDZCQUE2QixHQUUvQixVQUFBLElBQUksSUFBSSxPQUFBLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBckMsQ0FBcUMsQ0FBQzs7QUFFbEQsNENBQTRDO0FBTzVDO0lBQTJDLHNDQUE2QjtJQTZCcEUsNEJBSUksT0FBeUIsRUFDRSxpQkFBb0MsRUFDMUIsVUFBbUM7UUFONUUsWUFRSSxrQkFBTSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FDcEM7UUFId0MsZ0JBQVUsR0FBVixVQUFVLENBQXlCO1FBaEM1RSxxQkFBZSxHQUEwQiw0QkFBNEIsQ0FBQztRQUl0RSxXQUFLLEdBQXFCLEVBQUUsQ0FBQztRQUs3QixVQUFJLEdBQXdCLEdBQUcsQ0FBQztRQUloQyxhQUFPLEdBQTZCLDZCQUE2QixDQUFDO1FBSWxFLGtCQUFZLEdBQTBCLFVBQUEsSUFBSSxJQUFJLE9BQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFaLENBQVksQ0FBQztRQUkzRCx5QkFBbUIsR0FBeUIsb0JBQW9CLENBQUM7UUFHeEQsaUJBQVcsR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDOztJQVc3QyxDQUFDO0lBRUQsc0JBQUksdUNBQU87YUFBWDtZQUNJLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1RCxDQUFDOzs7T0FBQTtJQUdELGtEQUFxQixHQUFyQixVQUFzQixTQUFZO1FBQzlCLE9BQU87WUFDSCxTQUFTLFdBQUE7U0FDWixDQUFDO0lBQ04sQ0FBQztJQUVELHVDQUFVLEdBQVYsVUFBVyxLQUFjLEVBQUUsSUFBTztRQUFsQyxpQkFPQztRQU5HLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQ1osS0FBSztZQUNELENBQUMsVUFBSyxJQUFJLENBQUMsS0FBSyxHQUFFLElBQUksR0FDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBcEMsQ0FBb0MsQ0FBQyxDQUMzRSxDQUFDO0lBQ04sQ0FBQztJQUVELDhDQUFpQixHQUFqQixVQUFrQixJQUFPO1FBQXpCLGlCQUVDO1FBREcsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFuQyxDQUFtQyxDQUFDLENBQUM7SUFDM0UsQ0FBQzs7Z0JBN0JZLFNBQVMsdUJBSGpCLFFBQVEsWUFDUixJQUFJLFlBQ0osTUFBTSxTQUFDLFNBQVM7Z0JBRTZCLGlCQUFpQix1QkFBOUQsTUFBTSxTQUFDLGlCQUFpQjtnQkFDd0IsVUFBVSx1QkFBMUQsTUFBTSxTQUFDLFVBQVU7O0lBaEN0QjtRQUZDLEtBQUssRUFBRTtRQUNQLGNBQWMsRUFBRTsrREFDcUQ7SUFJdEU7UUFGQyxLQUFLLEVBQUU7UUFDUCxjQUFjLEVBQUU7cURBQ1k7SUFLN0I7UUFIQyxLQUFLLEVBQUU7UUFDUCxXQUFXLENBQUMseUJBQXlCLENBQUM7UUFDdEMsY0FBYyxFQUFFO29EQUNlO0lBSWhDO1FBRkMsS0FBSyxFQUFFO1FBQ1AsY0FBYyxFQUFFO3VEQUNpRDtJQUlsRTtRQUZDLEtBQUssRUFBRTtRQUNQLGNBQWMsRUFBRTs0REFDMEM7SUFJM0Q7UUFGQyxLQUFLLEVBQUU7UUFDUCxjQUFjLEVBQUU7bUVBQ2dEO0lBR2pFO1FBREMsTUFBTSxFQUFFOzJEQUNvQztJQWtCN0M7UUFEQyxPQUFPO21FQUtQO0lBakRRLGtCQUFrQjtRQU45QixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsWUFBWTtZQUN0Qix5aENBQXFDO1lBRXJDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNsRCxDQUFDO1FBK0JPLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLElBQUksRUFBRSxDQUFBO1FBQ04sV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFakIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUN6QixXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtPQW5DZCxrQkFBa0IsQ0ErRDlCO0lBQUQseUJBQUM7Q0FBQSxBQS9ERCxDQUEyQywwQkFBMEIsR0ErRHBFO1NBL0RZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU11bHRpcGxlQ29udHJvbCxcbiAgICBBTFdBWVNfRkFMU0VfSEFORExFUixcbiAgICBpc05hdGl2ZUZvY3VzZWRJbixcbiAgICBUVUlfREVGQVVMVF9JREVOVElUWV9NQVRDSEVSLFxuICAgIFRVSV9ERUZBVUxUX1NUUklOR0lGWSxcbiAgICBUdWlCb29sZWFuSGFuZGxlcixcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUhhbmRsZXIsXG4gICAgVHVpSWRlbnRpdHlNYXRjaGVyLFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUdWlTaXplTCwgVHVpU2l6ZVN9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuY29uc3QgVFVJX0RFRkFVTFRfQ09OVEVOVF9TVFJJTkdJRlk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8XG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdDxhbnk+XG4+ID0gaXRlbSA9PiBUVUlfREVGQVVMVF9TVFJJTkdJRlkoaXRlbS4kaW1wbGljaXQpO1xuXG4vLyBAYmFkIFRPRE86IEFkZCBhY3RpdmUgem9uZSB0byB0cmFjayBmb2N1c1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktZmlsdGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbHRlci5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFR1aUZpbHRlckNvbXBvbmVudDxUPiBleHRlbmRzIEFic3RyYWN0VHVpTXVsdGlwbGVDb250cm9sPFQ+IHtcbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaWRlbnRpdHlNYXRjaGVyOiBUdWlJZGVudGl0eU1hdGNoZXI8VD4gPSBUVUlfREVGQVVMVF9JREVOVElUWV9NQVRDSEVSO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGl0ZW1zOiBSZWFkb25seUFycmF5PFQ+ID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR1aS1ob3N0LXNpemUnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc2l6ZTogVHVpU2l6ZVMgfCBUdWlTaXplTCA9ICdtJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBjb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50PGFueT4gPSBUVUlfREVGQVVMVF9DT05URU5UX1NUUklOR0lGWTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBiYWRnZUhhbmRsZXI6IFR1aUhhbmRsZXI8VCwgbnVtYmVyPiA9IGl0ZW0gPT4gTnVtYmVyKGl0ZW0pO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFQ+ID0gQUxXQVlTX0ZBTFNFX0hBTkRMRVI7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSB0b2dnbGVkSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNOYXRpdmVGb2N1c2VkSW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgZ2V0SXRlbUNvbnRlbnRDb250ZXh0KCRpbXBsaWNpdDogVCk6IFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VD4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJGltcGxpY2l0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG9uQ2hlY2tib3godmFsdWU6IGJvb2xlYW4sIGl0ZW06IFQpIHtcbiAgICAgICAgdGhpcy50b2dnbGVkSXRlbS5lbWl0KGl0ZW0pO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICA/IFsuLi50aGlzLnZhbHVlLCBpdGVtXVxuICAgICAgICAgICAgICAgIDogdGhpcy52YWx1ZS5maWx0ZXIoYXJySXRlbSA9PiAhdGhpcy5pZGVudGl0eU1hdGNoZXIoYXJySXRlbSwgaXRlbSkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzQ2hlY2tib3hFbmFibGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuc29tZShhcnJJdGVtID0+IHRoaXMuaWRlbnRpdHlNYXRjaGVyKGFyckl0ZW0sIGl0ZW0pKTtcbiAgICB9XG59XG4iXX0=