{"version":3,"file":"survey.core.min.js","sources":["Assets/survey/scripts/survey.core.js"],"sourcesContent":["/*!--------------------------------------------------------------------------\r\n// \r\n// Copyright (c) The Gallup Organization. All rights reserved.\r\n// \r\n//--------------------------------------------------------------------------*/\r\nvar Survey;\r\n(function (Survey) {\r\n var core;\r\n (function (core) {\r\n core.id = {\r\n timeoutHolder: null\r\n };\r\n core.attributeValues = {\r\n nextGroupButton: 'nextGroupButton',\r\n nextGroupSubmit: 'nextGroupSubmit',\r\n previousGroupButton: 'previousGroupButton',\r\n previousGroupSubmit: 'previousGroupSubmit',\r\n surveyGroupForm: 'surveyGroupForm',\r\n timeExpired: 'TimeExpired',\r\n EnableButtonDelay: 'EnableButtonDelay',\r\n };\r\n function nextGroup(e) {\r\n // Perform ajax post action.\r\n // The current event.\r\n // Clear the timeout\r\n if (core.id.timeoutHolder) {\r\n clearTimeout(core.id.timeoutHolder);\r\n }\r\n // Trigger the form post.\r\n var _input = $(\"\").attr(\"type\", \"hidden\").attr(\"name\", \"action:Next\");\r\n $('#surveyGroupForm').append(_input).trigger(\"submit\");\r\n return false;\r\n }\r\n core.nextGroup = nextGroup;\r\n function onPageLoad() {\r\n // Show the survey group form and enable it on page load.\r\n // This helps ensure javascript functionality is enabled in the browser.\r\n $('#' + core.attributeValues.surveyGroupForm).show().prop('disabled', false);\r\n var _enableButtonDelay = $('#' + core.attributeValues.EnableButtonDelay).val();\r\n if (_enableButtonDelay && _enableButtonDelay == \"True\") {\r\n setTimeout(function () {\r\n $(document).on('click', '#' + core.attributeValues.nextGroupButton, core.nextGroup);\r\n }, 2000);\r\n $(document).on('click', '#' + core.attributeValues.previousGroupButton, core.previousGroup);\r\n }\r\n else {\r\n $(document).on('click', '#' + core.attributeValues.nextGroupButton, core.nextGroup);\r\n $(document).on('click', '#' + core.attributeValues.previousGroupButton, core.previousGroup);\r\n }\r\n // The following loop is currently only used for Multiple Response and Radio Button questions.\r\n var groups = Array.prototype.slice.call(document.querySelectorAll('.c-questiongroup'), 0);\r\n groups.forEach(function (group) {\r\n // Adds an event listener for enabling/disabling an 'Other' textbox based on whether the corresponding checkbox is selected.\r\n var requiresInput = Array.prototype.slice.call(group.querySelectorAll('input[data-requires-input]'));\r\n requiresInput.forEach(function (el) {\r\n var other = document.querySelector(\"#\" + el.getAttribute('data-requires-input'));\r\n other.addEventListener('keydown', function (e) {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n }\r\n });\r\n el.addEventListener(\"change\", function (e) {\r\n if (el.checked) {\r\n other.removeAttribute(\"disabled\");\r\n other.classList.remove('is-reset');\r\n }\r\n else {\r\n if (other.value) {\r\n other.setAttribute(\"disabled\", \"\");\r\n other.classList.add('is-reset');\r\n }\r\n }\r\n });\r\n if (el.type === \"radio\") {\r\n Array\r\n .prototype\r\n .forEach\r\n .call(group.querySelectorAll('input[type=\"radio\"]'), function (r) {\r\n r.addEventListener(\"change\", function (e) {\r\n if (el.checked) {\r\n other.removeAttribute(\"disabled\");\r\n other.classList.remove('is-reset');\r\n }\r\n else {\r\n if (other.value) {\r\n other.setAttribute(\"disabled\", \"\");\r\n other.classList.add('is-reset');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n });\r\n // Adds an event listener for setting an 'Other' checkbox to selected if a value for the corresponding textbox is entered.\r\n var extraInputs = Array.prototype.slice.call(group.querySelectorAll('.c-checkbox__extra input, .c-radio__extra input'), 0);\r\n // When we type into an extra input field, check the associated checkbox or radio button\r\n extraInputs.forEach(function (el) {\r\n el.addEventListener(\"input\", function (e) {\r\n if (!!el.value) {\r\n var parentInputId = el.getAttribute(\"data-parent-input\");\r\n var selector = '[id=\"' + parentInputId + '\"]';\r\n var parentInputList = Array.prototype.slice.call(document.querySelectorAll(selector));\r\n if (parentInputList.length > 0) {\r\n var parentInput = parentInputList[0];\r\n parentInput.checked = true;\r\n }\r\n }\r\n });\r\n });\r\n // Adds an event listener for enabling/disabling answer options based on whether the 'Don't Know' option is selected.\r\n var inputs = Array.prototype.slice.call(group.querySelectorAll('input[type=\"checkbox\"], .c-checkbox__extra input'), 0);\r\n var solo = Array.prototype.slice.call(group.querySelectorAll('[data-checkbox-solo]'));\r\n // If a checkbox is marked as solo, disabled all other group inputs\r\n solo.forEach(function (el) {\r\n el.addEventListener(\"click\", function (e) {\r\n var others = inputs.filter(function (x) {\r\n // dont do anything to extra inputs when they have value but their parent is unchecked\r\n // as the disabled status is managed on the parent checkbox\r\n var matches = x.matches ? x.matches('.c-checkbox__extra input') : x.msMatchesSelector('.c-checkbox__extra input');\r\n if (matches) {\r\n var parentList = Array.prototype.slice.call(document.querySelectorAll('[data-requires-input=\"' + x.id + '\"]'));\r\n if (parentList.length > 0) {\r\n var parent_1 = parentList[0];\r\n if (x.value && parent_1 && !parent_1.checked) {\r\n return false;\r\n }\r\n }\r\n }\r\n return x !== el;\r\n });\r\n if (el.checked) {\r\n others.forEach(function (x) {\r\n x.setAttribute(\"disabled\", \"\");\r\n x.classList.add('is-reset');\r\n });\r\n }\r\n else {\r\n others.forEach(function (x) {\r\n x.removeAttribute(\"disabled\");\r\n x.classList.remove('is-reset');\r\n });\r\n }\r\n });\r\n });\r\n });\r\n }\r\n core.onPageLoad = onPageLoad;\r\n function onFormSubmit() {\r\n // \"blur\" the active element, removing focus and hopefully preventing double enter key press\r\n document.activeElement.blur();\r\n document.getElementById(\"overlay\").style.display = 'block';\r\n }\r\n core.onFormSubmit = onFormSubmit;\r\n function post() {\r\n // Sets the time expired flag and calls the next group function.\r\n $('#' + core.attributeValues.timeExpired).val('true');\r\n core.nextGroup(null);\r\n }\r\n core.post = post;\r\n function previousGroup(e) {\r\n // Perform ajax action to go back.\r\n // The current event.\r\n // Clear the timeout\r\n if (core.id.timeoutHolder) {\r\n clearTimeout(core.id.timeoutHolder);\r\n }\r\n // Trigger the form post.\r\n var _input = $(\"\").attr(\"type\", \"hidden\").attr(\"name\", \"action:Back\");\r\n $('#surveyGroupForm').append(_input).trigger(\"submit\");\r\n return false;\r\n }\r\n core.previousGroup = previousGroup;\r\n function timer(timerMode, delay) {\r\n // Sets the survey timer if enabled.\r\n // The timer mode.\r\n // The timer length.\r\n if (timerMode == 'Pause') {\r\n core.id.timeoutHolder = setTimeout(post, delay);\r\n }\r\n }\r\n core.timer = timer;\r\n function sfAutoComplete(e) {\r\n // Fires the SF auto complete logic for the selected value then loads the next page.\r\n // The current event.\r\n var _completionVal = e.target.getAttribute(\"data-gss-sfauto-val\");\r\n $(\"#sfAutoVal\").val(_completionVal);\r\n $(\"#sfAutoSubmit\").trigger(\"click\");\r\n }\r\n core.sfAutoComplete = sfAutoComplete;\r\n /* Event binding */\r\n $(document).on('click', '[name=\"sfAuto\"]', core.sfAutoComplete);\r\n $(document).on('submit', '[id=\"surveyGroupForm\"]', core.onFormSubmit);\r\n $(document).ready(onPageLoad);\r\n })(core = Survey.core || (Survey.core = {}));\r\n})(Survey || (Survey = {}));\r\n//# sourceMappingURL=Survey.core.js.map"],"names":["Survey","core","onPageLoad","$","attributeValues","surveyGroupForm","show","prop","_enableButtonDelay","EnableButtonDelay","val","setTimeout","document","on","nextGroupButton","nextGroup","previousGroupButton","previousGroup","Array","prototype","slice","call","querySelectorAll","forEach","group","el","other","querySelector","getAttribute","addEventListener","e","key","preventDefault","checked","removeAttribute","classList","remove","value","setAttribute","add","type","r","selector","parentInputList","length","inputs","others","filter","x","matches","msMatchesSelector","parentList","id","parent_1","post","timeExpired","timeoutHolder","nextGroupSubmit","previousGroupSubmit","clearTimeout","_input","attr","append","trigger","onFormSubmit","activeElement","blur","getElementById","style","display","timer","timerMode","delay","sfAutoComplete","_completionVal","target","ready"],"mappings":"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"}