{"version":3,"file":"static/js/4ce903079d687df6d6a9.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/lobas-search-result-container/lobas-search-result-container.props.autogenerated.ts?5e95","webpack://Msdyn365.Commerce.Online/./src/modules/lobas-search-result-container/lobas-search-result-container.tsx?9768","webpack://Msdyn365.Commerce.Online/./src/modules/lobas-search-result-container/lobas-search-result-container.view.tsx?aaea","webpack://Msdyn365.Commerce.Online/./lib/lobas-search-result-container/module-registration.js?16ae","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ILobasSearchResultContainer containerModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport const enum expandRefinersCount {\r\n all = 'all',\r\n one = 'one',\r\n two = 'two',\r\n three = 'three',\r\n four = 'four'\r\n}\r\n\r\nexport interface ILobasSearchResultContainerConfig extends Msdyn365.IModuleConfig {\r\n itemsPerPage?: number;\r\n allowBackNavigation?: boolean;\r\n imageSettings?: Msdyn365.IImageSettings;\r\n expandRefinersCount?: expandRefinersCount;\r\n disableHierarchy?: boolean;\r\n includeAttributes?: boolean;\r\n enableAffiliationBasedPricing?: boolean;\r\n updateRefinerPanel?: boolean;\r\n enableProdutDescription?: boolean;\r\n hiddenRefiners?: string[];\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface ILobasSearchResultContainerResources {\r\n noResultsForRefinersText: string;\r\n resultCategoryNotFoundText: string;\r\n resultSearchNotFoundText: string;\r\n paginationAriaLabel: string;\r\n priceFree: string;\r\n priceRangeSeparator: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n ratingAriaLabel: string;\r\n flipperNext: string;\r\n flipperPrevious: string;\r\n searchTextPrefix: string;\r\n numberOfProducts: string;\r\n oneProduct: string;\r\n categoryLinkAriaLabel: string;\r\n sortByDropdownLabel: string;\r\n sortByOptionNameAsc: string;\r\n sortByOptionNameDesc: string;\r\n sortByOptionPriceAsc: string;\r\n sortByOptionPriceDesc: string;\r\n sortByOptionRatingDesc: string;\r\n sortByOptionBestSelling: string;\r\n sortByOptionNewScore: string;\r\n sortByOptionTrendingScore: string;\r\n sortByOptionRelevanceDesc: string;\r\n placeholderTextMax: string;\r\n minLabel: string;\r\n maxLabel: string;\r\n rangeNameFormat: string;\r\n validationErrorNotNumber: string;\r\n validationErrorNotRange: string;\r\n clearAllText: string;\r\n choiceSummaryLabel: string;\r\n choiceFormat: string;\r\n choiceRangeValueFormat: string;\r\n choiceAriaLabel: string;\r\n closeAriaLabel: string;\r\n modalTitle: string;\r\n modalCloseButtonText: string;\r\n minValueSliderThumbAriaLabel: string;\r\n maxValueSliderThumbAriaLabel: string;\r\n featureSimilarLooksTitle: string;\r\n featureSimilarDescriptionTitle: string;\r\n productCountAriaLabel: string;\r\n singleProductCountAriaLabel: string;\r\n swatchItemAriaLabel: string;\r\n refineItemsAriaLabel: string;\r\n refineItemAriaLabel: string;\r\n filterText: string;\r\n}\r\n\r\nexport interface ILobasSearchResultContainerProps extends Msdyn365.IModule {\r\n resources: ILobasSearchResultContainerResources;\r\n config: ILobasSearchResultContainerConfig;\r\n slots: {\r\n quickview: React.ReactNode[];\r\n lobasProductSelector: React.ReactNode[];\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n CategoryHierarchy as CategoryHierarchyData,\r\n IProductRefinerHierarchy,\r\n IProductsDimensionsAvailabilities\r\n} from '@msdyn365-commerce/commerce-entities';\r\nimport MsDyn365, { getCatalogId, ICoreContext } from '@msdyn365-commerce/core';\r\nimport { format, ProductPrice, ProductRefinerValue, SortColumn, TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n ArrayExtensions,\r\n DimensionAvailabilitiesForProductSearchResultInput,\r\n DimensionTypes,\r\n getDimensionAvailabilitiesForProductSearchResultAction,\r\n getPriceForProductSearchResult,\r\n IDimensionsApp,\r\n PriceForProductSearchResultInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n getTelemetryObject,\r\n ILabeledDropdownOnChangeNotification,\r\n ILabeledDropdownOption,\r\n IModuleProps,\r\n INodeProps,\r\n isMobile,\r\n ITelemetryContent,\r\n LabeledDropdown,\r\n UncontrolledPagination,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable, reaction, transaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n buildListPageUrl,\r\n getCollectionProducts,\r\n getCollectionRefinersAction,\r\n getCurrentUrl,\r\n GetFullProductsByCollectionInput,\r\n IFullProductsSearchResultsWithCount,\r\n parseQueryParam,\r\n ProductListInventoryFilteringOptions,\r\n RefinersByCollectionInput,\r\n sortOptions\r\n} from './actions';\r\nimport { hydrateRefinersFromUrl } from './actions/url-utils';\r\nimport {\r\n ErrorMessage,\r\n FeatureSearchResultItem,\r\n getUpdatedRefinementCriteria,\r\n IChoiceSummaryClickNotification,\r\n IRefineItemCommonProps,\r\n IRefineItemToggleNotification,\r\n ISearchResultModalViewProps,\r\n isMatchingRefinementCriterion,\r\n Link,\r\n ModalToggle,\r\n ProductSearchResultItems,\r\n SearchResultModal,\r\n Separator,\r\n Title\r\n} from './components';\r\nimport ChoiceSummary from './components/choice-summary';\r\nimport RefineSubmenu from './components/refine-submenu';\r\nimport { ListPageState } from './list-page-state';\r\nimport { ILobasSearchResultContainerData } from './lobas-search-result-container.data';\r\nimport { expandRefinersCount, ILobasSearchResultContainerProps } from './lobas-search-result-container.props.autogenerated';\r\n\r\nexport interface ISearchResultContainerViewProps extends ILobasSearchResultContainerProps {\r\n products?: React.ReactNode;\r\n className?: string;\r\n SearchResultContainer: IModuleProps;\r\n TitleViewProps: ITitleViewProps;\r\n categoryHierarchy: ICategoryHierarchyViewProps;\r\n pagination?: React.ReactNode;\r\n ProductsContainer: INodeProps;\r\n ProductSectionContainer: INodeProps;\r\n refineMenu: IRefineMenuViewProps;\r\n sortByOptions: ISortByViewProps;\r\n choiceSummary?: React.ReactNode;\r\n modalToggle: React.ReactNode;\r\n searchResultModal: ISearchResultModalViewProps;\r\n isMobile: boolean;\r\n CategoryNavContainer: INodeProps;\r\n RefineAndProductSectionContainer: INodeProps;\r\n errorMessage: React.ReactNode;\r\n FeatureSearchContainer: INodeProps;\r\n similarLookProduct?: React.ReactNode;\r\n productPrices?: ProductPrice[];\r\n}\r\n\r\nexport interface ITitleViewProps {\r\n TitleContainer: INodeProps;\r\n title: ISearchResultTitle;\r\n}\r\n\r\nexport interface IRefineMenuViewProps {\r\n RefineMenuContainer: INodeProps;\r\n RefinerSectionContainer: INodeProps;\r\n refiners?: React.ReactNode[];\r\n}\r\n\r\nexport interface ICategoryHierarchyViewProps {\r\n categoryHierarchyList?: React.ReactNode[];\r\n categoryHierarchySeparator?: React.ReactNode;\r\n CategoryHierarchyContainer: INodeProps;\r\n}\r\n\r\nexport interface ISortByViewProps {\r\n SortingContainer: INodeProps;\r\n sortByDropDown?: React.ReactNode;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * Title component for search result container.\r\n */\r\nexport interface ISearchResultTitle {\r\n titlePrefix?: React.ReactNode;\r\n titleText?: React.ReactNode;\r\n titleCount?: React.ReactNode;\r\n}\r\n\r\nexport interface ISearchResultContainerState {\r\n sortingState: ISortByCollectionState;\r\n modalIsOpen: boolean;\r\n refiners: IProductRefinerHierarchy[];\r\n productsDimensionAvailabilities?: IProductsDimensionsAvailabilities[][];\r\n}\r\n\r\ninterface ISortByCollectionState {\r\n selectedSortByOption: ILabeledDropdownOption;\r\n pending: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * SearchResultContainer component.\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nexport default class SearchResultContainer extends React.PureComponent<\r\n ILobasSearchResultContainerProps,\r\n ISearchResultContainerState\r\n> {\r\n @computed get isMobile(): boolean {\r\n return this._viewport === 'xs' || this._viewport === 'sm';\r\n }\r\n\r\n private readonly sortByDropdownOptions: ILabeledDropdownOption[] = [\r\n { key: sortOptions.sortByOptionRelevanceDesc, value: this.props.resources.sortByOptionRelevanceDesc },\r\n { key: sortOptions.sortByOptionNameAsc, value: this.props.resources.sortByOptionNameAsc },\r\n { key: sortOptions.sortByOptionNameDesc, value: this.props.resources.sortByOptionNameDesc },\r\n { key: sortOptions.sortByOptionPriceAsc, value: this.props.resources.sortByOptionPriceAsc },\r\n { key: sortOptions.sortByOptionPriceDesc, value: this.props.resources.sortByOptionPriceDesc },\r\n { key: sortOptions.sortByOptionRatingDesc, value: this.props.resources.sortByOptionRatingDesc },\r\n { key: sortOptions.sortByOptionBestSelling, value: this.props.resources.sortByOptionBestSelling },\r\n { key: sortOptions.sortByOptionNewScore, value: this.props.resources.sortByOptionNewScore },\r\n { key: sortOptions.sortByOptionTrendingScore, value: this.props.resources.sortByOptionTrendingScore }\r\n ];\r\n\r\n private readonly _refineItemCommonProps: IRefineItemCommonProps;\r\n\r\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\r\n\r\n @observable\r\n private _viewport: GridSize = 'lg';\r\n\r\n private readonly _modalToggleRef: React.RefObject;\r\n\r\n private readonly _sortAndFilterContainerRef: React.RefObject;\r\n\r\n private expandrefinerCount: number | undefined = 0;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly productPrices: ProductPrice[];\r\n\r\n private readonly defaultPageNumber = 0;\r\n\r\n private readonly catalogId = getCatalogId(this.props.context.request);\r\n\r\n private isListPageStateUpdated: boolean = false;\r\n\r\n public constructor(props: ILobasSearchResultContainerProps, state: ISearchResultContainerState) {\r\n super(props);\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Check required.\r\n this._viewport = props.context.request?.device?.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._modalToggleRef = React.createRef();\r\n this._sortAndFilterContainerRef = React.createRef();\r\n this._toggleModal = this._toggleModal.bind(this);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.productPrices = [];\r\n this.state = {\r\n sortingState: {\r\n pending: false,\r\n selectedSortByOption: this.sortByDropdownOptions[0]\r\n },\r\n modalIsOpen: false,\r\n refiners: []\r\n };\r\n const { placeholderTextMax, minLabel, maxLabel, rangeNameFormat } = this.props.resources;\r\n\r\n const locale = this.props.context.request.locale;\r\n const telemetry = this.props.telemetry;\r\n const validationErrorNaN = this.props.resources.validationErrorNotNumber;\r\n const validationErrorRange = this.props.resources.validationErrorNotRange;\r\n this._refineItemCommonProps = {\r\n telemetry,\r\n locale,\r\n placeholderTextMax,\r\n minLabel,\r\n maxLabel,\r\n rangeNameFormat,\r\n validationErrorNaN,\r\n validationErrorRange\r\n };\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this._updateViewport();\r\n }\r\n\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation?.Text;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n if (MsDyn365.isBrowser && window.addEventListener) {\r\n window.addEventListener('resize', this._updateViewport);\r\n this._updateViewport();\r\n }\r\n\r\n const listPageState = await this.props.data.listPageState;\r\n const products = await this.props.data.products;\r\n\r\n this._updateListPageState(listPageState, products);\r\n\r\n // Initialize reaction based on listPageState properties\r\n reaction(\r\n () => {\r\n return [\r\n listPageState.activeFilters?.length,\r\n listPageState.currentPageNumber,\r\n ArrayExtensions.hasElements(listPageState.sortingCritera?.Columns)\r\n ];\r\n },\r\n async () => {\r\n const newListPageState = await this.props.data.listPageState;\r\n const input = new GetFullProductsByCollectionInput(\r\n newListPageState.pageType,\r\n this.props.context.request.apiSettings,\r\n {\r\n Paging: {\r\n Top: this.props.config.itemsPerPage,\r\n Skip: Math.max(newListPageState.pageSize * (newListPageState.currentPageNumber ?? 0), 0)\r\n },\r\n count: true,\r\n Sorting: newListPageState.sortingCritera ?? {}\r\n },\r\n newListPageState.activeFilters ?? [],\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- RecordId is string. Check required.\r\n +(this.props.context.request.urlTokens.recordId || 0),\r\n\r\n // eslint-disable-next-line max-len -- existing code\r\n this.props.context.request.query?.q\r\n ? this.props.context.request.query.q\r\n : JSON.stringify({\r\n ProductId: this.props.context.request.query?.productId,\r\n Recommendation: this.props.context.request.query?.recommendation\r\n }),\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Required check.\r\n !!this.props?.config?.includeAttributes,\r\n this.props.config.updateRefinerPanel,\r\n this.props.context.request.locale,\r\n this.catalogId\r\n );\r\n\r\n const productResults = await getCollectionProducts(input, this.props.context.actionContext);\r\n newListPageState.totalProductCount = productResults.count;\r\n newListPageState.activeProducts = productResults.products;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- check is required.\r\n if (\r\n this.props.config.enableAffiliationBasedPricing &&\r\n this.props.context.actionContext.requestContext?.user?.isAuthenticated\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Call api to retrieve the availabilities data without blocking the UI.\r\n this._getActivePrice();\r\n }\r\n\r\n if (this.props.config.updateRefinerPanel) {\r\n const refinerInput = new RefinersByCollectionInput(\r\n newListPageState.pageType,\r\n this.props.context.request.apiSettings,\r\n {\r\n Paging: {\r\n Top: this.props.config.itemsPerPage,\r\n Skip: Math.max(\r\n newListPageState.pageSize * (newListPageState.currentPageNumber ?? this.defaultPageNumber),\r\n this.defaultPageNumber\r\n )\r\n },\r\n count: true,\r\n Sorting: newListPageState.sortingCritera ?? {}\r\n },\r\n newListPageState.activeFilters ?? [],\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- RecordId is string. Check required.\r\n +(this.props.context.request.urlTokens.recordId || 0),\r\n this.props.context.request.query?.q\r\n ? this.props.context.request.query.q\r\n : this.props.context.request.query?.productId,\r\n false,\r\n this.props.config.updateRefinerPanel,\r\n undefined,\r\n this.catalogId\r\n );\r\n\r\n const refiners = await getCollectionRefinersAction(refinerInput, this.props.context.actionContext);\r\n this.setState({ refiners });\r\n }\r\n }\r\n );\r\n\r\n if (\r\n this.props.config.enableAffiliationBasedPricing &&\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Condition required.\r\n this.props.context.actionContext.requestContext?.user?.isAuthenticated\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Call api to retrieve the availabilities data without blocking the UI.\r\n this._getActivePrice();\r\n }\r\n\r\n const context = this.props.context as ICoreContext;\r\n const dimensionsToDisplayOnProductCard = context.app.config.dimensionsInProductCard;\r\n const dimensionsToDisplayAsSwatch = context.app.config.dimensionsAsSwatchType;\r\n if (\r\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\r\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\r\n ArrayExtensions.hasElements(dimensionsToDisplayAsSwatch) &&\r\n !dimensionsToDisplayAsSwatch.includes(DimensionTypes.none) &&\r\n this.props.config.includeAttributes\r\n ) {\r\n await this._getProductsDimensionsAvailabilities();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser && window.removeEventListener) {\r\n window.removeEventListener('resize', this._updateViewport);\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n config: { imageSettings, className },\r\n resources,\r\n data: { listPageState, products: productCollection, featureProduct }\r\n } = this.props;\r\n\r\n if (!this.isListPageStateUpdated && listPageState.result && productCollection.result) {\r\n this._updateListPageState(listPageState.result, productCollection.result);\r\n this.isListPageStateUpdated = true;\r\n }\r\n\r\n const products = (this.props.data.listPageState.result && this.props.data.listPageState.result.activeProducts) || [];\r\n const searchProduct = listPageState.result?.featureProduct ?? featureProduct.result ?? null;\r\n let errorText = '';\r\n if (!ArrayExtensions.hasElements(products)) {\r\n errorText = this._pageType === 'Category' ? resources.resultCategoryNotFoundText : resources.resultSearchNotFoundText;\r\n }\r\n const productsComponent = this._getProducts();\r\n const featureComponent = (\r\n \r\n );\r\n\r\n const searchResultContainerViewProps = {\r\n ...this.props,\r\n products: productsComponent,\r\n TitleViewProps: this._getCollectionTitle(),\r\n categoryHierarchy: !this.props.config.disableHierarchy && this._getCategoryHierarchy(),\r\n refineMenu: this._getRefineMenu(),\r\n className: classnames('ms-search-result-container', className),\r\n SearchResultContainer: {\r\n moduleProps: this.props,\r\n className: classnames('ms-search-result-container', className)\r\n },\r\n sortByOptions: this.props.data.listPageState.result?.totalProductCount !== 0 ? this._getSortingDropDown() : null,\r\n pagination: this._getPagination(),\r\n ProductsContainer: { className: 'ms-search-result-container__Products' },\r\n ProductSectionContainer: { className: 'ms-search-result-container__product-section' },\r\n CategoryNavContainer: { className: 'ms-search-result-container__category-nav-section' },\r\n RefineAndProductSectionContainer: { className: 'ms-search-result-container__refine-product-section' },\r\n choiceSummary: this._getChoiceSummary(),\r\n modalToggle:\r\n this.props.data.listPageState.result?.totalProductCount !== 0 ? (\r\n \r\n ) : null,\r\n searchResultModal: this._getSearchResultModal(),\r\n isMobile: this.isMobile,\r\n errorMessage: errorText && ,\r\n FeatureSearchContainer: { className: 'ms-feature-search-result' },\r\n similarLookProduct: searchProduct ? featureComponent : null,\r\n productPrices: this.productPrices\r\n };\r\n return this.props.renderView(searchResultContainerViewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Update the list page state with initial data.\r\n * @param listPageState -- List page State.\r\n * @param products -- Products.\r\n */\r\n private readonly _updateListPageState = (listPageState: ListPageState, products: IFullProductsSearchResultsWithCount): void => {\r\n let querySorting: SortColumn[] = [];\r\n const defaultPageNumber: number = 10;\r\n\r\n if (this._pageType === 'Category') {\r\n listPageState.pageType = 'Category';\r\n } else {\r\n listPageState.pageType = 'Search';\r\n }\r\n\r\n if (this.props.context.request.query?.sorting) {\r\n querySorting = JSON.parse(decodeURIComponent(this.props.context.request.query.sorting)) as SortColumn[];\r\n }\r\n\r\n listPageState.currentPageNumber =\r\n (this.props.context.request.query &&\r\n +this.props.context.request.query.skip / (this.props.config.itemsPerPage ?? defaultPageNumber)) ||\r\n 0;\r\n listPageState.sortingCritera = { Columns: querySorting };\r\n listPageState.pageSize = this.props.config.itemsPerPage ?? defaultPageNumber;\r\n listPageState.activeProducts = products.products;\r\n listPageState.totalProductCount = products.count;\r\n listPageState.activeFilters = hydrateRefinersFromUrl(this.props.context.request);\r\n if (this.props.context.request.query?.productId) {\r\n const featureProduct = this.props.data.featureProduct.result;\r\n if (featureProduct) {\r\n listPageState.featureProduct = featureProduct;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Get products dimension availabilities.\r\n * @returns Void.\r\n */\r\n private readonly _getProductsDimensionsAvailabilities = async (): Promise => {\r\n const productsList = this.props.data.listPageState.result?.activeProducts ?? [];\r\n\r\n const productsDimensionAvailabilities = await getDimensionAvailabilitiesForProductSearchResultAction(\r\n new DimensionAvailabilitiesForProductSearchResultInput(productsList, this.props.context as ICoreContext),\r\n this.props.context.actionContext\r\n );\r\n\r\n if (ArrayExtensions.hasElements(productsDimensionAvailabilities)) {\r\n this.setState({ productsDimensionAvailabilities });\r\n }\r\n };\r\n\r\n /**\r\n * Get the active price for the products.\r\n */\r\n private readonly _getActivePrice = async (): Promise => {\r\n const productsList = this.props.data.listPageState.result?.activeProducts ?? [];\r\n const products = await getPriceForProductSearchResult(\r\n new PriceForProductSearchResultInput(productsList),\r\n this.props.context.actionContext\r\n );\r\n\r\n const listPageState = await this.props.data.listPageState;\r\n listPageState.activeProducts = products;\r\n };\r\n\r\n private readonly _getSearchResultModal = (): ISearchResultModalViewProps => {\r\n const { resources } = this.props;\r\n return SearchResultModal({\r\n resources: {\r\n modalCloseButtonText: resources.modalCloseButtonText,\r\n modalTitle: resources.modalTitle\r\n },\r\n isOpen: this.state.modalIsOpen,\r\n returnRef: this._modalToggleRef,\r\n onModalToggle: this._toggleModal\r\n });\r\n };\r\n\r\n private readonly _getCollectionTitle = (): ITitleViewProps => {\r\n const { data, context, resources } = this.props;\r\n\r\n let collectionTitle: string | undefined = '';\r\n if (context && context.request && context.request.query && context.request.query.q) {\r\n collectionTitle = `\"${context.request.query.q}\"`;\r\n } else {\r\n collectionTitle =\r\n (data.category.result &&\r\n SearchResultContainer.getFriendlyName(context.request.locale, data.category.result.NameTranslations)) ||\r\n (data.category.result && data.category.result.Name);\r\n }\r\n let productCountText = '';\r\n let productCountNumber: number | undefined;\r\n if (data.listPageState && data.listPageState.result && data.listPageState.result.totalProductCount !== undefined) {\r\n productCountNumber = data.listPageState.result.totalProductCount;\r\n } else if (data.products && data.products.result) {\r\n productCountNumber = data.products.result.count;\r\n }\r\n\r\n if (productCountNumber && productCountNumber !== 0) {\r\n productCountText =\r\n productCountNumber !== 1\r\n ? format(this.props.resources.numberOfProducts, productCountNumber)\r\n : this.props.resources.oneProduct;\r\n } else {\r\n productCountText = format(this.props.resources.numberOfProducts, 0);\r\n }\r\n const pageName = context.request.telemetryPageName ? `result-count-${context.request.telemetryPageName.toLowerCase()}` : '';\r\n const titlePrefix = ;\r\n const titleText = collectionTitle && <Title className='ms-search-result__collection-title-text' text={collectionTitle} />;\r\n const titleCount = <Title className='ms-search-result__collection-title-count' text={productCountText} />;\r\n\r\n return {\r\n TitleContainer: { className: `ms-search-result-container__title ${pageName}` },\r\n title: {\r\n titlePrefix,\r\n titleText,\r\n titleCount\r\n }\r\n };\r\n };\r\n\r\n private readonly _getCategoryHierarchy = (): ICategoryHierarchyViewProps => {\r\n const { data } = this.props;\r\n const categoryHierarchy = data.categoryHierarchy.result;\r\n const categoryLinks =\r\n categoryHierarchy &&\r\n categoryHierarchy.map((value: CategoryHierarchyData, index: number) => {\r\n return (\r\n <Link\r\n key={index}\r\n text={value.Name}\r\n ariaLabel={`${this.props.resources.categoryLinkAriaLabel} ${value.Name}`}\r\n href={value.Url}\r\n />\r\n );\r\n });\r\n const categoryLinkSeparator = <Separator separator='/' />;\r\n\r\n return {\r\n CategoryHierarchyContainer: { tag: 'nav', className: 'ms-search-result-container__category-hierarchy' },\r\n categoryHierarchyList: categoryLinks,\r\n categoryHierarchySeparator: categoryLinkSeparator\r\n };\r\n };\r\n\r\n private readonly _getSortingDropDown = (): ISortByViewProps => {\r\n const { resources } = this.props;\r\n const activeDropdown = this._getCurrentlySelectedOption() || this.state.sortingState.selectedSortByOption;\r\n let dropdownOptions = this._getAllSortByOptions();\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- App config settings are of \"any\" value.\r\n if (this.props.context.app.config.hideRating) {\r\n dropdownOptions = dropdownOptions.filter(dropdownOption => dropdownOption.key !== sortOptions.sortByOptionRatingDesc);\r\n }\r\n\r\n const dropdown = (\r\n <LabeledDropdown\r\n labelClassname='reviews-list-sort-by'\r\n labelText={resources.sortByDropdownLabel}\r\n dropdownId='categorySortByDropdown'\r\n dropdownClassname='reviews-list-dropdown'\r\n toggleColor='link'\r\n dropdownOptions={dropdownOptions}\r\n selectedOption={activeDropdown}\r\n onSelectOption={this._updateSortByDropdown}\r\n ref={this._sortAndFilterContainerRef}\r\n />\r\n );\r\n return {\r\n SortingContainer: { className: 'ms-search-result-container__Sort-by-category' },\r\n sortByDropDown: dropdown\r\n };\r\n };\r\n\r\n private readonly _getPagination = (): React.ReactNode => {\r\n const { config, context, data, resources } = this.props;\r\n const listPageState = data.listPageState.result;\r\n const fullUrl = getCurrentUrl(context.request);\r\n const itemsPerPage = config.itemsPerPage || 10;\r\n // eslint-disable-next-line max-len -- existing code\r\n const skipCount = listPageState?.currentPageNumber\r\n ? listPageState.currentPageNumber * (this.props.config.itemsPerPage || 10)\r\n : (this.props.context.request.query && +this.props.context.request.query.skip) || 0;\r\n const totalItems = listPageState?.totalProductCount || 0;\r\n const previousText = resources.flipperPrevious;\r\n const nextText = resources.flipperNext;\r\n\r\n if (totalItems <= itemsPerPage) {\r\n return null;\r\n }\r\n return (\r\n <UncontrolledPagination\r\n className='ms-search-result-container__pagination'\r\n role='navigation'\r\n aria-label={resources.paginationAriaLabel}\r\n url={fullUrl.href}\r\n qsp='skip'\r\n items={totalItems}\r\n itemsPerPage={itemsPerPage}\r\n startingItem={skipCount}\r\n previousText={this._renderPrev(previousText)}\r\n nextText={this._renderNext(nextText)}\r\n previousAriaLabel={previousText}\r\n nextAriaLabel={nextText}\r\n telemetryContent={this.telemetryContent}\r\n />\r\n );\r\n };\r\n\r\n private readonly _getRefineMenu = (): IRefineMenuViewProps => {\r\n const { data, context, config } = this.props;\r\n const tempRangeTypeTODO = context.request.query && context.request.query.inputRange ? 'input' : 'slider';\r\n const validRefiners =\r\n this.props.config.updateRefinerPanel && ArrayExtensions.hasElements(this.state.refiners)\r\n ? this.state.refiners.filter(refiner => {\r\n return ArrayExtensions.hasElements(refiner.Values) && !this._shouldHideFromRefiners(refiner);\r\n })\r\n : data.refiners.result &&\r\n data.refiners.result.filter(refiner => {\r\n return ArrayExtensions.hasElements(refiner.Values) && !this._shouldHideFromRefiners(refiner);\r\n });\r\n\r\n const activeRefiners = (data.listPageState.result && data.listPageState.result.activeFilters) || [];\r\n\r\n this._getexpandRefinerCount(validRefiners && validRefiners.length, config.expandRefinersCount);\r\n const expandedRefiners = this.expandrefinerCount;\r\n const subMenus =\r\n validRefiners &&\r\n validRefiners.map((productRefinerHierarchy: IProductRefinerHierarchy, index: number) => {\r\n return (\r\n <RefineSubmenu\r\n productRefinerHierarchy={productRefinerHierarchy}\r\n selectedRefinerValues={activeRefiners}\r\n refineItemCommonProps={this._refineItemCommonProps}\r\n minValueSliderThumbAriaLabel={this.props.resources.minValueSliderThumbAriaLabel}\r\n maxValueSliderThumbAriaLabel={this.props.resources.maxValueSliderThumbAriaLabel}\r\n key={index}\r\n onUpdateRefiners={this._onUpdateRefiners}\r\n urlBuilder={this._buildRefinerUrl}\r\n isDisabled={false}\r\n isExpandedOnInitialLoad={!!(expandedRefiners && expandedRefiners > index)}\r\n tempRangeTypeTODO={tempRangeTypeTODO}\r\n context={context}\r\n moduleId={this.props.id}\r\n moduleTypeName={this.props.typeName}\r\n telemetryContent={this.telemetryContent}\r\n productCountAriaLabel={this.props.resources.productCountAriaLabel}\r\n refineItemAriaLabel={this.props.resources.refineItemAriaLabel}\r\n refineItemsAriaLabel={this.props.resources.refineItemsAriaLabel}\r\n singleProductCountAriaLabel={this.props.resources.singleProductCountAriaLabel}\r\n isMobile={this.isMobile}\r\n />\r\n );\r\n });\r\n\r\n return {\r\n RefineMenuContainer: { className: 'ms-search-result-container__refine-menu' },\r\n RefinerSectionContainer: { className: 'ms-search-result-container__refiner-section' },\r\n refiners: subMenus\r\n };\r\n };\r\n\r\n /**\r\n * Should hide from refiners.\r\n * @param refiner - The refiner.\r\n * @returns ShouldHideFromRefiners.\r\n */\r\n private readonly _shouldHideFromRefiners = (refiner: IProductRefinerHierarchy): boolean => {\r\n // Always hide sortable attribute since it's just for sorting products in Azure search, not for customers\r\n return (\r\n refiner.RecordId === this.props.data.products.result?.inventoryAwareSortableAttributeId ||\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\r\n (this.props.context.app.config.productListInventoryDisplay === ProductListInventoryFilteringOptions.HideOOS &&\r\n refiner.RecordId === this.props.data.products.result?.channelInventoryConfigurationId) ||\r\n (refiner.KeyName !== 'Pris' &&\r\n refiner.KeyName !== 'Price' &&\r\n ArrayExtensions.hasElements(this.props.config.hiddenRefiners) &&\r\n this.props.config.hiddenRefiners.filter(refinerName => refinerName === refiner.KeyName).length > 0) ||\r\n ((refiner.KeyName === 'Pris' || refiner.KeyName === 'Price') &&\r\n !(\r\n this.props.context.request.user.isAuthenticated &&\r\n ((this.props.context.request.user.customerAccountNumber !== null &&\r\n this.props.context.request.user.customerAccountNumber !== '') ||\r\n this.props.context.request.user.isOBORequest)\r\n ))\r\n );\r\n };\r\n\r\n private readonly _getChoiceSummary = (): React.ReactNode => {\r\n const { resources, data, telemetry } = this.props;\r\n const selectedRefiners = (data.listPageState.result && data.listPageState.result.activeFilters) || [];\r\n return (\r\n <ChoiceSummary\r\n classNames='ms-choice-summary-by-category'\r\n clearAllText={resources.clearAllText}\r\n label={resources.choiceSummaryLabel}\r\n closeAriaLabel={resources.closeAriaLabel}\r\n selectedChoices={selectedRefiners}\r\n // @ts-expect-error: NOTE Type-unsafe line below, null refinersByCategoryHierarchy case not handled\r\n refinerHierarchy={data.refiners.result}\r\n choiceFormat={resources.choiceFormat}\r\n choiceRangeValueFormat={resources.choiceRangeValueFormat}\r\n telemetry={telemetry}\r\n onChoiceClicked={this._onChoiceClicked}\r\n urlBuilder={this._buildRefinerUrlForChoiceSummary}\r\n choiceAriaLabel={resources.choiceAriaLabel}\r\n telemetryContent={this.telemetryContent}\r\n context={this.props.context}\r\n channelInventoryConfigurationId={this.props.data.products.result?.channelInventoryConfigurationId}\r\n />\r\n );\r\n };\r\n\r\n /**\r\n * Get Active products.\r\n * @returns - JSX Elements.\r\n */\r\n private readonly _getProducts = (): JSX.Element => {\r\n const {\r\n config: { imageSettings, allowBackNavigation: shouldAllowBackNavigation }\r\n } = this.props;\r\n const { resources } = this.props;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- Reading config value.\r\n const breadCrumbType: string = this.props.context.app.config.breadcrumbType;\r\n const shouldAllowBack = shouldAllowBackNavigation && (breadCrumbType === 'back' || breadCrumbType === 'categoryAndBack');\r\n\r\n const products = (this.props.data.listPageState.result && this.props.data.listPageState.result.activeProducts) || [];\r\n\r\n const userLoggedIn =\r\n this.props.context.request.user.isAuthenticated &&\r\n ((this.props.context.request.user.customerAccountNumber !== null &&\r\n this.props.context.request.user.customerAccountNumber !== '') ||\r\n this.props.context.request.user.isOBORequest);\r\n\r\n const quickviewSlot = userLoggedIn && this.props.slots?.quickview?.[0];\r\n\r\n const isPriceMinMaxFeatureState = this.props.data.featureState.result?.find(\r\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\r\n );\r\n return (\r\n <ProductSearchResultItems\r\n products={products}\r\n context={this.props.context}\r\n imageSettings={imageSettings}\r\n resources={resources}\r\n moduleType={this.props.typeName}\r\n moduleId={this.props.id}\r\n allowBackNavigation={shouldAllowBack}\r\n telemetryContent={this.telemetryContent}\r\n quickviewSlot={quickviewSlot}\r\n channelInventoryConfigurationId={this.props.data.products.result?.channelInventoryConfigurationId}\r\n isPriceMinMaxEnabled={isPriceMinMaxFeatureState?.IsEnabled}\r\n productsDimensionAvailabilities={this.state.productsDimensionAvailabilities}\r\n />\r\n );\r\n };\r\n\r\n private readonly _updateSortByDropdown = (notification: ILabeledDropdownOnChangeNotification): void => {\r\n const {\r\n context: { request: requestContext, actionContext }\r\n } = this.props;\r\n\r\n if (!requestContext || !actionContext || !this.props.data.listPageState.result) {\r\n // eslint-disable-next-line max-len -- existing code\r\n const error = `[sort-by-category] cannot sort without context: ${!requestContext ? 'requestContext ' : ''} ${\r\n !actionContext ? 'actionContext ' : ''\r\n } could not be found`;\r\n this.props.telemetry.warning(error);\r\n return;\r\n }\r\n\r\n window.history.pushState(\r\n {},\r\n '',\r\n buildListPageUrl(\r\n getCurrentUrl(this.props.context.request),\r\n undefined,\r\n [this._getSortColumnFromSelectedOption(notification.selectedOption)],\r\n undefined\r\n )\r\n );\r\n transaction(() => {\r\n this.props.data.listPageState.result!.currentPageNumber = 0;\r\n this.props.data.listPageState.result!.sortingCritera = {\r\n Columns: [this._getSortColumnFromSelectedOption(notification.selectedOption)]\r\n };\r\n });\r\n };\r\n\r\n private readonly _getSortColumnFromSelectedOption = (option: ILabeledDropdownOption): SortColumn => {\r\n const { data } = this.props;\r\n\r\n if (!data.searchConfiguration.result) {\r\n return {};\r\n }\r\n\r\n const mappedConfiguration = data.searchConfiguration.result.find(searchConfiguration => {\r\n return searchConfiguration.key === option.key;\r\n });\r\n\r\n if (mappedConfiguration) {\r\n return mappedConfiguration.sortColumn;\r\n }\r\n\r\n return {};\r\n };\r\n\r\n /**\r\n * Retrieves current sort criteria.\r\n * @returns Sort criteria column which is currently active or undefined if it's not specified.\r\n */\r\n private readonly _getSortCriteriaColumn = (): SortColumn | undefined => {\r\n const sortCriteria = this.props.data.listPageState.result?.sortingCritera;\r\n if (ArrayExtensions.hasElements(sortCriteria?.Columns)) {\r\n return sortCriteria!.Columns[0];\r\n }\r\n\r\n const queryColumns = parseQueryParam<SortColumn[]>('sorting', this.props.context.request);\r\n if (ArrayExtensions.hasElements(queryColumns)) {\r\n return queryColumns[0];\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Retrieves dropdown options.\r\n * @returns All dropdown options.\r\n */\r\n private readonly _getAllSortByOptions = (): ILabeledDropdownOption[] => {\r\n const searchConfiguration = this.props.data.searchConfiguration.result;\r\n\r\n if (!searchConfiguration) {\r\n return [];\r\n }\r\n\r\n const mappedSearchConfiguration = this.sortByDropdownOptions.filter(mappedSearchConfig =>\r\n searchConfiguration.find(item => mappedSearchConfig.key === item.key)\r\n );\r\n\r\n return ArrayExtensions.validValues(mappedSearchConfiguration);\r\n };\r\n\r\n /**\r\n * Retrieves current selected dropdown option based on the sort criteria.\r\n * @returns Current dropdown option.\r\n */\r\n private readonly _getCurrentlySelectedOption = (): ILabeledDropdownOption | undefined => {\r\n const activeSortColumn = this._getSortCriteriaColumn();\r\n\r\n const searchConfiguration = this.props.data.searchConfiguration.result;\r\n\r\n if (!activeSortColumn || !searchConfiguration) {\r\n return undefined;\r\n }\r\n\r\n const activeMappedConfig = searchConfiguration.find(\r\n mappedSearchConfig =>\r\n mappedSearchConfig.sortColumn.ColumnName === activeSortColumn.ColumnName &&\r\n mappedSearchConfig.sortColumn.IsDescending === activeSortColumn.IsDescending\r\n );\r\n if (!activeMappedConfig) {\r\n return undefined;\r\n }\r\n\r\n return this.sortByDropdownOptions.find(dropdownOption => dropdownOption.key === activeMappedConfig.key);\r\n };\r\n\r\n private readonly _onUpdateRefiners = (itemToggleNotification: IRefineItemToggleNotification): void => {\r\n const {\r\n context: { request: requestContext, actionContext }\r\n } = this.props;\r\n\r\n if (!requestContext || !actionContext || !this.props.data.listPageState.result) {\r\n const error = `Refine menu cannot refine search criteria: \r\n ${!requestContext ? 'requestContext ' : ''} ${!actionContext ? 'actionContext ' : ''} could not be found`;\r\n this.props.telemetry.warning(error);\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Server side the list PageState will not be called.\r\n const updatedRefinementCriteria = getUpdatedRefinementCriteria(\r\n itemToggleNotification,\r\n this.props.data.listPageState.result?.activeFilters || []\r\n );\r\n\r\n window.history.pushState({}, '', buildListPageUrl(getCurrentUrl(this.props.context.request), updatedRefinementCriteria));\r\n transaction(() => {\r\n this.props.data.listPageState.result!.currentPageNumber = 0;\r\n this.props.data.listPageState.result!.activeFilters = updatedRefinementCriteria;\r\n });\r\n };\r\n\r\n private readonly _buildRefinerUrl = (itemToggleNotification: IRefineItemToggleNotification): string => {\r\n if (this.props.data.listPageState.result) {\r\n const newRefinementCriteria = getUpdatedRefinementCriteria(\r\n itemToggleNotification,\r\n this.props.data.listPageState.result.activeFilters || []\r\n );\r\n\r\n return buildListPageUrl(getCurrentUrl(this.props.context.request), newRefinementCriteria);\r\n }\r\n this.props.telemetry.warning('[buildRefinerQueryString]List Page State Not available, unable to build refiner URL');\r\n return '';\r\n };\r\n\r\n private readonly _onChoiceClicked = (notification: IChoiceSummaryClickNotification): void => {\r\n const { data, telemetry } = this.props;\r\n\r\n if (!data.listPageState.result) {\r\n telemetry.warning('[choice-summary-by-category._onChoiceClicked]ListPageState unavailable, unable to update refiners.');\r\n return;\r\n }\r\n\r\n let currentRefinementCriteria = (data.listPageState.result && data.listPageState.result.activeFilters) || [];\r\n\r\n if (!notification.clearAll) {\r\n const selectedChoice = notification.choiceClicked;\r\n if (!selectedChoice) {\r\n telemetry.warning('[choice-summary-by-category._onChoiceClicked] Choice could not be determined');\r\n return;\r\n }\r\n currentRefinementCriteria = currentRefinementCriteria.filter(\r\n (selectedCriterion: ProductRefinerValue) => !isMatchingRefinementCriterion(selectedChoice, selectedCriterion)\r\n );\r\n } else {\r\n currentRefinementCriteria = [];\r\n\r\n // Set focus to sort and filter\r\n const dropdownElementId = this._sortAndFilterContainerRef.current && this._sortAndFilterContainerRef.current.props.dropdownId;\r\n const dropdownElement = dropdownElementId && document.getElementById(dropdownElementId);\r\n setTimeout(() => {\r\n dropdownElement && dropdownElement.focus();\r\n }, 50);\r\n }\r\n\r\n const fullUrl = getCurrentUrl(this.props.context.request);\r\n window.history.pushState({}, '', buildListPageUrl(fullUrl, currentRefinementCriteria));\r\n data.listPageState.result.currentPageNumber = 0;\r\n data.listPageState.result.activeFilters = currentRefinementCriteria;\r\n };\r\n\r\n private readonly _buildRefinerUrlForChoiceSummary = (selectedRefiner: ProductRefinerValue, isClearAll: boolean): string => {\r\n const { data, telemetry } = this.props;\r\n const fullUrl = getCurrentUrl(this.props.context.request);\r\n\r\n if (!data.listPageState.result) {\r\n telemetry.warning('[choice-summary-by-category._buildRefinerUrl]ListPageState unavailable, unable to create refiner URL.');\r\n return fullUrl.href;\r\n }\r\n\r\n let currentRefinementCriteria = (data.listPageState.result && data.listPageState.result.activeFilters) || [];\r\n\r\n if (!isClearAll) {\r\n if (!selectedRefiner) {\r\n telemetry.warning('[choice-summary-by-category._buildRefinerUrl] URL for Choice could not be determined');\r\n return fullUrl.href;\r\n }\r\n currentRefinementCriteria = currentRefinementCriteria.filter(\r\n (selectedCriterion: ProductRefinerValue) => !isMatchingRefinementCriterion(selectedRefiner, selectedCriterion)\r\n );\r\n } else {\r\n currentRefinementCriteria = [];\r\n }\r\n\r\n return buildListPageUrl(fullUrl, currentRefinementCriteria);\r\n };\r\n\r\n private _getViewport(): GridSize {\r\n if (MsDyn365.isBrowser) {\r\n return isMobile({ variant: VariantType.Browser, context: this.props.context.request });\r\n }\r\n return isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\r\n }\r\n\r\n private _toggleModal(): void {\r\n this.setState({\r\n modalIsOpen: !this.state.modalIsOpen\r\n });\r\n }\r\n\r\n private _updateViewport(): void {\r\n this._viewport = this._getViewport();\r\n\r\n if (this.state.modalIsOpen && !this.isMobile) {\r\n this._toggleModal();\r\n }\r\n }\r\n\r\n private readonly _getexpandRefinerCount = (validRefiners?: number, refinerCount?: expandRefinersCount): void => {\r\n switch (refinerCount) {\r\n case expandRefinersCount.all:\r\n this.expandrefinerCount = validRefiners;\r\n break;\r\n case expandRefinersCount.one:\r\n this.expandrefinerCount = 1;\r\n break;\r\n case expandRefinersCount.two:\r\n this.expandrefinerCount = 2;\r\n break;\r\n case expandRefinersCount.three:\r\n this.expandrefinerCount = 3;\r\n break;\r\n case expandRefinersCount.four:\r\n this.expandrefinerCount = 4;\r\n break;\r\n default:\r\n this.expandrefinerCount = 0;\r\n }\r\n };\r\n\r\n /**\r\n * Renders a Pagination previous text.\r\n * @param paginationPreviousText - Pagination previous text from resources.\r\n * @returns Previous text and flipper icon.\r\n */\r\n private readonly _renderPrev = (paginationPreviousText: string) => {\r\n return (\r\n <div className='msc-pagination__prev'>\r\n <span className='ms-search-result__pagination-left' aria-hidden='true' />\r\n <span className='prev-text'>{paginationPreviousText}</span>\r\n </div>\r\n );\r\n };\r\n\r\n /**\r\n * Renders a Pagination next text.\r\n * @param paginationNextText - Pagination next text from resources.\r\n * @returns Next text and flipper icon.\r\n */\r\n private readonly _renderNext = (paginationNextText: string) => {\r\n return (\r\n <div className='msc-pagination__next'>\r\n <span className='next-text'>{paginationNextText}</span>\r\n <span className='ms-search-result__pagination-right' aria-hidden='true' />\r\n </div>\r\n );\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ISearchResultModalViewProps } from './components';\r\nimport {\r\n ICategoryHierarchyViewProps,\r\n IRefineMenuViewProps,\r\n ISearchResultContainerViewProps,\r\n ISortByViewProps,\r\n ITitleViewProps\r\n} from './lobas-search-result-container';\r\nimport { ILobasSearchResultContainerData } from './lobas-search-result-container.data';\r\nimport { ILobasSearchResultContainerProps } from './lobas-search-result-container.props.autogenerated';\r\n\r\nconst SearchResultContainerView: React.FC<ISearchResultContainerViewProps &\r\n ILobasSearchResultContainerProps<ILobasSearchResultContainerData>> = props => {\r\n const {\r\n SearchResultContainer,\r\n products,\r\n pagination,\r\n ProductsContainer,\r\n ProductSectionContainer,\r\n choiceSummary,\r\n isMobile,\r\n modalToggle,\r\n searchResultModal,\r\n TitleViewProps,\r\n refineMenu,\r\n categoryHierarchy,\r\n sortByOptions,\r\n CategoryNavContainer,\r\n RefineAndProductSectionContainer,\r\n errorMessage,\r\n FeatureSearchContainer,\r\n similarLookProduct\r\n } = props;\r\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\r\n if (isMobile) {\r\n return (\r\n <Module {...SearchResultContainer}>\r\n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\r\n {renderTitle(TitleViewProps)}\r\n {choiceSummary}\r\n {modalToggle}\r\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\r\n <Node {...FeatureSearchContainer}>{similarLookProduct}</Node>\r\n <Node {...ProductsContainer}>\r\n {errorMessage}\r\n {products}\r\n </Node>\r\n {pagination}\r\n </Module>\r\n );\r\n }\r\n return (\r\n <Module {...SearchResultContainer}>\r\n {categoryHierarchy && <Node {...CategoryNavContainer}>{renderCategoryHierarchy(categoryHierarchy)}</Node>}\r\n {_renderLobasProductSelector(props.slots && props.slots.lobasProductSelector)}\r\n <Node {...RefineAndProductSectionContainer}>\r\n {refineMenu && renderRefiner(refineMenu)}\r\n <Node {...ProductSectionContainer}>\r\n <Node {...FeatureSearchContainer}>{similarLookProduct}</Node>\r\n <div className='ms-search-result-wrapper-title-choice-summary'>\r\n {TitleViewProps && renderTitle(TitleViewProps)}\r\n {choiceSummary}\r\n </div>\r\n <div className='ms-search-result-wrapper-sort-by-category'>\r\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\r\n </div>\r\n <Node {...ProductsContainer}>\r\n {errorMessage}\r\n {products}\r\n </Node>\r\n {pagination}\r\n </Node>\r\n </Node>\r\n </Module>\r\n );\r\n};\r\n\r\nconst _renderLobasProductSelector = (productSelector: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!productSelector || productSelector.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return <>{productSelector[0]}</>;\r\n};\r\n\r\nconst createSearchResultModal = (\r\n modalProps: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n sortByDropDown: ISortByViewProps,\r\n isRecoSearchPage?: string\r\n): JSX.Element => {\r\n return React.cloneElement(\r\n modalProps.modal,\r\n {},\r\n modalProps.modalHeader,\r\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\r\n modalProps.modalFooter\r\n );\r\n};\r\n\r\nconst createModalBody = (\r\n props: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n sortByDropDown: ISortByViewProps,\r\n isRecoSearchPage?: string\r\n): JSX.Element | null => {\r\n if (sortByDropDown) {\r\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\r\n }\r\n return null;\r\n};\r\n\r\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n if (refiners) {\r\n return (\r\n <Node {...RefinerSectionContainer}>\r\n <Node {...RefineMenuContainer}>\r\n {refiners.map((submenu, index) => (\r\n <React.Fragment key={index}>{submenu}</React.Fragment>\r\n ))}\r\n </Node>\r\n </Node>\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\r\n const { SortingContainer, sortByDropDown } = props;\r\n if (sortByDropDown && !isRecoSearchPage) {\r\n return <Node {...SortingContainer}>{sortByDropDown}</Node>;\r\n }\r\n return null;\r\n};\r\n\r\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\r\n if (categoryHierarchyList) {\r\n return (\r\n <Node {...CategoryHierarchyContainer}>\r\n {categoryHierarchyList.map((category, index) => (\r\n <React.Fragment key={index}>\r\n {category}\r\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n </React.Fragment>\r\n ))}\r\n </Node>\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n if (title) {\r\n return (\r\n <Node {...TitleContainer}>\r\n <h2>\r\n {title.titlePrefix}\r\n {title.titleText}\r\n {title.titleCount}\r\n </h2>\r\n </Node>\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default SearchResultContainerView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['lobas-search-result-container'] = {\n c: () => require('partner/modules/lobas-search-result-container/lobas-search-result-container.tsx'),\n $type: 'containerModule',\n da: [{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'featureProduct', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'listPageState', path:'modules/lobas-search-result-container/list-page-state', runOn: 0},{name:'products', path:'modules/lobas-search-result-container/actions/get-full-products-by-collection', runOn: 0},{name:'refiners', path:'modules/lobas-search-result-container/actions/get-refiners-for-collection', runOn: 0},{name:'searchConfiguration', path:'modules/lobas-search-result-container/actions/get-mapped-search-configuration', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'lobas-search-result-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/lobas-search-result-container'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'modules/lobas-search-result-container/actions/get-full-products-by-collection';\n let dataAction = require('partner/modules/lobas-search-result-container/actions/get-full-products-by-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'modules/lobas-search-result-container/actions/get-mapped-search-configuration';\n let dataAction = require('partner/modules/lobas-search-result-container/actions/get-mapped-search-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'modules/lobas-search-result-container/actions/get-refiners-for-collection';\n let dataAction = require('partner/modules/lobas-search-result-container/actions/get-refiners-for-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'modules/lobas-search-result-container/list-page-state';\n let dataAction = require('partner/modules/lobas-search-result-container/list-page-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|lobas-search-result-container|lobas-search-result-container'] = {\n c: () => require('partner/modules/lobas-search-result-container/lobas-search-result-container.view.tsx'),\n cn: '__local__-__local__-lobas-search-result-container'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["expandRefinersCount","SearchResultContainer","SearchResultContainer_1","React","constructor","props","state","_props$context$reques","_props$context$reques2","super","sortByDropdownOptions","key","sortOptions","value","this","resources","sortByOptionRelevanceDesc","sortByOptionNameAsc","sortByOptionNameDesc","sortByOptionPriceAsc","sortByOptionPriceDesc","sortByOptionRatingDesc","sortByOptionBestSelling","sortByOptionNewScore","sortByOptionTrendingScore","_pageType","context","request","urlTokens","pageType","_viewport","expandrefinerCount","defaultPageNumber","catalogId","getCatalogId","isListPageStateUpdated","_updateListPageState","listPageState","products","_this$props$context$r","_this$props$config$it","_this$props$config$it2","_this$props$context$r2","querySorting","query","sorting","JSON","parse","decodeURIComponent","currentPageNumber","skip","config","itemsPerPage","sortingCritera","Columns","pageSize","activeProducts","totalProductCount","count","activeFilters","hydrateRefinersFromUrl","productId","featureProduct","data","result","_getProductsDimensionsAvailabilities","async","_this$props$data$list","_this$props$data$list2","productsList","productsDimensionAvailabilities","getDimensionAvailabilitiesForProductSearchResultAction","DimensionAvailabilitiesForProductSearchResultInput","actionContext","ArrayExtensions","setState","_getActivePrice","_this$props$data$list3","_this$props$data$list4","getPriceForProductSearchResult","PriceForProductSearchResultInput","_getSearchResultModal","SearchResultModal","modalCloseButtonText","modalTitle","isOpen","modalIsOpen","returnRef","_modalToggleRef","onModalToggle","_toggleModal","_getCollectionTitle","collectionTitle","q","category","getFriendlyName","locale","NameTranslations","Name","productCountNumber","productCountText","undefined","format","numberOfProducts","oneProduct","TitleContainer","className","telemetryPageName","toLowerCase","title","titlePrefix","Title","text","searchTextPrefix","titleText","titleCount","_getCategoryHierarchy","categoryHierarchy","CategoryHierarchyContainer","tag","categoryHierarchyList","map","index","Link","ariaLabel","categoryLinkAriaLabel","href","Url","categoryHierarchySeparator","Separator","separator","_getSortingDropDown","activeDropdown","_getCurrentlySelectedOption","sortingState","selectedSortByOption","dropdownOptions","_getAllSortByOptions","app","hideRating","filter","dropdownOption","SortingContainer","sortByDropDown","LabeledDropdown","labelClassname","labelText","sortByDropdownLabel","dropdownId","dropdownClassname","toggleColor","selectedOption","onSelectOption","_updateSortByDropdown","ref","_sortAndFilterContainerRef","_getPagination","fullUrl","getCurrentUrl","skipCount","totalItems","previousText","flipperPrevious","nextText","flipperNext","UncontrolledPagination","role","paginationAriaLabel","url","qsp","items","startingItem","_renderPrev","_renderNext","previousAriaLabel","nextAriaLabel","telemetryContent","_getRefineMenu","tempRangeTypeTODO","inputRange","validRefiners","updateRefinerPanel","refiners","refiner","Values","_shouldHideFromRefiners","activeRefiners","_getexpandRefinerCount","length","expandedRefiners","RefineMenuContainer","RefinerSectionContainer","productRefinerHierarchy","RefineSubmenu","selectedRefinerValues","refineItemCommonProps","_refineItemCommonProps","minValueSliderThumbAriaLabel","maxValueSliderThumbAriaLabel","onUpdateRefiners","_onUpdateRefiners","urlBuilder","_buildRefinerUrl","isDisabled","isExpandedOnInitialLoad","moduleId","id","moduleTypeName","typeName","productCountAriaLabel","refineItemAriaLabel","refineItemsAriaLabel","singleProductCountAriaLabel","isMobile","_this$props$data$prod","_this$props$data$prod2","RecordId","inventoryAwareSortableAttributeId","productListInventoryDisplay","ProductListInventoryFilteringOptions","channelInventoryConfigurationId","KeyName","hiddenRefiners","refinerName","user","isAuthenticated","customerAccountNumber","isOBORequest","_getChoiceSummary","_this$props$data$prod3","telemetry","selectedRefiners","ChoiceSummary","classNames","clearAllText","label","choiceSummaryLabel","closeAriaLabel","selectedChoices","refinerHierarchy","choiceFormat","choiceRangeValueFormat","onChoiceClicked","_onChoiceClicked","_buildRefinerUrlForChoiceSummary","choiceAriaLabel","_getProducts","_this$props$slots","_this$props$slots$qui","_this$props$data$feat","_this$props$data$prod4","imageSettings","allowBackNavigation","shouldAllowBackNavigation","breadCrumbType","breadcrumbType","shouldAllowBack","quickviewSlot","slots","quickview","isPriceMinMaxFeatureState","featureState","find","ProductSearchResultItems","moduleType","isPriceMinMaxEnabled","IsEnabled","notification","requestContext","window","history","pushState","buildListPageUrl","_getSortColumnFromSelectedOption","transaction","error","warning","option","searchConfiguration","mappedConfiguration","sortColumn","_getSortCriteriaColumn","_this$props$data$list5","sortCriteria","queryColumns","parseQueryParam","mappedSearchConfiguration","mappedSearchConfig","item","activeSortColumn","activeMappedConfig","ColumnName","IsDescending","itemToggleNotification","_this$props$data$list6","updatedRefinementCriteria","getUpdatedRefinementCriteria","newRefinementCriteria","currentRefinementCriteria","clearAll","dropdownElementId","current","dropdownElement","document","getElementById","setTimeout","focus","selectedChoice","choiceClicked","selectedCriterion","isMatchingRefinementCriterion","selectedRefiner","isClearAll","refinerCount","all","one","two","three","four","paginationPreviousText","paginationNextText","device","Type","bind","_updateViewport","productPrices","pending","placeholderTextMax","minLabel","maxLabel","rangeNameFormat","validationErrorNaN","validationErrorNotNumber","validationErrorRange","validationErrorNotRange","getTelemetryObject","friendlyName","nameTranslations","_nameTranslation","nameTranslation","Language","Text","_this$props$context$a3","_this$props$context$a4","MsDyn365","addEventListener","reaction","_listPageState$active","_listPageState$sortin","_newListPageState$cur","_newListPageState$sor","_newListPageState$act","_this$props$context$r3","_this$props$context$r4","_this$props$context$r5","_this$props","_this$props$config","_this$props$context$a","_this$props$context$a2","newListPageState","input","GetFullProductsByCollectionInput","apiSettings","Paging","Top","Skip","Math","max","Sorting","recordId","stringify","ProductId","Recommendation","recommendation","includeAttributes","productResults","getCollectionProducts","enableAffiliationBasedPricing","_newListPageState$cur2","_newListPageState$sor2","_newListPageState$act2","_this$props$context$r6","_this$props$context$r7","refinerInput","RefinersByCollectionInput","getCollectionRefinersAction","dimensionsToDisplayOnProductCard","dimensionsInProductCard","dimensionsToDisplayAsSwatch","dimensionsAsSwatchType","includes","DimensionTypes","componentWillUnmount","removeEventListener","render","_ref","_listPageState$result","_listPageState$result2","_this$props$context$r8","_this$props$data$list7","_this$props$data$list8","productCollection","searchProduct","errorText","resultCategoryNotFoundText","resultSearchNotFoundText","productsComponent","featureComponent","FeatureSearchResultItem","product","searchResultContainerViewProps","_objectSpread","TitleViewProps","disableHierarchy","refineMenu","classnames","moduleProps","sortByOptions","pagination","ProductsContainer","ProductSectionContainer","CategoryNavContainer","RefineAndProductSectionContainer","choiceSummary","modalToggle","ModalToggle","innerRef","onClick","searchResultModal","errorMessage","ErrorMessage","FeatureSearchContainer","similarLookProduct","renderView","_getViewport","variant","VariantType","__decorate","computed","observable","observer","_renderLobasProductSelector","productSelector","createSearchResultModal","modalProps","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","renderRefiner","Node","Object","assign","submenu","renderCategoryHierarchy","renderTitle","_props$context$action","Module","lobasProductSelector","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}