{"version":3,"file":"src_exported_search_SearchGnavInputField_tsx.c0a270313721e4020184.bundle.js","mappings":"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","sources":["webpack://elc-service-search/./src/internal/views/SearchCloseActiveScreen.tsx","webpack://elc-service-search/./src/internal/views/SearchOverlayActiveScreen.tsx","webpack://elc-service-search/./src/internal/views/skeletons/SearchSuggestionsSkeleton.tsx","webpack://elc-service-search/./src/internal/views/search-suggestion/SearchSuggestionList.tsx","webpack://elc-service-search/./src/internal/views/search-suggestion/SearchSuggestion.tsx","webpack://elc-service-search/./src/exported/search/SearchGnavInputField.tsx","webpack://elc-service-search/./src/internal/views/voice-search/VoiceSearchMessage.tsx","webpack://elc-service-search/./src/internal/views/voice-search/SpeakScreen.tsx","webpack://elc-service-search/./src/exported/search/VoiceSearch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport { classes } from '../utils/Classes';\nimport { RemoveIcon } from '@estee/elc-icons';\nimport { breakpoint } from '@estee/elc-base-theme';\nimport { translate, ITranslationsCollection } from '@estee/elc-service';\nimport { transparentButton } from '../../theme/default-theme';\n\nconst CloseSearchIconWrapper = styled.button`\n order: 1;\n .elc-search-close-icon {\n height: 15px;\n width: 15px;\n }\n\n ${transparentButton}\n ${breakpoint('desktop')`\n order: 0;\n position: absolute;\n right: 12px;\n top: 12px;\n [dir='rtl'] & {\n left: 12px;\n }\n `};\n`;\n\nexport interface IOverlayIconProps {\n toggleSearchOverlay(): void;\n translations?: ITranslationsCollection;\n}\n\nconst searchIconCloseWrapperClassnames = classes('search-close-icon-wrapper');\nconst searchIconCloseClassnames = classes('search-close-icon');\n\nexport const SearchCloseActiveScreen = translate(['closeLabel', 'searchButtonLabel'])(\n observer((props: IOverlayIconProps) => {\n const translations = props.translations as ITranslationsCollection;\n const { closeLabel, searchButtonLabel } = translations;\n const { toggleSearchOverlay } = props;\n\n return (\n \n \n \n );\n })\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport { SearchIcon } from '@estee/elc-icons';\nimport { translate } from '@estee/elc-service';\nimport { InputField } from '@estee/elc-inputs';\nimport { ContentSpacing, Colors, breakpoint } from '@estee/elc-base-theme';\nimport { classes } from '../utils/Classes';\nimport { Mobile, Desktop } from './common/SearchMediaQueries';\n\nimport {\n customInputThemeMobile,\n inputBorderMobileTheme,\n searchGnavIconButton\n} from '../../theme/default-theme';\n\nconst SearchOverlayWrapper = styled.div`\n display: flex;\n position: relative;\n width: 100%;\n\n .elc-input-search-gnav-field {\n cursor: pointer;\n width: 100%;\n left: 0;\n right: 0;\n padding: 0 0 0 ${ContentSpacing.space40};\n height: ${ContentSpacing.space44};\n ${customInputThemeMobile};\n ${inputBorderMobileTheme};\n ${breakpoint('desktop')`\n min-width: 236px;\n height: 41px;\n padding: 10px 0 10px 38px;\n `};\n }\n\n .elc-gnav-search-input-button {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: ${ContentSpacing.space40};\n padding: ${ContentSpacing.space8};\n z-index: 1;\n [dir='rtl'] & {\n left: unset;\n right: 0;\n }\n }\n\n .elc-icon-search {\n :focus {\n outline: ${Colors.info} auto 5px;\n }\n }\n`;\n\nconst SearchButton = styled.button`\n ${searchGnavIconButton}\n`;\n\nconst MagnifierWrapper = styled.div`\n left: 9px;\n position: absolute;\n top: 10px;\n z-index: 1;\n`;\n\nexport interface IOverlayIconProps {\n openSearchOverlay(): void;\n isSearchOverlayOpen: boolean;\n inputConfig: IInputProps;\n showMobileInput?: boolean;\n showDesktopInput?: boolean;\n}\n\ninterface IInputProps {\n disabled: boolean;\n onChange(event: React.FormEvent): void;\n inputValue: string;\n onKeyUp(event: React.KeyboardEvent): void;\n}\n\nexport interface ISearchMagnifier {\n isBesideInput: boolean;\n translations: {\n searchButtonLabel: string;\n };\n onClick?(): void;\n isSearchOverlayOpen?: boolean;\n}\n\nexport interface IGnavSearchInput {\n openSearchOverlay?(): void;\n translations: {\n searchPlaceholderLabel: string;\n };\n inputConfig: IInputProps;\n}\n\nexport const GnavInput = translate(['searchPlaceholderLabel'])(\n observer(({ openSearchOverlay, translations, inputConfig }: IGnavSearchInput) => (\n \n ))\n);\n\nexport const SearchMagnifier = translate(['searchButtonLabel'])(\n observer(({ onClick, isBesideInput, isSearchOverlayOpen, translations }: ISearchMagnifier) => {\n const svgIconSearchClassnames = classes('icon-search');\n const circleIconSearchClassnames = classes('icon-search-circle');\n const magnifierIconSearchClassnames = classes('icon-search-magnifier');\n\n const icon = (\n \n );\n\n if (!isBesideInput) {\n const { searchButtonLabel } = translations;\n const buttonClassnames = classes('gnav-search-button', {\n 'elc-gnav-search-input-button': isBesideInput\n });\n\n return (\n \n {icon}\n \n );\n }\n\n return (\n \n {icon}\n \n );\n })\n);\n\nexport const SearchOverlayActiveScreen = observer(\n ({\n showDesktopInput: isInputVisibleOnDesktop = false,\n showMobileInput: isInputVisibleOnMobile = false,\n openSearchOverlay,\n isSearchOverlayOpen,\n inputConfig\n }: IOverlayIconProps) => (\n \n \n \n {isInputVisibleOnDesktop && (\n \n )}\n \n \n \n {isInputVisibleOnMobile && (\n \n )}\n \n \n )\n);\n","import * as React from 'react';\nimport Skeleton from 'react-loading-skeleton';\nimport { classes } from '../../utils/Classes';\n\nconst searchSuggestionsSkeletonItemClassnames = classes('search-suggestions-skeleton-item');\nconst SearchSuggestionsSkeleton = () => (\n <>\n {Array(5).fill(\n \n \n \n )}\n >\n);\n\nexport default SearchSuggestionsSkeleton;\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { ITranslationsCollection, configConsumer } from '@estee/elc-service';\nimport {\n SEARCH_TYPE_PARAM,\n PREDICTIVE_SEARCH_PARAM,\n FILTERS_SEARCH_PARAM\n} from '../../constants/Search';\nimport { IItemTypeahead } from '../../../internal/interfaces/ISearchInterfaces';\nimport { suggestionText, suggestionWrapper } from '../../../theme/default-theme';\nimport { formatDataAttribute } from '../../utils/FormatDataAttritube';\nimport { classes } from '../../utils/Classes';\nimport { formatCount } from '../../utils/FormatCount';\n\nconst SuggestionDimensionWrapper = styled.li`\n padding: ${ContentSpacing.space10} 0;\n ${suggestionWrapper};\n text-align: left;\n`;\n\nconst SuggestionLink = styled.a`\n margin: 0;\n display: inline-block;\n vertical-align: middle;\n max-width: 400px;\n overflow: hidden;\n ${suggestionText};\n`;\n\nexport interface ISearchSuggestionListPropsConfig {\n useSquareBrackets?: boolean;\n}\nexport interface ISearchSuggestionListProps {\n translations?: ITranslationsCollection;\n searchUrl?: string;\n limitedTypeaheadResults: IItemTypeahead[];\n filterParam: string;\n searchParam: string;\n searchTermSelected(searchTerm: string): () => void;\n config?: ISearchSuggestionListPropsConfig;\n}\n\n@configConsumer(['useSquareBrackets'])\n@observer\nexport class SearchSuggestionList extends React.Component {\n private searchSuggestionsValue: string = classes('search-suggestion-value');\n private searchSuggestionLinkClassnames: string = classes('search-suggestion-link');\n private searchTypeaheadCountClassnames: string = classes('search-typeahead-count');\n private searchTypeaheadValueClassnames: string = classes('search-typeahead-value');\n public render() {\n const {\n limitedTypeaheadResults,\n filterParam,\n searchParam,\n searchUrl,\n searchTermSelected,\n config: { useSquareBrackets } = {}\n } = this.props;\n\n return (\n limitedTypeaheadResults.length > 0 &&\n limitedTypeaheadResults.map((typeaheadValue: IItemTypeahead) => (\n \n {/* @TODO remove unused translation field and legacy Drupal CSS styles in https://jira.esteeonline.com/browse/SDSEARCH-2099*/}\n \n \n {typeaheadValue.label}\n \n \n {typeaheadValue.count ? (\n \n {formatCount(typeaheadValue.count, useSquareBrackets)}\n \n ) : null}\n \n ))\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport { ContentSpacing, breakpoint } from '@estee/elc-base-theme';\nimport { translate, ITranslationsCollection } from '@estee/elc-service';\nimport { Heading5 } from '@estee/elc-typography';\nimport { IItemTypeahead } from '../../../internal/interfaces/ISearchInterfaces';\nimport SearchSuggestionsSkeleton from '../../../internal/views/skeletons/SearchSuggestionsSkeleton';\nimport { SearchSuggestionList } from './SearchSuggestionList';\nimport { SEARCH_PARAM, STATE_PARAM } from '../../constants/Search';\nimport { classes } from '../../utils/Classes';\n\nconst SearchSuggestionContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst SearchSuggestionsWrapper = styled.ul`\n display: flex;\n flex-direction: column;\n height: 100%;\n list-style: none;\n padding: ${ContentSpacing.space10} 0;\n width: auto;\n ${breakpoint('desktop')`\n padding: ${ContentSpacing.space20} ${ContentSpacing.space24} 0;\n `};\n`;\n\nconst SearchSuggestionHeading = styled(Heading5)`\n ${breakpoint('desktop')`\n padding-bottom: ${ContentSpacing.space20};\n `};\n`;\n\nexport interface ISearchSuggestionProps {\n translations?: ITranslationsCollection;\n searchUrl?: string;\n limitedTypeaheadResults: IItemTypeahead[];\n searchTermSelected(searchTerm: string): () => void;\n isLoading: boolean;\n}\n\n@translate(['suggestedTopFilters'])\n@observer\nexport class SearchSuggestion extends React.Component {\n private searchSuggestionContainer: string = classes('search-suggestion-container');\n private searchSuggestionsWrapper: string = classes('search-suggestion-wrapper');\n private searchTypeaheadTitle: string = classes('search-typeahead-title');\n public render() {\n const { limitedTypeaheadResults, searchTermSelected, isLoading } = this.props;\n const { suggestedTopFilters } = this.props.translations as ITranslationsCollection;\n const searchUrl = `${this.props.searchUrl}`;\n\n return (\n (limitedTypeaheadResults.length > 0 || isLoading) && (\n \n \n \n {suggestedTopFilters}\n \n {isLoading ? (\n \n ) : (\n \n )}\n \n \n )\n );\n }\n}\n","import * as React from 'react';\nimport { action } from 'mobx';\nimport { observer } from 'mobx-react';\nimport {\n translate,\n ITranslationsCollection,\n addConfig,\n addContext,\n configConsumer\n} from '@estee/elc-service';\nimport { VoiceSearch } from './VoiceSearch';\nimport { Spinner } from '@estee/elc-spinner';\nimport { SearchGnavInputFieldViewController } from '../../internal/controllers/SearchGnavInputFieldViewController';\nimport { diContainer, serviceNames } from '../../service-setup/diContainer';\nimport { classes } from '../../internal/utils/Classes';\nimport { Mobile, Desktop } from '../../internal/views/common/SearchMediaQueries';\nimport { SearchContentGrid } from '../../internal/views/content-search/SearchContentGrid';\nimport { SearchCloseActiveScreen } from '../../internal/views/SearchCloseActiveScreen';\nimport { SearchGrid } from '../../internal/views/SearchGrid';\nimport { SearchOverlayActiveScreen } from '../../internal/views/SearchOverlayActiveScreen';\n\nimport {\n SEARCH_PARAM,\n GNAV_SEARCH_TAG_BLOCKS,\n SEARCH_VIEW,\n TOGGLE_TYPE,\n PREDICTIVE_SEARCH_PARAM,\n SEARCH_REDIRECT_PARAM,\n TAB_TYPE,\n SEARCH_TYPE_PARAM,\n CONTENT_SEARCH_ITEMS_LIMIT,\n VIEW_TYPE\n} from '../../internal/constants/Search';\nimport {\n IItem,\n IToutItem,\n IArticleObjItem,\n ITrendingTermItem,\n IPropsSearchConfig,\n IProductGridBreakpoints\n} from '../../internal/interfaces/ISearchInterfaces';\nimport { mergeConfigs } from '../../internal/utils/ConfigUtils';\nimport {\n SearchTabs,\n SearchTab,\n SearchActiveScreenWrapper,\n SearchBoxWrapper,\n InputFieldSearch,\n ClearButton,\n GnavSearchButton,\n SearchResultsWrapper\n} from '../../internal/views/styled-components/SearchGnavStyledComponents';\nimport { formatCount } from '../../internal/utils/FormatCount';\nimport { SearchResultsMessage } from '../../internal/views/common/SearchResultsMessage';\nimport { SearchSuggestion } from '../../internal/views/search-suggestion/SearchSuggestion';\nexport interface ISearchGnavInputField {\n config: {\n content?: IToutItem[];\n productTags?: string[];\n items: IItem[];\n toutItem?: IToutItem[];\n terms?: ITrendingTermItem[];\n favoriteProducts?: IItem[];\n productGridBreakpoints: IProductGridBreakpoints;\n hideProductPrice: boolean;\n hideProductBadge: boolean;\n showSubDisplayName?: boolean;\n hideProductRating: boolean;\n enableNotifyMe?: boolean;\n enableQuickView: boolean;\n enableMobileQuickView?: boolean;\n ctaType?: string;\n searchUrl?: string;\n minSearchLength?: number;\n searchDisplayFormat: string;\n gnavSearchTagsBlock?: boolean;\n showMobileInput?: boolean;\n showDesktopInput?: boolean;\n enableVoiceSearch?: boolean;\n phrases?: string[];\n silenceTimeout?: number;\n stopTimeout?: number;\n enableAutoReplenishment?: boolean;\n autoReplenishOptions?: number[];\n autoReplenishToggleType?: TOGGLE_TYPE;\n enableContentSearch?: boolean;\n enableContentArticle?: boolean;\n enableContentBanner?: boolean;\n enableContentTout?: boolean;\n enableContentVideo?: boolean;\n useSquareBrackets?: boolean;\n showClearButton?: boolean;\n componentElementsOrderConfig?: object;\n };\n toggleSearchOverlay?(): void;\n translations?: ITranslationsCollection;\n}\n\ninterface IEnhancedSearchConfig {\n content?: IToutItem[];\n items?: IItem[];\n terms?: ITrendingTermItem[];\n hideProductPrice?: boolean;\n hideProductBadge?: boolean;\n showSubDisplayName?: boolean;\n hideProductRating?: boolean;\n enableNotifyMe?: boolean;\n enableQuickView?: boolean;\n enableMobileQuickView?: boolean;\n ctaType?: string;\n enableAutoReplenishment?: boolean;\n autoReplenishOptions?: number[];\n searchDisplayFormat?: string;\n autoReplenishToggleType?: TOGGLE_TYPE;\n componentElementsOrderConfig?: object;\n}\n\nexport interface IContentSearchConfig extends Omit {\n articles?: IArticleObjItem[];\n}\n\nexport interface ISimpleGridConfig extends Omit {\n content?: IToutItem[];\n searchItems: IItem[];\n bestSellerItems: IItem[];\n productGridBreakpoints: IProductGridBreakpoints;\n searchUrl?: string;\n}\n\n@addContext()\n@addConfig(['searchConfig'], mergeConfigs)\n@configConsumer([\n 'autoReplenishOptions',\n 'autoReplenishToggleType',\n 'ctaType',\n 'enableAutoReplenishment',\n 'enableContentSearch',\n 'enableMobileQuickView',\n 'enableNotifyMe',\n 'enableQuickView',\n 'enableVoiceSearch',\n 'favoriteProducts',\n 'gnavSearchTagsBlock',\n 'hideProductBadge',\n 'hideProductPrice',\n 'hideProductRating',\n 'items',\n 'minSearchLength',\n 'phrases',\n 'searchButtonLabel',\n 'searchClearLabel',\n 'searchDisplayFormat',\n 'searchPlaceholderLabel',\n 'searchUrl',\n 'showClearButton',\n 'showDesktopInput',\n 'showMobileInput',\n 'showSubDisplayName',\n 'silenceTimeout',\n 'stopTimeout',\n 'useSquareBrackets',\n 'terms',\n 'toutItem',\n 'componentElementsOrderConfig'\n])\n@translate([\n 'searchClearLabel',\n 'searchPlaceholderLabel',\n 'searchButtonLabel',\n 'viewAllResultsLabel',\n 'storiesTitle',\n 'productsTitle'\n])\n@observer\nexport class SearchGnavInputField extends React.Component {\n private searchGnavInputFieldViewController: SearchGnavInputFieldViewController;\n public static defaultProps: ISearchGnavInputField;\n private inputRef: React.RefObject = React.createRef();\n private searchActiveScreenWrapper = classes('search-active-screen-wrapper');\n private searchGnavBoxClassnames = classes('search-gnav-box');\n private clearButtonClassnames = classes('search-clear-button');\n private voiceSearchWrapperClassnames = classes('voice-search-wrapper');\n private searchResultsButtonClassnames = classes('search-results-button');\n private searchresultsWrapperClassnames = classes('search-results-wrapper');\n\n constructor(props: ISearchGnavInputField) {\n super(props);\n this.searchGnavInputFieldViewController = diContainer.get(\n serviceNames.searchGnavInputFieldViewController\n );\n\n const {\n favoriteProducts,\n terms,\n toutItem,\n minSearchLength,\n enableContentSearch,\n enableContentArticle,\n enableContentBanner,\n enableContentTout,\n enableContentVideo,\n searchDisplayFormat\n } = this.props.config;\n\n const propsSearchConfig: IPropsSearchConfig = {\n enhancedConfig: {\n favoriteProducts,\n terms,\n toutItem\n },\n minSearchLength,\n enableContentSearch,\n searchDisplayFormat,\n contentEnabledConfig: {\n enableContentArticle,\n enableContentBanner,\n enableContentTout,\n enableContentVideo\n }\n };\n\n this.searchGnavInputFieldViewController.initialize(propsSearchConfig);\n }\n\n public componentDidUpdate() {\n const {\n setShouldFocusOverlayInput,\n data: { shouldFocusOverlayInput }\n } = this.searchGnavInputFieldViewController;\n\n if (shouldFocusOverlayInput) {\n this.inputRef.current && (this.inputRef.current as HTMLInputElement).focus();\n setShouldFocusOverlayInput(false);\n }\n }\n\n public onKeyUp = (event: React.KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.toggleSearchOverlay();\n }\n if (event.key === 'Enter' && this.searchGnavInputFieldViewController.data.inputValue) {\n const searchUrl = this.props.config.searchUrl;\n const searchParam = SEARCH_PARAM;\n const value = event.currentTarget.value;\n let redirect = false;\n let siteUrl = `${searchUrl}${searchParam}${value}`;\n\n if (!!this.searchGnavInputFieldViewController.endecaRedirectUrl) {\n siteUrl = `${this.searchGnavInputFieldViewController.endecaRedirectUrl}${searchParam}${value}${SEARCH_TYPE_PARAM}${PREDICTIVE_SEARCH_PARAM}${SEARCH_REDIRECT_PARAM}`;\n redirect = true;\n }\n\n this.searchGnavInputFieldViewController.onKeyUp(\n { key: event.key, value },\n siteUrl,\n redirect,\n this.props.config.enableContentSearch || false\n );\n }\n };\n\n public handleChange = (event: React.FormEvent) => {\n const value = event.currentTarget.value;\n const body = document.body;\n if ((this.props.config.gnavSearchTagsBlock && value) || value !== '') {\n body.classList.remove(`${GNAV_SEARCH_TAG_BLOCKS}`);\n } else if (this.props.config.gnavSearchTagsBlock) {\n body.classList.add(`${GNAV_SEARCH_TAG_BLOCKS}`);\n }\n this.searchGnavInputFieldViewController.handleChange({ value });\n };\n\n public get showSearchResults() {\n if (!!this.searchGnavInputFieldViewController.endecaRedirectUrl) {\n return false;\n }\n\n if (\n this.searchGnavInputFieldViewController.data.inputValue &&\n (this.props.config.items ||\n this.searchGnavInputFieldViewController.data.items.length > 0)\n ) {\n return true;\n }\n\n return false;\n }\n\n public toggleSearchOverlay = () => {\n this.searchGnavInputFieldViewController.toggleSearchOverlay();\n this.updateBodyClassList();\n };\n\n public closeOverlayWrapper = (e: React.SyntheticEvent) => {\n const target = e.target as HTMLTextAreaElement;\n if (target.className.includes(this.searchActiveScreenWrapper)) {\n this.toggleSearchOverlay();\n }\n };\n\n public openSearchOverlay = () => {\n this.searchGnavInputFieldViewController.openSearchOverlay();\n this.updateBodyClassList();\n };\n\n private updateBodyClassList() {\n const body = document.body;\n const html = document.documentElement;\n if (this.searchGnavInputFieldViewController.isSearchOverlayOpen) {\n html.classList.add('search-overlay-displayed');\n body.classList.add('search-overlay-displayed');\n if (this.props.config.gnavSearchTagsBlock) {\n body.classList.add(`${GNAV_SEARCH_TAG_BLOCKS}`);\n }\n } else {\n html.classList.remove('search-overlay-displayed');\n body.classList.remove('search-overlay-displayed');\n if (this.props.config.gnavSearchTagsBlock) {\n body.classList.remove(`${GNAV_SEARCH_TAG_BLOCKS}`);\n }\n }\n }\n\n @action\n public onOverlayScroll = (e: React.SyntheticEvent) => {\n if (e.currentTarget.scrollTop > 10) {\n this.inputRef.current && (this.inputRef.current as HTMLInputElement).blur();\n }\n };\n\n private renderOverlayInput = () => {\n const {\n clearInputValue,\n data: { inputValue, disableInput }\n } = this.searchGnavInputFieldViewController;\n\n const { enableVoiceSearch, showClearButton } = this.props.config;\n\n const searchInputFieldClassnames = classes('input-search-field', {\n 'voice-search-enabled': enableVoiceSearch\n });\n\n const { searchClearLabel, searchPlaceholderLabel, searchButtonLabel } = this.props\n .translations as ITranslationsCollection;\n\n return (\n <>\n \n {showClearButton && inputValue && (\n \n {searchClearLabel}\n \n )}\n >\n );\n };\n\n private renderTabs(\n simpleGridConfig: ISimpleGridConfig,\n contentSearchConfig: IContentSearchConfig\n ) {\n const {\n data: {\n currentTab,\n resultsLoaded,\n items,\n dynamicArticles,\n articlesRecsNum,\n productRecsNum,\n resultType,\n overlayArticlesRecordCount\n },\n setCurrentTab,\n isLoading\n } = this.searchGnavInputFieldViewController;\n\n const { productsTitle, storiesTitle } = this.props.translations as ITranslationsCollection;\n\n const { useSquareBrackets } = this.props.config;\n\n return items.length === 0 && dynamicArticles.length === 0 ? (\n this.renderSearchGrid(simpleGridConfig)\n ) : (\n <>\n {resultsLoaded || dynamicArticles.length ? (\n \n {productRecsNum && (\n \n {this.renderSearchGrid(simpleGridConfig)}\n \n )}\n {articlesRecsNum && (\n \n \n \n \n )}\n \n ) : (\n \n )}\n >\n );\n }\n\n private renderSearchGrid(simpleGridConfig: ISimpleGridConfig) {\n const {\n data,\n searchTermSelected,\n resultType,\n isLoading\n } = this.searchGnavInputFieldViewController;\n\n const {\n inputValue,\n limitedTypeaheadResults,\n numRecs,\n adjustedTerm,\n overlayProductsRecordCount,\n showSearchGrid\n } = data;\n\n return (\n showSearchGrid && (\n \n \n \n \n \n )\n );\n }\n\n private renderSearchBlock() {\n const { viewAllResultsLabel } = this.props.translations as ITranslationsCollection;\n\n const {\n data: { inputValue, isSearchButtonVisible, searchType },\n onSearchButtonClick\n } = this.searchGnavInputFieldViewController;\n\n const { searchUrl, showDesktopInput } = this.props.config;\n\n const resultsUrl = [\n searchUrl,\n SEARCH_PARAM,\n inputValue,\n SEARCH_TYPE_PARAM,\n searchType\n ].join('');\n\n return (\n \n \n {this.renderOverlayInput()}\n {!showDesktopInput && {this.renderOverlayInput()}}\n {isSearchButtonVisible && (\n onSearchButtonClick(resultsUrl)}\n >\n {viewAllResultsLabel}\n \n )}\n \n );\n }\n\n public render() {\n const { data } = this.searchGnavInputFieldViewController;\n\n const {\n limitItems,\n inputValue,\n isSearchOverlayOpen,\n configSearch,\n dynamicArticles,\n disableInput,\n onlyFavoritesEnabled,\n onlyTrendingTermsEnabled,\n showEnhancedSearch\n } = data;\n\n const {\n searchUrl,\n enableVoiceSearch,\n phrases,\n silenceTimeout,\n stopTimeout,\n showMobileInput,\n showDesktopInput,\n items: bestSellerItems,\n enableContentSearch,\n toutItem,\n terms,\n favoriteProducts\n } = this.props.config;\n\n const searchConfig = {\n ...this.props.config,\n searchItems: limitItems,\n bestSellerItems,\n searchUrl\n };\n\n const enhancedSearchConfig = {\n ...this.props.config,\n content: toutItem,\n items: favoriteProducts,\n trendingTerms: terms,\n onlyTrendingTermsEnabled,\n onlyFavoritesEnabled\n };\n\n const contentSearchConfig = {\n ...this.props.config,\n articles: dynamicArticles.slice(0, CONTENT_SEARCH_ITEMS_LIMIT),\n searchTerm: inputValue\n };\n\n let voiceSearchConfig;\n if (searchUrl && phrases && silenceTimeout && stopTimeout) {\n voiceSearchConfig = {\n searchUrl,\n phrases,\n silenceTimeout,\n stopTimeout\n };\n }\n\n const inputConfig = {\n disabled: disableInput,\n onKeyUp: this.onKeyUp,\n onChange: this.handleChange,\n inputValue\n };\n\n return (\n <>\n \n {isSearchOverlayOpen && (\n \n {this.renderSearchBlock()}\n {enableContentSearch &&\n this.showSearchResults &&\n dynamicArticles.length > 0 &&\n this.renderTabs(searchConfig, contentSearchConfig)}\n {enableContentSearch &&\n this.showSearchResults &&\n dynamicArticles.length === 0 &&\n this.renderSearchGrid(searchConfig)}\n {!enableContentSearch &&\n this.showSearchResults &&\n this.renderSearchGrid(searchConfig)}\n {showEnhancedSearch && !this.showSearchResults && (\n \n )}\n {!!(enableVoiceSearch && configSearch.voiceSearch.enabled) &&\n voiceSearchConfig && (\n \n \n \n )}\n \n )}\n >\n );\n }\n}\n\nexport default SearchGnavInputField;\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { Heading2 } from '@estee/elc-typography';\nimport { translate, ITranslationsCollection } from '@estee/elc-service';\nimport { classes } from '../../utils/Classes';\n\nexport interface IVoiceSearchMessageProps {\n allowPermission: boolean;\n voiceSearchFailure: boolean;\n voiceSearchTerm: string;\n searching: boolean;\n translations?: ITranslationsCollection;\n}\n\nconst headingAllowMicrophoneClassnames = classes('heading-allow-microphone');\nconst errorCaptureWrapperClassnames = classes('error-capture-voice-wrapper');\nconst headingErrorCaptureClassnames = classes('heading-error-capture-voice');\nconst messageErrorCaptureClassnames = classes('message-error-capture-voice');\nconst listenMessageClassnames = classes('listen-message-wrapper');\nconst listenDescriptionClassnames = classes('listen-description');\nconst listenExampleSearchTermClassnames = classes('listen-example-search-term');\nconst searchingWrapperClassnames = classes('searching-wrapper');\nconst voiceSearchTermClassnames = classes('voice-search-term');\nconst speakNowClassnames = classes('speak-now-message');\n@translate([\n 'voiceMicrophoneAccess',\n 'voiceSearchFailureTitle',\n 'voiceSearchFailureParagraph',\n 'voiceListenTitle',\n 'voiceListenParagraph',\n 'voiceListenTermsExample',\n 'speakNow',\n 'voiceSearchingTitle'\n])\n@observer\nexport class VoiceSearchMessage extends React.Component {\n public render() {\n const { allowPermission, voiceSearchFailure, voiceSearchTerm, searching } = this.props;\n const {\n voiceMicrophoneAccess,\n voiceSearchFailureTitle,\n voiceSearchFailureParagraph,\n voiceListenTitle,\n voiceListenParagraph,\n voiceListenTermsExample,\n speakNow,\n voiceSearchingTitle\n } = this.props.translations as ITranslationsCollection;\n\n return (\n <>\n {allowPermission && (\n \n {voiceMicrophoneAccess}\n \n )}\n {voiceSearchFailure && (\n \n \n {voiceSearchFailureTitle}\n \n \n {voiceSearchFailureParagraph}\n \n \n )}\n {searching && (\n \n {voiceSearchingTitle}\n \"{voiceSearchTerm}\"\n \n )}\n {!voiceSearchFailure && !allowPermission && !searching && (\n \n {voiceListenTitle}\n {voiceListenParagraph}\n \n {voiceListenTermsExample}\n \n {speakNow}\n \n )}\n >\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport { RemoveIcon, MicrophoneIcon } from '@estee/elc-icons';\nimport { backgroundWhiteTheme, transparentButton } from '../../../theme/default-theme';\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { translate, ITranslationsCollection } from '@estee/elc-service';\nimport { VoiceSearchMessage } from './VoiceSearchMessage';\nimport { classes } from '../../utils/Classes';\n\nconst CloseIconWrapper = styled.button`\n position: absolute;\n top: ${ContentSpacing.space16};\n right: ${ContentSpacing.space16};\n ${transparentButton};\n`;\n\nconst SpeakScreenWrapper = styled.div`\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n overflow: auto;\n ${backgroundWhiteTheme};\n`;\n\nconst SpeakMicrophoneWrapper = styled.div`\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n display: flex;\n justify-content: center;\n`;\n\nconst iconSpeakWrapperClassnames = classes('search-speak-icon-wrapper');\nconst searchMicrophoneIconClassnames = classes('search-speak-microphone-icon');\nconst searchMicErrorWrapperClassnames = classes('search-microphone-wrapper');\nconst speakWrapperClassnames = classes('search-speak-wrapper');\nconst searchIconCloseWrapperClassnames = classes('search-close-icon-wrapper');\nconst searchIconCloseClassnames = classes('search-close-icon');\n\nexport interface ISpeakScreenProps {\n closeSpeakScreen(): void;\n isSpeakScreenOpen: boolean;\n translations?: ITranslationsCollection;\n allowPermission: boolean;\n voiceSearchFailure: boolean;\n voiceSearchTerm: string;\n searching: boolean;\n}\n\n@translate(['closeLabel', 'searchButtonLabel', 'voiceSearchIconLabel'])\n@observer\nexport class SpeakScreen extends React.Component {\n public render() {\n const {\n closeSpeakScreen,\n isSpeakScreenOpen,\n allowPermission,\n voiceSearchFailure,\n voiceSearchTerm,\n searching\n } = this.props;\n const { closeLabel, searchButtonLabel, voiceSearchIconLabel } = this.props\n .translations as ITranslationsCollection;\n\n return (\n isSpeakScreenOpen && (\n \n \n \n \n \n {!voiceSearchFailure && !allowPermission && (\n \n \n \n \n \n )}\n \n )\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { VoiceSearchViewController } from '../../internal/controllers/VoiceSearchViewController';\nimport { SpeakScreen } from '../../internal/views/voice-search/SpeakScreen';\nimport { diContainer, serviceNames } from '../../service-setup/diContainer';\nimport { Mobile } from '../../internal/views/common/SearchMediaQueries';\nimport { translate, ITranslationsCollection } from '@estee/elc-service';\nimport { VoiceTranscoder } from '@estee/elc-voice-transcoder';\nimport { classes } from '../../internal/utils/Classes';\n\nexport interface IVoiceSearch {\n config: {\n searchUrl: string;\n phrases: string[];\n silenceTimeout: number;\n stopTimeout: number;\n };\n className?: string;\n translations?: ITranslationsCollection;\n}\n\nconst voiceTranscoderClassnames = classes('search-voice-transcoder');\n\n@translate(['voiceSearchIconLabel'])\n@observer\nexport class VoiceSearch extends React.Component {\n private voiceSearchViewController: VoiceSearchViewController;\n\n constructor(props: IVoiceSearch) {\n super(props);\n this.voiceSearchViewController = diContainer.get(serviceNames.voiceSearchViewController);\n this.voiceSearchViewController.setSearchUrl(this.props.config.searchUrl);\n }\n\n public render() {\n const {\n transcriptionCallback,\n onSuccessCallback,\n onErrorCallback,\n closeSpeakScreen,\n data: {\n isSpeakScreenOpen,\n allowPermission,\n voiceSearchFailure,\n voiceSearchTerm,\n searching,\n config\n }\n } = this.voiceSearchViewController;\n\n const { voiceSearchIconLabel } = this.props.translations as ITranslationsCollection;\n const { phrases, silenceTimeout, stopTimeout } = this.props.config;\n\n return (\n \n \n \n \n );\n }\n}\n\nexport default VoiceSearch;\n"],"names":["CloseSearchIconWrapper","searchIconCloseWrapperClassnames","searchIconCloseClassnames","SearchCloseActiveScreen","observer","props","translations","closeLabel","searchButtonLabel","toggleSearchOverlay","className","onClick","title","RemoveIcon","SearchOverlayWrapper","ContentSpacing","Colors","SearchButton","MagnifierWrapper","GnavInput","openSearchOverlay","inputConfig","InputField","name","inputLabel","inputType","placeholder","searchPlaceholderLabel","customClassName","onFocus","SearchMagnifier","isBesideInput","isSearchOverlayOpen","svgIconSearchClassnames","circleIconSearchClassnames","magnifierIconSearchClassnames","icon","SearchIcon","pathMagnifierClassName","pathCircleClassName","buttonClassnames","SearchOverlayActiveScreen","showDesktopInput","isInputVisibleOnDesktop","showMobileInput","isInputVisibleOnMobile","searchSuggestionsSkeletonItemClassnames","Array","fill","SuggestionDimensionWrapper","SuggestionLink","SearchSuggestionList","searchSuggestionsValue","searchSuggestionLinkClassnames","searchTypeaheadCountClassnames","searchTypeaheadValueClassnames","render","limitedTypeaheadResults","filterParam","searchParam","searchUrl","searchTermSelected","config","useSquareBrackets","this","length","map","typeaheadValue","key","link","href","encodeURIComponent","label","role","count","SearchSuggestionContainer","SearchSuggestionsWrapper","SearchSuggestionHeading","SearchSuggestion","searchSuggestionContainer","searchSuggestionsWrapper","searchTypeaheadTitle","isLoading","suggestedTopFilters","SearchGnavInputField","constructor","super","inputRef","searchActiveScreenWrapper","searchGnavBoxClassnames","clearButtonClassnames","voiceSearchWrapperClassnames","searchResultsButtonClassnames","searchresultsWrapperClassnames","onKeyUp","event","searchGnavInputFieldViewController","data","inputValue","value","currentTarget","redirect","siteUrl","endecaRedirectUrl","enableContentSearch","handleChange","body","document","gnavSearchTagsBlock","classList","remove","add","updateBodyClassList","closeOverlayWrapper","e","target","includes","onOverlayScroll","scrollTop","current","blur","renderOverlayInput","clearInputValue","disableInput","enableVoiceSearch","showClearButton","searchInputFieldClassnames","searchClearLabel","disabled","type","onChange","ref","diContainer","serviceNames","favoriteProducts","terms","toutItem","minSearchLength","enableContentArticle","enableContentBanner","enableContentTout","enableContentVideo","searchDisplayFormat","propsSearchConfig","enhancedConfig","contentEnabledConfig","initialize","componentDidUpdate","setShouldFocusOverlayInput","shouldFocusOverlayInput","focus","showSearchResults","items","html","documentElement","renderTabs","simpleGridConfig","contentSearchConfig","currentTab","resultsLoaded","dynamicArticles","articlesRecsNum","productRecsNum","resultType","overlayArticlesRecordCount","setCurrentTab","productsTitle","storiesTitle","renderSearchGrid","currentTabId","onSelect","id","SearchResultsMessage","recsCount","totalNumRecs","SearchContentGrid","view","Spinner","numRecs","adjustedTerm","overlayProductsRecordCount","showSearchGrid","suggestionsCount","viewType","SearchGrid","resultsWithSuggestions","renderSearchBlock","viewAllResultsLabel","isSearchButtonVisible","searchType","onSearchButtonClick","resultsUrl","join","limitItems","configSearch","onlyFavoritesEnabled","onlyTrendingTermsEnabled","showEnhancedSearch","phrases","silenceTimeout","stopTimeout","bestSellerItems","searchConfig","searchItems","enhancedSearchConfig","content","trendingTerms","articles","slice","searchTerm","voiceSearchConfig","onScroll","voiceSearch","enabled","VoiceSearch","addContext","addConfig","headingAllowMicrophoneClassnames","errorCaptureWrapperClassnames","headingErrorCaptureClassnames","messageErrorCaptureClassnames","listenMessageClassnames","listenDescriptionClassnames","listenExampleSearchTermClassnames","searchingWrapperClassnames","voiceSearchTermClassnames","speakNowClassnames","VoiceSearchMessage","allowPermission","voiceSearchFailure","voiceSearchTerm","searching","voiceMicrophoneAccess","voiceSearchFailureTitle","voiceSearchFailureParagraph","voiceListenTitle","voiceListenParagraph","voiceListenTermsExample","speakNow","voiceSearchingTitle","CloseIconWrapper","SpeakScreenWrapper","SpeakMicrophoneWrapper","iconSpeakWrapperClassnames","searchMicrophoneIconClassnames","searchMicErrorWrapperClassnames","speakWrapperClassnames","SpeakScreen","closeSpeakScreen","isSpeakScreenOpen","voiceSearchIconLabel","MicrophoneIcon","voiceTranscoderClassnames","voiceSearchViewController","setSearchUrl","transcriptionCallback","onSuccessCallback","onErrorCallback","VoiceTranscoder","apiKey","google","isListening","languageCode","dataTestId"],"sourceRoot":""}
\n {voiceSearchFailureParagraph}\n
\"{voiceSearchTerm}\"
{voiceListenParagraph}
\n {voiceListenTermsExample}\n
{speakNow}