{"version":3,"sources":["HicomForm.ts"],"names":["HicomForm","DATETIME_FORMAT_STRING","HicomConstants","DATEONLY_FORMAT_STRING","HICOM_READONLY_CSS_CLASSNAME","HICOM_DISABLED_CSS_CLASSNAME","HICOM_NUMBER_NUMBER_PRECISION_ATTRIBUTE_NAME","HICOM_NUMBER_SHOW_SPINNERS_ATTRIBUTE_NAME","HICOM_NUMBER_SPINNER_STEP_SIZE_ATTRIBUTE_NAME","HICOM_VALIDATION_ERROR_CSS_CLASSNAME","HICOM_REQUIRED_CSS_CLASSNAME","WORDS_PER_MINUTE","FormId","IsSubmitted","$form","constructor","formId","this","$","document","getElementById","addEventListener","e","OnSubmit","BindInputClickEventHandler","getMultiColumnComboBoxIds","getInstance","multiColumnComboBoxIds","Set","find","each","data","add","id","Array","from","SetReadOnly","targetElementIds","forEach","let","element","dataset","hicomRole","querySelectorAll","ele","readOnly","classList","undefined","readonly","setAttribute","closest","addClass","kendoEditor","$editorBody","body","$editorToolbar","toolbar","removeAttr","on","prop","disable","downloadButtons","i","length","input","tags","previousSibling","kendoNumericTextBoxInt","currentValInt","value","setOptions","format","wrapper","kendoNumericTextBox","sliderType","enable","UnsetReadOnly","remove","removeClass","attr","off","removeAttribute","SetDisabled","elementId","getAttribute","disabled","getElementsByName","hiddenInputElement","hiddenInputElementId","countryCodeElement","countryCodeElementId","nationalElement","nationalElementId","flagSelector","parentElement","getElementsByClassName","tabIndex","UnsetDisabled","contains","SetMandatory","label","labels","UnsetMandatory","SetLabelDecoration","targetElementId","labelDecorator","hicomDecorated","PlacementType","LabelDecoration","Prefix","innerHTML","Value","Suffix","Show","HicomFormEditor","CheckWordCount","Hide","SetValue","check","kendoInput","Number","trigger","ResetValue","tagElement","Tagify","removeAllTags","GetValue","FocusOnElement","targetElement","focus","ScrollIntoView","scrollIntoView","behavior","block","SetMinRangeValue","minValue","ClearMinRangeValue","SetMaxRangeValue","maxValue","ClearMaxRangeValue","UseFormHelper","ParseValidators","removeData","validator","unobtrusive","parse","IsValid","validate","valid","ResetValidators","resetForm","empty","Reset","reset","BindChangeHandler","handler","bind","kendoElement","open","SetDirty","SetClean","dirtyForms","formSubmitButtons","setTimeout","trim","HicomTelephone","UpdateValuesForForm","HicomHelper","ClearLastSelectedTabID","hicomPage","Controller","Action","clientValid","UpdateDateTimeOffsetValuesForForm","submitter","createElement","innerText","form","appendChild","preventDefault","console","log","ReadingTimeInMinutes","wordCount","Math","ceil","AutoSentence","control","txt","sentenceCase","toUpperCase","substring","UseModalIsDirtyTracking","that","hasClass","btnSaveModal","type"],"mappings":"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","file":"HicomForm.js","sourcesContent":["/// \n/// \n\n/** Concrete implementation of Hicom Form\n*/\nclass HicomForm implements IHicomForm, IHicomDateTimeRange {\n\n // @ts-ignore\n static DATETIME_FORMAT_STRING: string = HicomConstants.DATETIME_FORMAT_STRING;\n\n // @ts-ignore\n static DATEONLY_FORMAT_STRING: string = HicomConstants.DATEONLY_FORMAT_STRING;\n\n // @ts-ignore\n static HICOM_READONLY_CSS_CLASSNAME: string = HicomConstants.HICOM_READONLY_CSS_CLASSNAME;\n\n // @ts-ignore\n static HICOM_DISABLED_CSS_CLASSNAME: string = HicomConstants.HICOM_DISABLED_CSS_CLASSNAME;\n\n // @ts-ignore\n static HICOM_NUMBER_NUMBER_PRECISION_ATTRIBUTE_NAME: string = HicomConstants.HICOM_NUMBER_NUMBER_PRECISION_ATTRIBUTE_NAME;\n\n // @ts-ignore\n static HICOM_NUMBER_SHOW_SPINNERS_ATTRIBUTE_NAME: string = HicomConstants.HICOM_NUMBER_SHOW_SPINNERS_ATTRIBUTE_NAME;\n\n // @ts-ignore\n static HICOM_NUMBER_SPINNER_STEP_SIZE_ATTRIBUTE_NAME: string = HicomConstants.HICOM_NUMBER_SPINNER_STEP_SIZE_ATTRIBUTE_NAME;\n\n // @ts-ignore\n static HICOM_VALIDATION_ERROR_CSS_CLASSNAME: string = HicomConstants.HICOM_VALIDATION_ERROR_CSS_CLASSNAME;\n\n // @ts-ignore\n static HICOM_REQUIRED_CSS_CLASSNAME: string = HicomConstants.HICOM_REQUIRED_CSS_CLASSNAME;\n\n // @ts-ignore\n static WORDS_PER_MINUTE: number = 200;\n\n FormId: string;\n IsSubmitted: boolean;\n $form: JQuery;\n\n constructor(formId: string) {\n this.FormId = formId;\n this.IsSubmitted = false;\n\n this.$form = $(`#${this.FormId}`);\n\n document.getElementById(this.FormId).addEventListener('submit', e => {\n this.OnSubmit(e);\n });\n\n // Automatically wire up the click event handlers of MCDDL input fields in the form\n this.BindInputClickEventHandler(this.getMultiColumnComboBoxIds());\n }\n\n static getInstance(formId: string): object {\n return document.getElementById(formId);\n }\n\n /**\n * Get Ids of the MultiColumn Combo Boxes which are in the form.\n * @returns Array of IDs \n */\n private getMultiColumnComboBoxIds(): string[] {\n const multiColumnComboBoxIds: Set = new Set(); // Use a Set to store unique IDs\n\n // Find all inputs with the custom attribute within the form\n this.$form.find('[data-hicom-role=\"hicom-multi-column-combo-box\"]').each(function () {\n const comboBox = $(this).data(\"kendoMultiColumnComboBox\");\n if (comboBox) {\n multiColumnComboBoxIds.add(this.id); // Add ID to the Set\n }\n });\n\n return Array.from(multiColumnComboBoxIds); // Convert Set to Array\n }\n\n /** Set read-only status on the targeted element(s)\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n SetReadOnly(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n switch (element.dataset.hicomRole) {\n case 'hicom-checkbox-list':\n case 'hicom-radio-list':\n var elements = element.querySelectorAll('input');\n elements.forEach(ele => {\n ele.readOnly = true;\n ele.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n });\n break;\n\n case 'hicom-dropdown-list':\n $(element).data('kendoDropDownList') != undefined ? $(element).data('kendoDropDownList').readonly(true) : element.setAttribute('readonly', 'true');\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-dropdown-tree':\n $(element).data('kendoDropDownTree') != undefined ? $(element).data('kendoDropDownTree').readonly(true) : element.setAttribute('readonly', 'true');\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n $(element).closest('.k-dropdowntree').addClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-multi-column-combo-box':\n $(element).data('kendoMultiColumnComboBox').readonly(true);\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-toggle':\n // MIGRATION NOTE: Kendo Switch - so jQuery is required in order to interact\n let kendoSwitch = $(element).data('kendoSwitch');\n kendoSwitch.readonly(true);\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-editor':\n // MIGRATION NOTE: Kendo Editor - so jQuery is required in order to interact\n // NO API OPTIONS FOR KENDO EDITOR SO NEED TO DO THIS\n let kendoEditor = $(element).data(\"kendoEditor\");\n let $editorBody = $(kendoEditor.body);\n let $editorToolbar = $(kendoEditor.toolbar);\n $editorBody.removeAttr(\"contenteditable\").find(\"a\").on(\"click.readonly\", false);\n $(kendoEditor.element).prop('readonly', true).addClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n $editorBody.addClass('k-state-disabled').addClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n $editorToolbar.addClass('k-state-disabled').addClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-file-upload':\n case 'hicom-image-file-upload':\n element.readOnly = true;\n // MIGRATION NOTE: Kendo FileUpload - so jQuery is required in order to interact\n let kendoFileUpload = $(element).data('kendoUpload');\n kendoFileUpload.disable();\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-file-list':\n const downloadButtons = element.querySelectorAll(\".hicom-file-upload-button\");\n for (let i = 0; i < downloadButtons.length; i++) {\n downloadButtons[i].setAttribute('disabled', 'disabled');\n }\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-multiselect':\n let kendoMultiSelect = $(element).data('kendoMultiSelect');\n kendoMultiSelect.readonly(true);\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-tag-input':\n let input = document.getElementById(e);\n let tags = document.getElementById(e).previousSibling;\n input.readOnly = true;\n tags.setAttribute('readonly', 'readonly');\n input.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n tags.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-integer':\n let kendoNumericTextBoxInt = $(element).data('kendoNumericTextBox');\n let currentValInt = kendoNumericTextBoxInt.value();\n kendoNumericTextBoxInt.setOptions({ format: \"#\" });\n kendoNumericTextBoxInt.value(currentValInt);\n kendoNumericTextBoxInt.readonly(true);\n kendoNumericTextBoxInt.wrapper.addClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n element.readOnly = true;\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n case 'hicom-decimal':\n let kendoNumericTextBox = $(element).data('kendoNumericTextBox');\n kendoNumericTextBox.readonly(true);\n kendoNumericTextBox.wrapper.addClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n element.readOnly = true;\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n case 'hicom-slider':\n if (element.dataset.sliderType === 'standard') {\n let kendoStandardSlider = $(element).data('kendoSlider');\n kendoStandardSlider.enable(false);\n };\n if (element.dataset.sliderType === 'range') {\n let kendoRangeSlider = $(element).data('kendoSlider');\n kendoRangeSlider.enable(false);\n };\n default:\n element.readOnly = true;\n element.classList.add(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break\n }\n });\n }\n\n /** Unset read-only status on the targeted element(s)\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n UnsetReadOnly(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n switch (element.dataset.hicomRole) {\n case 'hicom-checkbox-list':\n case 'hicom-radio-list':\n var elements = element.querySelectorAll('input');\n elements.forEach(ele => {\n ele.readOnly = false;\n ele.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n });\n break;\n\n case 'hicom-toggle':\n // MIGRATION NOTE: Kendo Switch - so jQuery is required in order to interact\n let kendoSwitch = $(element).data('kendoSwitch');\n kendoSwitch.readonly(false);\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-dropdown-list':\n $(element).data('kendoDropDownList').readonly(false);\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-dropdown-tree':\n $(element).data('kendoDropDownTree').readonly(false);\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n $(element).closest('.k-dropdowntree').removeClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME)\n break;\n\n case 'hicom-editor':\n // MIGRATION NOTE: Kendo Editor - so jQuery is required in order to interact\n // NO API OPTIONS FOR KENDO EDITOR SO NEED TO DO THIS\n let kendoEditor = $(element).data(\"kendoEditor\");\n let $editorBody = $(kendoEditor.body);\n let $editorToolbar = $(kendoEditor.toolbar);\n // @ts-ignore\n $editorBody.attr(\"contenteditable\", true).find(\"a\").off(\"click.readonly\");\n $(kendoEditor.element).prop('readonly', false).removeClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n $editorBody.removeClass('k-state-disabled').removeClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n $editorToolbar.removeClass('k-state-disabled').removeClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-file-upload':\n case 'hicom-image-file-upload':\n element.readOnly = false;\n // MIGRATION NOTE: Kendo FileUpload - so jQuery is required in order to interact\n let kendoFileUpload = $(element).data('kendoUpload');\n kendoFileUpload.enable();\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-file-list':\n const downloadButtons = element.querySelectorAll(\".hicom-file-upload-button\");\n for (let i = 0; i < downloadButtons.length; i++) {\n downloadButtons[i].removeAttribute('disabled');\n }\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-multiselect':\n let kendoMultiSelect = $(element).data('kendoMultiSelect');\n kendoMultiSelect.readonly(false);\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-multi-column-combo-box':\n $(element).data('kendoMultiColumnComboBox').readonly(false);\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break;\n\n case 'hicom-tag-input':\n let input = document.getElementById(e);\n let tags = document.getElementById(e).previousSibling;\n input.readOnly = false;\n tags.removeAttribute('readonly');\n input.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n tags.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n\n case 'hicom-integer':\n let kendoNumericTextBoxInt = $(element).data('kendoNumericTextBox');\n let currentValInt = kendoNumericTextBoxInt.value();\n kendoNumericTextBoxInt.setOptions({ format: \"n0\" });\n kendoNumericTextBoxInt.value(currentValInt);\n kendoNumericTextBoxInt.readonly(false);\n kendoNumericTextBoxInt.wrapper.addClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n case 'hicom-decimal':\n let kendoNumericTextBox = $(element).data('kendoNumericTextBox');\n kendoNumericTextBox.readonly(false);\n kendoNumericTextBox.wrapper.removeClass(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n element.readOnly = false;\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n case 'hicom-slider':\n if (element.dataset.sliderType === 'standard') {\n let kendoStandardSlider = $(element).data('kendoSlider');\n kendoStandardSlider.enable(true);\n };\n if (element.dataset.sliderType === 'range') {\n let kendoRangeSlider = $(element).data('kendoSlider');\n kendoRangeSlider.enable(true);\n };\n default:\n element.readOnly = false;\n element.classList.remove(HicomForm.HICOM_READONLY_CSS_CLASSNAME);\n break\n }\n });\n }\n\n /** Set disabled status on the targeted element(s)\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n SetDisabled(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n let elementId = element.getAttribute('id');\n let elementHicomRole = element.dataset.hicomRole;\n\n switch (elementHicomRole) {\n case 'hicom-checkbox-list':\n case 'hicom-radio-list':\n var elements = element.querySelectorAll('input');\n elements.forEach(ele => {\n ele.disabled = true;\n ele.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n });\n break;\n\n case 'hicom-dropdown-list':\n $(element).data('kendoDropDownList').enable(false);\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-dropdown-tree':\n $(element).data('kendoDropDownTree').enable(false);\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n $(element).closest('.k-dropdowntree').addClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-multi-column-combo-box':\n $(element).data('kendoMultiColumnComboBox').enable(false);\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-toggle':\n // MIGRATION NOTE: Kendo Switch - so jQuery is required in order to interact\n let kendoSwitch = $(element).data('kendoSwitch');\n kendoSwitch.enable(false);\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-editor':\n // MIGRATION NOTE: Kendo Editor - so jQuery is required in order to interact\n // NO API OPTIONS FOR KENDO EDITOR SO NEED TO DO THIS\n let kendoEditor = $(element).data(\"kendoEditor\");\n let $editorBody = $(kendoEditor.body);\n let $editorToolbar = $(kendoEditor.toolbar);\n $editorBody.removeAttr(\"contenteditable\").find(\"a\").on(\"click.readonly\", false);\n $(kendoEditor.element).prop('disabled', true).addClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n $editorBody.addClass('k-state-disabled').addClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n $editorToolbar.addClass('k-state-disabled').addClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n $(kendoEditor.toolbar.element).addClass('k-state-disabled');\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-file-upload':\n case 'hicom-image-file-upload':\n element.disabled = true;\n\n // MIGRATION NOTE: Kendo FileUpload - so jQuery is required in order to interact\n let kendoFileUpload = $(element).data('kendoUpload');\n kendoFileUpload.disable();\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n\n // NEED TO DISABLE INDIVIDUAL FILE(S) AS WELL\n var files = document.getElementsByName(elementId);\n files.forEach(ele => {\n (ele).disabled = true;\n });\n break;\n\n case 'hicom-file-list':\n const downloadButtons = element.querySelectorAll(\".hicom-file-upload-button\");\n for (let i = 0; i < downloadButtons.length; i++) {\n downloadButtons[i].setAttribute('disabled', 'disabled');\n }\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-multiselect':\n let kendoMultiSelect = $(element).data('kendoMultiSelect');\n kendoMultiSelect.enable(false);\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-tag-input':\n let input = document.getElementById(e);\n let tags = document.getElementById(e).previousSibling;\n input.disabled = true;\n tags.setAttribute('disabled', 'disabled');\n input.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n tags.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-telephone':\n // Disable the shadow hidden fields\n let hiddenInputElement = document.getElementById(element.dataset.hiddenInputElementId);\n let countryCodeElement = document.getElementById(element.dataset.countryCodeElementId);\n let nationalElement = document.getElementById(element.dataset.nationalElementId);\n if (hiddenInputElement) hiddenInputElement.disabled = true;\n if (countryCodeElement) countryCodeElement.disabled = true;\n if (nationalElement) nationalElement.disabled = true;\n // Set the flag selector tab index to -1 so it's not selectable\n let flagSelector = element.parentElement.getElementsByClassName('iti__selected-flag')[0];\n if (flagSelector) flagSelector.tabIndex = -1;\n element.disabled = true;\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-integer':\n case 'hicom-decimal':\n let kendoNumericTextBox = $(element).data('kendoNumericTextBox');\n kendoNumericTextBox.enable(false);\n kendoNumericTextBox.wrapper.addClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n element.disabled = true;\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n\n case 'hicom-slider':\n if (element.dataset.sliderType === 'standard') {\n let kendoStandardSlider = $(element).data('kendoSlider');\n kendoStandardSlider.enable(false);\n };\n if (element.dataset.sliderType === 'range') {\n let kendoRangeSlider = $(element).data('kendoSlider');\n kendoRangeSlider.enable(false);\n };\n\n default:\n element.disabled = true;\n element.classList.add(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break\n }\n });\n }\n\n /** Unset disabled status on the targeted element(s)\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n UnsetDisabled(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n let elementId = element.getAttribute('id');\n let elementHicomRole = element.dataset.hicomRole;\n\n switch (elementHicomRole) {\n case 'hicom-checkbox-list':\n case 'hicom-radio-list':\n var elements = element.querySelectorAll('input');\n elements.forEach(ele => {\n ele.disabled = false;\n ele.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n });\n break;\n\n case 'hicom-dropdown-list':\n $(element).data('kendoDropDownList').enable(true);\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-dropdown-tree':\n $(element).data('kendoDropDownTree').enable(true);\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n $(element).closest('.k-dropdowntree').removeClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME)\n break;\n\n case 'hicom-multi-column-combo-box':\n $(element).data('kendoMultiColumnComboBox').enable(true);\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-toggle':\n // MIGRATION NOTE: Kendo Switch - so jQuery is required in order to interact\n let kendoSwitch = $(element).data('kendoSwitch');\n kendoSwitch.enable(true);\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-editor':\n // MIGRATION NOTE: Kendo Editor - so jQuery is required in order to interact\n // NO API OPTIONS FOR KENDO EDITOR SO NEED TO DO THIS\n let kendoEditor = $(element).data(\"kendoEditor\");\n let $editorBody = $(kendoEditor.body);\n let $editorToolbar = $(kendoEditor.toolbar);\n // @ts-ignore\n $editorBody.attr(\"contenteditable\", true).find(\"a\").off(\"click.readonly\");\n $(kendoEditor.element).prop('disabled', false).removeClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n $editorBody.removeClass('k-state-disabled').removeClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n $editorToolbar.removeClass('k-state-disabled').removeClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n $(kendoEditor.toolbar.element).removeClass('k-state-disabled');\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-file-upload':\n case 'hicom-image-file-upload':\n element.disabled = false;\n\n // MIGRATION NOTE: Kendo FileUpload - so jQuery is required in order to interact\n let kendoFileUpload = $(element).data('kendoUpload');\n kendoFileUpload.enable();\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n\n // NEED TO ENABLE INDIVIDUAL FILE(S) AS WELL\n var files = document.getElementsByName(elementId);\n files.forEach(ele => {\n (ele).disabled = false;\n });\n break;\n\n case 'hicom-file-list':\n const downloadButtons = element.querySelectorAll(\".hicom-file-upload-button\");\n for (let i = 0; i < downloadButtons.length; i++) {\n downloadButtons[i].removeAttribute('disabled');\n }\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-multiselect':\n let kendoMultiSelect = $(element).data('kendoMultiSelect');\n kendoMultiSelect.enable(true);\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-tag-input':\n let input = document.getElementById(e);\n let tags = document.getElementById(e).previousSibling;\n input.disabled = false;\n tags.removeAttribute('disabled');\n input.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n tags.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-telephone':\n // Enable the shadow fields\n let hiddenInputElement = document.getElementById(element.dataset.hiddenInputElementId);\n let countryCodeElement = document.getElementById(element.dataset.countryCodeElementId);\n let nationalElement = document.getElementById(element.dataset.nationalElementId);\n if (hiddenInputElement) hiddenInputElement.disabled = false;\n if (countryCodeElement) countryCodeElement.disabled = false;\n if (nationalElement) nationalElement.disabled = false;\n // Reset the flag selector tab index so it's selectable\n let flagSelector = element.parentElement.getElementsByClassName('iti__selected-flag')[0];\n if (flagSelector) flagSelector.tabIndex = 0;\n element.disabled = false;\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break;\n\n case 'hicom-integer':\n case 'hicom-decimal':\n let kendoNumericTextBox = $(element).data('kendoNumericTextBox');\n kendoNumericTextBox.enable(true);\n kendoNumericTextBox.wrapper.removeClass(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n element.disabled = false;\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n\n // IMPORTANT - The Kendo Numeric API leaves the spinner enabled for read-only if the wiget is enabled, so if the Hicom read-only class has been applied re-call the readonly API\n if (element.classList.contains(HicomForm.HICOM_READONLY_CSS_CLASSNAME)) {\n kendoNumericTextBox.readonly(true);\n }\n\n case 'hicom-slider':\n if (element.dataset.sliderType === 'standard') {\n let kendoStandardSlider = $(element).data('kendoSlider');\n kendoStandardSlider.enable(true);\n };\n if (element.dataset.sliderType === 'range') {\n let kendoRangeSlider = $(element).data('kendoSlider');\n kendoRangeSlider.enable(true);\n };\n\n default:\n element.disabled = false;\n element.classList.remove(HicomForm.HICOM_DISABLED_CSS_CLASSNAME);\n break\n }\n });\n }\n\n /** Set mandatory status on the targeted element(s)\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n static SetMandatory(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n let elementHicomRole = element.dataset.hicomRole;\n\n switch (elementHicomRole) {\n default:\n element.classList.add(\"hicom-required\");\n element.classList.add(\"required\");\n\n for (const label of element.labels) {\n label.classList.add(\"hicom-required\");\n label.classList.add(\"required\");\n }\n break;\n }\n });\n }\n\n /** Unset mandatory status on the targeted element(s)\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n static UnsetMandatory(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n let elementHicomRole = element.dataset.hicomRole;\n\n switch (elementHicomRole) {\n default:\n element.classList.remove(\"hicom-required\");\n element.classList.remove(\"required\");\n\n for (const label of element.labels) {\n label.classList.remove(\"hicom-required\");\n label.classList.remove(\"required\");\n }\n break;\n }\n });\n }\n\n /**\n * Set the prefix or suffix to the label(s) of the target element - adds a \"hicom-decorated\" attribute to the label to indicate this has been done so can be called repeatedly without duplication\n * @param targetElementId\n * @param labelDecorator\n */\n static SetLabelDecoration(targetElementId: string, labelDecorator: object): void {\n let element = document.getElementById(targetElementId);\n\n for (const label of element.labels) {\n\n if (!label.dataset.hicomDecorated) {\n\n // @ts-ignore\n switch (labelDecorator.PlacementType) {\n case LabelDecoration.Prefix:\n // @ts-ignore\n label.innerHTML = `${labelDecorator.Value} ${label.innerHTML}`;\n label.dataset.hicomDecorated = \"true\";\n break;\n\n case LabelDecoration.Suffix:\n // @ts-ignore\n label.innerHTML = `${label.innerHTML} ${labelDecorator.Value}`;\n label.dataset.hicomDecorated = \"true\";\n break;\n }\n }\n }\n }\n\n /** Show the targetted element(s)\n * @@param { string[] } targetElementIds - Array of HTML element Ids that will be affected by by the call\n */\n Show(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n\n switch (element.dataset?.hicomRole) {\n case 'hicom-editor':\n // MIGRATION NOTE: Kendo Editor - so jQuery is required in order to interact\n let kendoEditor = $(element).data('kendoEditor');\n kendoEditor.wrapper.removeClass('hidden');\n let hicomEditor = new HicomFormEditor(e);\n hicomEditor.CheckWordCount();\n break;\n\n case 'hicom-label':\n case 'hicom-validation':\n case 'hicom-checkbox-list':\n case 'hicom-radio-list':\n case 'hicom-dropdown-list':\n case 'hicom-dropdown-tree':\n case 'hicom-multi-column-combo-box':\n case 'hicom-toggle':\n case 'hicom-file-upload':\n case 'hicom-tag-input':\n default:\n element.classList.remove(\"hidden\");\n break\n }\n });\n }\n\n /** Hide the targetted element(s)\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be affected by by the call\n */\n Hide(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n\n switch (element.dataset?.hicomRole) {\n case 'hicom-editor':\n // MIGRATION NOTE: Kendo Editor - so jQuery is required in order to interact\n let kendoEditor = $(element).data('kendoEditor');\n kendoEditor.wrapper.addClass('hidden');\n break;\n case 'hicom-label':\n case 'hicom-validation':\n case 'hicom-checkbox-list':\n case 'hicom-radio-list':\n case 'hicom-dropdown-list':\n case 'hicom-dropdown-tree':\n case 'hicom-multi-column-combo-box':\n case 'hicom-toggle':\n case 'hicom-file-upload':\n case 'hicom-tag-input':\n default:\n element.classList.add(\"hidden\");\n break\n }\n });\n }\n\n /** Set the Hicom element value - NEED TO EXPAND THIS AS SCENARIOS DICTATE\n * @@param {string} targetElementId - HTML element Id that will be affected by by the call\n * @@param {T} value - New value\n * - NOTE - Only Hicom HTML editor and Hicom Toggle field types are currently supported - add to this method as more requirements arrive\n */\n static SetValue(targetElementId: string, value: T): void {\n let element = document.getElementById(targetElementId);\n\n switch (element.dataset?.hicomRole) {\n case 'hicom-editor':\n // MIGRATION NOTE: Kendo Editor - so jQuery is required in order to interact\n let kendoEditor = $(element).data('kendoEditor');\n // @ts-ignore\n kendoEditor.value(value);\n break;\n case 'hicom-toggle':\n // MIGRATION NOTE: Kendo Switch - so jQuery is required in order to interact\n let kendoSwitch = $(element).data('kendoSwitch');\n // @ts-ignore\n kendoSwitch.check(value);\n break;\n case 'hicom-integer':\n case 'hicom-decimal':\n let kendoInput = $(element).data(\"kendoNumericTextBox\");\n if (value == null) {\r\n kendoInput.value(null);\n }\n else {\n kendoInput.value(Number(value));\n }\n kendoInput.trigger(\"change\", { value: kendoInput.value() });\n break;\n default:\n // @ts-ignore\n element.value = value;\n break;\n }\n }\n\n /** Reset the Hicom element value to it's default value NEED TO EXPAND THIS AS SCENARIOS DICTATE\n * @@param {string} targetElementId - HTML element Id that will be affected by by the call\n */\n static ResetValue(targetElementId: string): void {\n let element = document.getElementById(targetElementId);\n\n switch (element.dataset?.hicomRole) {\n case 'hicom-editor':\n // MIGRATION NOTE: Kendo Editor - so jQuery is required in order to interact\n let kendoEditor = $(element).data('kendoEditor');\n // @ts-ignore\n kendoEditor.value(null);\n break;\n case 'hicom-toggle':\n // MIGRATION NOTE: Kendo Switch - so jQuery is required in order to interact\n let kendoSwitch = $(element).data('kendoSwitch');\n // @ts-ignore\n kendoSwitch.check(false);\n break;\n case 'hicom-tag-input':\n // MIGRATION NOTE: Tagify input - so jQuery is required in order to interact\n // @ts-ignore\n let tagElement = new Tagify($(element)[0]);\n if (tagElement) {\n tagElement.removeAllTags();\n }\n break;\n default:\n // @ts-ignore\n element.value = null;\n break;\n }\n }\n\n /** Get the Hicom element value - NEED TO EXPAND THIS AS SCENARIOS EVOLVE\n * @@param {string} targetElementId - HTML element Id that will be affected by by the call\n */\n static GetValue(targetElementId: string): T {\n let element = document.getElementById(targetElementId);\n\n switch (element.dataset?.hicomRole) {\n case 'hicom-editor':\n // MIGRATION NOTE: Kendo Editor - so jQuery is required in order to interact\n let kendoEditor = $(element).data('kendoEditor');\n return kendoEditor.value() as unknown as T;\n\n case 'hicom-toggle':\n // MIGRATION NOTE: Kendo Switch - so jQuery is required in order to interact\n let kendoSwitch = $(element).data('kendoSwitch');\n return kendoSwitch.check() as unknown as T;\n\n case 'hicom-dropdown-list':\n // MIGRATION NOTE: Kendo Drop Down List - so jQuery is required in order to interact\n let kendoDropDownList = $(element).data('kendoDropDownList');\n return kendoDropDownList.value() as unknown as T;\n\n case 'hicom-dropdown-tree':\n // MIGRATION NOTE: Kendo Drop Down List - so jQuery is required in order to interact\n let kendoDropDownTree = $(element).data('kendoDropDownTree');\n return kendoDropDownTree.value() as unknown as T;\n break;\n\n case 'multicolumncombobox':\n // MIGRATION NOTE: Kendo Multicolumn Combo Box - so jQuery is required in order to interact\n let kendoMultiColumnComboBox = $(element).data('kendoMultiColumnComboBox');\n return kendoMultiColumnComboBox.value() as unknown as T;\n\n default:\n let inputElement = element;\n if (inputElement) {\n return inputElement.value as unknown as T;\n }\n break;\n }\n return null;\n }\n\n /** Static method to focus on targeted element within the form\n * @@param {HTMLElement} targetElement - HTML element Ids that will be affected by the call\n */\n static FocusOnElement(targetElement: HTMLElement): void {\n const hicomRole = targetElement.dataset?.hicomRole;\n\n switch (hicomRole) {\n // For file upload, focus on wrapper to avoid triggering Kendo file upload\n case 'hicom-file-upload':\n const fileUploadWrapper = targetElement.closest('div.hicom-file-upload-wrapper');\n fileUploadWrapper.focus();\n break;\n\n default:\n targetElement.focus();\n break;\n }\n }\n\n /** Scroll the targeted element into view\n * */\n static ScrollIntoView(targetElement: HTMLElement): void {\n targetElement.scrollIntoView({ behavior: \"smooth\", block: \"end\" });\n }\n\n /** Set the 'min' attribute on the targeted element(s) - for datetime-local, date and time only\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n SetMinRangeValue(targetElementIds: string[], minValue: any): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n\n switch (element.dataset.hicomRole) {\n case 'hicom-datetime':\n case 'hicom-datetimeoffset':\n case 'hicom-dateonly':\n case 'hicom-timeonly':\n element.setAttribute('min', minValue);\n break;\n }\n });\n }\n\n /** Clear the 'min' attribute on the targeted element(s) - for datetime-local, date and time only\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n ClearMinRangeValue(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n\n switch (element.dataset.hicomRole) {\n case 'hicom-datetime':\n case 'hicom-datetimeoffset':\n case 'hicom-dateonly':\n case 'hicom-timeonly':\n element.removeAttribute(\"min\");\n break;\n }\n });\n }\n\n /** Set the 'max' attribute on the targeted element(s) - for datetime-local, date and time only\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n SetMaxRangeValue(targetElementIds: string[], maxValue: any): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n\n switch (element.dataset.hicomRole) {\n case 'hicom-datetime':\n case 'hicom-datetimeoffset':\n case 'hicom-dateonly':\n case 'hicom-timeonly':\n element.setAttribute('max', maxValue);\n break;\n }\n });\n }\n\n /** Clear the 'max' attribute on the targeted element(s) - for datetime-local, date and time only\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n ClearMaxRangeValue(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n\n switch (element.dataset.hicomRole) {\n case 'hicom-datetime':\n case 'hicom-datetimeoffset':\n case 'hicom-dateonly':\n case 'hicom-timeonly':\n element.removeAttribute(\"max\");\n break;\n }\n });\n }\n\n /** Use the form helper component on this form\n */\n UseFormHelper(): object {\n // @ts-ignore\n this.$form.UseFormHelper();\n\n return this;\n }\n\n /** Parse the jQuery unobtrusive validators on the this form\n */\n ParseValidators(): object {\n this.$form.removeData(\"validator\");\n this.$form.removeData(\"unobtrusiveValidation\");\n\n // @ts-ignore\n $.validator.unobtrusive.parse(this.$form);\n\n return this;\n }\n\n /** Do all the jQuery validators pass?\n */\n IsValid(): boolean {\n // @ts-ignore\n this.$form.validate();\n\n // @ts-ignore\n return this.$form.valid();\n }\n\n /** Reset all the jQuery validators\n */\n ResetValidators(): object {\n // @ts-ignore\n this.$form.validate().resetForm();\n this.$form.find(\"[data-valmsg-replace]\").removeClass(\"field-validation-error\").addClass(\"field-validation-valid\").empty();\n\n return this;\n }\n\n /** Reset HTML form\n */\n Reset(): void {\n // @ts-ignore\n this.$form.reset();\n }\n\n /** Bind a change handler to the Hicom field\n * - NOTE - Only Hicom Toggle, Hicom Single Select Drop Down List and Hicom Multi Column Drop Down List field types are currently supported - add to this method as more requirements arrive but general pattern is attach 'change' handler to inner element\n */\n BindChangeHandler(targetElementId: string, handler: Function): void {\n let element = document.getElementById(targetElementId);\n\n switch (element.dataset?.hicomRole) {\n\n case 'hicom-toggle':\n $(element).data('kendoSwitch').bind(\"change\", handler);\n break;\n\n case 'hicom-dropdown-list':\n $(element).data('kendoDropDownList').bind(\"change\", handler);\n break;\n\n //case 'hicom-dropdown-tree':\n // $(element).data('kendoDropDownTree').bind(\"change\", handler);\n // break;\n\n case 'hicom-multi-column-combo-box':\n $(element).data('kendoMultiColumnComboBox').bind(\"change\", handler);\n break;\n\n case 'hicom-editor':\n $(element).data('kendoEditor').bind(\"change\", handler);\n break;\n }\n }\n\n /**\n * Bind input element handler to the Hicom field\n * NOTE: Only Hicom Multi Column Combo Box field type needs this manual wiring up for the input field to be clickable currently.\n * @@param {string[]} targetElementIds - Array of HTML element Ids that will be effected by by the call\n */\n BindInputClickEventHandler(targetElementIds: string[]): void {\n targetElementIds.forEach(e => {\n let element = document.getElementById(e);\n\n switch (element.dataset?.hicomRole) {\n case 'hicom-multi-column-combo-box':\n let kendoElement = $(element).data('kendoMultiColumnComboBox');\n kendoElement.input.on('click', function () {\n\n // If the element is readonly, then do not show the dropdown.\n // NOTE: Do not need to do the same for disable attribute since it is disabling the element entirely.\n if (!kendoElement.input.prop('readonly')) {\n kendoElement.open();\n }\n });\n break;\n }\n });\n }\n\n /** Mark form as dirty\n */\n SetDirty(): void {\n // @ts-ignore\n this.$form.addClass('dirty');\n }\n\n /** Mark form as clean\n */\n SetClean(): void {\n // @ts-ignore\n this.$form.dirtyForms('setClean');\n }\n\n /** Called when a form is submitted\n */\n OnSubmit(e): boolean {\n let formSubmitButtons = this.$form.find('button[type=\"submit\"]');\n\n // https://stackoverflow.com/a/20112593\n setTimeout(() => { formSubmitButtons.attr('disabled', 'true') }, 50);\n\n // Remove leading and trailing spaces from all inputs and textareas where they have the data attribute data-hicom-remove-leading-and-trailing-spaces=\"true\"\n let inputsToTrim = document.querySelectorAll(\"input[data-hicom-remove-leading-and-trailing-spaces=\\\"true\\\"]\");\n\n inputsToTrim.forEach((element) => element.value = element.value.trim());\n\n //Trim the text areas if they have the data attribute data-hicom-remove-leading-and-trailing-spaces=\"true\"\n let textAreasToTrim = document.querySelectorAll(\"textarea[data-hicom-remove-leading-and-trailing-spaces=\\\"true\\\"]\");\n\n textAreasToTrim.forEach((element) => element.value = element.value.trim());\n\n // TODO: Include 'https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/intl-tel-input/index.d.ts' so we can define here?\n // @ts-ignore\n HicomTelephone.UpdateValuesForForm(this.FormId);\n\n // @ts-ignore\n HicomHelper.ClearLastSelectedTabID(hicomPage.Controller, hicomPage.Action);\n\n // TODO Disable UI with loading splash screen to prevent multiple submits by user clicking the same button\n\n // The following code may negate the need to TODO outline above but left TODO comment in for now\n\n // @ts-ignore\n let clientValid = this.$form.valid();\n\n if (clientValid && !this.IsSubmitted) {\n // No issue with clientside validation\n // Submit \n this.IsSubmitted = true;\n\n // @ts-ignore\n HicomHelper.UpdateDateTimeOffsetValuesForForm(this.FormId);\n\n // attach the submittor text for the audit\n let submitter = e.submitter;\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", \"_auditTrigger\");\n input.setAttribute(\"value\", submitter.innerText.trim());\n\n //append to form element\n submitter.form.appendChild(input);\n\n return true;\n }\n else {\n // Don't submit\n if (e.preventDefault) e.preventDefault();\n // Make sure to reenable buttons with timeout so the disabling above has time to take effect\n setTimeout(() => { formSubmitButtons.removeAttr('disabled') }, 50);\n console.log('this.IsSubmitted:' + this.IsSubmitted);\n // You must return false to prevent the default form behaviour\n return false;\n\n }\n }\n\n /**\n * Calculates the estimated to to read an amount of words\n * Average words read per minute is in the region of 200 to 250\n * Using the lower estimate to cater for all most reading ability\n * Math.ceil rounds up to avoid any amount of words being zero minutes\n * @param wordCount\n */\n ReadingTimeInMinutes(wordCount: number): number {\n\n if (wordCount == null || wordCount == 0) {\n return 0;\n }\n\n return Math.ceil(wordCount / HicomForm.WORDS_PER_MINUTE);\n }\n\n AutoSentence(control: HTMLInputElement): void {\n var txt = control.value;\n var sentenceCase = txt[0].toUpperCase() + txt.substring(1);\n control.value = sentenceCase;\n }\n\n /** Scroll the element into view\n * */\n ScrollIntoView(targetElement: HTMLElement): void {\n targetElement.scrollIntoView({ behavior: 'smooth' });\n }\n\n /**\n * Set form to use modal popup is dirty tracking (against the '_HicomGridModalDialogButtonsTemplatePartial' template)\n */\n UseModalIsDirtyTracking(): object {\n let that = this;\n\n // If this isn't a '.disable-dynamic-save-button' form:\n if (!that.$form.hasClass('disable-dynamic-save-button')) {\n const btnSaveModal = that.$form.find('#btnSaveModal');\n\n if (btnSaveModal) {\n // Set btnSaveModal to disabled by default\n btnSaveModal.attr('disabled', 'disabled').addClass('red').removeClass('green');\n\n // Subscribe to dirty forms events to dynamically enable/disable btnSaveModal\n that.$form.off().on('dirty.dirtyforms clean.dirtyforms', function (e) {\n if (e.type === 'dirty') {\n btnSaveModal.removeAttr('disabled').removeClass('red').addClass('green');\n } else {\n btnSaveModal.attr('disabled', 'disabled').addClass('red').removeClass('green');\n }\n });\n }\n }\n\n // @ts-ignore\n that.$form.dirtyForms();\n that.SetClean();\n\n return that;\n }\n}"]}