{"version":3,"sources":["webpack:///./src/internal/views/common/ColumnRenderer.tsx","webpack:///./src/internal/constants/ProductBriefCollection.ts","webpack:///./src/internal/views/product-brief-collection/ProductBriefCollection.tsx","webpack:///./src/internal/views/product-brief-collection/ProductBriefCollectionWrapper.tsx","webpack:///./src/internal/views/product-filters/components/CheckboxFilter.tsx","webpack:///./src/internal/views/product-filters/components/ButtonFilter.tsx","webpack:///./src/internal/views/product-filters/components/CategoryFiltersItem.tsx","webpack:///./src/internal/views/product-filters/components/ProductsNo.tsx","webpack:///./src/internal/views/product-filters/FilterItemWrapper.tsx","webpack:///./src/internal/views/product-filters/components/FilterItem.tsx","webpack:///./src/internal/views/product-filters/components/FiltersList.tsx","webpack:///./src/internal/utils/splitCamelCase.ts","webpack:///./src/internal/views/product-filters/components/ActiveFiltersNo.tsx","webpack:///./src/internal/views/product-filters/components/FiltersSets.tsx","webpack:///./src/internal/views/product-filters/components/ClearAllFilters.tsx","webpack:///./src/internal/views/product-filters/DesktopFilters.tsx","webpack:///./src/internal/views/product-filters/MobileFiltersModal.tsx","webpack:///./src/internal/views/product-filters/MobileFilters.tsx","webpack:///./src/internal/views/product-filters/FiltersConfig.ts","webpack:///./src/internal/views/product-grid/ProductGridFilters.tsx","webpack:///./src/internal/views/product-grid/ProductGrid.tsx","webpack:///./src/internal/views/product-grid/MobileSortingDropdown.tsx","webpack:///./src/internal/views/product-grid/ProductSortingDropdown.tsx","webpack:///./src/internal/views/product-accordion/ProductAccordion.tsx","webpack:///./src/internal/views/product-grid/CategoryHeader.tsx","webpack:///./src/internal/views/product-grid/ProductGridHeaders.tsx","webpack:///./src/exported/product-grid-wrapper/ProductGridWrapper.tsx"],"names":["TIME_DURATION","DefaultColumn","div","space8","desktop","props","columns","rows","CarouselColumn","this","isCarousel","ColumnWrapper","className","children","PRODUCT_BRIEF_CLASS_NAMES","Object","freeze","GRID_ITEM_CLASS_NAME","COLUMN_WIDTH_SELECTOR","ITEMS_CLASSNAME","ProductBriefWrapper","breakpoints","columnWithMobile","columnWithDesktop","largeScreen","columnWithLargeScreen","LargeScreen","columnWithExtraLargeScreen","getColumnsWith","config","numColumnsMobile","numColumnsDesktop","numColumnsLargeScreen","numColumnsExtraLargeScreen","getPercentByColumnNumber","renderBriefViewContent","gridItems","enableGridCarousel","isMobile","reduce","components","item","push","key","itemId","w","h","itemType","getItemToRender","renderBriefView","isLoaded","imageOverride","featuredProduct","gridItem","areFiltersApplied","hideProductBadge","showSubDisplayName","hideProductPrice","hideProductPriceRange","hideProductRating","ctaType","enableNotifyMe","enableQuickView","enableMobileQuickView","productGridHideReadReviewsLink","hideReviewsNumber","enableHoverInteraction","enableShadePicker","enableSizePicker","shortDescriptionLocation","enableProductDetailLink","enableQuickViewShortcut","featuredProductOverrideImage","enableLearnMoreLink","autoReplenishOptions","autoReplenishToggleType","showToosTitle","showToosMessage","enableNumberShades","sizePickerImages","hideProductPricePerUnit","showProductQuantitySelector","hideEmptyStars","enableAutoReplenishment","translationsOverwrites","productImages","lazyLoadGridItem","productBenefitTypes","positionIndex","getOverrideImage","isFeatured","product","CollectionItem","collectionItem","PRODUCT","id","productBriefProps","getBriefProps","TOUT","productBriefViewClassNames","minWidth","maxWidth","StyledLabel","space24","space16","space20","CheckboxFilter","classnames","disabled","enabled","label","value","onChange","onFilterSelect","isChecked","isSelected","StyledButton","ButtonFilter","onClick","CategoryFiltersButton","FilterItem","checkboxFilter","onSelectFilterClick","StyledResultsRow","space12","styledResultsRowClassnames","styledResultsLabelClassnames","productsNumber","translations","resultsLabel","StyledFilterButton","space6","StyledRemoveIcon","ariaLabel","onRemoveTag","filter","setActiveState","appliedFiltersClassnames","StyledSelectedTagsRow","space40","styledSelectedCategoryRowClassnames","applyFiltersLabel","appliedFilters","length","filterSet","concat","activeFilters","map","splitCamelCase","text","split","join","ActiveFiltersWrapper","span","filtersNo","StyledCategory","isCategoryTagSelected","StyledCol","StyledRow","StyledButtonRow","filterCategory","active","filterSets","styledButtonRowClassnames","filters","option","keyNumber","toggleActiveState","checkboxFilters","shouldHideFiltersForSet","getSelectedFilterSet","alwaysOn","showFiltersWhenToggled","isOpen","styledCategoryRowClassnames","handleFilterSetToggle","xs","sm","md","lg","computeStyledCategoryClassName","filterByLabel","getFilters","clearAllButtonClassnames","clearFiltersLabel","StyledToggleButton","clearAllFilters","productFiltersViewController","onClearAllAppliedFilters","singleFilterToggle","allowAllFiltersCollapsed","activeFilterSets","_filterSet","setOpenState","toggleOpenState","toggleFilters","data","isFiltersModalOpen","onCloseFiltersClick","onOpenFiltersClick","diContainer","get","showToggler","shouldHideSelectedFilterSet","selectedFilterSet","find","filtersAsCheckboxes","shouldHideFilterSets","alwaysToggled","filtersToggleClassNames","filtersLabel","totalAppliedFilters","getFiltersToggle","getFilterSets","getAppliedFilters","getClearFiltersCTA","Wrapper","FilterButton","MobileFiltersModal","onOpenFilters","onCloseFilters","mobileFiltersModalWrapperClassnames","filtersModalButtonClassnames","filtersModalClassnames","title","deactivateModal","HeaderWrapper","FiltersTitle","ModalCTAContainer","removeIconAriaLabel","isFilterInProgress","applyFiltersClassname","applyFiltersLabelClassnames","mobileTagFiltersTitleClassnames","removeIconWrapperClassnames","headerWrapperClassnames","ctaWrapperClassnames","FILTER_TYPES","tabbedFiltersConfig","type","CHIPS","stackedFiltersConfig","FULL_WIDTH","filtersConfig","StyledResultsColumn","styledMobileResultsClassnames","styledMobileResultsLabelClassnames","filtersDisplayType","Formatter","MobileSelect","select","space10","MobileSortingDropdown","sortByLabel","onSelectValue","event","setProductSortingDropdownValue","currentTarget","name","mobileSortOptions","optionsArray","productSortingDropdownValue","StyledDropdown","ProductSortingDropdown","priceLowToHigh","priceHighToLow","topRated","SortingTypes","SORT_BY_LABEL","SORT_TOP_RATED","SORT_PRICE_HIGH_TO_LOW","SORT_PRICE_LOW_TO_HIGH","orderByNameDropDownClassNames","dropdownDataTestId","options","dataTestId","selectedValue","QUICK_VIEW_SELECTOR_CLASSNAME","ProductCTAWrapper","ProductCTA","a","space60","StickyRow","getProductCTA","productGridCTAConfig","productCTAWrapperClassNames","productCTAClassNames","absoluteUrl","url","newTab","ctaURL","baseUrl","RegExp","test","ctaUrlTarget","href","target","displaySortingDropdown","sortWrapperClassNames","wrapperClassName","hideSorting","enableFilters","getSorting","filterClassName","getFilterBarContent","carouselProps","briefProps","isAllGiftsFilterApplied","formatter","positionGridInsideAccordion","productGridCTA","CAROUSEL","ProductCarousel","getFilterBar","defaultProps","products","hideReadReviewsLink","product_full","product_brief","quickshop","CHECKBOX","defaultBreakpoints","DEFAULT","ProductAccordion","productAccordionClassNames","iconType","accordionDefaultOpen","accordionTitle","accordionSubtext","openIndex","StyledHeaderColumn","productTagHeaderWrapper","productTagHeaderClassnames","CategoryHeader","categoryTag","productGridHeaderWrapper","productGridHeaderClassnames","productGridSubheaderClassnames","ProductGridHeaders","productGridHeader","productGridSubheader","StyledContainer","viewController","featuredProductId","propsConfig","productGridBreakpoints","productGridEnableSizePicker","lazyloadProductGridItems","renderGridHeader","enableCategoryHeader","showDynamicCategoryHeader","setGridPosition","renderGridCarousel","gridCTA","productCarouselProps","carouselSettings","dots","infinite","slidesToShow","slidesToScroll","responsive","breakpoint","extraLargeScreen","settings","arrows","productCarouselEnableSizePicker","productGrid","enableAccordion","gridAccordionIconType","handleState","loaded","isFilterDisplayStacked","filterData","isFilterDisplayTabbed","header","getMainGridContent","renderContainer","CartLimitReachedModal","displayName"],"mappings":"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","file":"ProductGrid.26730c812afcc99e6499.bundle.js","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport { ContentSpacing, Breakpoints } from 'elc-base-theme';\n\nexport interface IDefaultColumn {\n columns: number;\n rows: number;\n}\n\nexport interface IColumnRenderer {\n isMobile: boolean;\n children?: JSX.Element;\n isCarousel?: boolean;\n columns?: number;\n rows?: number;\n className?: string;\n}\n\nconst DefaultColumn = styled.div`\n padding: ${ContentSpacing.space8};\n grid-column-end: span 1;\n grid-row-end: span 1;\n width: 100%;\n @media (min-width: ${Breakpoints.desktop}px) {\n grid-column-end: span ${props => props.columns};\n grid-row-end: span ${props => props.rows};\n width: auto;\n }\n &:hover {\n z-index: 1;\n }\n`;\n\nconst CarouselColumn = styled.div`\n padding: ${ContentSpacing.space8};\n`;\n\nexport class ColumnRenderer extends React.Component {\n public render() {\n const { isCarousel = false, columns = 1, rows = 1 } = this.props;\n const ColumnWrapper = isCarousel ? CarouselColumn : DefaultColumn;\n\n return (\n \n {this.props.children}\n \n );\n }\n}\n","export const PRODUCT_BRIEF_CLASS_NAMES = Object.freeze({\n GRID_ITEM_CLASS_NAME: 'js-grid-item',\n COLUMN_WIDTH_SELECTOR: 'js-grid-column-width'\n});\n\nexport enum TIME_DURATION {\n DEFER_RESET_HEIGHT_VALUE = 100,\n TRANSITION_DURATION = 0\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { Row } from 'elc-grid';\nimport { gridItemType } from '../../constants/ProductGrid';\nimport { GridItem } from '../../domain/entities/GridItem';\nimport { ColumnRenderer } from '../common/ColumnRenderer';\nimport { CollectionItem, CollectionItemType } from '../product-grid/CollectionItem';\nimport {\n ISizePickerImages,\n IShortDescriptionConfig,\n IProductBenefitTypes\n} from '../../interfaces/IProdcat';\nimport { TOGGLE_TYPE } from '../../constants/AutoReplenish';\nimport { classes } from '../../utils/Classes';\nimport {\n ITranslationsOverwrites,\n IProductImages\n} from '../../../exported/product-grid-wrapper/ProductGridWrapper';\nimport { PRODUCT_BRIEF_CLASS_NAMES } from '../../constants/ProductBriefCollection';\nimport styled from 'styled-components';\nimport { Breakpoints } from 'elc-base-theme';\n\nexport interface IProductBriefWrapper {\n breakpoints: IBreakpointsWidth;\n}\n\nexport interface IBreakpointsWidth {\n columnWithMobile: string;\n columnWithDesktop: string;\n columnWithLargeScreen: string;\n columnWithExtraLargeScreen: string;\n}\n\nexport interface IBreakpoints {\n numColumnsMobile: number;\n numColumnsDesktop: number;\n numColumnsLargeScreen: number;\n numColumnsExtraLargeScreen: number;\n}\n\nconst ITEMS_CLASSNAME = 'js-grid-styled-column';\n\nexport interface IProductBriefCollection {\n config: {\n gridItems: GridItem[];\n breakpoints: IBreakpoints;\n defaultBreakpoints: IBreakpoints;\n hideProductBadge?: boolean;\n showSubDisplayName?: boolean;\n hideProductPrice?: boolean;\n hideProductPriceRange?: boolean;\n hideProductRating?: boolean;\n ctaType?: string;\n enableNotifyMe?: boolean;\n enableQuickView?: boolean;\n enableMobileQuickView?: boolean;\n toutWidth?: number;\n toutHeight?: number;\n hideReviewsNumber?: boolean;\n productGridHideReadReviewsLink?: boolean;\n enableGridCarousel?: boolean;\n featuredProductId?: string;\n enableHoverInteraction?: boolean;\n enableShadePicker?: boolean;\n enableSizePicker?: boolean;\n shortDescriptionLocation?: IShortDescriptionConfig;\n enableProductDetailLink?: boolean;\n enableQuickViewShortcut?: boolean;\n featuredProductOverrideImage?: string;\n enableLearnMoreLink?: boolean;\n isLoaded: boolean;\n autoReplenishOptions: number[];\n autoReplenishToggleType?: TOGGLE_TYPE;\n showToosTitle?: boolean;\n showToosMessage?: boolean;\n enableNumberShades?: boolean;\n sizePickerImages?: ISizePickerImages;\n hideProductPricePerUnit?: boolean;\n showProductQuantitySelector?: boolean;\n hideEmptyStars?: boolean;\n enableAutoReplenishment?: boolean;\n translationsOverwrites?: ITranslationsOverwrites;\n positionGridInsideAccordion?: boolean;\n productImages?: IProductImages;\n lazyLoadGridItem?: boolean;\n productBenefitTypes?: IProductBenefitTypes;\n };\n className?: string;\n isMobile: boolean;\n areFiltersApplied?: boolean;\n isAllGiftsFilterApplied?: boolean;\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IProductBriefCollectionWrapper extends Omit {}\n\nconst ProductBriefWrapper = styled.div`\n display: grid;\n grid-auto-flow: dense;\n grid-gap: 0;\n grid-template-columns: repeat(\n auto-fill,\n minmax(${({ breakpoints }) => breakpoints.columnWithMobile}, 1fr)\n );\n @media (min-width: ${Breakpoints.desktop}px) {\n grid-template-columns: repeat(\n auto-fill,\n minmax(${({ breakpoints }) => breakpoints.columnWithDesktop}, 1fr)\n );\n }\n @media (min-width: ${Breakpoints.largeScreen}px) {\n grid-template-columns: repeat(\n auto-fill,\n minmax(${({ breakpoints }) => breakpoints.columnWithLargeScreen}, 1fr)\n );\n }\n @media (min-width: ${Breakpoints.LargeScreen}px) {\n grid-template-columns: repeat(\n auto-fill,\n minmax(${({ breakpoints }) => breakpoints.columnWithExtraLargeScreen}, 1fr)\n );\n }\n`;\n\n@observer\nexport class ProductBriefCollection extends React.Component {\n private getOverrideImage(item: GridItem, imageOverride?: string) {\n if (item.itemType !== gridItemType.featuredProduct || !imageOverride) {\n return '';\n }\n\n return imageOverride;\n }\n\n private getPercentByColumnNumber(columns: number): string {\n return `${100 / columns}%`;\n }\n\n private getColumnsWith = (): IBreakpointsWidth => {\n const { breakpoints } = this.props.config;\n const {\n numColumnsMobile,\n numColumnsDesktop,\n numColumnsLargeScreen,\n numColumnsExtraLargeScreen\n } = breakpoints;\n\n return {\n columnWithMobile: this.getPercentByColumnNumber(numColumnsMobile),\n columnWithDesktop: this.getPercentByColumnNumber(numColumnsDesktop),\n columnWithLargeScreen: this.getPercentByColumnNumber(numColumnsLargeScreen),\n columnWithExtraLargeScreen: this.getPercentByColumnNumber(numColumnsExtraLargeScreen)\n };\n };\n\n private isFeatured(gridItem: GridItem) {\n return !this.props.areFiltersApplied\n ? gridItem.itemType === gridItemType.featuredProduct\n : false;\n }\n\n private getBriefProps(gridItem: GridItem) {\n const {\n hideProductBadge,\n showSubDisplayName,\n hideProductPrice,\n hideProductPriceRange,\n hideProductRating,\n ctaType,\n enableNotifyMe,\n enableQuickView,\n enableMobileQuickView,\n productGridHideReadReviewsLink,\n hideReviewsNumber,\n enableHoverInteraction,\n enableShadePicker,\n enableSizePicker,\n shortDescriptionLocation,\n enableProductDetailLink,\n enableQuickViewShortcut,\n featuredProductOverrideImage,\n enableLearnMoreLink,\n autoReplenishOptions,\n autoReplenishToggleType,\n showToosTitle,\n showToosMessage,\n enableNumberShades,\n sizePickerImages,\n hideProductPricePerUnit,\n showProductQuantitySelector,\n hideEmptyStars,\n enableAutoReplenishment,\n translationsOverwrites,\n productImages,\n lazyLoadGridItem,\n isLoaded,\n productBenefitTypes\n } = this.props.config;\n\n return {\n key: `column-for-${gridItem.itemId}`,\n className: ITEMS_CLASSNAME,\n positionIndex: gridItem.positionIndex,\n hideProductBadge,\n showSubDisplayName,\n hideProductPrice,\n hideProductPriceRange,\n hideProductRating,\n ctaType,\n enableNotifyMe,\n enableQuickView,\n enableMobileQuickView,\n productGridHideReadReviewsLink,\n hideReviewsNumber,\n enableHoverInteraction,\n enableShadePicker,\n enableSizePicker,\n shortDescriptionLocation,\n enableProductDetailLink,\n enableQuickViewShortcut,\n imageOverride: this.getOverrideImage(gridItem, featuredProductOverrideImage),\n isFeatured: this.isFeatured(gridItem),\n featuredProductOverrideImage,\n enableLearnMoreLink,\n autoReplenishOptions,\n autoReplenishToggleType,\n showToosTitle,\n showToosMessage,\n enableNumberShades,\n sizePickerImages,\n hideProductPricePerUnit,\n showProductQuantitySelector,\n hideEmptyStars,\n enableAutoReplenishment,\n translationsOverwrites,\n isLoaded,\n productImages,\n lazyLoadGridItem,\n isMobile: this.props.isMobile,\n productBenefitTypes\n };\n }\n\n private getItemToRender(item: GridItem) {\n switch (item.itemType) {\n case gridItemType.product:\n case gridItemType.featuredProduct:\n return (\n item.product && (\n \n )\n );\n default:\n return ;\n }\n }\n\n private renderBriefViewContent = () => {\n const {\n config: { gridItems = [], enableGridCarousel },\n isMobile\n } = this.props;\n\n return gridItems.reduce((components: React.ReactElement[], item) => {\n components.push(\n \n {this.getItemToRender(item)}\n \n );\n\n return components;\n }, []);\n };\n\n private renderBriefView = () => {\n const {\n config: { isLoaded, enableGridCarousel }\n } = this.props;\n\n if (enableGridCarousel || !isLoaded) {\n return {this.renderBriefViewContent()};\n }\n\n return this.renderBriefViewContent();\n };\n\n public render() {\n const productBriefViewClassNames = classes('product-brief-view', this.props.className);\n\n return (\n \n {this.renderBriefView()}\n \n );\n }\n}\n","// handles product brief display on different resolutions\nimport * as React from 'react';\nimport { IProductBriefCollectionWrapper, ProductBriefCollection } from './ProductBriefCollection';\nimport { Breakpoints } from 'elc-base-theme';\nimport { Desktop, Mobile } from 'elc-layouts';\n\nexport class ProductBriefCollectionWrapper extends React.Component {\n public render() {\n return (\n <>\n \n {() => }\n \n \n {() => }\n \n \n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { ContentSpacing } from 'elc-base-theme';\nimport styled from 'styled-components';\nimport * as classnames from 'classnames';\nimport { CheckBox } from 'elc-checkbox';\n\nexport interface ITagFilterButton {\n onFilterSelect(): void;\n isSelected: boolean;\n label: string;\n disabled?: boolean;\n}\n\nconst StyledLabel = styled('label')`\n margin-right: ${ContentSpacing.space24};\n margin-bottom: ${ContentSpacing.space16};\n [dir='rtl'] & {\n margin-right: 0;\n margin-left: ${ContentSpacing.space24};\n }\n\n &.elc-button.button--light,\n &.elc-button.button--dark {\n padding-left: a ${ContentSpacing.space20};\n padding-right: ${ContentSpacing.space20};\n }\n`;\n\nexport const CheckboxFilter = observer((props: ITagFilterButton) => {\n const className = classnames({\n 'elc-styled-filters-checkbox-label': true,\n disabled: props.disabled\n });\n\n return (\n \n \n \n );\n});\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { Button } from 'elc-buttons';\nimport { ContentSpacing } from 'elc-base-theme';\nimport styled from 'styled-components';\nimport * as classnames from 'classnames';\n\nexport interface ITagFilterButton {\n onFilterSelect(): void;\n isSelected: boolean;\n label: string;\n disabled?: boolean;\n}\n\nconst StyledButton = styled(Button)`\n display: flex;\n margin-right: ${ContentSpacing.space24};\n margin-bottom: ${ContentSpacing.space16};\n\n [dir='rtl'] & {\n margin-right: 0;\n margin-left: ${ContentSpacing.space24};\n }\n\n &.elc-button {\n padding-left: ${ContentSpacing.space20};\n padding-right: ${ContentSpacing.space20};\n }\n`;\n\nexport const ButtonFilter = observer((props: ITagFilterButton) => {\n const className = classnames({\n 'elc-styled-filters-category-button': true,\n 'button--light': !props.isSelected,\n 'button--dark': props.isSelected\n });\n\n return (\n \n {props.label}\n \n );\n});\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport * as classnames from 'classnames';\nimport { CheckboxFilter } from './CheckboxFilter';\nimport { ButtonFilter } from './ButtonFilter';\n\nexport interface ITagFilterButton {\n onSelectFilterClick(): void;\n isSelected: boolean;\n label: string;\n disabled?: boolean;\n checkboxFilter?: boolean;\n}\n\nexport const CategoryFiltersButton = observer((props: ITagFilterButton) => {\n const className = classnames({\n 'elc-styled-filters-category-button': true,\n 'elc-styled-filters-category-button--selected': true\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const FilterItem: any = props.checkboxFilter ? CheckboxFilter : ButtonFilter;\n\n return (\n \n );\n});\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { translate } from 'elc-service';\nimport { Row } from 'elc-grid';\nimport { ContentSpacing } from 'elc-base-theme';\nimport { classes } from '../../../utils/Classes';\n\nconst StyledResultsRow = styled(Row)`\n padding-top: ${ContentSpacing.space20};\n padding-bottom: ${ContentSpacing.space12};\n`;\n\nexport interface IProductsNo {\n productsNumber: number;\n translations?: IProductsNoTranlslations;\n}\n\ninterface IProductsNoTranlslations {\n resultsLabel: string;\n}\n\n@translate(['resultsLabel'])\nexport class ProductsNo extends React.Component {\n render() {\n const styledResultsRowClassnames: string = classes('styled-filters-result-row');\n const styledResultsLabelClassnames: string = classes('styled-filters-results-label');\n\n return (\n \n
\n {this.props.productsNumber} {this.props.translations?.resultsLabel}\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { RemoveIcon } from 'elc-icons';\nimport { Button } from 'elc-buttons';\nimport styled from 'styled-components';\nimport { ContentSpacing } from 'elc-base-theme';\n\nconst StyledFilterButton = styled(Button)`\n margin-right: ${ContentSpacing.space16};\n margin-bottom: ${ContentSpacing.space6};\n cursor: pointer;\n\n [dir='rtl'] & {\n margin-right: 0;\n margin-left: ${ContentSpacing.space6};\n }\n`;\n\nconst StyledRemoveIcon = styled(RemoveIcon)`\n width: 8px;\n cursor: pointer;\n display: inline-block;\n margin-left: ${ContentSpacing.space6};\n\n [dir='rtl'] & {\n margin: {\n right: ${ContentSpacing.space6};\n left: 0;\n }\n }\n`;\n\nexport interface IFilterItemWrapper {\n onClick(): void;\n ariaLabel: string;\n className?: string;\n}\n\nexport class FilterItemWrapper extends React.Component {\n render() {\n return (\n \n {this.props.children}\n \n \n );\n }\n}\n","import * as React from 'react';\nimport { Filter } from '../../../domain/entities/Filter';\nimport { classes } from '../../../utils/Classes';\nimport { FilterItemWrapper } from '../FilterItemWrapper';\n\nexport interface IFilterItem {\n filter: Filter;\n ariaLabel: string;\n className?: string;\n}\n\nexport class FilterItem extends React.Component {\n private onRemoveTag = () => {\n this.props.filter.setActiveState(false);\n };\n\n render() {\n const appliedFiltersClassnames = classes(\n 'styled-filters-applied-filter',\n this.props.className\n );\n\n return (\n \n {this.props.filter.label}\n \n );\n }\n}\n","import * as React from 'react';\nimport { translate } from 'elc-service';\nimport { FilterSet } from '../../../domain/entities/FilterSet';\nimport styled from 'styled-components';\nimport { Row } from 'elc-grid';\nimport { ContentSpacing } from 'elc-base-theme';\nimport { classes } from '../../../utils/Classes';\nimport { FilterItem } from './FilterItem';\n\nexport interface IFiltersList {\n productsNumber: number;\n appliedFilters: FilterSet[];\n translations?: IFiltersListTranslations;\n}\n\nexport interface IFiltersListTranslations {\n applyFiltersLabel: string;\n}\n\nconst StyledSelectedTagsRow = styled(Row)`\n padding: ${ContentSpacing.space6} 0 ${ContentSpacing.space40};\n`;\n\n@translate(['applyFiltersLabel'])\nexport class FiltersList extends React.Component {\n render() {\n const styledSelectedCategoryRowClassnames = classes('styled-filters-selected-category-row');\n const { applyFiltersLabel } = this.props.translations as IFiltersListTranslations;\n\n return (\n \n {this.props.appliedFilters.length &&\n this.props.appliedFilters.reduce(\n (appliedFilters: JSX.Element[], filterSet: FilterSet) => {\n return appliedFilters.concat(\n filterSet.activeFilters.map(filter => (\n \n ))\n );\n },\n []\n )}\n \n );\n }\n}\n","export const splitCamelCase = (text: string) => {\n return text.split(/(?=[A-Z])/).join(' ');\n};\n","import * as React from 'react';\nimport styled from 'styled-components';\n\ninterface IActiveFiltersNo {\n filtersNo: number;\n}\n\nconst ActiveFiltersWrapper = styled.span`\n &::before {\n content: '(';\n }\n\n &::after {\n content: ')';\n }\n`;\n\nexport const ActiveFiltersNo: React.StatelessComponent = (\n props: IActiveFiltersNo\n) => {\n if (!props.filtersNo) {\n return null;\n }\n\n return (\n \n {props.filtersNo}\n \n );\n};\n","import * as React from 'react';\nimport * as classnames from 'classnames';\nimport { classes } from '../../../utils/Classes';\nimport { splitCamelCase } from '../../../utils/splitCamelCase';\nimport { SelectedCategoryTheme, UnselectedCategoryTheme } from '../../../../theme/default-theme';\nimport { Button } from 'elc-buttons';\nimport { FilterSet } from '../../../domain/entities/FilterSet';\nimport { observer } from 'mobx-react';\nimport { translate } from 'elc-service';\nimport styled from 'styled-components';\nimport { Row, Column } from 'elc-grid';\nimport { ContentSpacing } from 'elc-base-theme';\nimport { CategoryFiltersButton } from './CategoryFiltersItem';\nimport { Filter } from '../../../domain/entities/Filter';\nimport { ActiveFiltersNo } from './ActiveFiltersNo';\n\nexport interface IFiltersSet {\n handleFilterSetToggle(filterSet: FilterSet): void;\n filterSets: FilterSet[];\n showFiltersWhenToggled?: boolean;\n checkboxFilters?: boolean;\n alwaysOn?: boolean;\n translations?: {\n filterByLabel: string;\n };\n}\n\nconst StyledCategory = styled(Button)`\n cursor: pointer;\n text-transform: capitalize;\n ${(props: { isCategoryTagSelected: boolean }) =>\n props.isCategoryTagSelected ? SelectedCategoryTheme : UnselectedCategoryTheme};\n`;\n\nconst StyledCol = styled(Column)`\n padding-top: ${ContentSpacing.space8};\n`;\n\nconst StyledRow = styled(Row)`\n padding-top: ${ContentSpacing.space20};\n`;\n\nconst StyledButtonRow = styled(Row)`\n padding-top: ${ContentSpacing.space40};\n`;\n\n@translate(['filterByLabel'])\n@observer\nexport class FiltersSets extends React.Component {\n private computeStyledCategoryClassName(filterCategory: string, active: boolean) {\n return classnames('elc-styled-filters-category-tab', 'js-elc-styled-filters-category-tab', {\n active\n });\n }\n\n private getSelectedFilterSet(filterSet: FilterSet) {\n if (!this.props.filterSets || !this.props.filterSets.length) {\n return null;\n }\n\n const styledButtonRowClassnames = classes('styled-filters-button-row');\n\n return (\n \n {filterSet.filters.map((option: Filter, keyNumber: number) => {\n return (\n \n );\n })}\n \n );\n }\n\n private getFilters(filterSet: FilterSet) {\n if (this.shouldHideFiltersForSet(filterSet)) {\n return null;\n }\n\n return this.getSelectedFilterSet(filterSet);\n }\n\n private shouldHideFiltersForSet(filterSet: FilterSet) {\n return !this.props.alwaysOn && (!this.props.showFiltersWhenToggled || !filterSet.isOpen);\n }\n\n render() {\n const styledCategoryRowClassnames = classes('styled-filters-category-row');\n const { filterSets, handleFilterSetToggle } = this.props;\n\n if (!filterSets) {\n return null;\n }\n\n return (\n \n \n {filterSets\n ? filterSets.map((filterSet: FilterSet) => {\n return (\n \n handleFilterSetToggle(filterSet)}\n key={`${filterSet.key}`}\n isCategoryTagSelected={filterSet.isOpen}\n aria-label={filterSet.label}\n className={this.computeStyledCategoryClassName(\n filterSet.key,\n filterSet.isOpen\n )}\n >\n {this.props.translations?.filterByLabel}{' '}\n {splitCamelCase(filterSet.label)}{' '}\n \n \n {this.getFilters(filterSet)}\n \n );\n })\n : null}\n \n {this.props.children}\n \n );\n }\n}\n","import * as React from 'react';\nimport { classes } from '../../../utils/Classes';\nimport { FilterItemWrapper } from '../FilterItemWrapper';\nimport { translate } from 'elc-service';\n\nexport interface IClearAllFilters {\n onClick(): void;\n className?: string;\n translations?: IClearAllFiltersTranslations;\n}\n\ninterface IClearAllFiltersTranslations {\n clearFiltersLabel: string;\n}\n\n@translate(['clearFiltersLabel'])\nexport class ClearAllFilters extends React.Component {\n render() {\n const clearAllButtonClassnames = classes(\n 'styled-filters-clear-all-button',\n this.props.className\n );\n const { clearFiltersLabel } = this.props.translations as IClearAllFiltersTranslations;\n\n return (\n \n {clearFiltersLabel}\n \n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { translate } from 'elc-service';\nimport { Row } from 'elc-grid';\nimport styled from 'styled-components';\nimport { ContentSpacing } from 'elc-base-theme';\nimport { serviceNames, diContainer } from '../../../service-setup/diContainer';\nimport { ProductFiltersViewController } from '../../controllers/ProductFiltersViewController';\nimport { Filter } from '../../domain/entities/Filter';\nimport { classes } from '../../utils/Classes';\nimport { CategoryFiltersButton } from './components/CategoryFiltersItem';\nimport { FilterSet } from '../../domain/entities/FilterSet';\nimport { ProductsNo } from './components/ProductsNo';\nimport { observable, computed } from 'mobx';\nimport { FiltersList } from './components/FiltersList';\nimport { FiltersSets } from './components/FiltersSets';\nimport { OutlinedButton } from 'elc-buttons';\nimport { FilterIcon } from 'elc-icons';\nimport { IFilterConfig } from './FiltersConfig';\nimport { ClearAllFilters } from './components/ClearAllFilters';\n\nconst StyledButtonRow = styled(Row)`\n padding-top: ${ContentSpacing.space16};\n`;\n\nconst StyledToggleButton = styled(OutlinedButton)``;\n\nexport interface IFiltersTranslation {\n filtersLabel: string;\n clearFiltersLabel: string;\n applyFiltersLabel: string;\n filterByCategoryLabel: string;\n filterByPriceLabel: string;\n resultsLabel: string;\n filterByLabel: string;\n removeIconAriaLabel: string;\n collapseIconAriaLabel: string;\n expandIconAriaLabel: string;\n}\n\nexport interface IFiltersComponent {\n filterSets: FilterSet[];\n appliedFilters: FilterSet[];\n productsNumber: number;\n config: IFilterConfig;\n totalAppliedFilters?: number;\n translations?: IFiltersTranslation;\n}\n\n@translate(['clearFiltersLabel', 'filtersLabel'])\n@observer\nclass DesktopFilters extends React.Component {\n @observable\n private productFiltersViewController: ProductFiltersViewController;\n\n constructor(props: IFiltersComponent) {\n super(props);\n\n this.productFiltersViewController = diContainer.get(\n serviceNames.productFiltersViewController\n );\n }\n\n private clearAllFilters = () => {\n this.productFiltersViewController.onClearAllAppliedFilters(this.props.appliedFilters);\n };\n\n @computed\n private get shouldHideFilterSets() {\n return (\n this.props.config.showToggler &&\n !this.productFiltersViewController.data.isFiltersModalOpen\n );\n }\n\n @computed\n private get shouldHideSelectedFilterSet() {\n return (\n !this.props.filterSets || !this.props.filterSets.length || this.props.config.showToggler\n );\n }\n\n private getAppliedFilters() {\n if (!this.props.appliedFilters.length || this.props.config.showToggler) {\n return null;\n }\n\n return (\n <>\n \n {this.props.appliedFilters.length && (\n \n )}\n \n );\n }\n\n private getSelectedFilterSet() {\n if (this.shouldHideSelectedFilterSet) {\n return null;\n }\n\n const styledButtonRowClassnames = classes('styled-filters-button-row');\n const { allowAllFiltersCollapsed } = this.props.config;\n let selectedFilterSet = this.props.filterSets.find(filterSet => filterSet.isOpen);\n\n if (!selectedFilterSet) {\n if (allowAllFiltersCollapsed) {\n return null;\n }\n\n selectedFilterSet = this.props.filterSets[0];\n }\n\n return (\n \n {selectedFilterSet.filters.map((option: Filter, keyNumber: number) => {\n return (\n \n );\n })}\n \n );\n }\n\n private handleFilterSetToggle = (filterSet: FilterSet) => {\n if (!filterSet) {\n return null;\n }\n\n const { singleFilterToggle, allowAllFiltersCollapsed } = this.props.config;\n const activeFilterSets = this.props.filterSets.filter(_filterSet => _filterSet.isOpen);\n\n if (singleFilterToggle) {\n const activeFilterClicked =\n activeFilterSets[0] && activeFilterSets[0].key === filterSet.key;\n\n if (activeFilterClicked && !allowAllFiltersCollapsed) {\n return null;\n }\n\n filterSet.setOpenState(true);\n activeFilterSets[0] && activeFilterSets[0].setOpenState(false);\n } else {\n filterSet.toggleOpenState();\n }\n };\n\n private getFilterSets() {\n const { filterSets } = this.props;\n\n if (this.shouldHideFilterSets) {\n return null;\n }\n\n return (\n \n );\n }\n\n private toggleFilters = () => {\n if (this.productFiltersViewController.data.isFiltersModalOpen) {\n this.productFiltersViewController.onCloseFiltersClick();\n } else {\n this.productFiltersViewController.onOpenFiltersClick();\n }\n };\n\n private getFiltersToggle() {\n const filtersToggleClassNames = classes('mobile-filters-modal-wrapper');\n const { filtersLabel } = this.props.translations as IFiltersTranslation;\n\n if (!this.props.config.showToggler) {\n return null;\n }\n\n return (\n \n {filtersLabel}{' '}\n {this.props.totalAppliedFilters ? `(${this.props.totalAppliedFilters})` : ''}\n \n \n );\n }\n\n private getClearFiltersCTA() {\n if (!this.props.appliedFilters.length) {\n return null;\n }\n\n return ;\n }\n\n public render() {\n return (\n <>\n {this.getFiltersToggle()}\n {this.getFilterSets()}\n {this.getSelectedFilterSet()}\n {this.getAppliedFilters()}\n {this.getClearFiltersCTA()}\n \n );\n }\n}\n\nexport { DesktopFilters };\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { OutlinedButton } from 'elc-buttons';\nimport styled from 'styled-components';\nimport { ResponsiveModal } from 'elc-responsive-modal';\nimport * as classnames from 'classnames';\nimport { FilterIcon } from 'elc-icons';\nimport { classes } from '../../utils/Classes';\n\nexport interface IMobileFiltersModal {\n filtersLabel: string;\n isFiltersModalOpen: boolean;\n onOpenFilters(): void;\n onCloseFilters(): void;\n children: React.ReactNode;\n totalAppliedFilters?: number;\n}\n\nconst Wrapper = styled.div`\n height: 100%;\n`;\n\nconst FilterButton = styled(OutlinedButton)`\n width: 100%;\n height: 100%;\n`;\n\nexport const MobileFiltersModal = observer((props: IMobileFiltersModal) => {\n const {\n filtersLabel,\n isFiltersModalOpen,\n onOpenFilters,\n onCloseFilters,\n children,\n totalAppliedFilters\n } = props;\n\n const mobileFiltersModalWrapperClassnames = classes('mobile-filters-modal-wrapper');\n\n const filtersModalButtonClassnames = classes('mobile-filters-modal-button');\n\n const filtersModalClassnames = classnames(\n 'elc-mobile-filters-modal',\n 'js-elc-mobile-filters-modal',\n {\n 'is-open': isFiltersModalOpen\n }\n );\n\n return (\n \n \n {filtersLabel} {totalAppliedFilters ? `(${totalAppliedFilters})` : ''}{' '}\n \n \n \n {children}\n \n \n );\n});\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { serviceNames, diContainer } from '../../../service-setup/diContainer';\nimport { ProductFiltersViewController } from '../../controllers/ProductFiltersViewController';\nimport styled from 'styled-components';\nimport { Body1, Subtitle1 } from 'elc-typography';\nimport { ContentSpacing } from 'elc-base-theme';\nimport { translate } from 'elc-service';\nimport { MobileFiltersModal } from './MobileFiltersModal';\nimport { Button } from 'elc-buttons';\nimport { IFiltersTranslation } from './DesktopFilters';\nimport { RemoveIcon } from 'elc-icons';\nimport { classes } from '../../utils/Classes';\nimport { IProductGridFilters } from '../product-grid/ProductGridFilters';\nimport { FiltersSets } from './components/FiltersSets';\nimport { FilterSet } from '../../domain/entities/FilterSet';\nimport { ClearAllFilters } from './components/ClearAllFilters';\n\nconst HeaderWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nconst FiltersTitle = styled(Subtitle1)`\n padding-bottom: ${ContentSpacing.space20};\n`;\n\nconst ModalCTAContainer = styled.div``;\n\n@translate([\n 'filtersLabel',\n 'filterByLabel',\n 'applyFiltersLabel',\n 'removeIconAriaLabel',\n 'collapseIconAriaLabel',\n 'expandIconAriaLabel'\n])\n@observer\nclass MobileFilters extends React.Component {\n private productFiltersViewController: ProductFiltersViewController;\n\n constructor(props: IProductGridFilters) {\n super(props);\n this.productFiltersViewController = diContainer.get(\n serviceNames.productFiltersViewController\n );\n }\n\n private handleFilterSetToggle(filterSet: FilterSet) {\n filterSet.toggleOpenState();\n }\n\n private clearAllFilters = () => {\n this.productFiltersViewController.onClearAllAppliedFilters(this.props.appliedFilters);\n };\n\n public render() {\n const { data, onOpenFiltersClick, onCloseFiltersClick } = this.productFiltersViewController;\n const { filtersLabel, applyFiltersLabel, filterByLabel, removeIconAriaLabel } = this.props\n .translations as IFiltersTranslation;\n\n const { isFilterInProgress, isFiltersModalOpen } = data;\n const applyFiltersClassname = classes('mobile-apply-filter-button');\n const applyFiltersLabelClassnames = classes('mobile-apply-filter-label');\n const mobileTagFiltersTitleClassnames = classes('mobile-category-filters-title');\n const removeIconWrapperClassnames = classes('mobile-category-filters-remove-icon-wrapper');\n const headerWrapperClassnames = classes('mobile-category-filters-header-wrapper');\n const ctaWrapperClassnames = classes('mobile-filters-cta');\n\n return (\n \n \n \n {filterByLabel}\n \n \n \n \n \n \n \n {this.props.appliedFilters.length ? (\n \n ) : null}\n \n {applyFiltersLabel}\n \n \n \n );\n }\n}\n\nexport { MobileFilters };\n","export enum FILTER_TYPES {\n CHIPS = 'tabbed',\n FULL_WIDTH = 'stacked'\n}\n\nexport interface IFilterConfig {\n alwaysToggled: boolean;\n singleFilterToggle: boolean;\n showToggler: boolean;\n filtersAsCheckboxes: boolean;\n type: FILTER_TYPES;\n toggleOnHover?: boolean;\n allowAllFiltersCollapsed?: boolean;\n}\n\nexport const tabbedFiltersConfig: IFilterConfig = {\n alwaysToggled: false,\n singleFilterToggle: true,\n showToggler: false,\n filtersAsCheckboxes: false,\n type: FILTER_TYPES.CHIPS\n};\n\nexport const stackedFiltersConfig: IFilterConfig = {\n alwaysToggled: false,\n singleFilterToggle: true,\n showToggler: false,\n filtersAsCheckboxes: true,\n type: FILTER_TYPES.FULL_WIDTH,\n allowAllFiltersCollapsed: true\n};\n\nexport const filtersConfig = {\n [FILTER_TYPES.CHIPS]: tabbedFiltersConfig,\n [FILTER_TYPES.FULL_WIDTH]: stackedFiltersConfig\n};\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { Desktop, Mobile } from 'elc-layouts';\nimport { DesktopFilters } from '../../../internal/views/product-filters/DesktopFilters';\nimport { Column } from 'elc-grid';\nimport { ContentSpacing, breakpoint, Breakpoints } from 'elc-base-theme';\nimport { translate } from 'elc-service';\nimport { observer } from 'mobx-react';\nimport { classes } from '../../utils/Classes';\nimport { FilterSet } from '../../domain/entities/FilterSet';\nimport { MobileFilters } from '../product-filters/MobileFilters';\nimport { filtersConfig, FILTER_TYPES, IFilterConfig } from '../product-filters/FiltersConfig';\n\nexport interface IProductGridFiltersTranslation {\n resultsLabel: string;\n}\n\nexport interface IProductGridFilters {\n productsNumber: number;\n filterSets: FilterSet[];\n appliedFilters: FilterSet[];\n totalAppliedFilters?: number;\n translations?: IProductGridFiltersTranslation;\n filtersDisplayType?: FILTER_TYPES;\n}\n\nconst StyledResultsColumn = styled(Column)`\n margin-top: ${ContentSpacing.space16};\n margin-bottom: ${ContentSpacing.space24};\n display: flex;\n ${breakpoint('desktop')`\n display: none;\n `};\n`;\n\n@translate(['resultsLabel'])\n@observer\nexport class ProductGridFilters extends React.Component {\n render() {\n const { resultsLabel } = this.props.translations as IProductGridFiltersTranslation;\n const styledMobileResultsClassnames = classes('mobile-attribute-filters-results');\n const styledMobileResultsLabelClassnames = classes(\n 'mobile-attribute-filters-results-label'\n );\n let config: IFilterConfig = filtersConfig[this.props.filtersDisplayType as FILTER_TYPES];\n\n if (!config) {\n config = filtersConfig[FILTER_TYPES.CHIPS];\n }\n\n return (\n <>\n \n {() => (\n \n )}\n \n \n {() => (\n <>\n \n \n
\n {this.props.productsNumber} {resultsLabel}\n
\n
\n \n )}\n
\n \n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport { StickyRowTheme } from '../../../theme/default-theme';\nimport { ProductCarousel, IProductCarousel } from '../product-carousel/ProductCarousel';\nimport { ProductBriefCollectionWrapper } from '../product-brief-collection/ProductBriefCollectionWrapper';\nimport { IProductBriefCollection } from '../product-brief-collection/ProductBriefCollection';\nimport { DEFAULT_GRID_BREAKPOINTS } from '../../constants/ProductGrid';\nimport { ICTAConfig } from '../../../exported/product-grid-wrapper/ProductGridWrapper';\nimport { ProductGridFilters } from './ProductGridFilters';\nimport { ContentSpacing, Breakpoints } from 'elc-base-theme';\nimport { Heading4 } from 'elc-typography';\nimport { classes } from '../../../internal/utils/Classes';\nimport { ProductSortingDropdown } from '../../../internal/views/product-grid/ProductSortingDropdown';\nimport { Row } from 'elc-grid';\nimport { TOGGLE_TYPE } from '../../constants/AutoReplenish';\nimport { FilterSet } from '../../domain/entities/FilterSet';\nimport { Desktop, Mobile } from 'elc-layouts';\nimport { FILTER_TYPES } from '../product-filters/FiltersConfig';\n\nexport enum Formatter {\n DEFAULT = 'default',\n CAROUSEL = 'carousel'\n}\n\nexport interface IProductGridProps {\n formatter: Formatter;\n carouselProps: IProductCarousel['config'];\n briefProps: IProductBriefCollection['config'];\n productSortingDropdownValue: string;\n productsNumber: number;\n appliedFilters?: FilterSet[];\n filterSets?: FilterSet[];\n isAllGiftsFilterApplied?: boolean;\n areFiltersApplied?: boolean;\n productGridCTAConfig: ICTAConfig;\n positionGridInsideAccordion?: boolean;\n enableFilters?: boolean;\n totalAppliedFilters?: number;\n hideSorting?: boolean;\n isFilterDisplayStacked?: boolean;\n isFilterDisplayTabbed?: boolean;\n className?: string;\n filtersDisplayType?: FILTER_TYPES;\n setProductSortingDropdownValue(_: string, v: string): void;\n}\n\nexport const QUICK_VIEW_SELECTOR_CLASSNAME = 'elc-quickview-renderer';\n\nconst ProductCTAWrapper = styled.div`\n margin-top: ${ContentSpacing.space24};\n`;\n\nconst ProductCTA = styled.a`\n width: ${ContentSpacing.space60};\n`;\n\nconst StickyRow = styled(Row)`\n display: flex;\n justify-content: space-between;\n user-select: none;\n ${StickyRowTheme};\n`;\n\n@observer\nclass ProductGrid extends React.Component {\n public static defaultProps: IProductGridProps;\n\n private getProductCTA = (productGridCTAConfig: ICTAConfig) => {\n const productCTAWrapperClassNames = classes('product-cta-wrapper');\n const productCTAClassNames = classes('product-cta');\n const { label, absoluteUrl, url, newTab } = productGridCTAConfig;\n\n let ctaURL = url;\n if (absoluteUrl && url) {\n const isAbsoluteUrlRegex = new RegExp('^(?:[a-z]+:)?//', 'i');\n const baseUrl = isAbsoluteUrlRegex.test(url) ? '' : 'https://';\n ctaURL = `${baseUrl}${url}`;\n }\n\n const ctaUrlTarget = newTab ? '_blank' : '';\n\n return (\n \n \n {label}\n \n \n );\n };\n\n private getSorting(displaySortingDropdown: boolean) {\n if (!displaySortingDropdown) {\n return null;\n }\n\n const sortWrapperClassNames = classes('sort-wrapper');\n\n return (\n \n );\n }\n\n private getFilterBarContent(wrapperClassName: string) {\n const displaySortingDropdown = !this.props.hideSorting && this.props.productsNumber > 0;\n\n return (\n \n {this.props.enableFilters && (\n \n )}\n\n {this.getSorting(displaySortingDropdown)}\n \n );\n }\n\n private getFilterBar() {\n const { filtersDisplayType } = this.props;\n const filterClassName = `elc-styled-filters elc-styled-${filtersDisplayType}-filters`;\n\n return (\n <>\n \n {() => this.getFilterBarContent(filterClassName)}\n \n \n {() => this.getFilterBarContent('elc-styled-filters elc-mobile-filters')}\n \n \n );\n }\n\n public render() {\n const {\n carouselProps,\n briefProps,\n isAllGiftsFilterApplied,\n areFiltersApplied,\n formatter,\n productGridCTAConfig,\n positionGridInsideAccordion\n } = this.props;\n\n const productGridCTA =\n productGridCTAConfig.enabled && this.getProductCTA(productGridCTAConfig);\n\n if (formatter === Formatter.CAROUSEL) {\n return (\n <>\n \n {productGridCTA}\n \n );\n }\n\n return (\n <>\n {this.getFilterBar()}\n \n
\n {productGridCTA}\n \n );\n }\n}\n\nProductGrid.defaultProps = {\n carouselProps: {\n products: [],\n hideProductPrice: false,\n hideProductPriceRange: true,\n hideProductBadge: false,\n showSubDisplayName: false,\n hideProductRating: false,\n enableNotifyMe: false,\n enableQuickView: false,\n enableMobileQuickView: false,\n hideReviewsNumber: false,\n hideReadReviewsLink: true,\n enableShadePicker: true,\n enableSizePicker: true,\n shortDescriptionLocation: {\n product_full: true,\n product_brief: true,\n quickshop: true\n },\n enableProductDetailLink: true,\n autoReplenishOptions: [],\n autoReplenishToggleType: TOGGLE_TYPE.CHECKBOX\n },\n briefProps: {\n gridItems: [],\n defaultBreakpoints: DEFAULT_GRID_BREAKPOINTS,\n breakpoints: DEFAULT_GRID_BREAKPOINTS,\n isLoaded: false,\n autoReplenishOptions: [],\n autoReplenishToggleType: TOGGLE_TYPE.CHECKBOX\n },\n formatter: Formatter.DEFAULT,\n productGridCTAConfig: {\n enabled: false,\n label: '',\n absoluteUrl: false,\n url: '',\n newTab: false\n },\n productSortingDropdownValue: '',\n productsNumber: 9,\n setProductSortingDropdownValue: () => null\n};\n\nexport default ProductGrid;\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport { ContentSpacing } from 'elc-base-theme';\nimport { MobileSelectTheme } from '../../../theme/default-theme';\nimport { IProductSortingDropdownTranslations } from './ProductSortingDropdown';\nimport { translate } from 'elc-service';\n\nexport interface IMobileSortingDropdown {\n productSortingDropdownValue: string;\n setProductSortingDropdownValue(inputName: string, value: string): void;\n optionsArray: {\n label: string;\n value: string;\n }[];\n translations?: IProductSortingDropdownTranslations;\n}\n\nconst MobileSelect = styled.select`\n position: relative;\n width: 100%;\n height: ${ContentSpacing.space40};\n padding-left: ${ContentSpacing.space10};\n appearance: none;\n ${MobileSelectTheme};\n\n [dir='rtl'] & {\n padding-left: 0;\n padding-right: ${ContentSpacing.space10};\n }\n`;\n\nexport const MobileSortingDropdown = translate(['sortByLabel'])(\n observer((props: IMobileSortingDropdown) => {\n const { sortByLabel } = props.translations as IProductSortingDropdownTranslations;\n\n const onSelectValue = (event: React.ChangeEvent) => {\n props.setProductSortingDropdownValue(\n event.currentTarget.name,\n event.currentTarget.value\n );\n };\n\n const mobileSortOptions = props.optionsArray.map((option, key) => (\n \n ));\n\n return (\n \n );\n })\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { translate } from 'elc-service';\nimport { BackgroundWhiteTheme } from '../../../theme/default-theme';\nimport styled from 'styled-components';\nimport { Dropdown } from 'elc-dropdown';\nimport { Breakpoints } from 'elc-base-theme';\nimport { MobileSortingDropdown } from './MobileSortingDropdown';\nimport { SortingTypes } from '../../constants/SortingTypes';\nimport { MPP_SORT_BY, MPP_PRODUCT_SORTING_DROPDOWN } from '../../constants/DataTestIdAttributes';\nimport { classes } from '../../utils/Classes';\nimport { Desktop, Mobile } from 'elc-layouts';\n\nexport interface IProductSortingDropdownTranslations {\n priceLowToHigh: string;\n priceHighToLow: string;\n topRated: string;\n sortByLabel: string;\n}\n\nexport interface IProductSortingDropdown {\n productSortingDropdownValue: string;\n className: string;\n translations?: IProductSortingDropdownTranslations;\n setProductSortingDropdownValue(inputName: string, value: string): void;\n}\n\nexport interface IResponsive {\n children: React.ReactNode;\n minWidth?: number;\n maxWidth?: number;\n}\n\nconst StyledDropdown = styled(Dropdown)`\n ${BackgroundWhiteTheme};\n`;\n\nexport const ProductSortingDropdown = translate([\n 'priceLowToHigh',\n 'priceHighToLow',\n 'topRated',\n 'sortByLabel'\n])(\n observer((props: IProductSortingDropdown) => {\n const {\n priceLowToHigh,\n priceHighToLow,\n topRated,\n sortByLabel\n } = props.translations as IProductSortingDropdownTranslations;\n\n const optionsArray = [\n { label: sortByLabel, value: SortingTypes.SORT_BY_LABEL },\n { label: topRated, value: SortingTypes.SORT_TOP_RATED },\n { label: priceHighToLow, value: SortingTypes.SORT_PRICE_HIGH_TO_LOW },\n { label: priceLowToHigh, value: SortingTypes.SORT_PRICE_LOW_TO_HIGH }\n ];\n\n const orderByNameDropDownClassNames = classes('product-sorting-dropdown');\n\n return (\n
\n \n {() => (\n \n )}\n \n \n {() => (\n \n )}\n \n
\n );\n })\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { Accordion, LabelSlide } from 'elc-accordion';\nimport { classes } from '../../utils/Classes';\n\nexport interface IProductAccordion {\n iconType?: string;\n accordionDefaultOpen: boolean;\n accordionTitle: string;\n accordionSubtext: string;\n children: JSX.Element;\n onChange?(openIndex: number): void;\n}\n\nexport const ProductAccordion = observer((props: IProductAccordion) => {\n const productAccordionClassNames = classes('product-accordion');\n\n const { iconType, accordionDefaultOpen, accordionTitle, accordionSubtext, onChange } = props;\n\n const openIndex = accordionDefaultOpen ? 0 : -1;\n\n return (\n \n \n {accordionSubtext}\n {props.children}\n \n \n );\n});\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { classes } from '../../utils/Classes';\nimport { Row, Column } from 'elc-grid';\nimport { Heading2 } from 'elc-typography';\n\ninterface ICategoryHeader {\n categoryTag: string;\n}\n\nexport const StyledHeaderColumn = styled(Column)`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst productTagHeaderWrapper = classes('product-tag-header-wrapper');\nconst productTagHeaderClassnames = classes('product-tag-header');\n\nexport const CategoryHeader = observer((props: ICategoryHeader) => {\n return (\n \n \n {props.categoryTag}\n \n \n );\n});\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { classes } from '../../utils/Classes';\nimport { Row, Column } from 'elc-grid';\n\ninterface IProductGridHeaders {\n productGridHeader?: string;\n productGridSubheader?: string;\n}\n\nexport const StyledHeaderColumn = styled(Column)`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst productGridHeaderWrapper = classes('product-grid-header-wrapper');\nconst productGridHeaderClassnames = classes('product-grid-header');\nconst productGridSubheaderClassnames = classes('product-grid-subheader');\n\nexport const ProductGridHeaders = observer((props: IProductGridHeaders) => {\n const { productGridHeader, productGridSubheader } = props;\n\n if (!productGridHeader && !productGridSubheader) {\n return null;\n }\n\n return (\n \n \n {productGridHeader && (\n
{productGridHeader}
\n )}\n {productGridSubheader && (\n
{productGridSubheader}
\n )}\n
\n
\n );\n});\n","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport styled from 'styled-components';\r\nimport { config } from 'elc-service';\r\nimport { ISliderSettings } from 'elc-slider';\r\nimport { IconTypes } from 'elc-accordion';\r\nimport { ContentSpacing, Breakpoints } from 'elc-base-theme';\r\nimport { IItem, IParamsById } from '../../api/ProdcatApiSdk';\r\nimport { DEFAULT_GRID_BREAKPOINTS, contentSize } from '../../internal/constants/ProductGrid';\r\nimport { IProductCarousel } from '../../internal/views/product-carousel/ProductCarousel';\r\nimport { ProductGridViewController } from '../../internal/controllers/ProductGridViewController';\r\nimport {\r\n IBreakpoints,\r\n IProductBriefCollection\r\n} from '../../internal/views/product-brief-collection/ProductBriefCollection';\r\nimport { CartLimitReachedModal } from '../../internal/views/common/CartLimitReachedModal';\r\nimport { IFiltersTranslation } from '../../internal/views/product-filters/DesktopFilters';\r\nimport ProductGrid, { Formatter } from '../../internal/views/product-grid/ProductGrid';\r\nimport { ProductAccordion } from '../../internal/views/product-accordion/ProductAccordion';\r\nimport { mergeConfigs } from '../../internal/utils/ConfigUtils';\r\nimport {\r\n IProdcatConfig,\r\n ISizePickerImages,\r\n IInventoryStatusSorting,\r\n IProductBenefitTypes\r\n} from '../../internal/interfaces/IProdcat';\r\nimport { TOGGLE_TYPE } from '../../internal/constants/AutoReplenish';\r\nimport { IFilterData } from '../../internal/views/product-filters/IProductFilters';\r\nimport { Container, Column } from 'elc-grid';\r\nimport { CategoryHeader } from '../../internal/views/product-grid/CategoryHeader';\r\nimport { ProductGridHeaders } from '../../internal/views/product-grid/ProductGridHeaders';\r\n\r\nexport interface IContentItem {\r\n nId: number | string;\r\n nPsn: number;\r\n nSize: contentSize;\r\n}\r\n\r\nexport interface ITranslationsOverwrites {\r\n quickViewButtonLabel?: string;\r\n ctaButtonLabel?: string;\r\n pressedCtaButtonLabel?: string;\r\n}\r\n\r\nexport interface IProductImages {\r\n product_grid?: {\r\n lazyload?: boolean;\r\n };\r\n}\r\n\r\nexport interface IProductGridConfig extends IProdcatConfig {\r\n items?: IItem[];\r\n paramsById?: IParamsById;\r\n featuredProductId?: string;\r\n viewableInventoryStatuses?: string[];\r\n productTags?: string[];\r\n content?: IContentItem[];\r\n productGridBreakpoints: IBreakpoints;\r\n enableGridCarousel?: boolean;\r\n carouselSettings?: ISliderSettings;\r\n showSubDisplayName?: boolean;\r\n toutWidth?: number;\r\n toutHeight?: number;\r\n ctaType?: string;\r\n enableNotifyMe?: boolean;\r\n enableQuickView?: boolean;\r\n hideSorting?: boolean;\r\n hideReviewsNumber?: boolean;\r\n disableFeaturedProduct?: boolean;\r\n filterData?: IFilterData;\r\n enableFilters?: boolean;\r\n enableSizePicker?: boolean;\r\n featuredProductOverrideImage?: string;\r\n autoReplenishOptions?: number[];\r\n autoReplenishToggleType?: TOGGLE_TYPE;\r\n showToosTitle?: boolean;\r\n showToosMessage?: boolean;\r\n gridAccordionIconType?: IconTypes;\r\n enableAccordion?: boolean;\r\n accordionDefaultOpen?: boolean;\r\n accordionTitle?: string;\r\n accordionSubtext?: string;\r\n enableMobileQuickView?: boolean;\r\n productGridHeader?: string;\r\n productGridSubheader?: string;\r\n sizePickerImages?: ISizePickerImages;\r\n enableCategoryHeader?: boolean;\r\n showDynamicCategoryHeader?: boolean;\r\n hideEmptyStars?: boolean;\r\n translationsOverwrites?: ITranslationsOverwrites;\r\n gridCTA?: ICTAConfig;\r\n productImages?: IProductImages;\r\n lazyloadProductGridItems?: boolean;\r\n inventoryStatusSorting?: IInventoryStatusSorting;\r\n productBenefitTypes?: IProductBenefitTypes;\r\n}\r\n\r\nexport interface IProductGridWrapper {\r\n config: IProductGridConfig;\r\n className?: string;\r\n translations?: IFiltersTranslation;\r\n viewController: ProductGridViewController;\r\n}\r\n\r\nexport interface ICTAConfig {\r\n enabled?: boolean;\r\n label?: string;\r\n absoluteUrl?: boolean;\r\n url?: string;\r\n newTab?: boolean;\r\n}\r\n\r\nconst StyledContainer = styled(Container)`\r\n margin-top: ${ContentSpacing.space20};\r\n`;\r\n\r\nexport const StyledHeaderColumn = styled(Column)`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n`;\r\n\r\n@config(['prodcatConfig'], mergeConfigs)\r\n@observer\r\nclass ProductGridWrapper extends React.Component {\r\n public static displayName: string;\r\n\r\n constructor(props: IProductGridWrapper) {\r\n super(props);\r\n\r\n props.viewController.handleState(props.config);\r\n }\r\n\r\n public async componentDidMount() {\r\n await this.props.viewController.loaded(this.props);\r\n }\r\n\r\n private getBriefProps = () => {\r\n const {\r\n data: { isLoaded, gridItems, featuredProductId }\r\n } = this.props.viewController;\r\n const { config: propsConfig } = this.props;\r\n\r\n const briefProps: IProductBriefCollection['config'] = {\r\n gridItems,\r\n isLoaded,\r\n featuredProductId,\r\n defaultBreakpoints: DEFAULT_GRID_BREAKPOINTS,\r\n breakpoints: propsConfig.productGridBreakpoints,\r\n hideProductBadge: propsConfig.hideProductBadge,\r\n showSubDisplayName: propsConfig.showSubDisplayName,\r\n enableGridCarousel: propsConfig.enableGridCarousel,\r\n hideProductPrice: propsConfig.hideProductPrice,\r\n hideProductPriceRange: propsConfig.hideProductPriceRange,\r\n hideProductRating: propsConfig.hideProductRating,\r\n ctaType: propsConfig.ctaType,\r\n enableNotifyMe: propsConfig.enableNotifyMe,\r\n enableQuickView: propsConfig.enableQuickView,\r\n enableMobileQuickView: propsConfig.enableMobileQuickView,\r\n hideReviewsNumber: propsConfig.hideReviewsNumber,\r\n productGridHideReadReviewsLink: propsConfig.productGridHideReadReviewsLink,\r\n enableHoverInteraction: propsConfig.enableHoverInteraction,\r\n enableShadePicker: propsConfig.enableShadePicker,\r\n enableSizePicker: propsConfig.productGridEnableSizePicker,\r\n shortDescriptionLocation: propsConfig.shortDescriptionLocation,\r\n enableProductDetailLink: propsConfig.enableProductDetailLink,\r\n enableQuickViewShortcut: propsConfig.enableQuickViewShortcut,\r\n featuredProductOverrideImage: propsConfig.featuredProductOverrideImage,\r\n enableLearnMoreLink: propsConfig.enableLearnMoreLink,\r\n autoReplenishOptions: propsConfig.autoReplenishOptions || [],\r\n autoReplenishToggleType: propsConfig.autoReplenishToggleType,\r\n showToosTitle: propsConfig.showToosTitle,\r\n showToosMessage: propsConfig.showToosMessage,\r\n enableNumberShades: propsConfig.enableNumberShades,\r\n sizePickerImages: propsConfig.sizePickerImages,\r\n hideProductPricePerUnit: propsConfig.hideProductPricePerUnit,\r\n showProductQuantitySelector: propsConfig.showProductQuantitySelector,\r\n hideEmptyStars: propsConfig.hideEmptyStars,\r\n enableAutoReplenishment: propsConfig.enableAutoReplenishment,\r\n translationsOverwrites: propsConfig.translationsOverwrites,\r\n productImages: propsConfig.productImages,\r\n lazyLoadGridItem: propsConfig.lazyloadProductGridItems,\r\n productBenefitTypes: propsConfig.productBenefitTypes\r\n };\r\n\r\n return briefProps;\r\n };\r\n\r\n private renderGridHeader = () => {\r\n const {\r\n productGridHeader,\r\n productGridSubheader,\r\n enableCategoryHeader,\r\n showDynamicCategoryHeader\r\n } = this.props.config;\r\n\r\n if (!enableCategoryHeader) {\r\n return null;\r\n }\r\n\r\n // If grid header or subheader were provided, use them to fill the header.\r\n if (productGridHeader || productGridSubheader) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n // Fall back to default category header if enabled\r\n const { categoryTag } = this.props.viewController.data;\r\n if (showDynamicCategoryHeader && categoryTag) {\r\n return ;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n private setGridPosition = (openIndex: number) => {\r\n if (!this.props.config.accordionDefaultOpen && openIndex === 0) {\r\n this.props.viewController.setGridPosition();\r\n }\r\n };\r\n\r\n private renderGridCarousel = () => {\r\n const { config: propsConfig } = this.props;\r\n const { gridCTA } = propsConfig;\r\n const productGridCTAConfig = {\r\n enabled: gridCTA && gridCTA.enabled,\r\n label: gridCTA && gridCTA.label,\r\n absoluteUrl: gridCTA && gridCTA.absoluteUrl,\r\n url: gridCTA && gridCTA.url,\r\n newTab: gridCTA && gridCTA.newTab\r\n };\r\n const {\r\n numColumnsMobile,\r\n numColumnsDesktop,\r\n numColumnsLargeScreen,\r\n numColumnsExtraLargeScreen\r\n } = propsConfig.productGridBreakpoints;\r\n\r\n const carouselSettings = {\r\n dots: false,\r\n infinite: false,\r\n slidesToShow: numColumnsExtraLargeScreen,\r\n slidesToScroll: 1,\r\n responsive: [\r\n {\r\n breakpoint: Breakpoints.extraLargeScreen,\r\n settings: {\r\n slidesToShow: numColumnsLargeScreen,\r\n slidesToScroll: 1,\r\n infinite: false,\r\n dots: false\r\n }\r\n },\r\n {\r\n breakpoint: Breakpoints.largeScreen,\r\n settings: {\r\n slidesToShow: numColumnsDesktop,\r\n slidesToScroll: 1,\r\n infinite: false,\r\n dots: false\r\n }\r\n },\r\n {\r\n breakpoint: Breakpoints.desktop,\r\n settings: {\r\n slidesToShow: numColumnsMobile,\r\n slidesToScroll: 1,\r\n infinite: false,\r\n dots: false,\r\n arrows: true\r\n }\r\n }\r\n ]\r\n };\r\n\r\n const productCarouselProps: IProductCarousel['config'] = {\r\n carouselSettings,\r\n gridItems: this.props.viewController.data.gridItems,\r\n hideProductBadge: propsConfig.hideProductBadge,\r\n showSubDisplayName: propsConfig.showSubDisplayName,\r\n hideProductPrice: propsConfig.hideProductPrice,\r\n hideProductPriceRange: propsConfig.hideProductPriceRange,\r\n hideProductRating: propsConfig.hideProductRating,\r\n ctaType: propsConfig.ctaType,\r\n enableNotifyMe: propsConfig.enableNotifyMe,\r\n enableQuickView: propsConfig.enableQuickView,\r\n enableMobileQuickView: propsConfig.enableMobileQuickView,\r\n hideReadReviewsLink: propsConfig.productGridHideReadReviewsLink,\r\n hideReviewsNumber: propsConfig.hideReviewsNumber,\r\n enableShadePicker: propsConfig.enableShadePicker,\r\n enableSizePicker: propsConfig.productCarouselEnableSizePicker,\r\n enableHoverInteraction: propsConfig.enableHoverInteraction,\r\n shortDescriptionLocation: propsConfig.shortDescriptionLocation,\r\n enableProductDetailLink: propsConfig.enableProductDetailLink,\r\n enableQuickViewShortcut: propsConfig.enableQuickViewShortcut,\r\n enableAutoReplenishment: propsConfig.enableAutoReplenishment,\r\n autoReplenishOptions: propsConfig.autoReplenishOptions || [],\r\n autoReplenishToggleType: propsConfig.autoReplenishToggleType,\r\n showToosTitle: propsConfig.showToosTitle,\r\n showToosMessage: propsConfig.showToosMessage,\r\n showProductQuantitySelector: propsConfig.showProductQuantitySelector,\r\n hideProductPricePerUnit: propsConfig.hideProductPricePerUnit,\r\n translationsOverwrites: propsConfig.translationsOverwrites\r\n };\r\n\r\n const productGrid = (\r\n <>\r\n {this.renderGridHeader()}\r\n \r\n \r\n );\r\n\r\n return propsConfig.enableAccordion ? (\r\n \r\n {productGrid}\r\n \r\n ) : (\r\n productGrid\r\n );\r\n };\r\n\r\n private getMainGridContent() {\r\n const { data, setProductSortingDropdownValue } = this.props.viewController;\r\n const { isAllGiftsFilterApplied, appliedFilters } = this.props.viewController.data;\r\n\r\n const {\r\n productsNumber,\r\n isFilterDisplayStacked,\r\n areFiltersApplied,\r\n productSortingDropdownValue\r\n } = data;\r\n const { gridCTA, hideSorting, filterData } = this.props.config;\r\n\r\n const productGridCTAConfig = {\r\n enabled: gridCTA && gridCTA.enabled,\r\n label: gridCTA && gridCTA.label,\r\n absoluteUrl: gridCTA && gridCTA.absoluteUrl,\r\n url: gridCTA && gridCTA.url,\r\n newTab: gridCTA && gridCTA.newTab\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private renderContainer() {\r\n const {\r\n gridAccordionIconType,\r\n accordionTitle = '',\r\n accordionSubtext = '',\r\n accordionDefaultOpen = false,\r\n enableAccordion\r\n } = this.props.config;\r\n\r\n const header = this.renderGridHeader();\r\n\r\n return (\r\n <>\r\n {header && {header}}\r\n {enableAccordion ? (\r\n \r\n {this.getMainGridContent()}\r\n \r\n ) : (\r\n this.getMainGridContent()\r\n )}\r\n \r\n );\r\n }\r\n\r\n public render() {\r\n const { enableGridCarousel } = this.props.config;\r\n const isLoaded = this.props.viewController.data.isLoaded;\r\n\r\n if (!isLoaded) {\r\n return null;\r\n }\r\n\r\n if (enableGridCarousel) {\r\n return this.renderGridCarousel();\r\n }\r\n\r\n return (\r\n <>\r\n {this.renderContainer()}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nProductGridWrapper.displayName = 'ProductGrid';\r\n\r\nexport default ProductGridWrapper;\r\n"],"sourceRoot":""}