{"version":3,"file":"SlideInFilter-D1l8sy8p-chunk.js","sources":["../../../GSDClient/Scripts/Pages/ProductListingPage/FilterOption.tsx","../../../GSDClient/Scripts/Pages/ProductListingPage/FacetGroupFilter.tsx","../../../GSDClient/Scripts/Utils/getFiltrationValuesAndUpdateUrlQuery.ts","../../../GSDClient/Scripts/Pages/ProductListingPage/Filter.tsx","../../../GSDClient/Scripts/Hooks/useIsOverflow.tsx","../../../GSDClient/Scripts/Pages/ProductListingPage/ProductFilterTags.tsx","../../../GSDClient/Scripts/Pages/ProductListingPage/ProductSorting.tsx","../../../GSDClient/Icons/filter.svg?react","../../../GSDClient/Scripts/Pages/ProductListingPage/SlideInFilter.tsx"],"sourcesContent":["import { IFacetFilter } from 'Types/Litium';\n\nimport CheckBoxIcon from 'Icons/checkbox.svg?url';\n\ninterface FilterOptionProps {\n filterIsLoading: boolean;\n option: IFacetFilter;\n selected: boolean;\n filterGroup: string;\n toggleCheckbox: () => void;\n idPrefix: string;\n capitalize?: boolean;\n}\n\nconst FilterOption = ({\n filterIsLoading,\n option,\n selected,\n filterGroup,\n idPrefix,\n toggleCheckbox,\n capitalize,\n}: FilterOptionProps) => (\n \n (filterIsLoading ? false : toggleCheckbox())}\n value={option.id}\n aria-busy={filterIsLoading}\n />\n \n {option.colorHexCode ? (\n {option.label}\n ) : (\n <>\n {capitalize\n ? option.label.toLowerCase().replace('.', '')\n : option.label.replace('.', '')}{' '}\n ({option.quantity})\n \n )}\n \n \n);\n\nexport default FilterOption;\n","import useTrapFocus from 'Hooks/useTrapFocus';\nimport { IFacetGroupFilter } from 'Types/Litium';\nimport { useRef, useEffect } from 'react';\nimport FilterOption from 'Pages/ProductListingPage/FilterOption';\n\ninterface FacetGroupFilterProps\n extends Omit {\n showFilter: boolean;\n setShowFilter: React.Dispatch>;\n filterId: string;\n toggleCheckbox: () => void;\n filterGroup: string;\n filterIsLoading: boolean;\n outsideRef: React.MutableRefObject | null;\n label: string;\n}\n\nconst FacetGroupFilter = ({\n options,\n filterGroup,\n filterId,\n selectedOptions,\n showFilter,\n setShowFilter,\n toggleCheckbox,\n filterIsLoading,\n outsideRef,\n label,\n}: FacetGroupFilterProps) => {\n const closeTrap = () => {\n setShowFilter(-1);\n };\n\n const myRef = useRef();\n const trapRef = useTrapFocus(showFilter, closeTrap);\n\n useEffect(() => {\n trapRef.current = myRef.current;\n if (outsideRef !== null) {\n if (showFilter) {\n outsideRef.current = myRef.current;\n }\n }\n }, [myRef.current, showFilter]);\n\n const hasColorValues = options?.some(item => item.colorHexCode);\n\n return (\n \n {label}\n \n {options?.map((option, optionIndex) => (\n = 0}\n filterGroup={filterGroup}\n toggleCheckbox={toggleCheckbox}\n capitalize={filterGroup === 'ProductMaterial'}\n />\n ))}\n \n \n );\n};\n\nexport default FacetGroupFilter;\n","import { IFacetGroupFilter } from 'Types/Litium';\n\nconst getFiltrationValuesAndUpdateUrlQuery = (\n facetGroups: IFacetGroupFilter[],\n data: FormData,\n removeSingle?: {\n name: string;\n value: string;\n }\n) => {\n // Filter values\n const values = Array.from(data).map(filterValue => ({\n name: filterValue[0],\n value: filterValue[1] as string,\n }));\n\n const getCurrentParams = new URLSearchParams(window.location.search);\n // Page query param should not be kept as pages can be different when filtration is changed\n getCurrentParams.delete('page');\n\n const currentParams = Array.from(getCurrentParams).map(filterValue => ({\n name: filterValue[0],\n value: filterValue[1],\n }));\n\n const currentParamsWithoutFilterGroups = currentParams.filter(\n currentParam =>\n !facetGroups.find(param => param.id === currentParam.name)\n );\n\n const filterAndCurrentParams = [\n ...(removeSingle\n ? currentParams.filter(\n param =>\n !(\n param.value === removeSingle.value &&\n param.name === removeSingle.name\n )\n )\n : values),\n ...currentParamsWithoutFilterGroups,\n ].filter(\n (item, index, self) =>\n index ===\n self.findIndex(t => t.name === item.name && t.value === item.value)\n );\n const urlWithoutQueryString =\n window.location.origin + window.location.pathname;\n\n window.history.replaceState(\n {},\n '',\n `${urlWithoutQueryString}?${encodeURI(\n filterAndCurrentParams\n .map(facet => `${facet.name}=${facet.value}`)\n .join('&')\n )}`\n );\n\n return filterAndCurrentParams;\n};\n\nexport default getFiltrationValuesAndUpdateUrlQuery;\n","import { IFacetGroupFilter } from 'Types/Litium';\nimport ArrowDownIcon from 'Icons/caretGsd.svg?react';\nimport React, { useState, useRef, useEffect } from 'react';\nimport useOutsideClick from 'Hooks/useOutsideClick';\nimport FacetGroupFilter from 'Pages/ProductListingPage/FacetGroupFilter';\nimport getFiltrationValuesAndUpdateUrlQuery from 'Utils/getFiltrationValuesAndUpdateUrlQuery';\n\ntype IFilterProps = {\n getFiltration: (\n param: {\n name: string;\n value: string;\n }[]\n ) => void;\n isFetching: boolean;\n className?: string;\n facetFilters: IFacetGroupFilter[];\n};\n\nconst Filter = ({\n className = '',\n facetFilters,\n getFiltration,\n isFetching,\n}: IFilterProps) => {\n const [openFilter, setOpenFilter] = useState(-1);\n const filterRef = useRef();\n const handleFocusTrapForFacetGroupFilter = (\n event: React.KeyboardEvent\n ) => {\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n setOpenFilter(-1);\n }\n }\n };\n\n const handleClickOutside = () => {\n setOpenFilter(-1);\n };\n useEffect(() => {\n if (openFilter === -1) {\n outsideRef.current = null;\n }\n }, [openFilter]);\n\n const buttonRef = useRef();\n const outsideRef = useOutsideClick(handleClickOutside, buttonRef);\n\n const handleFiltration = (\n facetGroups: IFacetGroupFilter[],\n formData: HTMLFormElement\n ) => {\n const data = new FormData(formData);\n\n const filtrationValues = getFiltrationValuesAndUpdateUrlQuery(\n facetGroups,\n data\n );\n\n getFiltration(filtrationValues);\n };\n\n return (\n e.preventDefault()}\n className={className}\n >\n
    \n {facetFilters &&\n facetFilters.map(\n (filter, index) =>\n filter.options?.length > 0 && (\n \n {\n setOpenFilter(\n openFilter === index\n ? -1\n : index\n );\n }}\n onKeyDown={event =>\n handleFocusTrapForFacetGroupFilter(\n event\n )\n }\n aria-controls={`filter-dropdown-${index}`}\n aria-expanded={\n openFilter === index\n ? 'true'\n : 'false'\n }\n >\n \n {filter.label}\n {filter.selectedOptions?.length >\n 0 && (\n <>\n {' '}\n (\n {\n filter.selectedOptions\n .length\n }\n )\n \n )}\n \n \n \n \n \n \n handleFiltration(\n facetFilters,\n filterRef.current\n )\n }\n filterGroup={filter.id}\n filterIsLoading={isFetching}\n />\n \n )\n )}\n
\n \n );\n};\nexport default Filter;\n","import { useEffect, useState } from 'react';\n\nexport const useIsOverflow = (\n ref: React.MutableRefObject,\n scrollRef: React.MutableRefObject,\n forceReflow: unknown = null\n) => {\n const [refYOverflowing, setIsOverflow] = useState(false);\n const [refYScrollBegin, setRefYScrollBegin] = useState(true);\n const [refYScrollEnd, setRefYScrollEnd] = useState(false);\n\n const [refXOverflowing, setXIsOverflow] = useState(false);\n const [refXScrollBegin, setRefXScrollBegin] = useState(true);\n const [refXScrollEnd, setRefXScrollEnd] = useState(false);\n\n useEffect(() => {\n if (!ref?.current && !scrollRef?.current) {\n return;\n }\n\n const { current } = ref;\n const { current: scrollCurrent } = scrollRef;\n\n const trigger = () => {\n const hasOverflow =\n scrollCurrent.scrollHeight > scrollCurrent.clientHeight;\n const offsetBottom =\n scrollCurrent.scrollHeight - scrollCurrent.clientHeight;\n setRefYScrollEnd(scrollCurrent.scrollTop >= offsetBottom);\n setRefYScrollBegin(scrollCurrent.scrollTop === 0);\n setIsOverflow(hasOverflow);\n\n const hasXOverflow =\n scrollCurrent.scrollWidth > scrollCurrent.clientWidth;\n const offsetRight =\n scrollCurrent.scrollWidth - scrollCurrent.clientWidth;\n setRefXScrollEnd(scrollCurrent.scrollLeft >= offsetRight - 5);\n setRefXScrollBegin(scrollCurrent.scrollLeft === 0);\n setXIsOverflow(hasXOverflow);\n };\n\n let resizeObserver: ResizeObserver | null;\n\n if ('ResizeObserver' in window) {\n resizeObserver = new ResizeObserver(trigger);\n resizeObserver.observe(current);\n }\n\n scrollCurrent.addEventListener('scroll', trigger);\n\n trigger();\n\n return () => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n scrollCurrent.removeEventListener('scroll', trigger);\n };\n }, [ref, forceReflow]);\n\n return {\n refYOverflowing,\n refYScrollBegin,\n refYScrollEnd,\n refXOverflowing,\n refXScrollBegin,\n refXScrollEnd,\n };\n};\n","import {\n IFacetGroupFilter,\n IFacetSearchResult,\n IPaginationViewModel,\n} from 'Types/Litium';\nimport CloseIcon from 'Icons/closeThin.svg?react';\nimport getFiltrationValuesAndUpdateUrlQuery from 'Utils/getFiltrationValuesAndUpdateUrlQuery';\nimport { useIsOverflow } from 'Scripts/Hooks/useIsOverflow';\nimport { useRef } from 'react';\n\ntype IProductFilterProps = {\n facetSearchResult: IFacetSearchResult;\n pagination: IPaginationViewModel;\n totalProductsCountTitle: string;\n getFiltration: (\n param: {\n name: string;\n value: string;\n }[]\n ) => void;\n};\n\nconst ProductFilterTags = ({\n facetSearchResult,\n pagination,\n totalProductsCountTitle,\n getFiltration,\n}: IProductFilterProps) => {\n const wrapperRef = useRef();\n const taglistRef = useRef();\n\n const { refXOverflowing, refXScrollBegin, refXScrollEnd } = useIsOverflow(\n taglistRef,\n wrapperRef,\n facetSearchResult\n );\n\n const handleClearAllFilters = () => {\n const filtrationValues = getFiltrationValuesAndUpdateUrlQuery(\n facetSearchResult.facetFilters,\n new FormData()\n );\n getFiltration(filtrationValues);\n };\n\n const handleRemoveFilterValue = (\n filter: IFacetGroupFilter,\n selectedOptions: string\n ) => {\n const value = filter.options.find(item => item.id === selectedOptions);\n const filtrationValues = getFiltrationValuesAndUpdateUrlQuery(\n facetSearchResult.facetFilters,\n new FormData(),\n { name: filter.id, value: value.id }\n );\n\n getFiltration(filtrationValues);\n };\n\n return (\n \n );\n};\n\nexport default ProductFilterTags;\n","import { ICategoryFilteringViewModel } from 'Types/Litium';\nimport CaretDown from 'Icons/caretGsd.svg?react';\n\ninterface IProductSortingProps {\n getFiltration: (\n param: {\n name: string;\n value: string;\n }[]\n ) => void;\n isFetching: boolean;\n sortCriteria: ICategoryFilteringViewModel;\n sortTitle: string;\n}\n\nconst ProductSorting = ({\n sortCriteria,\n sortTitle,\n getFiltration,\n isFetching,\n}: IProductSortingProps) => {\n const handleSortClick = (sortValue: string, selected: boolean) => {\n const trimmedValue = sortValue.substring(\n sortValue.lastIndexOf('?') + 1\n );\n const values = trimmedValue\n .split('&')\n .map(filterValue => {\n const [name, value] = filterValue.split('=');\n return { name, value: decodeURIComponent(value) };\n })\n .filter(obj => {\n if (selected) {\n return !obj.name.includes('sort');\n }\n return true;\n });\n\n getFiltration(values);\n\n if (selected) {\n const sortIndex = sortValue.indexOf('sort');\n const resetSearch = sortValue.substring(0, sortIndex - 1);\n window.history.replaceState({}, '', resetSearch);\n return;\n }\n\n window.history.replaceState({}, '', sortValue);\n };\n\n return (\n sortCriteria && (\n
\n

\n {sortTitle}:\n

\n
\n {sortCriteria.sortItems.map((criteria, index) => (\n \n isFetching\n ? false\n : handleSortClick(\n criteria.value,\n criteria.selected\n )\n }\n className={`text-small flex h-7 w-7 items-center justify-center rounded-full p-1 font-montserrat tabular-nums text-black transition-colors duration-layout lg:h-8 lg:w-8 lg:p-1 ${\n criteria.selected\n ? 'bg-romantic'\n : 'bg-transparent'\n }`}\n >\n {criteria.text}\n \n \n ))}\n
\n
\n )\n );\n};\n\nexport default ProductSorting;\n","import * as React from \"react\";\nconst SvgFilter = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", viewBox: \"0 0 22 16\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M.65 1.322h20.7M2.855 6.049h16.29M7.982 15.504h6.036M5.06 10.775h11.88\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgFilter;\n","import {\n IFacetGroupFilter,\n IFacetSearchResultTranslations,\n} from 'Types/Litium';\nimport { useRef, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { BreakPointHooks } from 'Hooks/BreakPointHooks';\nimport { Accordion, AccordionChild } from 'Components/Accordion';\nimport getFiltrationValuesAndUpdateUrlQuery from 'Utils/getFiltrationValuesAndUpdateUrlQuery';\nimport Overlay from 'Components/Overlay';\nimport FilterIcon from 'Icons/filter.svg?react';\nimport CloseIcon from 'Icons/closeThin.svg?react';\nimport useLockedBody from 'Hooks/useLockedBody';\nimport CtaButton from 'Components/CtaButton';\nimport { useIsOverflow } from 'Hooks/useIsOverflow';\nimport useOutsideClick from 'Hooks/useOutsideClick';\nimport FilterOption from 'Pages/ProductListingPage/FilterOption';\n\nconst { useGreater } = BreakPointHooks();\n\ninterface ISlideInFilterProps {\n className?: string;\n facetFilters: IFacetGroupFilter[];\n translations: IFacetSearchResultTranslations;\n getFiltration: (\n param: {\n name: string;\n value: string;\n }[]\n ) => void;\n isFetching: boolean;\n}\n\nconst SlideInFilter = ({\n className = '',\n facetFilters,\n translations,\n getFiltration,\n isFetching,\n}: ISlideInFilterProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const filterRef = useRef();\n const accordionRef = useRef();\n const outSideClickRef = useOutsideClick(() =>\n showFilter(false)\n ) as React.LegacyRef;\n const [, setLocked] = useLockedBody(false);\n const { refYOverflowing, refYScrollBegin, refYScrollEnd } = useIsOverflow(\n accordionRef,\n filterRef\n );\n const [renderOverlay, setRenderOverlay] = useState(false);\n const isGreater = useGreater('lg');\n const totalSelectedOptions = facetFilters?.reduce(\n (totalSelected, filter) =>\n totalSelected + filter.selectedOptions.length,\n 0\n );\n const handleFiltration = (\n facetGroups: IFacetGroupFilter[],\n formData: HTMLFormElement,\n shouldReset?: boolean\n ) => {\n const data = new FormData(formData);\n const filtrationValues = getFiltrationValuesAndUpdateUrlQuery(\n facetGroups,\n shouldReset ? new FormData() : data\n );\n\n getFiltration(filtrationValues);\n if (shouldReset) setIsOpen(false);\n };\n\n const showFilter = (value: boolean) => {\n setIsOpen(value);\n setLocked(value);\n };\n\n useEffect(() => {\n if (isGreater) {\n setIsOpen(false);\n setLocked(false);\n }\n if (!renderOverlay) {\n setRenderOverlay(true);\n }\n }, [isGreater]);\n\n return (\n facetFilters.length > 0 && (\n
\n showFilter(true)}\n >\n \n {translations.filterTitleMobile}\n \n {totalSelectedOptions}\n \n \n \n \n \n \n \n {translations.filterTitleMobile}\n \n showFilter(false)}\n >\n \n {translations.filterClose}\n \n \n \n
\n e.preventDefault()}\n className={`-:overflow-auto -:overflow-x-hidden -:px-4.5 ${className}`}\n >\n
\n \n {translations.filterTitleMobile}\n \n \n {facetFilters.map(\n (filter, index) =>\n filter.options?.length > 0 && (\n \n
\n \n {filter.label}\n \n \n option.colorHexCode\n )\n ? 'flex-row'\n : 'flex-col'\n }`}\n >\n {filter.options.map(\n (\n option,\n optionIndex\n ) => (\n = 0\n }\n filterGroup={\n filter.id\n }\n toggleCheckbox={() =>\n handleFiltration(\n facetFilters,\n filterRef.current\n )\n }\n />\n )\n )}\n \n
\n \n )\n )}\n
\n
\n \n \n showFilter(false)}\n >\n {translations.filterShowProducts}\n \n {\n handleFiltration(\n facetFilters,\n filterRef.current,\n true\n );\n showFilter(false);\n }}\n >\n {translations.filterClear}\n \n \n {renderOverlay && (\n <>\n {createPortal(\n ,\n document.body,\n 'overlay'\n )}\n \n )}\n \n \n )\n );\n};\n\nexport default SlideInFilter;\n"],"names":["FilterOption","filterIsLoading","option","selected","filterGroup","idPrefix","toggleCheckbox","capitalize","jsxs","jsx","CheckBoxIcon","Fragment","FacetGroupFilter","options","filterId","selectedOptions","showFilter","setShowFilter","outsideRef","label","closeTrap","myRef","useRef","trapRef","useTrapFocus","useEffect","hasColorValues","item","optionIndex","getFiltrationValuesAndUpdateUrlQuery","facetGroups","data","removeSingle","values","filterValue","getCurrentParams","currentParams","currentParamsWithoutFilterGroups","currentParam","param","filterAndCurrentParams","index","self","t","urlWithoutQueryString","facet","Filter","className","facetFilters","getFiltration","isFetching","openFilter","setOpenFilter","useState","filterRef","handleFocusTrapForFacetGroupFilter","event","handleClickOutside","buttonRef","useOutsideClick","handleFiltration","formData","filtrationValues","e","filter","_a","_b","ArrowDownIcon","useIsOverflow","ref","scrollRef","forceReflow","refYOverflowing","setIsOverflow","refYScrollBegin","setRefYScrollBegin","refYScrollEnd","setRefYScrollEnd","refXOverflowing","setXIsOverflow","refXScrollBegin","setRefXScrollBegin","refXScrollEnd","setRefXScrollEnd","current","scrollCurrent","trigger","hasOverflow","offsetBottom","hasXOverflow","offsetRight","resizeObserver","ProductFilterTags","facetSearchResult","pagination","totalProductsCountTitle","wrapperRef","taglistRef","handleClearAllFilters","handleRemoveFilterValue","value","selectedOption","CloseIcon","ProductSorting","sortCriteria","sortTitle","handleSortClick","sortValue","name","obj","sortIndex","resetSearch","criteria","CaretDown","SvgFilter","props","React.createElement","useGreater","BreakPointHooks","SlideInFilter","translations","isOpen","setIsOpen","accordionRef","outSideClickRef","setLocked","useLockedBody","renderOverlay","setRenderOverlay","isGreater","totalSelectedOptions","totalSelected","shouldReset","FilterIcon","Accordion","AccordionChild","_c","CtaButton","createPortal","Overlay"],"mappings":"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"}