{"version":3,"sources":["webpack:///./Source/Scripts/helper.ts","webpack:///./Source/Scripts/app.register.ts","webpack:///./Source/Scripts/register.ts"],"names":["getUrlParameter","sParam","sUrlVariables","window","location","search","substring","split","i","length","sParameterName","isNullOrEmpty","jQueryElement","res","undefined","isStringNullOrEmpty","obj","toString","isObjectNullOrEmpty","setupCheckboxClickEvent","$","on","event","currentTarget","next","trigger","applyCustomValidationToForm","formSelector","data","validator","unobtrusive","parse","setupMustBeTrueValidation","addMethod","value","element","params","checked","adapters","add","options","rules","messages","message","setupVoucherIsUsableValidation","errorMsg","isSuccess","ajax","type","url","cache","async","contentType","done","response","item1","item2","setupValidationOnFocusOut","formValidator","validateFormFields","this","Helper","Register","init","validate","setupClickEvents","validateTermsAcceptedOnClick","handleSubmit","_that","checkForm","customerId","val","preventDefault","setVerifyCustomerIdInProgress","isValid","errorMessage","showCustomerIdValidationError","fail","xhr","ajaxOptions","thrownError","then","off","submit","checkboxTarget","closest","find","inProgress","verifyCustomerIdInProgress","addClass","disableSubmitBtn","removeClass","enableSubmitBtn","removeAttr","attr","errors","CustomerNo","showErrors"],"mappings":"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","file":"register.min.js","sourcesContent":["export class Helper {\r\n /**\r\n * gets the corresponding url parameter value\r\n * @param sParam the url parameter name\r\n */\r\n static getUrlParameter(sParam) {\r\n let sPageUrl: string = window.location.search.substring(1);\r\n var sUrlVariables: string[] = sPageUrl.split('&');\r\n for (var i = 0; i < sUrlVariables.length; i++) {\r\n var sParameterName = sUrlVariables[i].split('=');\r\n if (sParameterName[0] == sParam) {\r\n return sParameterName[1];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * checks whether the jquery element is null or empty\r\n * @param jQueryElement the jquery element\r\n */\r\n static isNullOrEmpty(jQueryElement: JQuery): boolean {\r\n var res = true;\r\n\r\n if (jQueryElement !== null && jQueryElement[0] !== undefined && jQueryElement.length > 0) {\r\n res = false;\r\n }\r\n\r\n return res;\r\n }\r\n\r\n /**\r\n * checks whether the string is null or empty\r\n * @param string the string\r\n */\r\n static isStringNullOrEmpty(obj: string): boolean {\r\n let res: boolean = true;\r\n\r\n if (obj !== null && obj !== undefined && obj.toString().length > 0) {\r\n res = false;\r\n }\r\n\r\n return res;\r\n }\r\n\r\n /**\r\n * checks whether the object is null or empty\r\n * @param object the object\r\n */\r\n static isObjectNullOrEmpty(obj: any): boolean {\r\n var res = true;\r\n\r\n if (obj !== null && obj !== undefined) {\r\n res = false;\r\n }\r\n\r\n return res;\r\n }\r\n\r\n /**\r\n * setup click events for checkbox\r\n */\r\n static setupCheckboxClickEvent(): void {\r\n $('.checkbox-container .checkmark').on('click', (event: JQueryEventObject) => {\r\n $(event.currentTarget).next(\"label\").trigger(\"click\");\r\n })\r\n }\r\n\r\n /**\r\n * remove the already added validator object and reparse document\r\n * https://stackoverflow.com/questions/17805749/jquery-unobtrusive-custom-adapter-and-method-in-jsfiddle\r\n * @param formSelector the jQuery selector for the form in question\r\n */\r\n static applyCustomValidationToForm(formSelector: string): void {\r\n // reset validator\r\n $(formSelector).data('validator', null);\r\n\r\n // parse form data\r\n $.validator.unobtrusive.parse($(formSelector));\r\n }\r\n\r\n /**\r\n * setup custom validation 'mustbetrue'\r\n */\r\n static setupMustBeTrueValidation(): void {\r\n $.validator.addMethod('mustbetrue', (value: any, element: any, params: any) => {\r\n return element.checked;\r\n });\r\n\r\n $.validator.unobtrusive.adapters.add('mustbetrue', [], (options: any) => {\r\n options.rules['mustbetrue'] = {};\r\n options.messages['mustbetrue'] = options.message;\r\n });\r\n }\r\n\r\n /**\r\n * setup custom validation 'voucherisusable'\r\n */\r\n static setupVoucherIsUsableValidation(): void {\r\n let errorMsg = '';\r\n $.validator.addMethod('voucherisusable', (value: any, element: any, params: any) => {\r\n let isSuccess = false;\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n url: \"/api/User/validatevoucher?voucher=\" + value,\r\n cache: false,\r\n async: false,\r\n contentType: \"application/json\"\r\n }).done((response: any): void => {\r\n isSuccess = response.item1;\r\n if (!isSuccess) {\r\n errorMsg = response.item2;\r\n }\r\n });\r\n\r\n return isSuccess;\r\n });\r\n\r\n $.validator.unobtrusive.adapters.add('voucherisusable', ['voucherisusable', 'voucherinuse'], (options: any) => {\r\n options.rules['voucherisusable'] = {};\r\n options.messages['voucherisusable'] = function () { return errorMsg };\r\n });\r\n }\r\n\r\n /**\r\n * validate input fields on focusout event\r\n * @param formValidator the form validator object\r\n */\r\n static setupValidationOnFocusOut(formValidator: JQueryValidation.Validator): void {\r\n $('.input-and-validation-group').on('focusout', 'input', (event: JQueryEventObject) => this.validateFormFields(event, formValidator));\r\n }\r\n\r\n /**\r\n * validate form fields\r\n * @param event jQuery the event\r\n * @param formValidator the form validator object\r\n */\r\n static validateFormFields(event: JQueryEventObject, formValidator: JQueryValidation.Validator) {\r\n let currentTarget: JQuery = $(event.currentTarget);\r\n\r\n if (!this.isNullOrEmpty(currentTarget)) {\r\n if (formValidator !== undefined) {\r\n (formValidator).element(currentTarget);\r\n }\r\n }\r\n }\r\n}","import * as $ from 'jquery'\r\nimport jqueryValidation from 'jquery-validation'\r\nimport 'jquery-validation/dist/localization/messages_da'\r\nimport 'jquery-validation-unobtrusive'\r\nimport { Register } from \"./register\"\r\nimport 'bootstrap'\r\n\r\n/* Global inits */\r\n$(function () {\r\n Register.init();\r\n});","import * as $ from 'jquery';\r\nimport { Helper } from \"./helper\";\r\n\r\nexport class Register {\r\n\r\n static formSelector: string = 'form';\r\n static formValidator: JQueryValidation.Validator;\r\n static verifyCustomerIdInProgress: boolean = false;\r\n\r\n /**\r\n * init\r\n */\r\n static init(): void {\r\n // setup custom validation\r\n Helper.setupMustBeTrueValidation();\r\n Helper.setupVoucherIsUsableValidation();\r\n Helper.applyCustomValidationToForm(this.formSelector); // must be called _after_ all custom validation has been set up\r\n\r\n // set validator object\r\n this.formValidator = $(this.formSelector).validate(); // must be set _after_ Helper.applyCustomValidationToForm()\r\n\r\n // click events\r\n this.setupClickEvents();\r\n\r\n // setup form field validation on focusout event\r\n Helper.setupValidationOnFocusOut(this.formValidator);\r\n }\r\n\r\n /**\r\n * setup click events\r\n */\r\n static setupClickEvents(): void {\r\n Helper.setupCheckboxClickEvent();\r\n\r\n // validate ProfileTermsAccepted on click\r\n $('#ProfileTermsAccepted, .termsaccepted .checkmark').on('click', (event: JQueryEventObject) => this.validateTermsAcceptedOnClick(event));\r\n\r\n // setup form submit event\r\n $(this.formSelector).on('submit', (event: JQueryEventObject) => this.handleSubmit(event));\r\n }\r\n\r\n /**\r\n * handle form submit event\r\n * @param event the event\r\n */\r\n static handleSubmit(event: JQueryEventObject): void {\r\n let _that: any = this;\r\n\r\n // 'mustbetrue' custom validation\r\n if (!this.formValidator !== undefined) {\r\n (this.formValidator).element($(\"#ProfileTermsAccepted\"));\r\n }\r\n\r\n // check if form is valid\r\n if (this.formValidator.checkForm()) {\r\n // validate customer id\r\n let customerId: string = $(\"#CustomerNo\").val();\r\n\r\n if (!Helper.isStringNullOrEmpty(customerId)) {\r\n event.preventDefault();\r\n let doSubmit: boolean = false;\r\n this.setVerifyCustomerIdInProgress(true);\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n url: \"/api/User/validateCustomerId?customerId=\" + customerId,\r\n cache: false,\r\n contentType: \"application/json\"\r\n }).done((response: any): void => {\r\n let isValid: boolean = response.item1;\r\n let errorMessage: string = response.item2;\r\n\r\n if (!isValid) {\r\n if (Helper.isStringNullOrEmpty(errorMessage)) {\r\n // an error occured while validating customerId => continue post\r\n doSubmit = true;\r\n }\r\n else {\r\n _that.showCustomerIdValidationError(errorMessage);\r\n _that.setVerifyCustomerIdInProgress(false);\r\n }\r\n }\r\n else {\r\n doSubmit = true;\r\n }\r\n }).fail((xhr: JQueryXHR, ajaxOptions: string, thrownError: string): void => {\r\n // an error occured - submit and validate server side\r\n doSubmit = true;\r\n }).then(() => {\r\n if (doSubmit) {\r\n $(\"form\").off('submit').submit();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * validate ProfileTermsAccepted on click\r\n * @param event the event object\r\n */\r\n static validateTermsAcceptedOnClick(event: JQueryEventObject): void {\r\n let currentTarget: JQuery = $(event.currentTarget);\r\n\r\n if (!Helper.isNullOrEmpty(currentTarget)) {\r\n let checkboxTarget: JQuery = currentTarget.closest(\".checkbox-container\").find(\"#ProfileTermsAccepted\");\r\n\r\n if (!Helper.isNullOrEmpty(checkboxTarget) && this.formValidator !== undefined) {\r\n (this.formValidator).element(checkboxTarget);\r\n }\r\n }\r\n }\r\n\r\n private static setVerifyCustomerIdInProgress(inProgress: boolean) {\r\n this.verifyCustomerIdInProgress = inProgress;\r\n\r\n if (inProgress) {\r\n $(\".loader\").addClass(\"shown\");\r\n this.disableSubmitBtn();\r\n }\r\n else {\r\n $(\".loader\").removeClass(\"shown\");\r\n this.enableSubmitBtn();\r\n }\r\n }\r\n\r\n private static enableSubmitBtn(): void {\r\n $(\"button[type=submit]\").removeAttr(\"disabled\");\r\n }\r\n\r\n private static disableSubmitBtn(): void {\r\n $(\"button[type=submit]\").attr(\"disabled\", \"disabled\");\r\n }\r\n\r\n private static showCustomerIdValidationError(errorMessage: string) {\r\n let errors: any = { CustomerNo: errorMessage };\r\n this.formValidator.showErrors(errors);\r\n }\r\n}"],"sourceRoot":""}