{"version":3,"sources":["webpack:///./modules/JobStage.ts"],"names":["__webpack_require__","r","__webpack_exports__","_FilterExpandElement__WEBPACK_IMPORTED_MODULE_0__","_JobFilterAction__WEBPACK_IMPORTED_MODULE_1__","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_2__","_autocomplete__WEBPACK_IMPORTED_MODULE_3__","JobStage","element","options","this","suppressEvents","Object","assign","getDefaultOptions","filterNode","querySelector","filterSelector","searchField","searchFieldSelector","searchIcon","searchIconSelector","searchButton","jobStageButtonSelector","init","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","initFilterItems","initFilterAction","initAutoComplete","initSearchField","addHandlerOnFilterChange","addHandlerOnFilterClick","initSearchButton","synchronize","_this","_Select","item","autoCompleteSelect","closeAutoSelect","classList","contains","remove","value","autocompleteValue","updateFilterAction","addEventListener","event","keyCode","preventDefault","url","filterAction","getJobStageRedirectUrl","window","location","href","filterItems","filterItemSelector","map","updateSearchSuggestAjaxUrl","ajaxUrl","searchSuggestionUrl","currentUrl","autocomplete","updateAllFilterItems","fItm","refreshFilters","update","updateUrl","onFilterChange","input","target","closest","checkboxSelector","easyDropDownSelector","onDocumentClick","currentFilterItem","closeExpander","bind","resetBtnSelector","selectItemSelector","paginationItemSelector","jobListNodeSelector"],"mappings":"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","file":"./modules/JobStage.19e7e5ff.js","sourcesContent":["import FilterExpandElement from './FilterExpandElement';\r\nimport JobFilterAction from './JobFilterAction';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport { getOptions } from '../helpers/helperFunctions';\r\nimport AutoComplete from \"./autocomplete\";\r\n\r\nconst moduleSelector = '[data-module=\"JobStage\"]';\r\n\r\nexport default class JobStage {\r\n private filterNode: HTMLElement;\r\n private filterItems: FilterExpandElement[];\r\n private filterAction: JobFilterAction;\r\n private suppressEvents: boolean = false;\r\n private searchField: HTMLInputElement;\r\n private searchIcon: HTMLElement;\r\n private searchButton: HTMLElement;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new JobStage(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options: Optional = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n this.filterNode = this.element.querySelector(this.options.filterSelector);\r\n this.searchField = this.element.querySelector(this.options.searchFieldSelector);\r\n this.searchIcon = this.element.querySelector(this.options.searchIconSelector);\r\n this.searchButton = this.element.querySelector(this.options.jobStageButtonSelector);\r\n this.init();\r\n }\r\n\r\n init(): JobStage {\r\n this.initFilterItems(this.filterNode)\r\n .initFilterAction(this.element)\r\n .initAutoComplete()\r\n .initSearchField()\r\n .addHandlerOnFilterChange()\r\n .addHandlerOnFilterClick()\r\n .initSearchButton()\r\n .synchronize();\r\n\r\n return this;\r\n }\r\n\r\n private initAutoComplete(): JobStage {\r\n new AutoComplete({\r\n _Select: (item: HTMLElement) => this.autoCompleteSelect(item)\r\n });\r\n return this;\r\n }\r\n\r\n private closeAutoSelect(): void {\r\n Array.from(this.element.querySelectorAll('.autocomplete')).forEach((element: HTMLElement) => {\r\n if (element.classList.contains('open'))\r\n element.classList.remove('open');\r\n });\r\n }\r\n\r\n private autoCompleteSelect(item: HTMLElement): void {\r\n this.searchField.value = item.dataset.autocompleteValue;\r\n this.updateFilterAction();\r\n }\r\n\r\n private initSearchField(): JobStage {\r\n this.searchField.addEventListener('keyup', (event: KeyboardEvent) => {\r\n if (event.keyCode === 13) {\r\n this.closeAutoSelect();\r\n this.updateFilterAction();\r\n }\r\n });\r\n\r\n this.searchIcon.addEventListener('click', () => {\r\n this.closeAutoSelect();\r\n this.updateFilterAction();\r\n });\r\n return this;\r\n }\r\n\r\n private initSearchButton(): JobStage {\r\n this.searchButton.addEventListener('click', (element) => {\r\n element.preventDefault();\r\n let url = this.filterAction.getJobStageRedirectUrl();\r\n window.location.href = url;\r\n });\r\n return this;\r\n }\r\n\r\n private initFilterAction(element: HTMLElement): JobStage {\r\n this.filterAction = this.filterAction || new JobFilterAction(element, {});\r\n return this;\r\n }\r\n\r\n private initFilterItems(element: HTMLElement): JobStage {\r\n this.filterItems = Array.from(element.querySelectorAll(this.options.filterItemSelector))\r\n .map((item: HTMLElement) => new FilterExpandElement(item));\r\n\r\n return this;\r\n }\r\n\r\n private updateSearchSuggestAjaxUrl(): JobStage {\r\n const ajaxUrl: string = this.filterAction.searchSuggestionUrl(),\r\n currentUrl: string = this.searchField.dataset.autocomplete;\r\n\r\n if (ajaxUrl !== \"\" && ajaxUrl !== currentUrl)\r\n this.searchField.dataset.autocomplete = ajaxUrl;\r\n\r\n return this;\r\n }\r\n\r\n private updateAllFilterItems(): JobStage {\r\n this.filterItems.forEach(fItm => fItm.refreshFilters());\r\n return this;\r\n }\r\n\r\n private updateFilterAction(): JobStage {\r\n this.filterAction.update();\r\n this.filterAction.updateUrl();\r\n this.updateSearchSuggestAjaxUrl();\r\n return this;\r\n }\r\n\r\n private onFilterChange(): void {\r\n const input = event.target;\r\n\r\n if (!this.suppressEvents) {\r\n if (input.closest(this.options.checkboxSelector) ||\r\n input.closest(this.options.easyDropDownSelector)) {\r\n this.updateFilterAction();\r\n }\r\n }\r\n }\r\n\r\n private addHandlerOnFilterChange(): JobStage {\r\n this.filterNode.addEventListener('change', () => this.onFilterChange());\r\n return this;\r\n }\r\n\r\n private onDocumentClick(event: Event): void {\r\n const target = event.target,\r\n currentFilterItem = target.closest(this.options.filterItemSelector + '--active') || target;\r\n\r\n this.filterItems.forEach(fItm => fItm.element !== currentFilterItem && fItm.closeExpander());\r\n }\r\n\r\n private addHandlerOnFilterClick(): JobStage {\r\n document.addEventListener('click', this.onDocumentClick.bind(this));\r\n\r\n return this;\r\n }\r\n\r\n private synchronize(): JobStage {\r\n this.updateAllFilterItems();\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): Optional {\r\n return {\r\n filterSelector: '.cw-tag-filter',\r\n checkboxSelector: '.cw-cat-item__tag-value',\r\n easyDropDownSelector: '.edd-select',\r\n searchFieldSelector: '.cw-search',\r\n filterItemSelector: '.cw-tag-filter__item',\r\n resetBtnSelector: '.cw-sort-filters__reset-btn',\r\n selectItemSelector: '.cw-select-single',\r\n paginationItemSelector: '.cw-pagination-item, .cw-btn--next, .cw-btn--prev',\r\n jobListNodeSelector: '.cw-job-list',\r\n searchIconSelector: '.cw-search__wrapper .search-icon',\r\n jobStageButtonSelector: '.cw-job-stage-trigger'\r\n };\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n new JobStage.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n new JobStage.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n new JobStage.setup(moduleSelector);\r\n}"],"sourceRoot":""}