{"version":3,"file":"site_js.js","mappings":"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","sources":["webpack://BME/./src/js/site/checkclass.ts","webpack://BME/./src/js/site/formhelper.ts","webpack://BME/./src/js/site/register.ts","webpack://BME/external var \"jQuery\"","webpack://BME/webpack/bootstrap","webpack://BME/./src/js/site.ts"],"sourcesContent":["\r\nimport { StateCheckItem } from \"./statecheck\";\r\n\r\nexport const checkClass: Array = [\r\n {\r\n tag: \"duica\",\r\n statecode: \"CA\",\r\n message: `Warning Do not register for this class if you are taking it for a\r\n CA DMV requirement.\r\nThe California DMV does not allow online classes for DUI requirements.\r\nYou may be allowed to take our classes for a court requirement.\r\nPlease check with your local court for acceptability for your specific case.`\r\n }\r\n];","\r\nexport interface IFormHelper {\r\n // you can pass in a selector or the actual elements\r\n form: string | HTMLFormElement;\r\n submitButton?: string | HTMLInputElement | HTMLButtonElement;\r\n}\r\n\r\n// valid elements\r\ntype FieldElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\r\n\r\ninterface IValidationElement {\r\n field: FieldElement;\r\n messageField?: Element;\r\n requiredMessage?: string;\r\n phoneMessage?: string;\r\n emailMessage?: string;\r\n creditcardMessage?: string; // this currently doesn't do anything!\r\n regexMessage?: string;\r\n maxlengthMessage?: string;\r\n minlengthMessage?: string;\r\n}\r\n\r\ntype doFixup = (validElement: IValidationElement, attrval: string) => void;\r\n\r\nconst fixups: { [attrkey: string]: doFixup } = {\r\n \"data-val-required\": (validElement, attrval) => {\r\n validElement.requiredMessage = attrval;\r\n validElement.field.setAttribute('required', '');\r\n },\r\n \"data-val-email\": (validElement, attrval) => {\r\n validElement.emailMessage = attrval;\r\n },\r\n \"data-val-phone\": (validElement, attrval) => {\r\n validElement.phoneMessage = attrval;\r\n },\r\n \"data-val-creditcard\": (validElement, attrval) => {\r\n validElement.creditcardMessage = attrval;\r\n },\r\n \"data-val-maxlength\": (validElement, attrval) => {\r\n validElement.maxlengthMessage = attrval;\r\n },\r\n \"data-val-maxlength-max\": (validElement, attrval) => {\r\n validElement.field.setAttribute('maxlength', attrval);\r\n },\r\n \"data-val-minlength\": (validElement, attrval) => {\r\n validElement.minlengthMessage = attrval;\r\n },\r\n \"data-val-minlength-min\": (validElement, attrval) => {\r\n validElement.field.setAttribute('minlength', attrval);\r\n },\r\n \"data-val-regex\": (validElement, attrval) => {\r\n validElement.regexMessage = attrval;\r\n },\r\n \"data-val-regex-pattern\": (validElement, attrval) => {\r\n validElement.field.setAttribute('pattern', attrval);\r\n }\r\n}\r\n\r\nconst DEFAULTINVALIDMESSAGE = \"Field is not valid\";\r\n\r\n// Includes various functions to make forms more user friendly\r\n// 100% javascript... no jquery\r\n// related topics: \r\n// https://www.falldowngoboone.com/blog/native-form-validation-with-javascript/\r\n// https://developer.mozilla.org/en-US/docs/Web/API/Constraint_validation\r\nexport class FormHelper {\r\n submitMessage: string;\r\n form: HTMLFormElement;\r\n submitButton: HTMLInputElement | HTMLButtonElement;\r\n isSubmitted: boolean;\r\n checkDoubleSubmit: boolean;\r\n checkValid: boolean;\r\n validationElements: Map;\r\n submitConfirmWarning: string;\r\n\r\n constructor(setup: IFormHelper) {\r\n const self = this;\r\n if (typeof setup.form === 'string') {\r\n this.form = document.querySelector(setup.form);\r\n }\r\n else {\r\n this.form = setup.form;\r\n }\r\n if (this.form) {\r\n if (setup.submitButton) {\r\n if (typeof setup.submitButton === 'string') {\r\n this.submitButton = this.form.querySelector(setup.submitButton);\r\n }\r\n else {\r\n this.submitButton = setup.submitButton;\r\n }\r\n }\r\n else {\r\n this.submitButton = this.form.querySelector('input[type=\"submit\"],button')\r\n }\r\n }\r\n else {\r\n if (setup.submitButton) {\r\n if (typeof setup.submitButton === 'string') {\r\n this.submitButton = document.querySelector(setup.submitButton);\r\n }\r\n else {\r\n this.submitButton = setup.submitButton;\r\n }\r\n }\r\n }\r\n\r\n this.submitMessage = \"(processing)\";\r\n this.checkDoubleSubmit = false;\r\n this.isSubmitted = false;\r\n this.checkValid = false;\r\n this.validationElements = new Map;\r\n this.submitConfirmWarning = null;\r\n\r\n if (this.form) {\r\n this.form.addEventListener('submit', (e) => {\r\n self.submit(e);\r\n });\r\n }\r\n else {\r\n console.warn(\"FormHelper: form element not found.\");\r\n }\r\n }\r\n\r\n // Prevent double-submission\r\n public preventDoubleSubmit() {\r\n this.checkDoubleSubmit = true;\r\n }\r\n\r\n // Add a confirmation popup to verify that you want to submit\r\n // the form?\r\n public addSubmitConfirmWarning(warning: string) {\r\n this.submitConfirmWarning = warning;\r\n }\r\n\r\n // Add the HTML required attribute to fields which have unobtrusive required validation\r\n // setup\r\n public addRequiredAttributes() {\r\n const allfields = this.form.elements;\r\n for (var idxEl = 0; idxEl < allfields.length; ++idxEl) {\r\n const field = allfields[idxEl];\r\n const valrequired = field.getAttribute(\"data-val-required\");\r\n if (valrequired) {\r\n field.setAttribute('required', '');\r\n }\r\n }\r\n }\r\n\r\n // Check all elements for unobtrusive elements\r\n // and try to add our equivalents\r\n public addUnobtrusiveAttributes() {\r\n this.form.noValidate = true;\r\n this.checkValid = true;\r\n const allfields = this.form.elements;\r\n\r\n for (var idxEl = 0; idxEl < allfields.length; ++idxEl) {\r\n const field = allfields[idxEl];\r\n this.addUnobtrusiveField(field);\r\n }\r\n }\r\n\r\n // Called when the form is submitted. \r\n private submit(e: SubmitEvent) {\r\n // we're handling validity checks\r\n if (this.checkValid) {\r\n const isValid = this.form.reportValidity();\r\n if (!isValid) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (this.submitConfirmWarning) {\r\n if (!window.confirm(this.submitConfirmWarning)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (this.checkDoubleSubmit) {\r\n if (this.isSubmitted) {\r\n // Previously submitted - don't submit again\r\n e.preventDefault();\r\n } else {\r\n // Mark it so that the next submit can be ignored\r\n this.isSubmitted = true;\r\n this.showSubmitted();\r\n }\r\n }\r\n }\r\n\r\n private showSubmitted() {\r\n this.submitButton.setAttribute('disabled', '');\r\n if (this.submitMessage) {\r\n if (this.submitButton.nodeName.toLowerCase() === 'button') {\r\n this.submitButton.innerHTML = this.submitMessage;\r\n }\r\n else {\r\n this.submitButton.value = this.submitMessage;\r\n }\r\n }\r\n }\r\n\r\n private addUnobtrusiveField(field: FieldElement) {\r\n if (!FormHelper.isFieldElement(field)) {\r\n return;\r\n }\r\n const self = this;\r\n\r\n const validElement: IValidationElement = {\r\n field: field,\r\n };\r\n\r\n field.addEventListener(\"invalid\", function handleInvalidField(event) {\r\n self.handleInvalid(field, event);\r\n });\r\n\r\n field.addEventListener(\"blur\", function handleFieldBlur() {\r\n const validElement = self.validationElements.get(field);\r\n self.clearErrorMessage(validElement);\r\n field.checkValidity();\r\n });\r\n\r\n // is there a related field that gets any messages that we have?\r\n if (field.name) {\r\n validElement.messageField = this.form.querySelector('[data-valmsg-for=\"' + field.name + '\"]');\r\n }\r\n\r\n var attributes = field.getAttributeNames();\r\n for (const attrkey of attributes) {\r\n const fixfunc = fixups[attrkey];\r\n if (fixfunc) {\r\n fixfunc(validElement, field.getAttribute(attrkey));\r\n }\r\n }\r\n\r\n this.validationElements.set(field, validElement);\r\n }\r\n\r\n private handleInvalid(field: FieldElement, event: Event) {\r\n // find the validElement\r\n event.preventDefault(); // suppress browser error\r\n const validElement = this.validationElements.get(field);\r\n const validity = field.validity;\r\n if (!validity) {\r\n this.setErrorMessage(validElement, null);\r\n return;\r\n }\r\n\r\n // check for missing\r\n if (validity.valueMissing && validElement.requiredMessage) {\r\n this.setErrorMessage(validElement, validElement.requiredMessage);\r\n return;\r\n }\r\n if (validity.typeMismatch) {\r\n if (validElement.emailMessage) {\r\n this.setErrorMessage(validElement, validElement.emailMessage);\r\n return;\r\n }\r\n if (validElement.creditcardMessage) {\r\n this.setErrorMessage(validElement, validElement.creditcardMessage);\r\n return;\r\n }\r\n if (validElement.phoneMessage) {\r\n this.setErrorMessage(validElement, validElement.phoneMessage);\r\n return;\r\n }\r\n }\r\n if (validity.tooLong) {\r\n this.setErrorMessage(validElement, validElement.maxlengthMessage);\r\n return;\r\n }\r\n if (validity.tooShort) {\r\n this.setErrorMessage(validElement, validElement.minlengthMessage);\r\n return;\r\n }\r\n if (validity.patternMismatch && validElement.regexMessage) {\r\n this.setErrorMessage(validElement, validElement.regexMessage);\r\n return;\r\n }\r\n\r\n // default...fall throught\r\n this.setErrorMessage(validElement, null);\r\n }\r\n\r\n private setErrorMessage(validElement: IValidationElement, message: string) {\r\n validElement.field.setAttribute(\"aria-invalid\", \"true\");\r\n validElement.field.classList.add(\"input-validation-error\");\r\n if (validElement.messageField) {\r\n validElement.messageField.innerHTML = message ? message : DEFAULTINVALIDMESSAGE;\r\n validElement.messageField.classList.remove(\"field-validation-valid\");\r\n validElement.messageField.classList.add(\"field-validation-error\");\r\n }\r\n }\r\n\r\n private clearErrorMessage(validElement: IValidationElement) {\r\n validElement.field.removeAttribute(\"aria-invalid\");\r\n validElement.field.classList.remove(\"input-validation-error\");\r\n\r\n if (validElement.messageField) {\r\n validElement.messageField.innerHTML = '';\r\n validElement.messageField.classList.add(\"field-validation-valid\");\r\n validElement.messageField.classList.remove(\"field-validation-error\");\r\n }\r\n }\r\n\r\n // Get the validity attribute. This probably isn't necessary, but just to \r\n // be safe\r\n private static isFieldElement(field: Element): boolean {\r\n if (field instanceof HTMLInputElement ||\r\n field instanceof HTMLSelectElement ||\r\n field instanceof HTMLTextAreaElement) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}","import * as $ from 'jquery';\r\n\r\nexport function setupRegistration() {\r\n const $referopen = $('#referopen');\r\n\r\n $referopen.on(\"click\",function () {\r\n $('#referfields').show();\r\n $('#referopenarea').hide();\r\n });\r\n\r\n $('.cvnshow').on(\"click\", function () {\r\n window.open(\"/Enroll/CVNPopup\", \"cvn\", \"menubar=0,resizable=0,width=650,height=550\");\r\n });\r\n}","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","export type { StateCheck } from \"./site/statecheck\";\r\nexport { StateCheckItem } from \"./site/statecheck\";\r\nexport { checkClass } from \"./site/checkclass\";\r\nexport { setupRegistration } from \"./site/register\";\r\nexport { FormHelper } from \"./site/formhelper\";\r\n"],"names":["checkClass","tag","statecode","message","fixups","validElement","attrval","requiredMessage","field","setAttribute","emailMessage","phoneMessage","creditcardMessage","maxlengthMessage","minlengthMessage","regexMessage","FormHelper","constructor","setup","self","this","form","document","querySelector","submitButton","submitMessage","checkDoubleSubmit","isSubmitted","checkValid","validationElements","Map","submitConfirmWarning","addEventListener","e","submit","console","warn","preventDoubleSubmit","addSubmitConfirmWarning","warning","addRequiredAttributes","allfields","elements","idxEl","length","getAttribute","addUnobtrusiveAttributes","noValidate","addUnobtrusiveField","reportValidity","preventDefault","window","confirm","showSubmitted","nodeName","toLowerCase","innerHTML","value","isFieldElement","event","handleInvalid","get","clearErrorMessage","checkValidity","name","messageField","attributes","getAttributeNames","attrkey","fixfunc","set","validity","valueMissing","setErrorMessage","typeMismatch","tooLong","tooShort","patternMismatch","classList","add","remove","removeAttribute","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","$","on","show","hide","open","module","exports","jQuery","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","setupRegistration"],"sourceRoot":""}