{"version":3,"file":"CourseTable.js","sources":["../../../../../src/components/Search/Utils/utils.ts","../../../../../node_modules/classnames/index.js","../../../../../src/components/Layout/BlockWrapper/BlockWrapper.tsx","../../../../../src/components/Element/Title/Title.tsx","../../../../../src/components/Search/Element/ResultsCount/ResultsCount.tsx","../../../../../src/components/Search/Element/CustomSelect/CustomSelect.tsx","../../../../../src/components/Search/Element/FiltersMenu/interface.ts","../../../../../src/components/Layout/BlockWrapper/props.ts","../../../../../src/components/Block/ButtonContainer/ButtonContainer.tsx","../../../../../src/components/Search/Element/FiltersMenu/FiltersMenu.tsx","../../../../../src/components/Element/Picture/Picture.tsx","../../../../../src/components/Element/Tag/Tag.tsx","../../../../../src/components/Search/Element/ResultCard/ResultCard.tsx","../../../../../src/components/Search/Element/QuickFilterButton/QuickFilterButton.tsx","../../../../../src/components/Search/Element/Loading/Loading.tsx","../../../../../src/components/Search/Block/CourseTable/CourseTable.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 from 'react'\nimport classNames from 'classnames'\n\nimport { IBlockWrapperProps } from './interface'\n\nconst BlockWrapper = (props: IBlockWrapperProps) => {\n const {\n children,\n id = undefined,\n name = 'anonymous',\n topPadding,\n bottomPadding,\n leftIndent,\n rightIndent,\n bleed,\n scrollIntoViewTransitions = true,\n sectionTheme = 'none',\n dataType = undefined,\n } = props\n\n const className = classNames(\n { [name]: true },\n { [`pb-${bottomPadding}`]: bottomPadding },\n { [`pt-${topPadding}`]: topPadding },\n { 'indent-bleed': bleed },\n { [`indent-left-${leftIndent}`]: leftIndent && !bleed },\n { [`indent-right-${rightIndent}`]: rightIndent && !bleed }\n )\n\n return (\n <div\n id={id}\n className={className}\n data-sectiontheme={sectionTheme}\n data-scrollintoview={scrollIntoViewTransitions ? 'fadeInUp' : undefined}\n data-type={dataType}>\n {children || <div>Nothing to display</div>}\n </div>\n )\n}\n\nexport default BlockWrapper\n","import React from 'react'\nimport classNames from 'classnames'\n\nimport IProps from './interface'\n\n/**\n * -- Title element: A title element that can be used to display text.\n */\n\nconst Title = (props: IProps) => {\n const {\n id,\n type,\n children,\n classes,\n leftIndent,\n rightIndent,\n dynamic,\n customAttributes,\n } = props\n\n const className = classNames(classes, {\n [`text-indent-left-${leftIndent}`]: leftIndent && leftIndent !== 'none',\n [`text-indent-right-${rightIndent}`]: rightIndent && rightIndent !== 'none',\n })\n\n if (!children) return null\n\n if (dynamic) {\n return (\n <div data-type='dynamic-text-wrapper'>\n {React.createElement(\n type,\n {\n ...customAttributes,\n className,\n id,\n 'data-type': 'dynamic-text',\n },\n children\n )}\n </div>\n )\n }\n\n return React.createElement(\n type,\n { className, id, ...customAttributes },\n children\n )\n}\n\nexport default Title\n","import React from 'react'\n\nimport IProps from './interface'\n\nconst ResultsCount = (props: IProps) => {\n const { totalItems, pageSize, currentPage, contentType } = props\n\n // Because on \"Find a course\" (displaying only `contentType=course`) we \"load more\", startIndex is always 1. BA 2024-08-13\n const startIndex =\n contentType === 'course' ? 1 : (currentPage - 1) * pageSize + 1\n const endIndex =\n pageSize * currentPage >= totalItems ? totalItems : pageSize * currentPage\n\n return (\n <div className='resultsCount' aria-labelledby='results-count'>\n <p id='results-count'>\n {totalItems > 0 ? (\n <>\n <span className='resultsCount__bold'>\n {startIndex.toLocaleString()} - {endIndex.toLocaleString()}\n </span>{' '}\n of{' '}\n <span className='resultsCount__bold'>\n {totalItems.toLocaleString()}\n </span>{' '}\n {contentType} results\n </>\n ) : (\n <>\n Your search returned{' '}\n <span className='resultsCount__bold'>{totalItems} results</span>\n </>\n )}\n </p>\n </div>\n )\n}\n\nexport default ResultsCount\n","import React, { useState, useEffect } from 'react'\nimport classNames from 'classnames'\n\nimport IProps from './interface'\n\nconst CustomSelect = (props: IProps) => {\n const {\n label,\n prefix = '',\n optionsLabel = 'options list',\n callBack,\n options,\n } = props\n const initialValue = options.filter((option) => option.selected)\n const [currentValue, setCurrentValue] = useState(\n initialValue[0] || options[0]\n )\n const [showDropdown, setShowDropdown] = useState(false)\n\n /**\n * This sends the selected value and closes the drop down when the value is changed and the drop down is open\n */\n useEffect(() => {\n if (showDropdown) {\n const { sortType, sortValue } = currentValue\n setShowDropdown(false)\n callBack({\n sortType,\n sortValue,\n })\n }\n }, [currentValue])\n\n return (\n <div className='custom-select'>\n <div className={`custom-select__inner`}>\n <button\n className={classNames('custom-select__button', {\n 'custom-select__button--open': showDropdown,\n })}\n onClick={() => setShowDropdown(!showDropdown)}\n aria-haspopup='true'\n aria-expanded={showDropdown}\n aria-controls='custom-selectMenu'\n aria-label={label}>\n <span>{`${prefix} ${currentValue.name}`}</span>\n <i className='custom-select__arrow' aria-hidden='true'>\n arrow_forward_ios\n </i>\n </button>\n <ul\n id={`custom-selectMenu-${label}`}\n className={classNames('custom-select__options-list', {\n 'custom-select__options-list--hidden': !showDropdown,\n })}\n aria-hidden={!showDropdown}\n aria-label={optionsLabel}\n role='menu'>\n {options.map((option, index) => (\n <li\n role='presentation'\n tabIndex={-1}\n key={`${index}-${option.sortValue}`}\n className={classNames('custom-select__list-item', {\n 'custom-select__list-item--selected':\n option.sortValue === currentValue.sortValue,\n })}>\n <button\n role='menuitem'\n aria-label={option.name}\n tabIndex={0}\n className='custom-select__select-button'\n onClick={() => setCurrentValue(option)}>\n <span className='custom-select__button-name'>\n {option.name}\n </span>\n {option.sortValue === currentValue.sortValue && (\n <span className='custom-select__selected-check'>\n <i aria-hidden='true'>\n check\n </i>\n </span>\n )}\n </button>\n </li>\n ))}\n </ul>\n </div>\n </div>\n )\n}\n\nexport default CustomSelect\n","import { ReactNode } from 'react'\n\ninterface IFilterItem {\n count: number\n name: string\n value: string\n selected: boolean\n unSelectAll: boolean\n}\ninterface ISortItem {\n sortType: string\n name: string\n value: string\n selected: boolean\n}\n\nexport interface IClearFlag {\n filter: string\n status: boolean\n}\nexport default interface ISearchFiltersProps {\n facets: {\n name: string\n value: string\n filters: IFilterItem[]\n }[]\n openFacets: string[] | undefined\n openFacetsCallBack: Function\n sortItems?: ISortItem[]\n buttonLabel: string\n clearAll?: boolean\n callBack: Function\n clearFlag?: IClearFlag | undefined\n}\n\nexport interface IBlock {\n body: ReactNode\n expanded: boolean\n headline: string\n id: string\n}\n\nexport interface IAccordionProps {\n blocks: IBlock[]\n}\n\nexport enum ECheckboxTypes {\n CHECKBOX = 'checkbox',\n RADIO = 'radio',\n}\nexport interface ICheckboxProps {\n name: string\n value: string\n sortType?: string\n unSelectAll: boolean\n type: ECheckboxTypes\n required?: boolean\n disabled?: boolean\n group: string\n tabIndex: number\n}\n","import { IBlockWrapperProps } from './interface'\n\nconst props: IBlockWrapperProps = {\n name: 'blockWrapper',\n}\n\nexport default props\n","import React from 'react'\nimport classnames from 'classnames'\n\nimport IProps from './interface'\nimport BlockWrapper from '../../Layout/BlockWrapper/BlockWrapper'\n\nconst ButtonContainerInner = (props: Pick<IProps, 'layout' | 'children' | 'verticalAlign'>) => {\n const {\n layout = 'left',\n verticalAlign = 'middle',\n children,\n } = props\n return (\n <div\n className={classnames(\n `buttonContainer__layout`,\n {[`buttonContainer__layout--${layout}`]: layout},\n {[`buttonContainer__layout--${verticalAlign}`]: verticalAlign},\n )}\n >\n {children}\n </div>\n )\n}\n\nexport { ButtonContainerInner as ButtonContainerWidget }\n\nconst ButtonContainer = (props: IProps) => {\n const { layout, children, verticalAlign, ...rest } = props\n\n return (\n <BlockWrapper {...rest}>\n <ButtonContainerInner\n layout={layout}\n verticalAlign={verticalAlign}\n >{children}</ButtonContainerInner>\n </BlockWrapper>\n )\n}\n\nexport default ButtonContainer\n","import React, { useState, useEffect, useMemo } from 'react'\nimport ISearchFiltersProps, {\n ECheckboxTypes,\n IAccordionProps,\n ICheckboxProps,\n} from './interface'\nimport blockWrapperProps from '../../../Layout/BlockWrapper/props'\nimport ButtonContainer from '../../../Block/ButtonContainer/ButtonContainer'\nimport IButtonsContainerProps from '../../../Block/ButtonContainer/interface'\nimport classNames from 'classnames'\nimport { defaults } from '../../Utils/utils'\n\nconst FiltersMenu = (props: ISearchFiltersProps) => {\n const {\n facets,\n openFacets = [],\n openFacetsCallBack,\n sortItems,\n buttonLabel = 'filters',\n callBack,\n clearFlag = defaults.clearFlag,\n } = props\n\n /**\n * This generates the default filters and sorting object to turn back on \"Clear Filters\"\n * @param json The JSON blob coming from BE that holds all the data\n * @returns Object\n */\n const generateDefaultFilters = (\n facets: ISearchFiltersProps['facets'],\n sortItems: ISearchFiltersProps['sortItems']\n ) => {\n const headlines = facets.map((facet) => {\n const tempSelectedFilters = facet.filters.filter(\n (item) => item.selected === true\n )\n return [facet.value, tempSelectedFilters.map((filter) => filter.value)]\n })\n\n if (sortItems?.length) {\n let selectedIndex = 0\n for (let i = 0; i < sortItems.length; i += 1) {\n selectedIndex = sortItems[i].selected ? i : selectedIndex\n }\n headlines.push(['sortValue', sortItems[selectedIndex].value])\n }\n\n return Object.fromEntries(headlines)\n }\n\n /**\n * This initializes the data for the filters and sort items in the filters menu\n * @param defaults Array\n * @param sortItems Array\n * @returns Object\n */\n const initializeFilters = (\n defaults: typeof defaultFiltersData,\n sortItems: ISearchFiltersProps['sortItems']\n ) => {\n return {\n ...defaults,\n sortBy: sortItems ? sortItems[0].sortType : undefined,\n }\n }\n\n /**\n *\n * @param json The JSON blob coming from BE that holds all the data\n * @returns Object:\n * example: {\n * accordionPanel1: 'filterValueSelectAll',\n * accordionPanel2: 'filterValueSelectAll',\n * }\n */\n const generateUnSelectAlls = (facets: ISearchFiltersProps['facets']) => {\n const unSelectAlls = facets.map((facet) => {\n return [\n facet.value,\n facet.filters.filter((item) => item.unSelectAll === true)[0]?.value ||\n '',\n ]\n })\n return Object.fromEntries(unSelectAlls)\n }\n\n const defaultFiltersData = generateDefaultFilters(facets, sortItems)\n const unSelectAlls = generateUnSelectAlls(facets)\n const [filtersVisible, setFiltersVisible] = useState(false)\n const [filtersData, setFiltersData] = useState(\n initializeFilters(defaultFiltersData, sortItems)\n )\n const [internalClearFlag, setInternalClearFlag] = useState(clearFlag)\n\n /**\n * This returns the number of filters checked\n */\n const countSelectedItems = useMemo(() => {\n let count = 0\n for (const key in filtersData) {\n if (\n Object.prototype.hasOwnProperty.call(filtersData, key) &&\n Array.isArray(filtersData[key])\n ) {\n count += filtersData[key].filter(\n (item: string) => typeof item === 'string' && item?.length\n ).length\n }\n }\n\n return count\n }, [filtersData])\n\n const showFiltersMenu = (flag: boolean) => {\n setFiltersVisible(flag)\n }\n\n const clearFilters = (filter: string) => {\n if (filter === defaults.clearFlag.filter) {\n setFiltersData(defaultFiltersData)\n callBack([])\n } else {\n const updatedFilters: {} | undefined = {}\n const payloadFilters: string[] | undefined = []\n for (const key in filtersData) {\n if (\n Object.prototype.hasOwnProperty.call(filtersData, key) &&\n Array.isArray(filtersData[key])\n ) {\n updatedFilters[key] = filtersData[key].filter(\n (item: string) => typeof item === 'string' && item !== filter\n )\n payloadFilters.push(...updatedFilters[key])\n }\n }\n openFacetsCallBack(undefined)\n callBack(payloadFilters)\n setFiltersData(updatedFilters)\n }\n showFiltersMenu(false)\n }\n\n const applyFilters = () => {\n const selectedFilters: any[] | undefined = []\n for (const key in filtersData) {\n if (\n Object.prototype.hasOwnProperty.call(filtersData, key) &&\n Array.isArray(filtersData[key])\n ) {\n selectedFilters.push(\n filtersData[key].filter(\n (item: string) => typeof item === 'string' && item?.length\n )\n )\n }\n }\n\n if (filtersData.sortBy) {\n callBack(\n selectedFilters.flat(),\n filtersData.sortBy,\n filtersData.sortValue\n )\n } else {\n callBack(selectedFilters.flat())\n }\n showFiltersMenu(false)\n }\n\n const buttonsContainerProps: IButtonsContainerProps = {\n ...blockWrapperProps,\n name: 'buttonContainer',\n layout: 'left',\n }\n\n const FEATURE_NAMES = {\n BUTTON: 'filtersCTA',\n MENU: 'filtersMenu',\n }\n\n const radioInputClasses = (flag: boolean) => {\n return classNames('radio-round--default', {\n 'radio-round--disabled radio-round--no-cursor': flag,\n })\n }\n\n const Checkbox = (props: ICheckboxProps) => {\n const {\n name,\n value,\n sortType,\n unSelectAll,\n type,\n required = false,\n disabled = false,\n group,\n tabIndex = 0,\n } = props\n\n const inputId = `checkbox-${group}-${value}`\n const addRemoveValue = (value: string, addValue: boolean, data: string) => {\n if (addValue && !filtersData[data].includes(value)) {\n if (unSelectAll) {\n return [value]\n } else {\n filtersData[data].push(value)\n return filtersData[data].filter(\n (item: string) => item !== unSelectAlls[group]\n )\n }\n }\n if (!addValue) {\n if (!unSelectAll) {\n const tempFilters = filtersData[data].filter(\n (item: string) => item !== value\n )\n\n if (tempFilters && tempFilters.length !== 0) {\n return tempFilters\n }\n return [unSelectAlls[group]]\n }\n return filtersData[data]\n }\n }\n\n return (\n <div key={value}>\n <label className='input__labelText' htmlFor={inputId}>\n <input\n id={inputId}\n type={type}\n name={type === ECheckboxTypes.CHECKBOX ? value : sortType}\n value={value}\n required={required}\n className={classNames(\n `radio-round ${radioInputClasses(disabled)} input__${type}`\n )}\n checked={\n type === ECheckboxTypes.CHECKBOX\n ? filtersData[group].includes(value)\n : filtersData[group] === value\n }\n disabled={disabled}\n onChange={(event: React.ChangeEvent) => {\n setFiltersData({\n ...filtersData,\n [group]:\n type === ECheckboxTypes.CHECKBOX\n ? addRemoveValue(\n value,\n (event.target as HTMLInputElement).checked,\n group\n )\n : value,\n })\n }}\n tabIndex={tabIndex}\n />\n <div\n className='input__labelText--checkbox'\n onClick={(e) =>\n (\n e.currentTarget.parentElement?.firstChild as HTMLInputElement\n ).click()\n }>\n {name}\n </div>\n </label>\n </div>\n )\n }\n\n const Accordion = (props: IAccordionProps) => {\n // This is base on the Accordion component and uses the original styling. BA 2024-07-01\n const { blocks } = props\n const expandedClass = 'accordion__block--expanded'\n\n const openCloseItem = (e: React.MouseEvent) => {\n let newStatus = 'false'\n let modifierClass = ''\n let maxHeight = 0\n let tabIndex = -1\n const btn = e.currentTarget\n const itemParent: HTMLElement = btn.parentElement as HTMLElement\n const itemContent = btn.nextElementSibling as HTMLElement\n const isOpen = btn.ariaExpanded\n const controls = itemContent.querySelectorAll(\n '.radio-round'\n ) as NodeListOf<HTMLInputElement>\n\n if (isOpen === 'false') {\n newStatus = 'true'\n modifierClass = expandedClass\n maxHeight = itemContent.scrollHeight\n tabIndex = 0\n }\n itemParent.dataset.expanded = newStatus\n itemParent.classList.remove(expandedClass)\n if (modifierClass) {\n itemParent.classList.add(modifierClass)\n } else {\n // If this item is closed, remove facet from openFacets list\n const newOpenFacets = openFacets.filter(\n (openFacet) => openFacet !== itemParent.id\n )\n openFacetsCallBack(newOpenFacets)\n }\n btn.ariaExpanded = newStatus\n itemContent.ariaHidden = newStatus\n itemContent.style.maxHeight = `${maxHeight}px`\n controls.forEach((control) => {\n control.tabIndex = tabIndex\n })\n }\n\n return (\n <ul>\n {blocks.map(({ body, expanded, headline, id }) => (\n <li\n key={id}\n id={id}\n className={`accordion__block accordion__block--transition ${\n expanded ? expandedClass : ''\n }`}\n data-expanded={expanded}>\n <button\n aria-controls={`${id}-accordion-${headline\n .trim()\n .split(' ')\n .join('-')}`}\n aria-expanded={expanded}\n className='accordion__btn'\n onClick={(e) => openCloseItem(e)}>\n <span className='accordion__headline'>{headline}</span>\n {body && (\n <i className='accordion__arrow' aria-hidden='true'>\n arrow_forward_ios\n </i>\n )}\n </button>\n\n <div\n aria-hidden={!expanded}\n style={!expanded ? { maxHeight: 0 } : { maxHeight: 'none' }}\n className='accordion__content'\n id={`${id}-accordion-${headline.trim().replace(/\\s+/g, '-')}`}\n onClick={() => {\n openFacets?.push(id)\n const newOpenFacets = [...new Set([...openFacets])]\n openFacetsCallBack(newOpenFacets)\n }}>\n {body}\n </div>\n </li>\n ))}\n </ul>\n )\n }\n\n const generateAccordionContent = (\n filters: ISearchFiltersProps['facets'],\n sortItems: ISearchFiltersProps['sortItems']\n ) => {\n const myFilters = filters.map((filter) => {\n const isExpanded =\n openFacets?.includes(filter.value) ||\n filter.filters.filter((filter) => filter.selected).length > 0\n return {\n body: filter.filters.map((item: any) => {\n return (\n <Checkbox\n key={`${item.value}-${item.filter}`}\n {...item}\n type={ECheckboxTypes.CHECKBOX}\n selected={defaultFiltersData[filter.value].includes(item.filter)}\n group={filter.value}\n tabIndex={!isExpanded ? -1 : 0}\n />\n )\n }),\n // Opens every panel that has at least one tick on load\n expanded: isExpanded,\n headline: filter.name,\n id: filter.value,\n }\n })\n\n const mySorters = {\n body: sortItems?.map((item: any) => (\n <Checkbox\n key={`${item.value}-${item.filter || item.name}`}\n {...item}\n type={ECheckboxTypes.RADIO}\n group='sortValue'\n tabIndex={-1}\n />\n )),\n expanded: false,\n headline: 'Sort by',\n id: 'sortBy',\n }\n\n return sortItems?.length ? [...myFilters, mySorters] : myFilters\n }\n\n const accordionProps = {\n blocks: generateAccordionContent(facets, sortItems),\n }\n\n useEffect(() => {\n if (JSON.stringify(internalClearFlag) !== JSON.stringify(clearFlag)) {\n setInternalClearFlag(clearFlag)\n }\n }, [clearFlag])\n\n useEffect(() => {\n const { filter, status } = internalClearFlag\n if (status) {\n clearFilters(filter)\n setInternalClearFlag(defaults.clearFlag)\n }\n }, [internalClearFlag])\n\n return (\n <div className='search-filters'>\n <div className='search-filters__button-container'>\n <button\n // if no filters, disable the button\n disabled={accordionProps.blocks.length === 0}\n id={FEATURE_NAMES.BUTTON}\n aria-haspopup='true'\n aria-expanded={filtersVisible}\n aria-controls={FEATURE_NAMES.MENU}\n aria-pressed={filtersVisible}\n className={classNames(\n 'button link__color--primary button__type--secondary button__size--base search-filters__toggle-button',\n {\n 'search-filters__toggle-button--open': filtersVisible,\n }\n )}\n onClick={() => showFiltersMenu(!filtersVisible)}>\n <div className='search-filters__icon-wrapper'>\n <i className='icon__md' aria-hidden='true'>\n tune\n </i>\n <span>{buttonLabel}</span>\n </div>\n {countSelectedItems ? (\n <span className='search-filters__selected-count'>\n {countSelectedItems}\n </span>\n ) : null}\n </button>\n </div>\n <div\n className={classNames('search-filters__menu', {\n 'search-filters__menu--visible': filtersVisible,\n })}\n aria-modal={true}\n role='dialog'\n id={FEATURE_NAMES.MENU}\n aria-labelledby={FEATURE_NAMES.BUTTON}>\n <Accordion {...accordionProps} />\n <ButtonContainer {...buttonsContainerProps}>\n <button\n className='button link__color--primary button__type--secondary button__size--base'\n onClick={() =>\n setInternalClearFlag({\n ...defaults.clearFlag,\n status: true,\n })\n }>\n Clear all filters\n </button>\n <button\n className='button button__color--primary button__type--primary button__size--base'\n onClick={() => applyFilters()}>\n Apply filters\n </button>\n </ButtonContainer>\n </div>\n </div>\n )\n}\n\nexport default FiltersMenu\n","import React from 'react'\nimport classNames from 'classnames'\n\nimport IProps, { ISrcSet } from './interface'\n\nconst getImageSrc = (srcset: ISrcSet | string) => {\n if(Array.isArray(srcset)) {\n const lastItem = srcset[srcset.length - 1]\n return lastItem.url.split(' ')[1] || lastItem.url\n }\n return srcset\n}\nconst Picture = (props: IProps) => {\n const { srcset, classes, role, alt, loading, cover } = props\n\n if(!srcset) return null\n return (\n <picture {...(classes?.picture ? { className: classes.picture } : {})}>\n {Array.isArray(srcset) && srcset.map((src) => (\n <source\n key={src.url}\n srcSet={src.url}\n media={`(max-width: ${src.breakpoint}px)`}\n />\n ))}\n <img\n className={classNames(\n {\n 'picture__img--cover': cover,\n },\n classes?.img ?? ''\n )}\n src={getImageSrc(srcset)}\n alt={alt ?? ''}\n {...(role ? { role: role } : {})}\n {...(loading ? { loading: loading } : {})}\n />\n </picture>\n )\n}\n\nexport default Picture\n","import React from 'react'\nimport classNames from 'classnames'\n\nimport IProps from './interface'\n\nconst Tag = (props: IProps) => {\n const { text, classes } = props\n\n return (\n <span\n className={classNames(\n {\n ['bubble-tag']: true,\n },\n classes || ''\n )}>\n {text}\n </span>\n )\n}\n\nexport default Tag\n","import React, { useEffect } from 'react'\nimport classNames from 'classnames'\nimport IResultCard, { ICodedProps } from './interface'\nimport Picture from '../../../Element/Picture/Picture'\nimport Title from '../../../Element/Title/Title'\nimport Tag from '../../../Element/Tag/Tag'\n\nconst ResultCard = (props: IResultCard) => {\n const {\n uid,\n title,\n blurb,\n url,\n contentType,\n image,\n duration,\n applications,\n price,\n status,\n featured,\n location,\n positions,\n faculties,\n studyLevels,\n selectionRanks,\n intakes,\n } = props\n const contentTypes = {\n course: 'Course',\n event: 'Event',\n news: 'News',\n people: 'People',\n scholarship: 'Scholarship',\n story: 'Story',\n webpage: 'Webpage',\n }\n\n const labels = {\n studyLevel: 'Study level',\n selectionRank: 'Lowest selection rank',\n location: 'Location',\n intake: 'Intake',\n status: 'Status',\n value: 'Value',\n applicationsOpen: 'Applications open',\n applicationsClose: 'Applications close',\n duration: 'Duration',\n readMoreAbout: 'Read more about',\n this: 'this',\n goTo: 'Go to:',\n }\n\n const iconLabels = {\n calendar: 'calendar_today',\n location: 'location_on',\n price: 'attach_money',\n }\n\n const columnTypes = {\n string: 'string',\n icon: 'icon',\n tag: 'tag',\n }\n\n const generateColumn = (\n title: string,\n data: string | string[] | ICodedProps[] | undefined,\n type = columnTypes.string,\n className?: string\n ) => {\n if (data && data.length > 0) {\n return (\n <div className={`result-card__detail ${className ? `result-card__detail--${className}` : ''}`}>\n {/* If type = 'icon', display an icon, otherwise display the title */}\n {title && type === columnTypes.icon ? (\n <i className='result-card__icon' aria-hidden='true'>\n {title}\n </i>\n ) : title && type !== columnTypes.icon ? (\n <Title type='h4' classes='result-card__label'>\n {title}\n </Title>\n ) : null}\n {typeof data === 'object' ? (\n <ul className='result-card__details-list'>\n {data.map((el, index: number) => (\n <li\n key={`course-table-${uid}-${title}-${\n el.code || el\n }-${index}`}>\n {type === columnTypes.tag ? (\n <Tag text={el.name} classes={`type--${el.code}`} />\n ) : (\n <p>{el}</p>\n )}\n </li>\n ))}\n </ul>\n ) : type === columnTypes.tag ? (\n <Tag text={data} />\n ) : (\n <p>{data}</p>\n )}\n </div>\n )\n }\n return ''\n }\n\n /**\n * This finds the accessible anchor of the results cards and applies the link to the whole card, removes the original anchor.\n * @param wrapper HTMLElement The overall container\n */\n const enlargeClicks = () => {\n const classPrefix = 'result-card'\n const cards = document.querySelectorAll(\n `.${classPrefix}`\n ) as NodeListOf<HTMLElement>\n if (cards.length > 0) {\n cards.forEach((card) => {\n const anchor = card.querySelector(\n `.${classPrefix}__link`\n ) as HTMLAnchorElement\n if (anchor) {\n anchor.remove()\n const title =\n card.querySelector(`.${classPrefix}__title`)?.textContent ||\n labels.this\n card.setAttribute('aria-label', `${labels.readMoreAbout} ${title}`)\n card.setAttribute('tabIndex', '0')\n card.style.cursor = 'pointer'\n card.addEventListener('click', () => {\n window.top!.location.href = anchor.href\n })\n }\n })\n }\n }\n\n useEffect(() => {\n enlargeClicks()\n }, [])\n\n return (\n <div\n className={classNames('result-card', {\n 'result-card--featured': featured,\n })}>\n {image && (\n <div className='result-card__image-wrapper'>\n <Picture {...image} />\n </div>\n )}\n <div className='result-card__content'>\n <div className='result-card__header'>\n {title && <h4 className='result-card__title'>{title}</h4>}\n <Tag text={contentType} />\n </div>\n {contentType === contentTypes.news && duration && (\n <p className='result-card__summary'>{duration[0]}</p>\n )}\n {blurb && <p className='result-card__summary'>{blurb}</p>}\n {positions && (\n <ul className='result-card__summary'>\n {positions.map((el, index: number) => (\n <li key={`course-table-${uid}-positions-${el}-${index}`}>{el}</li>\n ))}\n </ul>\n )}\n {faculties && (\n <ul className='result-card__summary'>\n {faculties.map((el, index: number) => (\n <li key={`course-table-${uid}-faculties-${el}-${index}`}>{el}</li>\n ))}\n </ul>\n )}\n {contentType === contentTypes.course && duration && (\n <ul className='result-card__durations'>\n {duration.map((el, index: number) => (\n <li key={`course-table-${uid}-duration-${el}-${index}`}>{el}</li>\n ))}\n </ul>\n )}\n {[\n contentTypes.course,\n contentTypes.event,\n contentTypes.scholarship,\n ].includes(contentType) && (\n <div\n className={classNames('result-card__details', {\n 'result-card__details--event': contentType === contentTypes.event && duration,\n 'result-card__details--course': contentType === contentTypes.course\n })}>\n {generateColumn(labels.studyLevel, studyLevels, columnTypes.tag, 'studyLevel')}\n {generateColumn(labels.selectionRank, selectionRanks, columnTypes.string, 'selectionRank')}\n {contentType === contentTypes.course &&\n generateColumn(labels.location, location, columnTypes.string, 'location')}\n {generateColumn(labels.intake, intakes, columnTypes.string, 'intake')}\n {generateColumn(labels.status, status, columnTypes.tag)}\n {contentType === contentTypes.scholarship &&\n generateColumn(labels.value, price, columnTypes.string)}\n {contentType === contentTypes.scholarship &&\n generateColumn(labels.applicationsOpen, applications?.open, columnTypes.string)}\n {contentType === contentTypes.scholarship &&\n generateColumn(labels.applicationsClose, applications?.close, columnTypes.string)}\n {contentType === contentTypes.scholarship &&\n generateColumn(labels.duration, duration, columnTypes.string)}\n {contentType === contentTypes.event &&\n generateColumn(iconLabels.calendar, duration, columnTypes.icon)}\n {contentType === contentTypes.event &&\n generateColumn(iconLabels.location, location, columnTypes.icon)}\n {contentType === contentTypes.event &&\n generateColumn(iconLabels.price, price, columnTypes.icon)}\n </div>\n )}\n <a href={url} className={classNames('result-card__link', 'sr-only')}>\n Go to: {url}\n </a>\n </div>\n </div>\n )\n}\n\nexport default ResultCard\n","import React from 'react'\n\nimport IProps from './interface'\n\nconst QuickFilterButton = (props: IProps) => {\n const { text, callBack = () => {} } = props\n\n return (\n <button\n aria-label={`Clear filter: ${text}`}\n className='button button__type--secondary button__size--base quickFilterButton'\n onClick={callBack}>\n {text}\n <i className='icon__sm' aria-hidden='true'>\n close\n </i>\n </button>\n )\n}\n\nexport default QuickFilterButton\n","import React from 'react'\n\nimport IProps from './interface'\n\nconst Loading = (props: IProps) => {\n const defaultText = 'Loading...'\n const { text = defaultText } = props\n\n return (\n <div className='loading' role='status'>\n <svg\n aria-hidden='true'\n className='loading__spinner'\n viewBox='0 0 100 101'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'>\n <path\n d='M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z'\n fill='currentColor'\n />\n <path\n d='M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z'\n fill='currentFill'\n />\n </svg>\n <span className='sr-only'>{text}</span>\n </div>\n )\n}\n\nexport default Loading\n","import React, { Fragment, useState, useEffect } from 'react'\n\nimport IProps from './interface'\nimport {\n IResultItem,\n ISearchResponse,\n ISortItem,\n IFacet,\n IFacetFilter,\n ISearchBody,\n} from '../../Utils/interface'\nimport {\n defaults,\n END_POINTS,\n dataFetcher,\n validateData,\n controlZIndexes,\n} from '../../Utils/utils'\nimport BlockWrapper from '../../../Layout/BlockWrapper/BlockWrapper'\nimport Title from '../../../Element/Title/Title'\nimport ResultsCount from '../../Element/ResultsCount/ResultsCount'\nimport CustomSelect from '../../Element/CustomSelect/CustomSelect'\nimport FiltersMenu from '../../Element/FiltersMenu/FiltersMenu'\nimport ResultCard from '../../Element/ResultCard/ResultCard'\nimport QuickFilterButton from '../../Element/QuickFilterButton/QuickFilterButton'\nimport Loading from '../../Element/Loading/Loading'\nimport { IClearFlag } from '../../Element/FiltersMenu/interface'\nimport { IOption } from '../../Element/CustomSelect/interface'\n\nconst CourseTable = (props: IProps) => {\n const {\n pageId = '',\n baseURL = '',\n defaultFilters = [],\n title,\n isCourseSearch = true,\n ...rest\n } = props\n\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [loadMore, setLoadMore] = useState(false)\n const [results, setResults] = useState<IResultItem[] | undefined>()\n const [pagination, setPagination] = useState<\n ISearchResponse['pagination'] | undefined\n >()\n const [currentPage, setCurrentPage] = useState<number>(1)\n const [currentSearch, setCurrentSearch] = useState<ISearchBody | undefined>()\n const [sortOptions, setSortOptions] = useState<ISortItem[] | undefined>()\n const [studentTypes, setStudentTypes] = useState<IOption[] | undefined>()\n const [facets, setFacets] = useState<IFacet[] | undefined>()\n const [clearFlag, setClearFlag] = useState<IClearFlag>()\n const [selectedFacets, setSelectedFacets] = useState<\n IFacet['value'][] | undefined\n >()\n const [quickFilters, setQuickFilters] = useState<IFacetFilter[] | undefined>()\n const [previousSearch, setPreviousSearch] = useState<\n ISearchBody | undefined\n >()\n const [isLastPage, setIsLastPage] = useState(false)\n // This will help maintain filters menu accordion items open/close while interacting with filters.\n const [openFacets, setOpenFacets] = useState<string[] | undefined>()\n\n const defaultSearch: ISearchBody = {\n pageId,\n Group: isCourseSearch ? defaults.groupCourses : defaults.group,\n Page: 1,\n pageSize: defaults.pageSize,\n sortType: '',\n sortValue: '',\n Filters: [...defaultFilters],\n }\n\n /**\n * This actually sends the search request and populates the variables with the response.\n * @param searchBody object\n */\n const proceedToSearch = async (searchBody: ISearchBody) => {\n if (\n !previousSearch ||\n JSON.stringify(previousSearch) !== JSON.stringify(searchBody)\n ) {\n // This test prevents request loop when no change is actively made\n setPreviousSearch(searchBody)\n if (!loadMore) {\n setLoading(true)\n setResults(undefined)\n }\n\n const response: ISearchResponse = await dataFetcher(\n isCourseSearch\n ? `${baseURL}${END_POINTS.courses}`\n : `${baseURL}${END_POINTS.search}`,\n searchBody\n )\n if (response?.results) {\n const validData = validateData(response)\n if (validData.log.length > 0) {\n console.log(validData.log)\n }\n\n setError(false)\n\n if (loadMore) {\n setResults((results) => {\n setLoadMore(false)\n results?.push(...response.results)\n return results\n })\n } else {\n setResults(response.results)\n }\n setStudentTypes(prepareStudentTypes(response.categorisation.facets))\n setFacets(prepareFacets(response.categorisation.facets))\n setSortOptions(response.categorisation.sortItems)\n setCurrentPage(response.pagination.currentPage)\n setPagination(response.pagination)\n setIsLastPage(\n (response.pagination?.currentPage || 1) >=\n (response.pagination?.totalPages || 1)\n )\n setLoading(false)\n } else {\n setError(true)\n setLoading(false)\n }\n }\n }\n\n const studentType = 'StudentType'\n const prepareFacets = (bulkFacets: IFacet[]) => {\n return isCourseSearch\n ? bulkFacets.filter((facet) => facet.value !== studentType)\n : bulkFacets\n }\n\n const prepareStudentTypes = (bulkFacets: IFacet[]) => {\n const matchingFacets = bulkFacets.filter(\n (facet) => facet.value === studentType\n )\n if (matchingFacets.length === 0) {\n // Handle the case where no facets match the studentType\n return undefined\n }\n\n const tempFilters = matchingFacets[0].filters\n\n return tempFilters.map((tempFilter) => ({\n name: tempFilter.name,\n selected: tempFilter.selected,\n sortType: 'studentType',\n sortValue: tempFilter.value,\n }))\n }\n\n const prepareSortOptions = (bulkSortOptions: ISortItem[]) => {\n return bulkSortOptions.map((sortOption) => ({\n ...sortOption,\n value: sortOption.sortValue,\n }))\n }\n\n /**\n * Creates new body request with new facets and sorting options\n * @param facets string[]\n * @param sortType string\n * @param sortValue string\n */\n const facetsAndSortCallback = (\n facets: string[],\n sortType: string,\n sortValue: string\n ) => {\n if (currentSearch) {\n const body: ISearchBody = {\n ...currentSearch,\n Page: defaultSearch.Page,\n Filters: facets,\n sortType: sortType || currentSearch.sortType,\n sortValue: sortValue || currentSearch.sortValue,\n }\n setSelectedFacets(facets)\n setCurrentSearch(body)\n }\n }\n\n /**\n * Creates new body request with new sorting options\n * @param props object\n */\n const studentTypesCallback = (props: { sortValue: string }) => {\n const studentTypesList = studentTypes?.map(\n (studentType) => studentType.sortValue\n )\n const initialFilters = currentSearch?.Filters || []\n const cleanFilters = initialFilters.filter(\n (initialFilter) => !studentTypesList?.includes(initialFilter)\n )\n if (currentSearch) {\n const { sortValue } = props\n cleanFilters.push(sortValue)\n const body = {\n ...currentSearch,\n Filters: cleanFilters,\n }\n setCurrentSearch(body)\n }\n }\n\n /**\n * Creates new body request with new sorting options\n * @param props object\n */\n const sortCallback = (props: { sortType: string; sortValue: string }) => {\n if (currentSearch) {\n const { sortType, sortValue } = props\n const body = {\n ...currentSearch,\n Page: defaultSearch.Page,\n sortType,\n sortValue,\n }\n setCurrentSearch(body)\n }\n }\n\n /**\n * Creates new body request with new page number\n * @param Page number\n */\n const loadMoreCallback = (Page: number) => {\n if (currentSearch) {\n const body = {\n ...currentSearch,\n Page,\n }\n setLoadMore(true)\n setCurrentSearch(body)\n }\n }\n\n /**\n * Sends message to remove the provided \"Quick filter\"\n * @param value string\n */\n const quickFiltersCallback = (value: string) => {\n setClearFlag({\n filter: value,\n status: true,\n })\n setTimeout(() => setClearFlag(defaults.clearFlag), 200)\n }\n\n /**\n * Each time the current search body is updated by one of the previous callback functions,\n * - if the search parameters are different from the previous search\n * - then proceed to search.\n */\n useEffect(() => {\n if (!currentSearch) {\n setCurrentSearch(defaultSearch)\n } else {\n if (JSON.stringify(previousSearch) !== JSON.stringify(currentSearch)) {\n // This test prevents request loop when no change is actively made\n proceedToSearch(currentSearch)\n }\n }\n }, [currentSearch])\n\n /**\n * This updates the list of Quickfilters depending on the filters selected in the Filters menu\n */\n useEffect(() => {\n const selection = facets?.map((facet) => {\n return facet.filters.filter((filter) =>\n selectedFacets?.includes(filter.value)\n )\n })\n\n setQuickFilters(selection?.flat())\n }, [selectedFacets])\n\n useEffect(() => {\n controlZIndexes()\n }, [])\n\n return (\n <BlockWrapper {...rest}>\n <div className='searchResults__inner'>\n <Title type='h2' classes='courseList__title'>\n {title}\n </Title>\n {!loading && sortOptions ? (\n <div className='searchResults__filters-wrapper'>\n {facets ? (\n isCourseSearch ? (\n <FiltersMenu\n facets={facets}\n openFacets={openFacets}\n openFacetsCallBack={setOpenFacets}\n sortItems={prepareSortOptions(sortOptions)}\n buttonLabel={'Filters'}\n clearAll\n callBack={facetsAndSortCallback}\n clearFlag={clearFlag}\n />\n ) : (\n <FiltersMenu\n facets={facets}\n openFacets={openFacets}\n openFacetsCallBack={setOpenFacets}\n buttonLabel={'Filters'}\n clearAll\n callBack={facetsAndSortCallback}\n clearFlag={clearFlag}\n />\n )\n ) : null}\n {isCourseSearch && studentTypes ? (\n <CustomSelect\n name='studentType'\n label='Select student type'\n prefix=''\n options={studentTypes}\n callBack={studentTypesCallback}\n />\n ) : (\n <CustomSelect\n {...defaults.sortOptions}\n options={sortOptions}\n callBack={sortCallback}\n />\n )}\n {facets ? (\n <div className='searchResults__quick-filter-wrapper'>\n {quickFilters?.map(({ name, value }) => (\n <Fragment key={value}>\n <QuickFilterButton\n text={name}\n callBack={() => quickFiltersCallback(value)}\n />\n </Fragment>\n ))}\n {quickFilters && quickFilters?.length > 0 ? (\n <button\n className='button button__type--tertiary button__size--base searchResults__clear-filters'\n onClick={(e) => {\n e.preventDefault()\n setClearFlag({\n ...defaults.clearFlag,\n status: true,\n })\n setTimeout(() => setClearFlag(defaults.clearFlag), 500)\n }}>\n Clear all <span className='sr-only'>filters</span>\n </button>\n ) : null}\n </div>\n ) : null}\n </div>\n ) : null}\n <div className='searchResults' aria-live='polite'>\n {loading && !results ? (\n <Loading text='Courses loading...' />\n ) : (\n <>\n {error ? <p>{defaults.error}</p> : null}\n {currentSearch && results && results?.length > 0 ? (\n <>\n <ResultsCount\n totalItems={pagination?.totalItems || 0}\n pageSize={pagination?.pageSize || defaults.pageSize}\n currentPage={currentPage}\n />\n <ul className='searchResults__cards-wrapper'>\n {results.map((result, index) => {\n return (\n <li key={index}>\n <ResultCard {...result} uid={index.toString()} />\n </li>\n )\n })}\n </ul>\n {loadMore && <Loading text='Results loading...' />}\n {!isLastPage ? (\n <div className='searchResults__pagination-wrapper'>\n <button\n className='button link__color--primary button__type--secondary button__size--base'\n onClick={() => loadMoreCallback(currentPage + 1)}>\n Load more\n </button>\n </div>\n ) : null}\n </>\n ) : (\n !error &&\n currentSearch && (\n <ResultsCount\n totalItems={pagination?.totalItems || 0}\n pageSize={pagination?.pageSize || defaults.pageSize}\n currentPage={currentPage}\n />\n )\n )}\n </>\n )}\n </div>\n </div>\n </BlockWrapper>\n )\n}\n\nexport default CourseTable\n"],"names":["serverURL","defaults","error","minSearchString","group","groupCourses","pageSize","authorizedKeys","sortOptions","name","label","prefix","optionsLabel","clearFlag","filter","status","END_POINTS","search","concat","autocomplete","courses","dataFetcher","endpoint","body","__awaiter","response","fetch","method","headers","JSON","stringify","_a","sent","ok","Error","data","json","getType","obj","lowerCaseTheFirstLetter","str","toLowerCase","slice","type","_typeof","Object","prototype","toString","call","replace","validateData","defaultResponse","categorisationFacets","categorisationGroupFacets","categorisationSortItems","pagination","results","suggestions","log","updatedResponse","__assign","categorisation","facets","length","tempInvalidFacets_1","map","facet","filters","value","push","count","selected","unSelectAll","__spreadArray","__read","Set","entry","groupFacets","tempInvalidGroupFacets_1","groupFacet","sortItems","tempInvalidSortItems_1","sortItem","sortType","sortValue","currentPage","resultsPath","totalItems","totalPages","tempInvalidResults_1","result","contentType","title","url","blurb","suggestion","controlZIndexes","searchResults","document","querySelector","ancestor","closest","style","zIndex","parseInt","hasOwn","hasOwnProperty","classNames","classes","i","arguments","arg","appendClass","parseValue","Array","isArray","apply","includes","key","newClass","module","exports","window","BlockWrapper","props","children","_f","id","undefined","_g","topPadding","bottomPadding","leftIndent","rightIndent","bleed","_h","scrollIntoViewTransitions","_j","sectionTheme","_k","dataType","className","_b","_c","_d","_e","React","createElement","Title","dynamic","customAttributes","ResultsCount","startIndex","endIndex","Fragment","toLocaleString","CustomSelect","callBack","options","initialValue","option","useState","currentValue","setCurrentValue","showDropdown","setShowDropdown","useEffect","onClick","role","index","tabIndex","ECheckboxTypes","ButtonContainerInner","layout","verticalAlign","classnames","ButtonContainer","rest","FiltersMenu","openFacets","openFacetsCallBack","buttonLabel","generateDefaultFilters","headlines","tempSelectedFilters","item","selectedIndex","fromEntries","initializeFilters","sortBy","generateUnSelectAlls","unSelectAlls","defaultFiltersData","filtersVisible","setFiltersVisible","filtersData","setFiltersData","internalClearFlag","setInternalClearFlag","countSelectedItems","useMemo","showFiltersMenu","flag","clearFilters","updatedFilters","payloadFilters","applyFilters","selectedFilters","flat","buttonsContainerProps","blockWrapperProps","FEATURE_NAMES","BUTTON","MENU","radioInputClasses","Checkbox","required","disabled","inputId","addRemoveValue","addValue","tempFilters","htmlFor","CHECKBOX","checked","onChange","event","target","e","currentTarget","parentElement","firstChild","click","Accordion","blocks","expandedClass","openCloseItem","newStatus","modifierClass","maxHeight","btn","itemParent","itemContent","nextElementSibling","isOpen","ariaExpanded","controls","querySelectorAll","scrollHeight","dataset","expanded","classList","remove","add","newOpenFacets","openFacet","ariaHidden","forEach","control","headline","trim","split","join","generateAccordionContent","myFilters","isExpanded","mySorters","RADIO","accordionProps","getImageSrc","srcset","lastItem","Picture","alt","loading","cover","picture","src","srcSet","media","breakpoint","img","Tag","text","ResultCard","uid","image","duration","applications","price","featured","location","positions","faculties","studyLevels","selectionRanks","intakes","contentTypes","course","news","people","scholarship","story","webpage","labels","studyLevel","selectionRank","intake","applicationsOpen","applicationsClose","readMoreAbout","goTo","iconLabels","calendar","columnTypes","string","icon","tag","generateColumn","el","code","enlargeClicks","classPrefix","cards","card","anchor","title_1","textContent","setAttribute","cursor","addEventListener","top","href","open","close","QuickFilterButton","Loading","defaultText","viewBox","fill","xmlns","d","CourseTable","pageId","baseURL","defaultFilters","isCourseSearch","setLoading","setError","loadMore","setLoadMore","setResults","setPagination","setCurrentPage","_l","currentSearch","setCurrentSearch","_m","setSortOptions","_o","studentTypes","setStudentTypes","_p","setFacets","_q","setClearFlag","_r","selectedFacets","setSelectedFacets","_s","quickFilters","setQuickFilters","_t","previousSearch","setPreviousSearch","_u","isLastPage","setIsLastPage","_v","setOpenFacets","defaultSearch","Group","Page","Filters","proceedToSearch","searchBody","response_1","validData","console","prepareStudentTypes","prepareFacets","studentType","bulkFacets","matchingFacets","tempFilter","prepareSortOptions","bulkSortOptions","sortOption","facetsAndSortCallback","studentTypesCallback","studentTypesList","initialFilters","cleanFilters","initialFilter","sortCallback","loadMoreCallback","quickFiltersCallback","setTimeout","selection","clearAll","preventDefault"],"mappings":"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","x_google_ignoreList":[1]}