packages/react-search-ui-views/src/SingleLinksFacet.tsx (59 lines of code) (raw):

import React from "react"; import { FacetViewProps } from "./types"; import { getFilterValueDisplay } from "./view-helpers"; import { appendClassName } from "./view-helpers"; import type { FieldValue } from "@elastic/search-ui"; function SingleLinksFacet({ className, label, onRemove, onSelect, options }: FacetViewProps) { const value = options.filter((o) => o.selected).map((o) => o.value)[0]; return ( <div className={appendClassName("sui-facet", className)}> <div> <div className="sui-facet__title">{label}</div> <ul className="sui-single-option-facet"> {value && ( <li className="sui-single-option-facet__selected"> {getFilterValueDisplay(value)}{" "} <span className="sui-single-option-facet__remove"> ( <a onClick={(e) => { e.preventDefault(); onRemove(value as FieldValue); }} href="/" > Remove </a> ) </span> </li> )} {!value && options.map((option) => ( <li className="sui-single-option-facet__item" key={getFilterValueDisplay(option.value)} > <a data-transaction-name={`facet - ${label}`} className="sui-single-option-facet__link" href="/" onClick={(e) => { e.preventDefault(); onSelect(option.value as FieldValue); }} > {getFilterValueDisplay(option.value)} </a>{" "} <span className="sui-facet__count">{option.count}</span> </li> ))} </ul> </div> </div> ); } export default SingleLinksFacet;