@taiga-ui/kit
Version:
Taiga UI Angular main components kit
49 lines (45 loc) • 2.1 kB
JavaScript
import * as i0 from '@angular/core';
import { inject, signal, computed, untracked, Pipe } from '@angular/core';
import { tuiIsFlat } from '@taiga-ui/cdk/utils/miscellaneous';
import { TuiTextfieldMultiComponent } from '@taiga-ui/core/components/textfield';
import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
class TuiHideSelectedPipe {
constructor() {
this.textfield = inject(TuiTextfieldMultiComponent);
this.handlers = inject(TUI_ITEMS_HANDLERS);
this.items = signal([]);
this.filtered = computed(() => {
const items = this.items();
const value = this.textfield.cva()?.value() || [];
if (!items) {
return null;
}
return tuiIsFlat(items)
? this.filter(items, value, this.handlers.identityMatcher())
: this.filter2d(items, value, this.handlers.identityMatcher());
});
}
transform(items) {
untracked(() => {
this.items.set(items);
});
return this.filtered();
}
filter2d(items, value, matcher) {
return items.map((subItems) => this.filter(subItems, value, matcher));
}
filter(items, value, matcher) {
return items.filter((item) => value.every((selected) => !matcher(selected, item)));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TuiHideSelectedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.21", ngImport: i0, type: TuiHideSelectedPipe, isStandalone: true, name: "tuiHideSelected", pure: false }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TuiHideSelectedPipe, decorators: [{
type: Pipe,
args: [{ name: 'tuiHideSelected', pure: false }]
}] });
/**
* Generated bundle index. Do not edit.
*/
export { TuiHideSelectedPipe };
//# sourceMappingURL=taiga-ui-kit-pipes-hide-selected.mjs.map