UNPKG

coveo-search-ui

Version:

Coveo JavaScript Search Framework

47 lines (39 loc) 1.45 kB
import { Component } from '../ui/Base/Component'; import { $$, Dom } from './Dom'; export interface IComponentsTypesSearchInterface { getComponents: (type: string) => Component[]; } export class ComponentsTypes { public static get allFacetsType() { return [ 'Facet', 'FacetSlider', 'FacetRange', 'TimespanFacet', 'HierarchicalFacet', 'CategoryFacet', 'DynamicFacet', 'DynamicFacetRange', 'DynamicHierarchicalFacet' ]; } public static get allFacetsClassname() { return ComponentsTypes.allFacetsType.map(type => `Coveo${type}`); } public static getAllFacetElementsFromElement(root: HTMLElement | Dom) { const selectors = ComponentsTypes.allFacetsClassname.map(className => `.${className}`).join(', '); const hasNoFacetChild = (element: HTMLElement) => !$$(element).findAll(selectors).length; return $$(root as HTMLElement) .findAll(selectors) .filter(hasNoFacetChild); } public static getAllFacetInstancesFromElement(root: HTMLElement | Dom) { return ComponentsTypes.getAllFacetElementsFromElement(root).map(element => Component.get(element) as Component); } public static getAllFacetsFromSearchInterface(searchInterface: IComponentsTypesSearchInterface) { return ComponentsTypes.allFacetsType.reduce( (facets: Component[], facetType: string) => facets.concat(searchInterface.getComponents(facetType)), [] ); } }