{"version":3,"sources":["webpack:///./lib/search/module-registration.js?f197","webpack:///external \"React\"?c481","webpack:///src/modules/search/search.view.tsx?e62d","webpack:///external \"ReactDOM\"?4b2d","webpack:///src/search-state-data-action.ts?8823","webpack:///src/search-state.ts?b5d7","webpack:///src/modules/search/actions/get-auto-suggest-suggestions.ts?6ade","webpack:///src/modules/search/components/search.categorysuggest.tsx?3bc4","webpack:///src/modules/search/components/search.form.tsx?3c4b","webpack:///src/modules/search/components/search.keywordsuggest.tsx?59ca","webpack:///src/modules/search/components/search.label.tsx?91cb","webpack:///src/modules/search/components/search.productsuggest.tsx?d6fa","webpack:///src/modules/search/search.tsx?3f45"],"names":["binding","modules","dataActions","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","id","registerSanitizedActionPath","window","__bindings__","viewDictionary","cn","module","exports","React","_renderForm","form","SearchForm","FormWrapper","Node","input","cancelBtn","submitBtn","_renderKeywordSuggestions","KeywordSuggest","UlKeyword","keywordSuggestions","isLoadingAutoSuggest","isLoadingNode","text","map","_renderProductSuggestions","ProductSuggest","UlProduct","productSuggestions","title","items","item","index","LiProduct","key","AProduct","thumbnail","price","_renderCategorySuggestions","CategorySuggest","UlCategory","categorySuggestions","SearchView","props","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","searchText","AutoSuggest","autosuggestCategory","autosuggestKeyword","autosuggestProduct","label","Module","length","ReactDOM","createSearchStateInput","result","GenericInput","getGenericActionDataAction","createObservableDataAction","action","getGenericAction","inputData","SearchState","__decorate","observable","SuggestionType","AutoSuggestInput","constructor","top","suggestionType","hitPrefix","hitSuffix","getCacheKey","getCacheObjectType","dataCacheType","this","searchQuery","topResultsCount","async","_getAutoSuggest","autosuggest","ctx","catalogId","getCatalogId","requestContext","searchCriteria","ProductSearchCriteria","SearchCondition","Context","ChannelId","apiSettings","channelId","CatalogId","HitPrefix","HitSuffix","searchSuggestions","getSearchSuggestionsAsync","callerContext","queryResultSettings","Paging","Top","ImageUrl","generateImageUrl","AllSearchResults","telemetry","error","getSearchSuggestionsActionDataAction","autoSuggestPromises","Promise","all","then","payLoad","CategorySuggestionsComponent","suggestions","autoSuggestProps","resources","categorySuggestionHeading","reactNodes","getPayloadObject","telemetryContent","push","_assembleNode","_renderTitle","categoryAutoSuggestionHeading","format","className","shouldShowFullPath","splitValue","Value","split","pop","ariaLabel","replace","RegExp","contentAction","etext","attribute","getTelemetryAttributes","Id","href","_generateLink","_getHighlightedText","suggestion","_getCategoryLink","searchPageURL","searchQsp","searchRefiners","MsDyn365","isBrowser","queryUrl","URL","location","searchParams","set","categoryRefiners","find","refiners","SourceValue","ProductRefinerSource","Category","refiner","Values","RefinerRecordId","Number","parseInt","encodedRefiner","JSON","stringify","compressRefiners","formattedText","dangerouslySetInnerHTML","getRichTextHtml","compressedRefinerKeys","compressedRefiners","forEach","compressedRefiner","refinerKey","FormComponent","searchPlaceholder","hideSearchLabel","searchTextInput","handleInputChange","maxChars","disableSubmitSearch","handleCancelSearchChange","query","ariaLabelCancel","ariaLabelSearch","ariaLabelSubmit","onInputChange","event","target","value","onInputChangeFunction","inputNode","type","placeholder","ref","onChange","maxLength","submitBtnNode","Button","onClick","KeywordSuggestionsComponent","formattedLink","LabelComponent","searchLabelClass","searchLabelArialLabel","isSearchFormExpanded","searchtext","searchCollapsedLabel","attributes","innerRef","ProductSuggestionsComponent","context","actionContext","productSuggestionHeading","moduleType","moduleId","productAutoSuggestionHeading","altText","Value3","DecimalValue","_renderThumbnail","ObjectExtensions","isNullOrUndefined","_renderPrice","_getLiWrapper","_getAWrapper","tag","recid","cultureFormatter","formatCurrency","getProductPageUrlSync","undefined","adjustedPrice","basePrice","PriceComponent","typeName","data","CustomerContextualPrice","BasePrice","freePriceText","request","gridSettings","config","imageSettings","cropFocalRegion","Image","src","viewports","xs","q","w","h","lg","xl","lazyload","loadFailureBehavior","super","waitTime","_isLoadingNode","loadingText","autoSuggestResultLoadingMessage","Spinner","size","SpinnerSize","medium","labelPosition","_focusOutTarget","e","state","closest","_clearAutoSuggestState","_keyup","keyCode","KeyCodes","Escape","setState","formReference","current","contains","autoSuggestResultDiv","searchState","defaultBasicSearchUrl","searchQueryStringParameter","update","_handleInputChange","cancellabelDebounce","cancel","getSearchSuggestionsAction","_getSuggestionType","inputSuggestionType","results","_getSearchRefiners","autoSuggestAriaLabel","_setAutoSuggestResultCount","catch","exception","debug","setTimeout","suggestionTypes","distinctSuggestionTypes","suggestionTypeItem","charAt","toUpperCase","slice","join","_handleSubmit","app","preventDefault","focus","searchURL","_appendQueryParams","getUrlSync","document","_handleCancelSearchChange","isInitialState","route","qsp","autoSuggestResultScreenReaderDiv","ariaLiveRegion","suggestResultString","autoSuggestFoundMessage","emptyResultString","noAutoSuggestionMessage","innerText","setAttribute","searchKeywordSuggestClass","searchProductSuggestClass","searchCategorySuggestClass","searchInputMaxLength","suggestionTypeCriterion","searchFormClass","getTelemetryObject","telemetryPageName","friendlyName","body","addEventListener","componentWillUnmount","removeEventListener","componentDidUpdate","params","isEditor","shouldComponentUpdate","nextProps","nextState","render","cancelBtnAriaLabel","searchBtnAriaLabel","submitBtnAriaLabel","searchplaceholderText","shouldShowFullCategoryPath","filter","Keyword","None","Product","viewProps","moduleProps","classnames","role","autoComplete","onSubmit","ArrayExtensions","hasElements","callbacks","renderView","ProductsDataActions","getProductSearchRefinersAsync"],"mappings":"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","file":"static/js/127.243572130872fd7293d4.chunk.js","sourcesContent":["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['search'] = {\n c: () => require('@msdyn365-commerce-modules/search/dist/lib/modules/search/search'),\n $type: 'contentModule',\n da: [{name:'searchState', path:'@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'search',\n p: 'search',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/search/dist/lib/modules/search'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action');\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['@msdyn365-commerce-modules|search|modules|search|search'] = {\n c: () => require('@msdyn365-commerce-modules/search/dist/lib/modules/search/search.view.js'),\n cn: '@msdyn365-commerce-modules-search-search'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|search'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/search.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-search'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps } from './components';\nimport { ISearchViewProps } from './search';\n\nconst SearchView: React.FC = props => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n CategorySuggest,\n UlKeyword,\n UlProduct,\n UlCategory,\n form,\n autosuggestCategory,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n isLoadingAutoSuggest,\n isLoadingNode\n } = props;\n\n return (\n \n {label}\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\n \n {searchText && searchText.length > 0 ? \n {AutoSuggestAriaLabelText}\n : ''}\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword, isLoadingAutoSuggest, isLoadingNode)}\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct, isLoadingAutoSuggest, isLoadingNode)}\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory, isLoadingAutoSuggest, isLoadingNode)}\n \n \n );\n};\n\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\n return (\n \n \n {form.input}\n {form.cancelBtn}\n {form.submitBtn}\n \n \n );\n};\n\nconst _renderKeywordSuggestions = (\n KeywordSuggest: INodeProps,\n UlKeyword: INodeProps,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n keywordSuggestions && (\n \n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest && keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n )\n );\n};\n\nconst _renderProductSuggestions = (\n ProductSuggest: INodeProps,\n UlProduct: INodeProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n productSuggestions && (\n \n \n {productSuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest && productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n )\n );\n};\n\nconst _renderCategorySuggestions = (\n CategorySuggest: INodeProps,\n UlCategory: INodeProps,\n categorySuggestions?: ISearchCategoryViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n categorySuggestions && (\n \n \n {categorySuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest && categorySuggestions.text.map(text => {\n return text;\n })}\n \n \n )\n );\n};\n\nexport default SearchView;\n","module.exports = ReactDOM;","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { SearchState } from './search-state';\n\nexport function createSearchStateInput(result: SearchState): GenericInput {\n return new GenericInput('searchState', result, 'SearchState');\n}\n\nconst createsearchStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createSearchStateInput({ searchText: '' });\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createsearchStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a autosuggest.\n */\nexport class SearchState {\n @observable public searchText?: string;\n\n @observable public defaultBasicSearchUrl?: string;\n\n @observable public searchQueryStringParameter?: string;\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType, createObservableDataAction, getCatalogId, IAction, IActionContext, IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { SearchSuggestion, SearchSuggestionCriteria } from '@msdyn365-commerce/retail-proxy';\nimport {\n getSearchSuggestionsAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\n\nexport enum SuggestionType {\n Category = 'ScopedCategory',\n Keyword = 'Keyword',\n Product = 'Product',\n None = 'None'\n}\n\n/**\n * Input class for auto suggest search input.\n */\nexport class AutoSuggestInput implements IActionInput {\n public searchQuery?: string;\n\n public topResultsCount?: number;\n\n public suggestionType?: string;\n\n public hitPrefix?: string;\n\n public hitSuffix?: string;\n\n public constructor(searchText?: string, top?: number, suggestionType?: string, hitPrefix?: string, hitSuffix?: string) {\n this.searchQuery = searchText;\n this.topResultsCount = top;\n this.suggestionType = suggestionType;\n this.hitPrefix = hitPrefix;\n this.hitSuffix = hitSuffix;\n }\n\n public getCacheKey = () => 'AutoSuggestSearchSuggestions';\n\n public getCacheObjectType = () => 'AutoSuggestSearchSuggestions';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new AutoSuggestInput();\n};\n\n/**\n * Calls the Retail API and returns a auto-suggest suggestions.\n * @param input\n * @param ctx\n */\nexport async function getSearchSuggestionsAction(input: AutoSuggestInput, ctx: IActionContext): Promise {\n // If no input is provided fail out\n if (!input || !input.searchQuery) {\n throw new Error('[getSearchSuggestionsAction]No valid Input was provided, failing');\n }\n\n const autosuggest: Autosuggestions = {};\n\n const autoSuggestPromises = [_getAutoSuggest(input, autosuggest, ctx)];\n return Promise.all(autoSuggestPromises).then(() => {\n return autosuggest;\n });\n}\n\nasync function _getAutoSuggest(\n input: AutoSuggestInput,\n autosuggest: Autosuggestions,\n ctx: IActionContext\n): Promise {\n const catalogId = getCatalogId(ctx.requestContext);\n const searchCriteria: SearchSuggestionCriteria = {\n ProductSearchCriteria: {\n SearchCondition: input.searchQuery && input.searchQuery.length > 0 ? input.searchQuery : '',\n Context: {\n ChannelId: +ctx.requestContext.apiSettings.channelId,\n CatalogId: catalogId\n }\n },\n HitPrefix: input.hitPrefix,\n HitSuffix: input.hitSuffix,\n SuggestionType: input.suggestionType\n };\n\n const searchSuggestions = await getSearchSuggestionsAsync(\n { callerContext: ctx, queryResultSettings: { Paging: { Top: input.topResultsCount } } },\n searchCriteria\n );\n\n if (searchSuggestions && searchSuggestions.length > 0) {\n // Generate image url\n searchSuggestions.map(\n (item: SearchSuggestion) => (item.ImageUrl = item.ImageUrl ? generateImageUrl(item.ImageUrl, ctx.requestContext.apiSettings) : '')\n );\n\n autosuggest.AllSearchResults = searchSuggestions;\n } else {\n ctx.telemetry.error(`[getSearchSuggestionsAction] unable to get availabilites for search with suggestion type ${searchCriteria.SuggestionType}`);\n }\n}\n\nexport const getSearchSuggestionsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/search/get-auto-suggest-suggestions',\n action: >getSearchSuggestionsAction,\n input: createInput\n});\n\nexport default getSearchSuggestionsActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport MsDyn365, { getRichTextHtml } from '@msdyn365-commerce/core';\nimport { ProductRefiner, ProductRefinerSource, ProductRefinerValue, SearchSuggestion } from '@msdyn365-commerce/retail-proxy';\nimport { format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISearchData } from '../search.data';\nimport { ISearchProps } from '../search.props.autogenerated';\n\nexport interface ISearchCategorySuggestProps {\n searchCategorySuggestClass: string;\n searchPageURL: string;\n searchQsp: string | undefined;\n hitPrefix: string;\n hitSuffix: string;\n autoSuggestProps: ISearchProps;\n searchText: string;\n searchRefiners: ProductRefiner[] | undefined;\n suggestions: SearchSuggestion[] | undefined;\n telemetryContent?: ITelemetryContent;\n shouldShowFullPath?: boolean;\n}\n\nexport interface ISearchCategoryViewProps {\n title: React.ReactNode;\n text: React.ReactNode[];\n}\n\nlet payLoad: IPayLoad;\n\n/**\n * CategorySuggestionsComponent.\n * @param props\n */\nexport const CategorySuggestionsComponent = (props: ISearchCategorySuggestProps): ISearchCategoryViewProps | undefined => {\n const {\n suggestions,\n searchText,\n autoSuggestProps: {\n resources: { categorySuggestionHeading }\n }\n } = props;\n\n const reactNodes: React.ReactNode[] = [];\n payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n suggestions?.map(item => {\n reactNodes.push(_assembleNode(item, props));\n });\n\n const titleNode = _renderTitle(categorySuggestionHeading, searchText);\n\n return { title: titleNode, text: reactNodes };\n};\n\nconst _renderTitle = (categorySuggestionHeading: string, searchText: string) => {\n const categoryAutoSuggestionHeading = categorySuggestionHeading ? format(categorySuggestionHeading, searchText) : `Search \"${searchText}\" in categories`;\n\n return (
  • \n {categoryAutoSuggestionHeading}\n
  • );\n};\n\nconst _assembleNode = (item: SearchSuggestion, props: ISearchCategorySuggestProps) => {\n const { searchText, hitPrefix, hitSuffix, shouldShowFullPath } = props;\n\n const splitValue = shouldShowFullPath ? item.Value : item.Value && item.Value.split('|').pop();\n const ariaLabel = splitValue ? splitValue.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '') : item.Value && item.Value.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n payLoad.contentAction.etext = item.Value;\n const attribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return (\n
  • \n \n {_generateLink(item, searchText, props) && _getHighlightedText(splitValue ? splitValue : '', hitPrefix, hitSuffix)}\n \n
  • \n );\n};\n\nconst _generateLink = (suggestion: SearchSuggestion, searchText: string, props: ISearchCategorySuggestProps): string => {\n return suggestion && suggestion.Id ? _getCategoryLink(suggestion.Id, searchText, props) : '';\n};\n\nconst _getCategoryLink = (id: string, searchText: string, props: ISearchCategorySuggestProps): string => {\n const { searchPageURL, searchQsp, searchRefiners } = props;\n\n if (!MsDyn365.isBrowser) {\n return '';\n }\n\n const queryUrl = new URL(searchPageURL, window.location.href);\n\n if (searchQsp && searchText) {\n queryUrl.searchParams.set(searchQsp, searchText);\n }\n\n const categoryRefiners = searchRefiners?.find(refiners => {\n return refiners.SourceValue === ProductRefinerSource.Category;\n });\n const refiner = categoryRefiners?.Values?.find(item => {\n return item.RefinerRecordId === Number.parseInt(id, 10);\n });\n\n const encodedRefiner = refiner && JSON.stringify(compressRefiners([refiner]));\n if (encodedRefiner) {\n queryUrl.searchParams.set('refiners', encodedRefiner);\n }\n\n return queryUrl.href;\n};\n\nconst _getHighlightedText = (suggestion: string, hitPrefix: string, hitSuffix: string): JSX.Element => {\n const formattedText = suggestion\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n return ;\n};\n\n// TODO: This code is currently duplicated in categoryautosuggest need to either remove one of these files\n// or move this code to a common place\nconst compressedRefinerKeys = ['DataTypeValue', 'LeftValueBoundString', 'RefinerRecordId', 'RefinerSourceValue', 'RightValueBoundString', 'UnitText'];\n\n/**\n * Compressed a list of refiners for use in URLs.\n * @param refiners The uncompressed refiners.\n */\nconst compressRefiners = (refiners: ProductRefinerValue[]) => {\n const compressedRefiners: (string | number)[][] = [];\n\n refiners.forEach((refiner) => {\n const compressedRefiner: (string | number)[] = [];\n compressedRefinerKeys.forEach((refinerKey) => {\n compressedRefiner.push(refiner[refinerKey]);\n });\n compressedRefiners.push(compressedRefiner);\n });\n\n return compressedRefiners;\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISearchFormProps {\n hideSearchLabel: boolean | undefined;\n isSearchFormExpanded?: boolean | undefined;\n disableSubmitSearch: boolean | undefined;\n searchTextInput: React.RefObject;\n maxChars: number;\n searchQsp: string;\n searchPlaceholder: string;\n query: string;\n ariaLabelCancel: string;\n ariaLabelSearch: string;\n ariaLabelSubmit: string;\n handleCancelSearchChange(): void;\n handleInputChange(query: string): void;\n}\n\nexport interface ISearchFormViewProps {\n input: React.ReactNode;\n submitBtn: React.ReactNode;\n cancelBtn: React.ReactNode;\n\n}\n\n/**\n * On Input Change functionality.\n * @param handleInputChange -Input change function.\n * @returns Set updated input value.\n */\nconst onInputChangeFunction = (handleInputChange: (query: string) => void) => (event: React.ChangeEvent) => {\n handleInputChange(event.target.value || '');\n};\nexport const FormComponent = (props: ISearchFormProps): ISearchFormViewProps => {\n const {\n searchQsp,\n searchPlaceholder,\n hideSearchLabel,\n searchTextInput,\n handleInputChange,\n maxChars,\n disableSubmitSearch,\n handleCancelSearchChange,\n query,\n ariaLabelCancel,\n ariaLabelSearch,\n ariaLabelSubmit\n } = props;\n\n const onInputChange = onInputChangeFunction(handleInputChange);\n\n const inputNode = !hideSearchLabel ? (\n \n ) : (\n \n );\n\n const submitBtnNode = !disableSubmitSearch && (\n \n \n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { getRichTextHtml, IActionContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { SearchSuggestion } from '@msdyn365-commerce/retail-proxy';\nimport { getProductPageUrlSync, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, INodeProps, IPayLoad, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISearchData } from '../search.data';\nimport { ISearchProps } from '../search.props.autogenerated';\n\n/**\n * Search product suggest resources.\n */\nexport interface ISearchProductSuggestResources {\n freePriceText: string;\n}\n\nexport interface ISearchProductSuggestProps {\n searchProductSuggestClass: string;\n searchPageURL: string;\n searchQsp: string | undefined;\n hitPrefix: string;\n hitSuffix: string;\n autoSuggestProps: ISearchProps;\n searchText: string;\n suggestions: SearchSuggestion[] | undefined;\n telemetry: ITelemetry;\n moduleType: string;\n moduleId: string;\n telemetryContent?: ITelemetryContent;\n resources?: ISearchProductSuggestResources;\n}\n\nexport interface ISearchProductViewProps {\n title: React.ReactNode;\n items: ISearchProductItemViewProps[];\n}\n\nexport interface ISearchProductItemViewProps {\n text: React.ReactNode;\n thumbnail: React.ReactNode;\n price: React.ReactNode;\n LiProduct: INodeProps;\n AProduct: INodeProps;\n id: string | undefined;\n}\n\nlet payLoad: IPayLoad;\nlet telemetryContent: ITelemetryContent | undefined;\n\n/**\n * ProductSuggestionsComponent.\n * @param props\n */\nexport const ProductSuggestionsComponent = (props: ISearchProductSuggestProps): ISearchProductViewProps | undefined => {\n const {\n suggestions,\n hitSuffix,\n hitPrefix,\n autoSuggestProps: {\n context: { actionContext },\n resources: { productSuggestionHeading }\n },\n moduleType,\n moduleId\n } = props;\n const reactNodes: ISearchProductItemViewProps[] = [];\n telemetryContent = props.telemetryContent;\n payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n suggestions?.map(item => {\n reactNodes.push(_assembleNode(item, hitPrefix, hitSuffix, actionContext, props, moduleType, moduleId));\n });\n\n const titleNode = _renderTitle(productSuggestionHeading);\n\n return { title: titleNode, items: reactNodes };\n};\n\nconst _renderTitle = (productSuggestionHeading: string) => {\n const productAutoSuggestionHeading = productSuggestionHeading ? productSuggestionHeading : 'Go to products';\n\n return (
  • \n {productAutoSuggestionHeading}\n
  • );\n};\n\nconst _assembleNode = (\n item: SearchSuggestion,\n hitPrefix: string,\n hitSuffix: string,\n actionContext: IActionContext,\n props: ISearchProductSuggestProps,\n moduleType: string,\n moduleId: string\n): ISearchProductItemViewProps => {\n const altText =\n item.Value &&\n (item.Value).replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n const price = item.Value3?.Value?.DecimalValue;\n return {\n text: _getHighlightedText(item.Value ? item.Value : '', hitPrefix, hitSuffix),\n thumbnail: _renderThumbnail(item, altText ? altText : '', props),\n price: !ObjectExtensions.isNullOrUndefined(price) &&\n _renderPrice(price, price, moduleId, moduleType, props),\n LiProduct: _getLiWrapper(),\n AProduct: _getAWrapper(item, hitPrefix, hitSuffix, actionContext, props),\n id: item.Id\n };\n};\n\nconst _getLiWrapper = () => {\n return {\n className: 'msc-autoSuggest__productResults-item',\n tag: 'li' as NodeTag\n };\n};\n\nconst _getAWrapper = (item: SearchSuggestion, hitPrefix: string, hitSuffix: string, actionContext: IActionContext, props: ISearchProductSuggestProps) => {\n const {\n autoSuggestProps: { context }\n } = props;\n const ariaLabel = item.Value &&\n (item.Value).replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n payLoad.contentAction.recid = item.Id;\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n const productPrice = context.cultureFormatter.formatCurrency(item.Value3!.Value!.DecimalValue!);\n\n return {\n className: 'msc-autoSuggest__productResults-item',\n tag: 'a' as NodeTag,\n 'aria-label': `${ariaLabel!} ${productPrice}`,\n href: _generateLink(item, hitPrefix, hitSuffix, actionContext),\n ...attribute\n };\n};\n\nconst _generateLink = (suggestion: SearchSuggestion, hitPrefix: string, hitSuffix: string, actionContext: IActionContext) => {\n const formattedLink = (suggestion.Value as string).replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n return suggestion.Value && suggestion.Id ? getProductPageUrlSync(formattedLink, suggestion.Id as unknown as number, actionContext, undefined) : '';\n};\n\nconst _getHighlightedText = (suggestion: string, hitPrefix: string, hitSuffix: string): JSX.Element => {\n const formattedText = suggestion\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n return ;\n};\n\nconst _renderPrice = (adjustedPrice: number, basePrice: number, moduleId: string, moduleType: string, props: ISearchProductSuggestProps): JSX.Element | null => {\n const {\n autoSuggestProps: { context }\n } = props;\n\n return (\n \n );\n};\n\nconst _renderThumbnail = (suggestion: SearchSuggestion, altText: string, props: ISearchProductSuggestProps): JSX.Element | null => {\n const {\n autoSuggestProps: {\n context: {\n request: { gridSettings }\n },\n config: { imageSettings }\n }\n } = props;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n if (!suggestion || !suggestion.ImageUrl) {\n props.telemetry.error('Search suggestion content is empty, module wont render.');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=40&h=40&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=40&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=40&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { getCatalogId, getUrlSync } from '@msdyn365-commerce/core';\nimport { ProductRefiner, ProductRefinerSource, ProductsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { createSearchStateInput } from '@msdyn365-commerce-modules/search-utilities';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, KeyCodes } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { debounce } from 'lodash';\nimport { Spinner, SpinnerSize } from 'office-ui-fabric-react';\nimport * as React from 'react';\n\nimport getSearchSuggestionsAction, { AutoSuggestInput, SuggestionType } from './actions/get-auto-suggest-suggestions';\nimport {\n CategorySuggestionsComponent,\n FormComponent,\n ISearchCategoryViewProps,\n ISearchKeywordViewProps,\n ISearchProductViewProps,\n KeywordSuggestionsComponent,\n LabelComponent,\n ProductSuggestionsComponent\n} from './components';\nimport { ISearchData } from './search.data';\nimport { ISearchProps, ISuggestionTypeCriterionData } from './search.props.autogenerated';\n\nexport interface ISearchState {\n isSearchFormExpanded: boolean;\n searchText: string;\n searchKeywordSuggestClass: string;\n searchProductSuggestClass: string;\n searchCategorySuggestClass: string;\n suggestions: Autosuggestions | undefined;\n searchRefiners?: ProductRefiner[] | undefined;\n autoSuggestAriaLabel: string;\n isInitialState: boolean;\n isLoadingAutoSuggest?: boolean;\n}\n\nexport interface ISearchViewProps extends ISearchProps {\n Search: IModuleProps;\n AutoSuggestAriaLabel: INodeProps;\n AutoSuggestAriaLabelText: string;\n searchText: string;\n AutoSuggest: INodeProps;\n KeywordSuggest: INodeProps;\n ProductSuggest: INodeProps;\n CategorySuggest: INodeProps;\n SearchForm: INodeProps;\n FormWrapper: INodeProps;\n UlKeyword: INodeProps;\n UlProduct: INodeProps;\n UlCategory: INodeProps;\n label: React.ReactNode;\n form: React.ReactNode;\n autosuggestKeyword?: ISearchKeywordViewProps;\n autosuggestProduct?: ISearchProductViewProps;\n autosuggestCategory?: ISearchCategoryViewProps;\n callbacks: {\n handleCancelSearchChange(): void;\n };\n isSearchFormExpanded: boolean;\n isLoadingAutoSuggest?: boolean;\n isLoadingNode?: React.ReactNode;\n}\n\n/**\n *\n * Search module.\n * @extends {React.Component, ISearchState>}\n */\nclass Search extends React.Component, ISearchState> {\n private readonly searchTextInput: React.RefObject;\n\n private readonly searchCollapsedLabel: React.RefObject;\n\n private readonly formReference: React.RefObject;\n\n private readonly maxChars: number;\n\n private readonly inputSuggestionType?: ISuggestionTypeCriterionData[];\n\n private readonly topResultsCount?: number;\n\n private readonly hitPrefix: string = '{';\n\n private readonly hitSuffix: string = '}';\n\n private readonly waitTime: number = 500;\n\n private readonly autoSuggestResultScreenReaderDiv: React.RefObject;\n\n private readonly autoSuggestResultDiv: React.RefObject;\n\n private readonly searchFormClass: string;\n\n private readonly searchLabelClass: string;\n\n private readonly telemetryContent: ITelemetryContent;\n\n // @ts-expect-error\n private cancellabelDebounce: debounce;\n\n constructor(props: ISearchProps) {\n super(props);\n this.searchTextInput = React.createRef();\n this.searchCollapsedLabel = React.createRef();\n this.autoSuggestResultScreenReaderDiv = React.createRef();\n this.autoSuggestResultDiv = React.createRef();\n this.formReference = React.createRef();\n this.state = {\n isSearchFormExpanded: false,\n searchText: '',\n searchKeywordSuggestClass: 'ms-search__autoSuggest__keyword',\n searchProductSuggestClass: 'ms-search__autoSuggest__product',\n searchCategorySuggestClass: 'ms-search__autoSuggest__category',\n suggestions: undefined,\n searchRefiners: undefined,\n autoSuggestAriaLabel: '',\n isInitialState: true,\n isLoadingAutoSuggest: false\n };\n this.maxChars =\n (this.props.context &&\n this.props.context.app &&\n this.props.context.app.config &&\n this.props.context.app.config.searchInputMaxLength) ||\n 50;\n this.inputSuggestionType = this.props.config && this.props.config.suggestionTypeCriterion;\n this.topResultsCount = this.props.config && this.props.config.topResultsCount ? this.props.config.topResultsCount : 5;\n this.searchFormClass = 'ms-search__form';\n this.searchLabelClass = 'ms-search__label';\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public async componentDidMount(): Promise {\n document.body && document.body.addEventListener('mousedown', this._focusOutTarget);\n window && window.addEventListener('keyup', this._keyup);\n }\n\n public componentWillUnmount(): void {\n document.body && document.body.removeEventListener('mousedown', this._focusOutTarget, false);\n window && window.removeEventListener('keyup', this._keyup, false);\n }\n\n public componentDidUpdate(): void {\n const {\n config: { hideSearchLabel }\n } = this.props;\n const { isSearchFormExpanded, isInitialState } = this.state;\n\n if (!this.props.context.request.params.isEditor) {\n if (!hideSearchLabel && isSearchFormExpanded) {\n this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\n } else if (!isInitialState) {\n this.searchCollapsedLabel && this.searchCollapsedLabel.current && this.searchCollapsedLabel.current.focus();\n }\n }\n }\n\n public shouldComponentUpdate(nextProps: ISearchProps,\n nextState: ISearchState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- ignore complexity.\n public render(): JSX.Element {\n const {\n context,\n resources: { searchtext, searchLabelArialLabel, cancelBtnAriaLabel, searchBtnAriaLabel, submitBtnAriaLabel },\n config: { hideSearchLabel, disableSubmitSearch, searchplaceholderText, shouldShowFullCategoryPath, className = '' }\n } = this.props;\n\n const {\n isSearchFormExpanded,\n searchText,\n searchKeywordSuggestClass,\n searchProductSuggestClass,\n searchCategorySuggestClass,\n suggestions,\n searchRefiners,\n isLoadingAutoSuggest\n } = this.state;\n\n const searchQsp = (context && context.app && context.app.config && context.app.config.searchQueryStringParameter) || 'q';\n const searchPageURL = getUrlSync('search', context && context.actionContext) || '';\n const searchURL = this._appendQueryParams(searchPageURL, searchText, searchQsp);\n const searchPlaceholder = searchplaceholderText && searchplaceholderText.length > 0 ? searchplaceholderText : 'Search in Fabrikam';\n\n const keywordSuggestions = suggestions?.AllSearchResults?.filter(\n suggestion => suggestion.SuggestionType === SuggestionType.Keyword || suggestion.SuggestionType === SuggestionType.None\n );\n const productSuggestions = suggestions?.AllSearchResults?.filter(suggestion => suggestion.SuggestionType === SuggestionType.Product);\n const categoryRefiners = searchRefiners?.find(refiner => {\n return refiner.SourceValue === ProductRefinerSource.Category;\n });\n const categorySuggestions = suggestions?.AllSearchResults?.filter(\n suggestion => {\n if (suggestion.SuggestionType !== SuggestionType.Category) {\n return false;\n }\n const refiner = categoryRefiners?.Values?.find(item => {\n return `${item.RefinerRecordId ?? 0}` === suggestion.Id;\n });\n\n return !ObjectExtensions.isNullOrUndefined(refiner);\n });\n\n const viewProps: ISearchViewProps = {\n ...(this.props as ISearchProps),\n\n Search: {\n moduleProps: this.props,\n className: `${classnames('ms-search', className)} ${disableSubmitSearch ? 'no-submit' : 'with-submit'}`\n },\n AutoSuggestAriaLabel: {\n tag: 'div',\n className: 'msc-autoSuggest__screen-reader',\n 'aria-live': 'assertive',\n ref: this.autoSuggestResultScreenReaderDiv\n },\n AutoSuggestAriaLabelText: this.state.autoSuggestAriaLabel,\n searchText: this.state.searchText,\n AutoSuggest: {\n ref: this.autoSuggestResultDiv,\n className: 'ms-search__autoSuggest'\n },\n KeywordSuggest: {\n className: searchKeywordSuggestClass\n },\n ProductSuggest: {\n className: searchProductSuggestClass\n },\n CategorySuggest: {\n className: searchCategorySuggestClass\n },\n SearchForm: {\n className: `${this.searchFormClass} ${isSearchFormExpanded ? 'bx-show' : 'bx-hide'}`\n },\n FormWrapper: {\n tag: 'form',\n ref: this.formReference,\n className: 'ms-search__searchForm',\n 'aria-label': 'Search',\n name: 'searchForm',\n role: 'search',\n action: searchURL,\n autoComplete: 'off',\n onSubmit: this._handleSubmit\n },\n UlKeyword: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__keywordResults-items', className)\n },\n UlProduct: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__productResults-items', className)\n },\n UlCategory: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__categoryResults-items', className)\n },\n label: LabelComponent({\n isSearchFormExpanded,\n searchLabelClass: `${this.searchLabelClass} ${isSearchFormExpanded ? 'bx-hide' : 'bx-show'}`,\n searchtext,\n searchLabelArialLabel,\n searchCollapsedLabel: this.searchCollapsedLabel,\n hideSearchLabel,\n handleCancelSearchChange: this._handleCancelSearchChange,\n telemetryContent: this.telemetryContent\n }),\n form: FormComponent({\n ariaLabelCancel: cancelBtnAriaLabel,\n ariaLabelSearch: searchBtnAriaLabel,\n ariaLabelSubmit: submitBtnAriaLabel,\n hideSearchLabel,\n searchTextInput: this.searchTextInput,\n disableSubmitSearch,\n handleInputChange: this._handleInputChange,\n handleCancelSearchChange: this._handleCancelSearchChange,\n maxChars: this.maxChars,\n searchQsp,\n searchPlaceholder,\n query: searchText\n }),\n autosuggestKeyword:\n searchText && searchText.length > 0 &&\n (isLoadingAutoSuggest || (keywordSuggestions && ArrayExtensions.hasElements(keywordSuggestions))) ? KeywordSuggestionsComponent({\n searchKeywordSuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: keywordSuggestions,\n telemetryContent: this.telemetryContent\n }) : undefined,\n autosuggestProduct:\n searchText && searchText.length > 0 &&\n (isLoadingAutoSuggest || (productSuggestions && ArrayExtensions.hasElements(productSuggestions))) ? ProductSuggestionsComponent({\n searchProductSuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: productSuggestions,\n telemetry: this.props.telemetry,\n moduleType: this.props.typeName,\n moduleId: this.props.id,\n telemetryContent: this.telemetryContent,\n resources: this.props.resources\n }) : undefined,\n autosuggestCategory:\n searchText && searchText.length > 0 &&\n (isLoadingAutoSuggest || (categorySuggestions && ArrayExtensions.hasElements(categorySuggestions))) ? CategorySuggestionsComponent({\n searchCategorySuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: categorySuggestions,\n searchRefiners,\n telemetryContent: this.telemetryContent,\n shouldShowFullPath: shouldShowFullCategoryPath\n }) : undefined,\n callbacks: {\n handleCancelSearchChange: this._handleCancelSearchChange\n },\n isSearchFormExpanded: this.state.isSearchFormExpanded,\n isLoadingAutoSuggest,\n isLoadingNode: this._isLoadingNode()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Function to create the ReactNode for loading Autosuggest result.\n * @returns ReachNode for loading Autosuggest result.\n */\n private readonly _isLoadingNode = (): React.ReactNode => {\n const loadingText = this.props.resources.autoSuggestResultLoadingMessage;\n return ();\n };\n\n private readonly _focusOutTarget = (e: any): void => {\n const { suggestions } = this.state;\n\n if (\n suggestions &&\n suggestions.AllSearchResults &&\n e.target.closest('.ms-search') === null\n ) {\n this._clearAutoSuggestState();\n }\n };\n\n private readonly _keyup = (e: KeyboardEvent): void => {\n const { suggestions } = this.state;\n\n if (suggestions && suggestions.AllSearchResults && e.keyCode === KeyCodes.Escape) {\n this._clearAutoSuggestState();\n } else if (this.state.isSearchFormExpanded && e.keyCode === KeyCodes.Escape) {\n if (this.state.isSearchFormExpanded) {\n this.setState({ isSearchFormExpanded: false });\n }\n }\n\n if (!((this.formReference.current && this.formReference.current.contains(e.target as unknown as Node)) ||\n (this.autoSuggestResultDiv.current && this.autoSuggestResultDiv.current.contains(e.target as unknown as Node)))) {\n if (suggestions && suggestions.AllSearchResults) {\n this._clearAutoSuggestState();\n }\n\n if (this.state.isSearchFormExpanded) {\n this.setState({ isSearchFormExpanded: false });\n }\n }\n };\n\n private readonly _clearAutoSuggestState = (): void => {\n const {\n context: { actionContext },\n data: { searchState }\n } = this.props;\n\n if (this.searchTextInput.current && this.searchTextInput.current.value.length > 0) {\n searchState.searchText = '';\n searchState.defaultBasicSearchUrl = '';\n searchState.searchQueryStringParameter = '';\n actionContext ? actionContext.update(createSearchStateInput(searchState), searchState) : null;\n this.searchTextInput.current.value = '';\n }\n\n this.setState({ searchText: '', suggestions: undefined, searchRefiners: undefined });\n };\n\n private readonly _handleInputChange = (query: string): void => {\n if (!query || query.length <= this.maxChars) {\n this.setState({ searchText: query });\n }\n\n if (this.cancellabelDebounce) {\n this.cancellabelDebounce.cancel();\n }\n\n const {\n telemetry,\n context,\n data: { searchState }\n } = this.props;\n\n if (context) {\n if (query && query.length > 0) {\n if (query.length > this.maxChars) {\n return;\n }\n\n this.cancellabelDebounce = debounce(() => {\n this.setState({ isLoadingAutoSuggest: true });\n getSearchSuggestionsAction(\n new AutoSuggestInput(\n query,\n this.topResultsCount,\n this._getSuggestionType(this.inputSuggestionType),\n this.hitPrefix,\n this.hitSuffix\n ),\n context.actionContext\n )\n .then(results => {\n this._getSearchRefiners(query)\n .then(refiners => {\n this.setState({ suggestions: results, searchRefiners: refiners,\n autoSuggestAriaLabel: this._setAutoSuggestResultCount(results), isLoadingAutoSuggest: false });\n })\n .catch(error => {\n this.setState({ suggestions: results, searchRefiners: undefined,\n autoSuggestAriaLabel: this._setAutoSuggestResultCount(results) });\n telemetry.exception(error);\n telemetry.debug('Unable to get refiners results');\n });\n })\n .catch(error => {\n this.setState({ suggestions: undefined, searchRefiners: undefined,\n autoSuggestAriaLabel: this._setAutoSuggestResultCount() });\n telemetry.exception(error);\n telemetry.debug('Unable to get auto suggest results');\n });\n }, this.waitTime);\n\n setTimeout(() => {\n this.cancellabelDebounce();\n }, 0);\n\n searchState.searchText = query;\n } else {\n this.setState({ suggestions: undefined, searchRefiners: undefined });\n searchState.searchText = '';\n }\n context.actionContext.update(createSearchStateInput(searchState), searchState);\n }\n };\n\n private readonly _getSuggestionType = (suggestionTypes?: ISuggestionTypeCriterionData[]): string => {\n if (suggestionTypes && suggestionTypes.length > 0) {\n const distinctSuggestionTypes: string[] = [];\n suggestionTypes && suggestionTypes.forEach((suggestionTypeItem, index) => {\n suggestionTypeItem.SuggestionType && distinctSuggestionTypes.push(suggestionTypeItem.SuggestionType.charAt(0).toUpperCase() + suggestionTypeItem.SuggestionType.slice(1));\n });\n return distinctSuggestionTypes.join(',');\n }\n return 'Keyword, Product, ScopedCategory';\n };\n\n private async _getSearchRefiners(searchText: string): Promise {\n const { actionContext: ctx } = this.props.context;\n const catalogId = getCatalogId(ctx.requestContext);\n return ProductsDataActions.getProductSearchRefinersAsync(\n { callerContext: ctx },\n {\n SearchCondition: searchText,\n Context: {\n ChannelId: +ctx.requestContext.apiSettings.channelId,\n CatalogId: catalogId\n }\n }\n );\n }\n\n private readonly _handleSubmit = (\n e: React.MouseEvent | React.KeyboardEvent | React.FormEvent\n ): void => {\n const {\n config: { disableSubmitSearch },\n context: {\n actionContext,\n app: {\n config: { searchQueryStringParameter }\n }\n }\n } = this.props;\n\n const query = this.searchTextInput.current && this.searchTextInput.current.value;\n e.preventDefault();\n\n if (!query || (query && query.length === 0) || disableSubmitSearch) {\n this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\n } else {\n const searchQsp = searchQueryStringParameter || 'q';\n const searchURL = this._appendQueryParams(getUrlSync('search', actionContext) || '', query, searchQsp);\n document.location.href = searchURL;\n }\n };\n\n private readonly _handleCancelSearchChange = (): void => {\n const { isSearchFormExpanded, suggestions } = this.state;\n\n if (!isSearchFormExpanded) {\n this.setState({\n isSearchFormExpanded: true,\n searchText: '',\n isInitialState: false\n });\n } else {\n if (suggestions && suggestions.AllSearchResults) {\n this._clearAutoSuggestState();\n }\n\n this.setState({ isSearchFormExpanded: false });\n }\n };\n\n private readonly _appendQueryParams = (route: string, query: string, qsp: string): string => {\n if (!MsDyn365.isBrowser) {\n return '';\n }\n\n const queryUrl = new URL(route, window.location.href);\n if (qsp && query) {\n queryUrl.searchParams.set(qsp, query);\n }\n\n return queryUrl.href;\n };\n\n private readonly _setAutoSuggestResultCount = (result?: Autosuggestions) => {\n if (this.autoSuggestResultScreenReaderDiv.current !== null) {\n const ariaLiveRegion = this.autoSuggestResultScreenReaderDiv.current;\n const suggestResultString = this.props.resources.autoSuggestFoundMessage;\n const emptyResultString = this.props.resources.noAutoSuggestionMessage;\n ariaLiveRegion.innerText = result && (result.AllSearchResults && result.AllSearchResults.length > 0) ? suggestResultString : emptyResultString;\n ariaLiveRegion.setAttribute('aria-live', 'assertive');\n return ariaLiveRegion.innerText;\n }\n return '';\n\n };\n}\n\nexport default Search;\n"],"sourceRoot":""}