{"version":3,"file":"SearchPrompt.js","sources":["../../../../../src/components/Search/Utils/utils.ts","../../../../../node_modules/classnames/index.js","../../../../../src/components/Search/Element/ContentTypeFilter/ContentTypeFilter.tsx","../../../../../src/components/Search/Block/SearchPrompt/CurrentQuickLinks.tsx","../../../../../src/components/Search/Element/AutoCompletes/AutoCompletes.tsx","../../../../../src/components/Search/Block/SearchPrompt/SubFilters.tsx","../../../../../src/components/Search/Block/SearchPrompt/SearchPrompt.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { IAutoCompleteResponse, ISearchResponse } from './interface'\n\nconst serverURL = '/api/search'\n\nexport const defaults = {\n error: 'An error has occured, please reload the page or try again later.',\n minSearchString: 3,\n group: 'All',\n groupCourses: 'Courses',\n pageSize: 10,\n authorizedKeys: [\n 'filters',\n 'group',\n 'page',\n 'pageid',\n 'pagesize',\n 'sorttype',\n 'sortvalue',\n 'term',\n ],\n sortOptions: {\n name: '',\n label: 'Select sort option',\n prefix: 'Sort by:',\n optionsLabel: 'sort by options list',\n },\n clearFlag: {\n filter: 'All',\n status: false,\n },\n}\n\nexport const END_POINTS = {\n search: `${serverURL}/contentsearch`,\n autocomplete: `${serverURL}/quicksearch`,\n courses: `${serverURL}/coursesearch`,\n}\n\nexport const filtersJoint = '@@@@@@'\n\n/**\n * This fetches data to an endpoint\n * @param endpoint string\n * @param body string - payload\n * @returns object\n */\nexport const dataFetcher = async (endpoint: string, body: {}) => {\n try {\n const response = fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n if (!(await response).ok) {\n throw new Error('Network response was not Ok')\n }\n const data = (await response).json()\n return data\n } catch (error) {\n // console.error('error!!!', error)\n }\n}\n\nexport const useDebounce = (inputValue: string, delay: number) => {\n const [debouncedValue, setDebouncedValue] = useState(inputValue)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(inputValue)\n }, delay)\n\n return () => {\n clearTimeout(handler)\n }\n }, [inputValue, delay])\n\n return debouncedValue\n}\n\nconst getType = (obj: any) => {\n const lowerCaseTheFirstLetter = (str: string) =>\n str[0].toLowerCase() + str.slice(1)\n const type = typeof obj\n if (type !== 'object') {\n return type\n }\n\n return lowerCaseTheFirstLetter(\n Object.prototype.toString.call(obj).replace(/^\\[object (\\S+)\\]$/, '$1')\n )\n}\n\nexport const validateData = (data: ISearchResponse) => {\n const defaultResponse = {\n categorisationFacets: true,\n categorisationGroupFacets: true,\n categorisationSortItems: true,\n pagination: true,\n results: true,\n suggestions: true,\n log: [] as any,\n }\n const updatedResponse = {\n ...defaultResponse,\n }\n if (data) {\n const { categorisation, pagination, results, suggestions = [] } = data\n if (\n getType(categorisation) === 'object' &&\n getType(pagination) === 'object' &&\n getType(results) === 'array' &&\n getType(suggestions) === 'array'\n ) {\n // Checking data integrity for: Facets\n if (categorisation.facets) {\n if (categorisation.facets.length > 0) {\n const tempInvalidFacets = [] as any\n categorisation.facets.map((facet) => {\n if (\n !facet.filters ||\n facet.filters.length === 0 ||\n !facet.name ||\n !facet.value\n ) {\n updatedResponse.categorisationFacets = false\n tempInvalidFacets.push(\n !facet.filters || facet.filters.length === 0 ? 'filters' : '',\n !facet.name ? 'name' : '',\n !facet.value ? 'value' : ''\n )\n }\n\n // Checking data integrity for: Facets/Filters\n facet.filters.map((filter) => {\n if (\n (!filter.count && filter.count !== 0) ||\n !filter.name ||\n (!filter.selected && typeof !filter.selected !== 'boolean') ||\n (!filter.unSelectAll &&\n typeof !filter.unSelectAll !== 'boolean') ||\n !filter.value\n ) {\n updatedResponse.categorisationFacets = false\n tempInvalidFacets.push(\n !filter.count && filter.count !== 0 ? 'filters/count' : '',\n !filter.name ? 'filters/name' : '',\n !filter.selected && typeof !filter.selected !== 'boolean'\n ? 'filters/selected'\n : '',\n !filter.unSelectAll &&\n typeof !filter.unSelectAll !== 'boolean'\n ? 'filters/unSelectAll'\n : '',\n !filter.value ? 'filters/value' : ''\n )\n }\n })\n })\n if (tempInvalidFacets.length > 0) {\n updatedResponse.log.push({\n 'Categorisation/facets data missing': [\n ...new Set(tempInvalidFacets),\n ].filter((entry) => entry !== ''),\n })\n }\n }\n } else {\n updatedResponse.categorisationFacets = false\n updatedResponse.log.push('Categorisation/facets missing')\n }\n\n // Checking data integrity for: groupFacets\n if (categorisation.groupFacets) {\n if (categorisation.groupFacets.length > 0) {\n const tempInvalidGroupFacets = [] as any\n categorisation.groupFacets.map((groupFacet) => {\n if (\n (!groupFacet.count && groupFacet.count !== 0) ||\n !groupFacet.name ||\n !groupFacet.value\n ) {\n updatedResponse.categorisationGroupFacets = false\n tempInvalidGroupFacets.push(\n !groupFacet.count && groupFacet.count !== 0 ? 'count' : '',\n !groupFacet.name ? 'name' : '',\n !groupFacet.value ? 'value' : ''\n )\n }\n })\n if (tempInvalidGroupFacets.length > 0) {\n updatedResponse.log.push({\n 'Categorisation/groupFacets data missing': [\n ...new Set(tempInvalidGroupFacets),\n ].filter((entry) => entry !== ''),\n })\n }\n }\n } else {\n updatedResponse.categorisationGroupFacets = false\n updatedResponse.log.push('Categorisation/groupFacets missing')\n }\n\n // Checking data integrity for: sortItems\n if (categorisation.sortItems) {\n if (categorisation.sortItems.length > 0) {\n const tempInvalidSortItems = [] as any\n categorisation.sortItems.map((sortItem) => {\n if (!sortItem.name || !sortItem.sortType || !sortItem.sortValue) {\n updatedResponse.categorisationSortItems = false\n tempInvalidSortItems.push(\n !sortItem.name ? 'name' : '',\n !sortItem.sortType ? 'sortType' : '',\n !sortItem.sortValue ? 'sortValue' : ''\n )\n }\n })\n if (tempInvalidSortItems.length > 0) {\n updatedResponse.log.push({\n 'Categorisation/sortItems data missing': [\n ...new Set(tempInvalidSortItems),\n ].filter((entry) => entry !== ''),\n })\n }\n }\n } else {\n updatedResponse.categorisationSortItems = false\n updatedResponse.log.push('Categorisation/sortItems missing')\n }\n\n // Checking data integrity for: Pagination\n if (\n !pagination.currentPage ||\n !pagination.pageSize ||\n !pagination.resultsPath ||\n (!pagination.totalItems && pagination.totalItems !== 0) ||\n (!pagination.totalPages && pagination.totalPages !== 0)\n ) {\n // As data are covered through code, we keep this entry as \"valid\" but log defects:\n updatedResponse.log.push({\n 'Pagination data missing': [\n !pagination.currentPage ? 'currrentPage' : '',\n !pagination.pageSize ? 'pageSize' : '',\n !pagination.resultsPath ? 'resultsPath' : '',\n !pagination.totalItems && pagination.totalItems !== 0\n ? 'totalItems'\n : '',\n !pagination.totalPages && pagination.totalPages !== 0\n ? 'totalPages'\n : '',\n ].filter((entry) => entry !== ''),\n })\n }\n\n // Checking data integrity for: Results\n if (results.length > 0) {\n const tempInvalidResults = [] as any\n results.map((result) => {\n if (!result.contentType || !result.title || !result.url) {\n updatedResponse.results = false\n tempInvalidResults.push(\n !result.blurb && result.blurb !== '' ? 'blurb' : '',\n !result.contentType ? 'contentType' : '',\n !result.title ? 'title' : '',\n !result.url ? 'url' : ''\n )\n }\n })\n if (tempInvalidResults.length > 0) {\n updatedResponse.log.push({\n 'Results data missing': [...new Set(tempInvalidResults)].filter(\n (entry) => entry !== ''\n ),\n })\n }\n }\n\n // Checking data integrity for: Suggestions\n if (suggestions.length > 0) {\n suggestions.map((suggestion) => {\n if (!suggestion.name || !suggestion.value) {\n updatedResponse.suggestions = false\n updatedResponse.log.push({\n 'Suggestions data missing': [\n !suggestion.name ? 'name' : '',\n !suggestion.value ? 'value' : '',\n ].filter((entry) => entry !== ''),\n })\n }\n })\n }\n } else {\n return {\n categorisationFacets: false,\n categorisationGroupFacets: false,\n categorisationSortItems: false,\n pagination: false,\n results: false,\n suggestions: false,\n log: ['Minimum data structure not met.'],\n }\n }\n }\n return updatedResponse\n}\n\nexport const validateAutoCompleteData = (data: IAutoCompleteResponse) => {\n const defaultResponse = {\n results: true,\n suggestions: true,\n log: [] as any,\n }\n const updatedResponse = {\n ...defaultResponse,\n }\n if (data) {\n const { results, suggestions } = data\n if (getType(results) === 'array' && getType(suggestions) === 'array') {\n // Checking data integrity for: Results\n if (results.length > 0) {\n const tempInvalidResults = [] as any\n results.map((result) => {\n if (!result.contentType || !result.title || !result.url) {\n updatedResponse.results = false\n tempInvalidResults.push(\n !result.contentType ? 'contentType' : '',\n !result.title ? 'title' : '',\n !result.url ? 'url' : ''\n )\n }\n })\n if (tempInvalidResults.length > 0) {\n updatedResponse.log.push({\n 'Results data missing': [...new Set(tempInvalidResults)].filter(\n (entry) => entry !== ''\n ),\n })\n }\n }\n\n // Checking data integrity for: Suggestions\n if (suggestions.length > 0) {\n const tempInvalidSuggestions = [] as any\n suggestions.map((suggestion) => {\n if (typeof suggestion !== 'string') {\n updatedResponse.suggestions = false\n tempInvalidSuggestions.push('not a string')\n }\n })\n if (tempInvalidSuggestions.length > 0) {\n updatedResponse.log.push({\n 'Suggestions data invalid': [\n ...new Set(tempInvalidSuggestions),\n ].filter((entry) => entry !== ''),\n })\n }\n }\n } else {\n return {\n results: false,\n suggestions: false,\n log: ['Minimum data structure not met.'],\n }\n }\n }\n return updatedResponse\n}\n\nexport const useBackButton = (callBack: Function) => {\n const [isBack, setIsBack] = useState(false)\n const handleEvent = () => {\n callBack()\n setIsBack(true)\n }\n\n useEffect(() => {\n window.addEventListener('popstate', handleEvent)\n return () => window.removeEventListener('popstate', handleEvent)\n })\n\n return isBack\n}\n\n/**\n * This updates the browser history to allow for back and forth navigation between results/sorting...\n * @param resultsPath string\n */\nexport const updateHistory = (resultsPath: string) => {\n const currentURL = new URL(window.location.href)\n if (currentURL.search !== resultsPath) {\n currentURL.search = resultsPath\n history.pushState({}, '', currentURL.href)\n }\n}\n\n/**\n * This pushes up the parent container of the search results to avoid floating contents (filters, custom selector) to be overlapped by any subsequent content.\n * To be executed on load (useEffect(), [])\n * Use of this function breaks Jest as of 28.1.3. It needs mock stuff in the test file, please llok at CourseTable/CourseTable.test.tsx\n * BA 2024-09-25\n */\nexport const controlZIndexes = () => {\n const searchResults = document.querySelector('.searchResults')\n const ancestor = searchResults?.closest(\n 'section.layoutContainer:has(+ section.layoutContainer), .block-container:has(+ .block-container)'\n ) as HTMLElement\n\n if (ancestor) {\n ancestor.style.zIndex = (\n (parseInt(ancestor.style.zIndex, 10) || 0) + 1\n ).toString()\n }\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { useState, useEffect } from 'react'\nimport classNames from 'classnames'\n\nimport IProps from './interface'\nimport { defaults } from '../../Utils/utils'\n\nconst ContentTypeFilter = (props: IProps) => {\n const introText = 'Category Filters:'\n const {\n groupFacets,\n callBack = () => {},\n allowUnselect = false,\n isHeader = false,\n preSelected,\n } = props\n\n const [selectedValue, setSelectedValue] = useState(preSelected)\n\n /**\n * This toggles the contentType buttons (search prompt) or sends the selected value (search results)\n * @param value string\n */\n const handleSelect = (value: string) => {\n if (value === selectedValue && allowUnselect) {\n callBack(defaults.group)\n setSelectedValue(defaults.group)\n } else {\n setSelectedValue(value)\n callBack(value)\n }\n }\n\n /**\n * Updates the selected value on change\n */\n useEffect(() => {\n setSelectedValue(preSelected)\n }, [preSelected])\n\n return (\n <div\n className={classNames(`contentTypeFilter`, {\n 'contentTypeFilter--header': isHeader,\n })}>\n <div\n role='group'\n aria-labelledby='categoryFiltersLabel'\n className='contentTypeFilter__group'>\n <span id='categoryFiltersLabel' className='sr-only'>\n {introText}\n </span>\n {groupFacets?.map((groupFacet) => {\n const { value, count = 0, name } = groupFacet\n return (\n <button\n key={groupFacet.value}\n className={classNames('contentTypeFilter__button', {\n 'contentTypeFilter__button--selected': value === selectedValue,\n })}\n disabled={!isHeader && count === 0}\n role='radio'\n aria-checked={value === selectedValue}\n aria-label={count > 0 ? `${name} item count ${count}` : undefined}\n onClick={() => handleSelect(value)}>\n {name}{' '}\n {count > 0 && (\n <span className=''>({count.toLocaleString()})</span>\n )}\n </button>\n )\n })}\n </div>\n </div>\n )\n}\n\nexport default ContentTypeFilter\n","import React from 'react'\nimport ILink from '../../../Element/Link/interface'\n\ntype currentQuickLinksProps = {\n links: ILink[]\n label: string\n}\n\nconst CurrentQuickLinks = (props: currentQuickLinksProps) => {\n const { links, label } = props\n\n return (\n <div className='searchPrompt__quick-links'>\n <h2 className='searchPrompt__quick-links-label'>{label}</h2>\n <ul className='searchPrompt__quick-links-list'>\n {links.map((link) => (\n <li key={link.text} className=''>\n <a\n href={link.href}\n target={link.target}\n className='searchPrompt__link'>\n <div className='searchPrompt__link-item'>\n <i className='searchPrompt__link-icon' aria-hidden='true'>\n arrow_right_alt\n </i>\n <span className='searchPrompt__link-text'>{link.text}</span>\n </div>\n </a>\n </li>\n ))}\n </ul>\n </div>\n )\n}\n\nexport default CurrentQuickLinks\n","import React from 'react'\nimport { TAutoComplete, TAutoCompletes, IAutoCompleteItem } from './interface'\nimport {\n defaults,\n dataFetcher,\n validateAutoCompleteData,\n END_POINTS,\n} from '../../Utils/utils'\nimport { IAutoCompleteResponse } from '../../Utils/interface'\n\nexport const getAutoCompletes = async (props: {\n baseURL: string\n searchTerm: string\n contentType: string | null\n callBack: Function\n}) => {\n const { baseURL = '', searchTerm, contentType, callBack } = props\n if (searchTerm.length >= defaults.minSearchString) {\n const body = {\n Term: searchTerm,\n Group: contentType || defaults.group,\n Filters: [],\n }\n const response: IAutoCompleteResponse = await dataFetcher(\n `${baseURL}${END_POINTS.autocomplete}`,\n body\n )\n if (response?.results) {\n const validData = validateAutoCompleteData(response)\n if (validData.log.length > 0) {\n console.log(validData.log)\n }\n const aggregatedAutocompleteItems: {\n items: IAutoCompleteItem[]\n suggestions: string[]\n } = { items: [], suggestions: [] }\n if (validData.results) {\n aggregatedAutocompleteItems.items?.push(...response.results)\n }\n if (validData.suggestions) {\n aggregatedAutocompleteItems.suggestions?.push(...response.suggestions)\n }\n if (\n aggregatedAutocompleteItems.items.length > 0 ||\n aggregatedAutocompleteItems.suggestions.length > 0\n ) {\n callBack(aggregatedAutocompleteItems)\n } else {\n callBack([])\n }\n }\n } else {\n callBack(undefined)\n }\n}\n\n/**\n * This breaks up the text to insert a <span /> surrounding the martched \"search term\"\n * @param props Object\n * @returns JSX\n */\nconst AutoComplete = (props: TAutoComplete) => {\n const { searchTerm, item } = props\n const regex = new RegExp(searchTerm, 'ig')\n const split = item.split(regex)\n const matches = item.match(regex) || []\n const result: React.JSX.Element[] = []\n for (let i = 0; i <= split.length; i += 1) {\n result.push(split[i] as unknown as React.JSX.Element)\n if (matches[i]) {\n result.push(\n <span key={i} className='autocompletes__match'>\n {matches[i]}\n </span>\n )\n }\n }\n return <span>{result}</span>\n}\n\nconst AutoCompletes = (props: TAutoCompletes) => {\n const { searchTerm, items, suggestions, suggestionsCallBack } = props\n\n return (\n <div className='autocompletes__list-wrapper'>\n <ul\n id='suggestions-list'\n role='listbox'\n aria-labelledby='global-search'\n className='autocompletes__list'\n tabIndex={2}>\n {items.map((item, index) => {\n return (\n <li\n role='option'\n className='autocompletes__item'\n key={`${index}-${item.title}`}>\n <a href={item.url} className='autocompletes__link link'>\n <AutoComplete searchTerm={searchTerm} item={item.title} />\n {item.contentType && (\n <span className='autocompletes__type'>\n {item.contentType}\n </span>\n )}\n </a>\n </li>\n )\n })}\n {suggestions.map((suggestion, index) => {\n return (\n <li\n role='option'\n className='autocompletes__item'\n key={`${index}-suggestion-${suggestion}`}>\n <a\n href='#'\n onClick={(e) => {\n e.preventDefault()\n suggestionsCallBack(suggestion)\n }}\n className='autocompletes__link link'>\n <span>\n <AutoComplete searchTerm={searchTerm} item={suggestion} />\n ...\n </span>\n </a>\n </li>\n )\n })}\n </ul>\n </div>\n )\n}\n\nexport default AutoCompletes\n","import React, { MouseEventHandler } from 'react'\nimport classNames from 'classnames'\n\nimport { IPromptFilter } from '../../Utils/interface'\n\ntype subFiltersProps = {\n currentGroupFacetName: string\n filtersCount: number\n filtersDropdownOpen: boolean\n tempFilters: IPromptFilter | null\n callBack: {\n dropdown: MouseEventHandler<HTMLButtonElement>\n select: Function\n clear: MouseEventHandler<HTMLButtonElement>\n apply: MouseEventHandler<HTMLButtonElement>\n }\n}\n\nconst SubFilters = (props: subFiltersProps) => {\n const {\n currentGroupFacetName,\n filtersCount,\n filtersDropdownOpen,\n tempFilters,\n callBack,\n } = props\n\n return (\n <div className='searchPrompt__filter-dropdown-wrapper'>\n <button\n tabIndex={0}\n className={classNames(`searchPrompt__filter-dropdown-button`, {\n 'searchPrompt__filter-dropdown-button--open': filtersDropdownOpen,\n })}\n onClick={callBack.dropdown}>\n <span className='searchPrompt__filter-dropdown-button-content'>\n {currentGroupFacetName}\n {filtersCount ? (\n <span className='searchPrompt__filters-count'>{filtersCount}</span>\n ) : null}\n </span>\n <i\n className='icon__lg searchPrompt__filter-dropdown-icon'\n aria-hidden='true'>\n keyboard_arrow_down\n </i>\n </button>\n <div\n aria-hidden={!filtersDropdownOpen}\n className={classNames(`searchPrompt__filter-dropdown`, {\n 'searchPrompt__filter-dropdown--show': filtersDropdownOpen,\n })}>\n <ul className='searchPrompt__filter-dropdown-list'>\n {tempFilters?.options.map((option) => (\n <li\n key={option.value}\n className='searchPrompt__filter-dropdown-list-item'>\n <button\n className='group searchPrompt__filter-select-button'\n onClick={() => callBack.select(option)}\n aria-checked={option.selected}>\n <span className='searchPrompt__filter-label'>\n {option.name}\n </span>\n <span\n className={classNames(`searchPrompt__filter-selected`, {\n 'searchPrompt__filter-selected--active': option.selected,\n })}>\n <i className='icon__md' aria-hidden='true'>\n check\n </i>\n </span>\n </button>\n </li>\n ))}\n </ul>\n <div className='searchPrompt__button-wrapper'>\n <button\n className='button link__color--primary button__type--secondary button__size--base searchPrompt__clear-filter-button'\n onClick={callBack.clear}>\n Clear All\n </button>\n <button\n className='button button__color--primary button__type--primary button__size--base searchPrompt__apply-filter-button'\n onClick={callBack.apply}>\n Apply\n </button>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SubFilters\n","import React, { useMemo, useState, useEffect } from 'react'\n\nimport { useDebounce, defaults, filtersJoint } from '../../Utils/utils'\nimport { IPromptFilter, ISubPromptFilter } from '../../Utils/interface'\nimport IProps from './interface'\nimport ContentTypeFilter from '../../Element/ContentTypeFilter/ContentTypeFilter'\nimport CurrentQuickLinks from './CurrentQuickLinks'\nimport AutoCompletes, {\n getAutoCompletes,\n} from '../../Element/AutoCompletes/AutoCompletes'\nimport SubFilters from './SubFilters'\nimport { IAutoCompleteItem } from '../../Element/AutoCompletes/interface'\n\nconst SearchPrompt = (props: IProps) => {\n const {\n baseURL = '',\n resultsURL,\n introText,\n placeholders,\n promptContentTypes,\n } = props\n\n const [currentContentType, setContentType] = useState<string | null>(null)\n const [filtersDropdownOpen, setfiltersDropdown] = useState<boolean>(false)\n const [searchInput, setSearchInput] = useState<string>('')\n const [autoCompletes, setAutoCompletes] = useState<\n { items: IAutoCompleteItem[]; suggestions: string[] } | undefined\n >()\n const [filters, setFilters] = useState<IPromptFilter | null>(null)\n const [placeholder, setPlaceholder] = useState(placeholders.default)\n const [tempFilters, setTempFilters] = useState<IPromptFilter | null>(null)\n const debouncedSearchTerm = useDebounce(searchInput, 700)\n\n /**\n * This reads the current filters selected and returns an array of their values.\n * To be used in data sent to the back-end.\n * @returns string[]\n */\n const getSelectedFilters = () => {\n const appliedFilters: ISubPromptFilter[] | undefined =\n filters?.options.filter((option: ISubPromptFilter) => option.selected)\n const filtersList: string[] = []\n appliedFilters?.map((filter) => {\n filtersList.push(filter.value)\n })\n return filtersList\n }\n\n const toggleDropdown = () => {\n setfiltersDropdown(!filtersDropdownOpen)\n }\n\n const filtersCount = useMemo(() => {\n return filters?.options.filter((option) => option.selected).length\n }, [filters])\n\n const currentQuickLinks = useMemo(() => {\n return (\n promptContentTypes.find((item) => item.value === currentContentType)\n ?.quicklinks || null\n )\n }, [currentContentType])\n\n const clearInput = () => {\n setSearchInput('')\n }\n\n const currentGroupFacet = useMemo(() => {\n return promptContentTypes.find((item) => item.value === currentContentType)\n ?.filters\n }, [currentContentType])\n\n const clearFilters = () => {\n if (filters) {\n setFilters({\n ...filters,\n options: filters?.options.map((option) => ({\n ...option,\n selected: false,\n })),\n })\n\n setfiltersDropdown(false)\n }\n }\n\n const applyFilters = () => {\n setFilters(tempFilters)\n setfiltersDropdown(false)\n }\n\n const selectFilterOption = ({ value }) => {\n if (tempFilters) {\n const updatedFilters: IPromptFilter | null = { ...tempFilters }\n const updatedOptions = updatedFilters?.options.map((option) => {\n if (option.value === value) {\n return { ...option, selected: !option.selected }\n }\n return option\n })\n updatedFilters.options = updatedOptions\n setTempFilters(updatedFilters)\n }\n }\n\n const handleContentTypeChange = (value: string) => {\n setContentType(value)\n setfiltersDropdown(false)\n }\n\n const sendToResultsPage = () => {\n if (searchInput.length > 0) {\n const body = {\n term: searchInput,\n group: currentContentType || defaults.group,\n filters: getSelectedFilters().join(filtersJoint),\n }\n\n const bodyToParams = new URLSearchParams(body).toString()\n location.href = `${resultsURL}?${bodyToParams}`\n }\n }\n\n /**\n * This listens to key strokes in the search input, and if there is a search term, and the enter key is hit, it submits the search\n * @param key string\n */\n const supportEnterKey = (key: string) => {\n if (searchInput.length > 0 && key === 'Enter') {\n sendToResultsPage()\n }\n }\n\n useEffect(() => {\n if (debouncedSearchTerm) {\n // Query API and populate the auto completes array\n getAutoCompletes({\n baseURL,\n searchTerm: debouncedSearchTerm,\n contentType: currentContentType,\n callBack: setAutoCompletes,\n })\n }\n }, [debouncedSearchTerm])\n\n useEffect(() => {\n setFilters(\n promptContentTypes.find((item) => item.value === currentContentType)\n ?.filters || null\n )\n setPlaceholder(\n placeholders[(currentContentType || '').toLowerCase()] ||\n placeholders.default\n )\n }, [currentContentType])\n\n useEffect(() => {\n // Clear the auto-complete array\n setAutoCompletes(undefined)\n }, [searchInput, currentContentType])\n\n useEffect(() => {\n if (filtersDropdownOpen) setTempFilters(filters)\n }, [filtersDropdownOpen])\n\n return (\n <div className='searchPrompt'>\n <div className={`searchPrompt__inner`}>\n <div className='searchPrompt__heading-wrapper'>\n <div className='searchPrompt__heading'>{introText}</div>\n <ContentTypeFilter\n groupFacets={promptContentTypes}\n callBack={(value: string) => handleContentTypeChange(value)}\n allowUnselect\n isHeader\n />\n </div>\n <div className='searchPrompt__form-wrapper'>\n <div>\n <div className='searchPrompt__search-input-wrapper'>\n <label\n htmlFor='global-search'\n className='sr-only'\n id='global-search-label'>\n Search:\n </label>\n <input\n type='text'\n id='global-search'\n aria-controls='suggestions-list'\n aria-labelledby='global-search-label'\n className='searchPrompt__search-input'\n placeholder={placeholder}\n value={searchInput}\n onChange={(e) => {\n setSearchInput(e.target.value)\n }}\n onKeyUp={(e) => supportEnterKey(e.key)}\n autoComplete='off'\n />\n {searchInput?.length ? (\n <button\n className='button button__color--tertiary button__type--secondary button__size--base button__icon searchPrompt__input-clear-button'\n aria-label='clear input'\n onClick={clearInput}\n tabIndex={0}>\n <i className='searchPrompt__clear-icon' aria-hidden='true'>\n close\n </i>\n </button>\n ) : null}\n {currentGroupFacet && typeof filtersCount === 'number' && (\n <SubFilters\n filtersCount={filtersCount}\n currentGroupFacetName={currentGroupFacet.name}\n filtersDropdownOpen={filtersDropdownOpen}\n tempFilters={tempFilters}\n callBack={{\n dropdown: toggleDropdown,\n select: selectFilterOption,\n clear: clearFilters,\n apply: applyFilters,\n }}\n />\n )}\n <button\n className='button button__color--primary button__type--primary button__size--base button__icon searchPrompt__input-search-button'\n tabIndex={0}\n onClick={() => sendToResultsPage()}>\n <i className='icon__lg' aria-hidden='true'>\n search\n </i>\n </button>\n </div>\n <button\n className='button button__color--primary button__type--primary button__size--base button__fullWidth searchPrompt__input-search-button-mobile'\n onClick={() => sendToResultsPage()}>\n <span className='searchPrompt__input-button-mobile-content'>\n Search\n <i className='icon__lg' aria-hidden='true'>\n search\n </i>\n </span>\n </button>\n </div>\n {searchInput &&\n (autoCompletes?.items || autoCompletes?.suggestions) ? (\n <AutoCompletes\n items={autoCompletes.items}\n suggestions={autoCompletes.suggestions}\n searchTerm={searchInput}\n suggestionsCallBack={setSearchInput}\n />\n ) : null}\n </div>\n {currentQuickLinks?.links.length && (\n <CurrentQuickLinks\n links={currentQuickLinks.links}\n label={currentQuickLinks.label}\n />\n )}\n </div>\n </div>\n )\n}\n\nexport default SearchPrompt\n"],"names":["serverURL","defaults","error","minSearchString","group","groupCourses","pageSize","authorizedKeys","sortOptions","name","label","prefix","optionsLabel","clearFlag","filter","status","END_POINTS","search","concat","autocomplete","courses","filtersJoint","dataFetcher","endpoint","body","__awaiter","response","fetch","method","headers","JSON","stringify","_a","sent","ok","Error","data","json","useDebounce","inputValue","delay","__read","useState","debouncedValue","setDebouncedValue","useEffect","handler","setTimeout","clearTimeout","getType","obj","lowerCaseTheFirstLetter","str","toLowerCase","slice","type","_typeof","Object","prototype","toString","call","replace","validateAutoCompleteData","defaultResponse","results","suggestions","log","updatedResponse","__assign","length","tempInvalidResults_2","map","result","contentType","title","url","push","__spreadArray","Set","entry","tempInvalidSuggestions_1","suggestion","hasOwn","hasOwnProperty","classNames","classes","i","arguments","arg","appendClass","parseValue","Array","isArray","apply","includes","key","value","newClass","module","exports","window","ContentTypeFilter","props","introText","groupFacets","callBack","_b","allowUnselect","_c","isHeader","preSelected","_d","selectedValue","setSelectedValue","handleSelect","React","createElement","className","role","id","groupFacet","count","disabled","undefined","onClick","toLocaleString","CurrentQuickLinks","links","link","text","href","target","getAutoCompletes","baseURL","searchTerm","Term","Group","Filters","validData","console","aggregatedAutocompleteItems","items","AutoComplete","item","regex","RegExp","split","matches","match","AutoCompletes","suggestionsCallBack","tabIndex","index","e","preventDefault","SubFilters","currentGroupFacetName","filtersCount","filtersDropdownOpen","tempFilters","dropdown","options","option","select","selected","clear","SearchPrompt","resultsURL","placeholders","promptContentTypes","currentContentType","setContentType","setfiltersDropdown","searchInput","setSearchInput","_e","autoCompletes","setAutoCompletes","_f","filters","setFilters","_g","placeholder","setPlaceholder","_h","setTempFilters","debouncedSearchTerm","getSelectedFilters","appliedFilters","filtersList","toggleDropdown","useMemo","currentQuickLinks","find","quicklinks","clearInput","currentGroupFacet","clearFilters","applyFilters","selectFilterOption","updatedFilters","updatedOptions","handleContentTypeChange","sendToResultsPage","term","join","bodyToParams","URLSearchParams","location","supportEnterKey","htmlFor","onChange","onKeyUp","autoComplete"],"mappings":"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","x_google_ignoreList":[1]}