silverstripe-userforms/client/dist/js/userforms.js.map
Dylan Wagstaff 7f208ee927 FIX javascript errors enacting default functionality
Mostly to do with translations, however the errors meant the front end
forms largely didn't work at all. Some of this was to do with the scoping
of `this` in es6 arrow functions, compared to the legacy code with entwine
that uses the fuller `function` definition. Reinstate missing dependency
for translations to function too.
2017-11-20 15:16:03 +13:00

1 line
41 KiB
Plaintext

{"version":3,"sources":["webpack:///webpack/bootstrap 7f7717b373f515738f49","webpack:///./client/src/bundles/UserForms.js","webpack:///external \"i18n\"","webpack:///external \"jQuery\""],"names":["jQuery","document","ready","$","userform","CONSTANTS","commonMixin","show","$el","attr","hide","ErrorContainer","element","find","text","i18n","_t","prototype","hasErrors","children","length","removeErrorMessage","fieldId","remove","addStepLink","step","itemID","$itemElement","stepID","stepTitle","data","on","e","preventDefault","jumpToStep","id","append","removeStepLink","closest","is","updateErrorMessage","$input","message","inputID","anchor","elementID","messageElement","describedBy","addClass","removeClass","html","each","location","pathname","search","match","RegExp","FormStep","self","$elButton","prop","viewed","valid","DISPLAY_ERROR_MESSAGES_AT_TOP","errorContainer","validator","errorList","i","error","trigger","conditionallyHidden","ProgressBar","$buttons","$jsAlign","stepButton","parseInt","update","$visibleButtons","filter","button","index","$button","leftPercent","buttonOffset","innerWidth","css","left","marginLeft","$newStepElement","stepNumber","barWidth","$element","$item","parent","removeAttr","siblings","width","FormActions","$prevButton","$nextButton","numberOfSteps","steps","currentStep","lastStep","UserForm","prevStep","nextStep","validate","validationOptions","rules","required","ignore","errorClass","errorElement","errorPlacement","parents","appendTo","insertAfter","invalidHandler","event","setTimeout","currentElements","first","focus","submitHandler","form","isValid","submit","success","errorId","substr","indexOf","replace","addStep","push","setCurrentStep","direction","targetStep","forward","main","$userform","ENABLE_LIVE_VALIDATION","extend","onfocusout","HIDE_FIELD_LABELS","$label","ssDatepicker","datepicker","setInterval","ajax","url","areYouSure"],"mappings":"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","file":"js/userforms.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 7f7717b373f515738f49","/**\n * @file Manages the multi-step navigation.\n */\n\nimport jQuery from 'jquery';\nimport i18n from 'i18n';\n\njQuery(document).ready(($) => {\n // A reference to the UserForm instance.\n let userform = null;\n\n // Settings that come from the CMS.\n const CONSTANTS = {};\n\n // Common functions that extend multiple classes.\n const commonMixin = {\n /**\n * @func show\n * @desc Show the form step. Looks after aria attributes too.\n */\n show() {\n this.$el.attr('aria-hidden', false).show();\n },\n /**\n * @func hide\n * @desc Hide the form step. Looks after aria attributes too.\n */\n hide() {\n this.$el.attr('aria-hidden', true).hide();\n },\n };\n\n /**\n * @func ErrorContainer\n * @constructor\n * @param {object} element - The error container element.\n * @return {object} - The ErrorContainer instance.\n * @desc Creates an error container. Used to display step error messages at the top.\n */\n function ErrorContainer(element) {\n this.$el = element instanceof $ ? element : $(element);\n\n // Set the error container's heading.\n this.$el.find('h4').text(i18n._t('UserForms.ERROR_CONTAINER_HEADER',\n 'Please correct the following errors and try again:'));\n\n return this;\n }\n\n /**\n * @func hasErrors\n * @return boolean\n * @desc Checks if the error container has any error messages.\n */\n ErrorContainer.prototype.hasErrors = function () {\n return this.$el.find('.error-list').children().length > 0\n };\n\n /**\n * @func removeErrorMessage\n * @desc Removes an error message from the error container.\n */\n ErrorContainer.prototype.removeErrorMessage = function (fieldId) {\n this.$el.find(`#${fieldId}-top-error`).remove();\n\n // If there are no more error then hide the container.\n if (!this.hasErrors()) {\n this.hide();\n }\n };\n\n /**\n * @func addStepLink\n * @param {object} step - FormStep instance.\n * @desc Adds a link to a form step as an error message.\n */\n ErrorContainer.prototype.addStepLink = function (step) {\n const itemID = `${step.$el.attr('id')}-error-link`;\n let $itemElement = this.$el.find(`#${itemID}`);\n const stepID = step.$el.attr('id');\n const stepTitle = step.$el.data('title');\n\n // If the item already exists we don't need to do anything.\n if ($itemElement.length) {\n return;\n }\n\n $itemElement = $(`<li id=\"${itemID}\"><a href=\"#${stepID}\">${stepTitle}</a></li>`);\n\n $itemElement.on('click', (e) => {\n e.preventDefault();\n userform.jumpToStep(step.id);\n });\n\n this.$el.find('.error-list').append($itemElement);\n };\n\n /**\n * @func removeStepLink\n * @param {object} step - FormStep instance.\n * @desc Removes a step link from the error container.\n */\n ErrorContainer.prototype.removeStepLink = function (fieldId) {\n const stepID = $(`#${fieldId}`).closest('.form-step').attr('id');\n\n this.$el.find(`#${stepID}-error-link`).remove();\n\n // Hide the error container if we've just removed the last error.\n if (this.$el.find('.error-list').is(':empty')) {\n this.hide();\n }\n };\n\n /**\n * @func ErrorContainer.updateErrorMessage\n * @param {object} $input - The jQuery input object which contains the field to validate.\n * @param {object} message - The error message to display (html escaped).\n * @desc Update an error message (displayed at the top of the form).\n */\n ErrorContainer.prototype.updateErrorMessage = function ($input, message) {\n const inputID = $input.attr('id');\n let anchor = `#${inputID}`;\n const elementID = `${inputID}-top-error`;\n let messageElement = $(`#${elementID}`);\n let describedBy = $input.attr('aria-describedby');\n\n // The 'message' param will be an empty string if the field is valid.\n if (!message) {\n // Style issues as fixed if they already exist\n messageElement.addClass('fixed');\n return;\n }\n\n messageElement.removeClass('fixed');\n\n this.show();\n\n if (messageElement.length === 1) {\n // Update the existing error message.\n messageElement.show().find('a').html(message);\n } else {\n // Generate better link to field\n $input.closest('.field[id]').each(() => {\n anchor = `#${$(this).attr('id')}`;\n });\n\n // Add a new error message\n messageElement = $('<li><a></a></li>');\n messageElement\n .attr('id', elementID)\n .find('a')\n .attr('href', location.pathname + location.search + anchor)\n .html(message);\n\n this.$el.find('ul').append(messageElement);\n\n // Link back to original input via aria\n // Respect existing non-error aria-describedby\n if (!describedBy) {\n describedBy = elementID;\n } else if (!describedBy.match(new RegExp(`\\\\b${elementID}\\\\b`))) {\n // Add to end of list if not already present\n describedBy += ` ${elementID}`;\n }\n\n $input.attr('aria-describedby', describedBy);\n }\n };\n\n /**\n * @func FormStep\n * @constructor\n * @param {object} element\n * @return {object} - The FormStep instance.\n * @desc Creates a form step.\n */\n function FormStep(element) {\n const self = this;\n\n this.$el = element instanceof $ ? element : $(element);\n\n // Find button for this step\n this.$elButton = $(`.step-button-wrapper[data-for='${this.$el.prop('id')}]`);\n\n // Has the step been viewed by the user?\n this.viewed = false;\n\n // Is the form step valid?\n // This value is used on form submission, which fails, if any of the steps are invalid.\n this.valid = false;\n\n // The internal id of the step. Used for getting the step from the UserForm.steps array.\n this.id = null;\n\n this.hide();\n\n if (CONSTANTS.DISPLAY_ERROR_MESSAGES_AT_TOP) {\n this.errorContainer = new ErrorContainer(this.$el.find('.error-container'));\n\n // Listen for errors on the UserForm.\n userform.$el.on('userform.form.error', (e, validator) => {\n // The step only cares about errors if it's currently visible.\n if (!self.$el.is(':visible')) {\n return;\n }\n\n // Add or update each error in the list.\n $.each(validator.errorList, (i, error) => {\n self.errorContainer.updateErrorMessage($(error.element), error.message);\n });\n });\n\n // Listen for fields becoming valid\n userform.$el.on('userform.form.valid', (e, fieldId) => {\n self.errorContainer.removeErrorMessage(fieldId);\n });\n }\n\n // Ensure that page visibilty updates the step navigation\n this\n .$elButton\n .on('userform.field.hide userform.field.show', () => {\n userform.$el.trigger('userform.form.conditionalstep');\n });\n\n return this;\n }\n\n /**\n * Determine if this step is conditionally disabled\n *\n * @returns {Boolean}\n */\n // Because the element itself could be visible but 0 height, so check visibility of button\n FormStep.prototype.conditionallyHidden = function () {\n return !this.$elButton.find('button').is(':visible')\n };\n\n /**\n * @func ProgressBar\n * @constructor\n * @param {object} element\n * @return {object} - The Progress bar instance.\n * @desc Creates a progress bar.\n */\n function ProgressBar(element) {\n const self = this;\n\n this.$el = element instanceof $ ? element : $(element);\n this.$buttons = this.$el.find('.step-button-jump');\n this.$jsAlign = this.$el.find('.js-align');\n\n // Update the progress bar when 'step' buttons are clicked.\n this.$buttons.each((i, stepButton) => {\n $(stepButton).on('click', (e) => {\n e.preventDefault();\n self.$el.trigger('userform.progress.changestep', [parseInt($(this).data('step'), 10)]);\n });\n });\n\n // Update the progress bar when 'prev' and 'next' buttons are clicked.\n userform.$el.on('userform.form.changestep', (e, stepID) => {\n self.update(stepID);\n });\n\n // Listen for steps being conditionally shown / hidden by display rules.\n // We need to update step related UI like the number of step buttons\n // and any text that shows the total number of steps.\n userform.$el.on('userform.form.conditionalstep', () => {\n // Update the step numbers on the buttons.\n const $visibleButtons = self.$buttons.filter(':visible');\n\n $visibleButtons.each((i, button) => {\n $(button).text(i + 1);\n });\n\n // Update the actual progress bar.\n self.$el.find('.progress-bar').attr('aria-valuemax', $visibleButtons.length);\n\n // Update any text that uses the total number of steps.\n self.$el.find('.total-step-number').text($visibleButtons.length);\n });\n\n // Spaces out the steps below progress bar evenly\n this.$jsAlign.each((index, button) => {\n const $button = $(button);\n const leftPercent = (100 / (self.$jsAlign.length - 1) * `${index}%`);\n const buttonOffset = -1 * ($button.innerWidth() / 2);\n\n $button.css({ left: leftPercent, marginLeft: buttonOffset });\n\n // First and last buttons are kept within userform-progress container\n if (index === self.$jsAlign.length - 1) {\n $button.css({ marginLeft: buttonOffset * 2 });\n } else if (index === 0) {\n $button.css({ marginLeft: 0 });\n }\n });\n\n this.update(0);\n\n return this;\n }\n\n /**\n * @func ProgressBar.update\n * @param {number} stepID - Zero based index of the new step.\n * @desc Update the progress element to show a new step.\n */\n ProgressBar.prototype.update = function (stepID) {\n const $newStepElement = $($('.form-step')[stepID]);\n let stepNumber = 0;\n let barWidth = stepID / (this.$buttons.length - 1) * 100;\n\n // Set the current step number.\n this.$buttons.each((i, button) => {\n if (i > stepID) {\n // Break the loop\n return false;\n }\n\n if ($(button).is(':visible')) {\n stepNumber += 1;\n }\n return true;\n });\n\n // Update elements that contain the current step number.\n this.$el.find('.current-step-number').each((i, element) => {\n $(element).text(stepNumber);\n });\n\n // Update aria attributes.\n this.$el.find('[aria-valuenow]').each((i, element) => {\n $(element).attr('aria-valuenow', stepNumber);\n });\n\n // Update the CSS classes on step buttons.\n this.$buttons.each((i, element) => {\n const $element = $(element);\n const $item = $element.parent();\n\n if (parseInt($element.data('step'), 10) === stepNumber && $element.is(':visible')) {\n $item.addClass('current viewed');\n $element.removeAttr('disabled');\n\n return;\n }\n\n $item.removeClass('current');\n });\n\n // Update the progress bar's title with the new step's title.\n this.$el.siblings('.progress-title').text($newStepElement.data('title'));\n\n // Update the width of the progress bar.\n barWidth = barWidth ? `${barWidth}%` : '';\n this.$el.find('.progress-bar').width(barWidth);\n };\n\n /**\n * @func FormActions\n * @constructor\n * @param {object} element\n * @desc Creates the navigation and actions (Prev, Next, Submit buttons).\n */\n function FormActions(element) {\n const self = this;\n\n this.$el = element instanceof $ ? element : $(element);\n\n this.$prevButton = this.$el.find('.step-button-prev');\n this.$nextButton = this.$el.find('.step-button-next');\n\n // Show the buttons.\n this.$prevButton.parent().attr('aria-hidden', false).show();\n this.$nextButton.parent().attr('aria-hidden', false).show();\n\n // Bind the step navigation event listeners.\n this.$prevButton.on('click', (e) => {\n e.preventDefault();\n self.$el.trigger('userform.action.prev');\n });\n this.$nextButton.on('click', (e) => {\n e.preventDefault();\n self.$el.trigger('userform.action.next');\n });\n\n // Listen for changes to the current form step, or conditional pages,\n // so we can show hide buttons appropriately.\n userform.$el.on('userform.form.changestep userform.form.conditionalstep', () => {\n self.update();\n });\n\n this.update();\n\n return this;\n }\n\n /**\n * @func FormActions.update\n * @param {number} stepID - Zero based ID of the current step.\n * @desc Updates the form actions element to reflect the current state of the page.\n */\n FormActions.prototype.update = function () {\n const numberOfSteps = userform.steps.length;\n const stepID = userform.currentStep ? userform.currentStep.id : 0;\n let i = null;\n let lastStep = null;\n\n // Update the \"Prev\" button.\n this.$el.find('.step-button-prev')[stepID === 0 ? 'hide' : 'show']();\n\n // Find last step, skipping hidden ones\n for (i = numberOfSteps - 1; i >= 0; i--) {\n lastStep = userform.steps[i];\n\n // Skip if step is hidden\n if (lastStep.conditionallyHidden()) {\n continue;\n }\n\n // Update the \"Next\" button.\n this.$el.find('.step-button-next')[stepID >= i ? 'hide' : 'show']();\n\n // Update the \"Actions\".\n this.$el.find('.Actions')[stepID >= i ? 'show' : 'hide']();\n\n // Stop processing last step\n break;\n }\n };\n\n /**\n * @func UserForm\n * @constructor\n * @param {object} element\n * @return {object} - The UserForm instance.\n * @desc The form\n */\n function UserForm(element) {\n const self = this;\n\n this.$el = element instanceof $ ? element : $(element);\n this.steps = [];\n\n // Add an error container which displays a list of invalid steps on form submission.\n this.errorContainer = new ErrorContainer(this.$el.children('.error-container'));\n\n // Listen for events triggered by form steps.\n this.$el.on('userform.action.prev', () => {\n self.prevStep();\n });\n this.$el.on('userform.action.next', () => {\n self.nextStep();\n });\n\n // Listen for events triggered by the progress bar.\n $('#userform-progress').on('userform.progress.changestep', (e, stepNumber) => {\n self.jumpToStep(stepNumber - 1);\n });\n\n // When a field becomes valid, remove errors from the error container.\n this.$el.on('userform.form.valid', (e, fieldId) => {\n self.errorContainer.removeStepLink(fieldId);\n });\n\n this.$el.validate(this.validationOptions);\n\n // Ensure checkbox groups are validated correctly\n $('.optionset.requiredField input').each(() => {\n $(this).rules('add', {\n required: true,\n });\n });\n\n return this;\n }\n\n /*\n * Default options for step validation. These get extended in main().\n */\n UserForm.prototype.validationOptions = {\n ignore: ':hidden,ul',\n errorClass: 'error',\n errorElement: 'span',\n errorPlacement: (error, element) => {\n error.addClass('message');\n\n if (element.is(':radio') || element.parents('.checkboxset').length > 0) {\n error.appendTo(element.closest('.middleColumn'));\n } else if (element.parents('.checkbox').length > 0) {\n error.appendTo(element.closest('.field'));\n } else {\n error.insertAfter(element);\n }\n },\n invalidHandler: (event, validator) => {\n // setTimeout 0 so it runs after errorPlacement\n setTimeout(() => {\n validator.currentElements.filter('.error').first().focus();\n }, 0);\n },\n // Callback for handling the actual submit when the form is valid.\n // Submission in the jQuery.validate sence is handled at step level.\n // So when the final step is submitted we have to also check all previous steps are valid.\n submitHandler: (form) => {\n let isValid = true;\n\n // Validate the current step\n if (userform.currentStep) {\n userform.currentStep.valid = $(form).valid();\n }\n\n // Check for invalid previous steps.\n $.each(userform.steps, (i, step) => {\n if (!step.valid && !step.conditionallyHidden()) {\n isValid = false;\n userform.errorContainer.addStepLink(step);\n }\n });\n\n if (isValid) {\n // When using the \"are you sure?\" plugin, ensure the form immediately submits.\n $(form).removeClass('dirty');\n\n form.submit();\n } else {\n userform.errorContainer.show();\n }\n },\n // When a field becomes valid.\n success: (error) => {\n const errorId = $(error).attr('id');\n const fieldId = errorId.substr(0, errorId.indexOf('-error')).replace(/[\\\\[\\\\]]/, '');\n\n // Remove square brackets since jQuery.validate.js uses idOrName,\n // which breaks further on when using a selector that end with\n // square brackets.\n\n error.remove();\n\n // Pass the field's ID with the event.\n userform.$el.trigger('userform.form.valid', [fieldId]);\n },\n };\n\n /**\n * @func UserForm.addStep\n * @param {object} step - An instance of FormStep.\n * @desc Adds a step to the UserForm.\n */\n UserForm.prototype.addStep = function (step) {\n // Make sure we're dealing with a form step.\n if (!step instanceof FormStep) {\n return;\n }\n\n // eslint-disable-next-line no-param-reassign\n step.id = this.steps.length;\n\n this.steps.push(step);\n };\n\n /**\n * @func UserForm.setCurrentStep\n * @param {object} step - An instance of FormStep.\n * @desc Sets the step the user is currently on.\n */\n UserForm.prototype.setCurrentStep = function (step) {\n // Make sure we're dealing with a form step.\n if (!(step instanceof FormStep)) {\n return;\n }\n\n this.currentStep = step;\n this.currentStep.show();\n\n // Record the user has viewed the step.\n this.currentStep.viewed = true;\n this.currentStep.$el.addClass('viewed');\n };\n\n /**\n * @func UserForm.jumpToStep\n * @param {number} stepNumber\n * @param {boolean} [direction] - Defaults to forward (true).\n * @desc Jumps to a specific form step.\n */\n UserForm.prototype.jumpToStep = function (stepNumber, direction) {\n const targetStep = this.steps[stepNumber];\n let isValid = false;\n const forward = direction === void 0 ? true : direction;\n\n // Make sure the target step exists.\n if (targetStep === void 0) {\n return;\n }\n\n // Make sure the step we're trying to set as current is not\n // hidden by custom display rules. If it is then jump to the next step.\n if (targetStep.conditionallyHidden()) {\n if (forward) {\n this.jumpToStep(stepNumber + 1);\n } else {\n this.jumpToStep(stepNumber - 1);\n }\n\n return;\n }\n\n // Validate the form.\n // This well effectivly validate the current step and not the entire form.\n // This is because hidden fields are excluded from validation, and all fields\n // on all other steps, are currently hidden.\n isValid = this.$el.valid();\n\n // Set the 'valid' property on the current step.\n this.currentStep.valid = isValid;\n\n // Users can navigate to step's they've already viewed even if the current step is invalid.\n if (isValid === false && targetStep.viewed === false) {\n return;\n }\n\n this.currentStep.hide();\n this.setCurrentStep(targetStep);\n\n this.$el.trigger('userform.form.changestep', [targetStep.id]);\n };\n\n /**\n * @func UserForm.nextStep\n * @desc Advances the form to the next step.\n */\n UserForm.prototype.nextStep = function () {\n this.jumpToStep(this.steps.indexOf(this.currentStep) + 1, true);\n };\n\n /**\n * @func UserForm.prevStep\n * @desc Goes back one step (not bound to browser history).\n */\n UserForm.prototype.prevStep = function () {\n this.jumpToStep(this.steps.indexOf(this.currentStep) - 1, false);\n };\n\n /**\n * @func main\n * @desc Bootstraps the front-end.\n */\n function main() {\n const $userform = $('.userform');\n\n // If there's no userform, do nothing.\n if ($userform.length === 0) {\n return;\n }\n\n CONSTANTS.ENABLE_LIVE_VALIDATION = $userform.data('livevalidation') !== void 0;\n CONSTANTS.DISPLAY_ERROR_MESSAGES_AT_TOP = $userform.data('toperrors') !== void 0;\n\n // Extend the default validation options with conditional options\n // that are set by the user in the CMS.\n if (CONSTANTS.ENABLE_LIVE_VALIDATION === false) {\n $.extend(UserForm.prototype.validationOptions, {\n onfocusout: false,\n });\n }\n\n if (CONSTANTS.DISPLAY_ERROR_MESSAGES_AT_TOP) {\n $.extend(UserForm.prototype.validationOptions, {\n // Callback for custom code when an invalid form / step is submitted.\n invalidHandler: (event, validator) => {\n $userform.trigger('userform.form.error', [validator]);\n },\n onfocusout: false,\n });\n }\n\n // Display all the things that are hidden when JavaScript is disabled.\n $('.userform-progress, .step-navigation').attr('aria-hidden', false).show();\n\n // Extend classes with common functionality.\n $.extend(FormStep.prototype, commonMixin);\n $.extend(ErrorContainer.prototype, commonMixin);\n\n userform = new UserForm($userform);\n\n // Conditionally hide field labels and use HTML5 placeholder instead.\n if (CONSTANTS.HIDE_FIELD_LABELS) {\n $userform.find('label.left').each(() => {\n const $label = $(this);\n\n $(`[name=\"${$label.attr('for')}\"]`).attr('placeholder', $label.text());\n $label.remove();\n });\n }\n\n // Initialise the form steps.\n userform.$el.find('.form-step').each((i, element) => {\n const step = new FormStep(element);\n\n userform.addStep(step);\n });\n\n userform.setCurrentStep(userform.steps[0]);\n\n // Initialise actions and progressbar\n // @todo Commented out because they appear unused - are they expected to be exported to the\n // global scope? Check this works on the frontend\n // const progressBar = new ProgressBar($('#userform-progress'));\n // const formActions = new FormActions($('#step-navigation'));\n\n // Enable jQuery UI datepickers\n $(document).on('click', 'input.text[data-showcalendar]', () => {\n const $element = $(this);\n\n $element.ssDatepicker();\n\n if ($element.data('datepicker')) {\n $element.datepicker('show');\n }\n });\n\n // Make sure the form doesn't expire on the user. Pings every 3 mins.\n setInterval(() => {\n $.ajax({ url: 'UserDefinedFormController/ping' });\n }, 180 * 1000);\n\n // Bind a confirmation message when navigating away from a partially completed form.\n const form = $('form.userform');\n if (typeof form.areYouSure !== 'undefined') {\n form.areYouSure({\n message: i18n._t('UserForms.LEAVE_CONFIRMATION', 'You have unsaved changes!'),\n });\n }\n }\n\n main();\n});\n\n\n\n// WEBPACK FOOTER //\n// ./client/src/bundles/UserForms.js","module.exports = i18n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"i18n\"\n// module id = 2\n// module chunks = 0","module.exports = jQuery;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"jQuery\"\n// module id = 3\n// module chunks = 0"],"sourceRoot":""}