{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./src/js/modules/find-your-program-form.js"],"names":["anObject","fails","flags","DESCRIPTORS","nativeToString","NOT_GENERIC","call","source","INCORRECT_NAME","name","RegExp","prototype","R","this","concat","undefined","unsafe","defineProperty","f","FunctionPrototype","Function","FunctionPrototypeToString","toString","nameRE","configurable","get","match","error","isObject","isArray","toAbsoluteIndex","toLength","toIndexedObject","createProperty","SPECIES","nativeSlice","slice","max","Math","SPECIES_SUPPORT","target","proto","forced","start","end","Constructor","result","n","O","length","k","fin","constructor","Array","toObject","arraySpeciesCreate","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","array","isConcatSpreadable","spreadable","FORCED","arg","i","len","E","A","arguments","TypeError","internalFindIndex","SKIPS_HOLES","findIndex","callbackfn","toInteger","min","splice","deleteCount","insertCount","actualDeleteCount","from","to","actualStart","argumentsLength","FindYourProgramForm","dom","$steps","el","querySelectorAll","$locationDropdown","querySelector","$areaOfStudyDropdown","$degreeLevelDropdown","$nextButtons","$backButtons","$stepIndicator","locationDropdownDefaultText","innerHTML","areaOfStudyDropdownDefaultText","degreeLevelDropdownDefaultText","locationSelected","areaSelected","degreeSelected","data","window","SOU_PROGRAM_LISTING","items","step","redirectPath","dataset","initDropdowns","renderStep","addEventListener","e","handleLocationChange","handleAreaChange","handleDegreeChange","handleNextButtonClick","handleBackButtonClick","location","href","$currentStep","classList","remove","add","renderStep1","renderStep2","renderStep3","locations","getLocations","defaultOption","id","label","placeholder","locationDropDown","setChoices","areas","getAreas","activeId","areaOfStudyDropdown","getValue","value","activeArea","find","area","disabled","setChoiceByValue","degrees","getDegrees","degreeLevelDropdown","activeDegree","degree","reduce","acc","item","forEach","l","push","locationAvailable","exists","a","areaOfStudy","existsIndex","areaAvailable","degreeLevel","$currentNextButton","removeAttribute","setAttribute","enableCurrentNextButton","disableCurrentNextButton","defaultOptions","itemSelectText","searchEnabled","shouldSort","Choices","labelValueStep1","document","labelValueStep2","labelValueStep3","choiceContainerStep1","choiceContainerStep2","choiceContainerStep3","choiceContainerListeners","initMutationObserver","containerOuter","element","ariaLabel","code","keyCode","preventDefault","keyDown","bind","observer","MutationObserver","mutations","mutation","type","addedNodes","contains","config","childList","subtree","observe","labelObserver","Component"],"mappings":"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","file":"14.ef76cf899fc66e083eba.js","sourcesContent":["'use strict';\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TO_STRING = 'toString';\nvar nativeToString = /./[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n require('../internals/redefine')(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? flags.call(R) : undefined);\n }, { unsafe: true });\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar SPECIES = require('../internals/well-known-symbol')('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\nvar SPECIES_SUPPORT = require('../internals/array-method-has-species-support')('slice');\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\nrequire('../internals/export')({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar IS_CONCAT_SPREADABLE = require('../internals/well-known-symbol')('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = !require('../internals/fails')(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = require('../internals/array-method-has-species-support')('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\nrequire('../internals/export')({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar internalFindIndex = require('../internals/array-methods')(6);\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\nrequire('../internals/export')({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return internalFindIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nrequire('../internals/add-to-unscopables')(FIND_INDEX);\n","'use strict';\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\nvar SPECIES_SUPPORT = require('../internals/array-method-has-species-support')('splice');\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\nrequire('../internals/export')({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","import { Component } from '@verndale/core';\nimport Choices from 'choices.js';\n\nclass FindYourProgramForm extends Component {\n setupDefaults() {\n this.dom = {\n $steps: this.el.querySelectorAll('.find-your-program-form__step'),\n $locationDropdown: this.el.querySelector('#find-your-program-form__location'),\n $areaOfStudyDropdown: this.el.querySelector('#find-your-program-form__area-of-study'),\n $degreeLevelDropdown: this.el.querySelector('#find-your-program-form__degree-level'),\n $nextButtons: this.el.querySelectorAll('.find-your-program-form__next'),\n $backButtons: this.el.querySelectorAll('.find-your-program-form__back'),\n $stepIndicator: this.el.querySelector('.find-your-program-form__current-step')\n };\n\n this.locationDropdownDefaultText = this.dom.$locationDropdown.querySelector('option').innerHTML;\n this.areaOfStudyDropdownDefaultText = this.dom.$areaOfStudyDropdown.querySelector('option').innerHTML;\n this.degreeLevelDropdownDefaultText = this.dom.$degreeLevelDropdown.querySelector('option').innerHTML;\n\n this.locationSelected = '';\n this.areaSelected = '';\n this.degreeSelected = '';\n\n this.data = window.SOU_PROGRAM_LISTING ? window.SOU_PROGRAM_LISTING.items : [];\n this.step = 1;\n\n this.redirectPath = this.el.dataset.redirectPath || '/degree-programs';\n\n this.initDropdowns();\n this.renderStep();\n }\n\n addListeners() {\n this.dom.$locationDropdown.addEventListener('change', e => this.handleLocationChange(e));\n this.dom.$areaOfStudyDropdown.addEventListener('change', e => this.handleAreaChange(e));\n this.dom.$degreeLevelDropdown.addEventListener('change', e => this.handleDegreeChange(e));\n\n for(const $nextButton of this.dom.$nextButtons) {\n $nextButton.addEventListener('click', e => this.handleNextButtonClick(e));\n }\n\n for(const $backButton of this.dom.$backButtons) {\n $backButton.addEventListener('click', e => this.handleBackButtonClick(e));\n }\n }\n\n handleNextButtonClick() {\n if (this.step === 3) {\n // window.location.href = `/html/templates/program-landing-page.html?location=${this.locationSelected}&areaOfStudy=${this.areaSelected}°reeLevel=${this.degreeSelected}`;\n window.location.href = `${this.redirectPath}?location=${this.locationSelected}&areaOfStudy=${this.areaSelected}°reeLevel=${this.degreeSelected}`;\n return;\n }\n\n this.step++;\n this.renderStep();\n }\n\n handleBackButtonClick() {\n this.step--;\n this.renderStep();\n }\n\n renderStep() {\n const $currentStep = this.el.querySelector(`.find-your-program-form__step--${this.step}`);\n for(const $step of this.dom.$steps) {\n $step.classList.remove('find-your-program-form__step--active');\n }\n\n this.dom.$stepIndicator.innerHTML = this.step;\n\n $currentStep.classList.add('find-your-program-form__step--active');\n\n switch (this.step) {\n case 1:\n this.renderStep1();\n break;\n case 2:\n this.renderStep2();\n break;\n case 3:\n this.renderStep3();\n break;\n }\n }\n\n renderStep1() {\n const locations = this.getLocations();\n const defaultOption = { id: '', label: this.locationDropdownDefaultText, placeholder: true };\n this.locationDropDown.setChoices([defaultOption, ...locations], 'id', 'label', true);\n }\n\n renderStep2() {\n const areas = this.getAreas();\n\n const activeId = this.areaOfStudyDropdown.getValue().value;\n const activeArea = activeId && areas.find(area => area.id === activeId);\n\n const defaultOption = { id: '', label: this.areaOfStudyDropdownDefaultText, placeholder: true };\n this.areaOfStudyDropdown.setChoices([defaultOption, ...areas], 'id', 'label', true);\n\n if (activeArea && activeArea.disabled) {\n this.areaOfStudyDropdown.setChoiceByValue('');\n this.handleAreaChange({ target: { value: '' } });\n }\n }\n\n renderStep3() {\n const degrees = this.getDegrees();\n\n const activeId = this.degreeLevelDropdown.getValue().value;\n const activeDegree = activeId && degrees.find(degree => degree.id === activeId);\n\n const defaultOption = { id: '', label: this.degreeLevelDropdownDefaultText, placeholder: true };\n this.degreeLevelDropdown.setChoices([defaultOption, ...degrees], 'id', 'label', true);\n\n if (activeDegree && activeDegree.disabled) {\n this.degreeLevelDropdown.setChoiceByValue('');\n this.handleAreaChange({ target: { value: '' } });\n }\n }\n\n getLocations() {\n const locations = this.data.reduce((acc, item) => {\n item.locations.forEach(location => {\n const exists = acc.find(l => l.id === location.id);\n if (!exists) acc.push(location);\n });\n\n return acc;\n }, []);\n\n return locations;\n }\n\n getAreas() {\n const areas = this.data.reduce((acc, item) => {\n const locationAvailable = item.locations.find(location => location.id === this.locationSelected);\n const exists = acc.find(a => a.id === item.areaOfStudy.id);\n const existsIndex = acc.findIndex(a => a.id === item.areaOfStudy.id);\n const existsDisabled = exists && exists.disabled;\n\n if (existsDisabled && locationAvailable) {\n acc.splice(existsIndex, 1, item.areaOfStudy);\n }\n\n if (locationAvailable && !exists) {\n acc.push(item.areaOfStudy);\n }\n\n if (!locationAvailable && !exists) {\n acc.push({ ...item.areaOfStudy, disabled: true });\n }\n\n return acc;\n }, []);\n\n return areas;\n }\n\n getDegrees() {\n const degrees = this.data.reduce((acc, item) => {\n const locationAvailable = item.locations.find(location => location.id === this.locationSelected);\n const areaAvailable = item.areaOfStudy.id === this.areaSelected;\n\n const exists = acc.find(a => a.id === item.degreeLevel.id);\n const existsIndex = acc.findIndex(a => a.id === item.degreeLevel.id);\n const existsDisabled = exists && exists.disabled;\n\n if (existsDisabled && locationAvailable && areaAvailable) {\n acc.splice(existsIndex, 1, item.degreeLevel);\n }\n\n if (locationAvailable && areaAvailable && !exists) {\n acc.push(item.degreeLevel);\n }\n\n if ((!locationAvailable && !exists) || (!areaAvailable && !exists)) {\n acc.push({ ...item.degreeLevel, disabled: true });\n }\n\n return acc;\n }, []);\n\n return degrees;\n }\n\n enableCurrentNextButton() {\n const $currentNextButton = this.el.querySelector(`.find-your-program-form__step--${this.step} .find-your-program-form__next`);\n $currentNextButton.classList.remove('find-your-program-form__next--disabled');\n $currentNextButton.removeAttribute('disabled');\n }\n\n disableCurrentNextButton() {\n const $currentNextButton = this.el.querySelector(`.find-your-program-form__step--${this.step} .find-your-program-form__next`);\n $currentNextButton.classList.add('find-your-program-form__next--disabled');\n $currentNextButton.setAttribute('disabled', '');\n }\n\n handleLocationChange(e) {\n const value = e.target.value;\n this.locationSelected = value;\n\n if (!value) {\n this.disableCurrentNextButton();\n return;\n }\n\n this.enableCurrentNextButton();\n }\n\n handleAreaChange(e) {\n const value = e.target.value;\n this.areaSelected = value;\n\n if (!value) {\n this.disableCurrentNextButton();\n return;\n }\n\n this.enableCurrentNextButton();\n }\n\n handleDegreeChange(e) {\n const value = e.target.value;\n this.degreeSelected = value;\n\n if (!value) {\n this.disableCurrentNextButton();\n return;\n }\n\n this.enableCurrentNextButton();\n }\n\n initDropdowns() {\n const defaultOptions = {\n itemSelectText: '',\n searchEnabled: false,\n shouldSort: false\n };\n\n this.locationDropDown = new Choices(this.dom.$locationDropdown, defaultOptions);\n this.areaOfStudyDropdown = new Choices(this.dom.$areaOfStudyDropdown, defaultOptions);\n this.degreeLevelDropdown = new Choices(this.dom.$degreeLevelDropdown, defaultOptions);\n\n this.labelValueStep1 = document.querySelector('.find-your-program-form__step--1 .choices__list.choices__list--single');\n this.labelValueStep2 = document.querySelector('.find-your-program-form__step--2 .choices__list.choices__list--single');\n this.labelValueStep3 = document.querySelector('.find-your-program-form__step--3 .choices__list.choices__list--single');\n\n this.choiceContainerStep1 = document.querySelector('.find-your-program-form__step--1 .choices');\n this.choiceContainerStep2 = document.querySelector('.find-your-program-form__step--2 .choices');\n this.choiceContainerStep3 = document.querySelector('.find-your-program-form__step--3 .choices');\n\n this.choiceContainerListeners();\n\n this.initMutationObserver();\n\n this.locationDropDown.containerOuter.element.setAttribute('aria-label', this.dom.$locationDropdown.ariaLabel);\n this.areaOfStudyDropdown.containerOuter.element.setAttribute('aria-label', this.dom.$areaOfStudyDropdown.ariaLabel);\n this.degreeLevelDropdown.containerOuter.element.setAttribute('aria-label', this.dom.$degreeLevelDropdown.ariaLabel);\n }\n\n keyDown(e) {\n if (e.code === 'Space' || e.keyCode === 32) {\n e.preventDefault();\n }\n }\n\n choiceContainerListeners() {\n this.choiceContainerStep1.addEventListener('keydown', this.keyDown.bind(this));\n this.choiceContainerStep2.addEventListener('keydown', this.keyDown.bind(this));\n this.choiceContainerStep3.addEventListener('keydown', this.keyDown.bind(this));\n }\n\n initMutationObserver() {\n // Removes first load aria-selected choice for place holder\n this.labelValueStep1.querySelector('.choices__placeholder').removeAttribute('aria-selected');\n this.labelValueStep2.querySelector('.choices__placeholder').removeAttribute('aria-selected');\n this.labelValueStep3.querySelector('.choices__placeholder').removeAttribute('aria-selected');\n\n if (this.labelValueStep1, this.labelValueStep2, this.labelValueStep3) {\n const observer = new window.MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.type === 'childList' && mutation.addedNodes.length === 1) {\n if (mutation.addedNodes[0].classList.contains('choices__placeholder')) {\n mutation.addedNodes[0].removeAttribute('aria-selected')\n }\n }\n });\n });\n\n const config = { childList: true, subtree: true };\n observer.observe(this.labelValueStep1, config);\n observer.observe(this.labelValueStep2, config);\n observer.observe(this.labelValueStep3, config);\n\n // Store the observer in the class instance so it can be disconnected later if needed\n this.labelObserver = observer;\n }\n }\n\n}\n\nexport default FindYourProgramForm;\n"],"sourceRoot":""}