private syncItemVisiblity()

in packages/attribute-slicer/src/AttributeSlicer.ts [996:1029]


	private syncItemVisiblity(forceLoad: boolean = false): void {
		let filteredData: ISlicerItem[] = [];
		if (this.data && this.data.length) {
			filteredData = this.data.filter((n: ISlicerItem, i: number) => {
				const item: ISlicerItem = this.data[i];
				let isVisible: boolean =
					!this.showSelections ||
					!(
						!!this.selectedItems &&
						this.selectedItems.filter((b: ISlicerItem) => b.id === item.id)
							.length > 0
					);

				// update the search
				if (isVisible && !this.serverSideSearch && this.searchString) {
					isVisible = AttributeSlicer.IS_MATCH(
						item,
						this.searchString,
						this.caseInsensitive,
					);
				}

				return isVisible;
			});
		}
		if (
			this.virtualList &&
			(forceLoad ||
				filteredData.length !== (this.virtualList.items || []).length)
		) {
			this.virtualList.setItems(filteredData);
			// this.virtualList.rerender();
		}
	}