-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathsmart.form.js
6 lines (4 loc) · 44 KB
/
smart.form.js
1
2
3
4
5
6
/* Smart UI v15.2.0 (2023-04-20)
Copyright (c) 2011-2023 jQWidgets.
License: https://htmlelements.com/license/ */ //
(()=>{class e{constructor(e=null){const t=this;t._parent=null,t._updating=!1,t._touched=!1,t._pristine=!0,t._disabled=!1,t.status="valid",t._onChange=[],t.registerOnChange((e=>{t.writeValue(e)})),t._applyFormState(e)}registerOnChange(e){this._onChange.push(e)}get parent(){return this._parent}set parent(e){this._parent=e}get valid(){return"valid"===this.status}get invalid(){return"invalid"===this.status}get dirty(){return!this._pristine}get untouched(){return!this._touched}get disabled(){return this._disabled}get enabled(){return!1===this._disabled}get value(){const e=this;return e._value&&"object"==typeof e._value&&e._value.toDate?e._value.toDate():e._value}set value(e){this.setValue(e)}setValue(e,t={}){const n=this;n._value=n._pendingValue=e,n._onChange.length&&!1!==t.emitModelToViewChange&&n._onChange.forEach((e=>e(n.value,!1!==t.emitViewToModelChange))),n.updateValueAndValidate(t)}patchValue(e,t={}){this.setValue(e,t)}reset(e=null,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1}_isBoxedValue(e){return"object"==typeof e&&null!==e&&2===Object.keys(e).length&&"value"in e&&"disabled"in e}_applyFormState(e){this._isBoxedValue(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this._value=this._pendingValue=e}_runValidator(){return this._validate()}_validate(){return null}updateValueAndValidate(e={}){const t=this;t._setInitialStatus(),t._updateValue(),t.enabled&&(t.errors=t._runValidator(),t.status=t._calculateStatus()),!1!==e.emitEvent&&(t.onValueChanges&&t.onValueChanges(t.value),t.onStatusChanges&&t.onStatusChanges(t.status)),t._onValueAndStatusUpdate&&t._onValueAndStatusUpdate(),t._parent&&!e.onlySelf&&t._parent.updateValueAndValidate(e),t.tabItem&&(t.tabItem.tab.classList.remove("smart-invalid"),t.tabItem.row.classList.remove("smart-invalid"),t.tabItem.tab.classList.remove("smart-valid"),t.tabItem.row.classList.remove("smart-valid"),"invalid"===t.status?(t.tabItem.tab.classList.add("smart-invalid"),t.tabItem.row.classList.add("smart-invalid"),t.tabItem.tab.classList.contains("selected")&&(t.nextButton.disabled=!0,t.backButton.disabled=!0)):(t.tabItem.tab.classList.add("smart-valid"),t.tabItem.row.classList.add("smart-valid"),t.tabItem.tab.classList.contains("selected")&&(t.nextButton.disabled=!1,t.backButton.disabled=!1)))}_setInitialStatus(){this.status=this._allControlsDisabled()?"disabled":"valid"}_updateValue(){}_allControlsDisabled(){return this._allControls("disabled")}_allControls(e){return this[e]}_anyControls(e){return this[e]}_anyControlsTouched(){return this._anyControls((e=>e.touched))}_calculateStatus(){const e=this;return e._allControls("disabled")?"disabled":e.errors?"invalid":e._anyControls("pending")?"pending":e._anyControls("invalid")?"invalid":"valid"}markAsUntouched(e={}){this._touched=!1,this._forEachChild((e=>{e.markAsUntouched({onlySelf:!0})})),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)}markAsTouched(e={}){this._touched=!0,this._parent&&!e.onlySelf&&this._parent.markAsTouched(e)}_updateTouched(e={}){this._touched=this._anyControlsTouched(),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)}markAsPristine(e={}){this._pristine=!0,this._forEachChild((e=>{e.markAsPristine({onlySelf:!0})})),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)}markAsDirty(e={}){this._pristine=!1,this._parent&&!e.onlySelf&&this._parent.markAsDirty(e)}_updatePristine(e={}){const t=this;t._pristine=!this._anyControls("dirty"),t._parent&&t._parent._updatePristine(e)}_parentMarkedDirty(e){const t=this._parent&&this._parent.dirty;return!e&&t&&!this._parent._anyControlsDirty()}_forEachChild(){}disable(e={}){const t=this,n=t._parentMarkedDirty(e.onlySelf);t.status="disabled",t.errors=null,t._disabled=!0,t._forEachChild((t=>{t.disable(Object.assign({},e,{onlySelf:!0}))})),t._updateValue(),!1!==e.emitEvent&&(t.onValueChanges&&t.onValueChanges(this.value),t.onStatusChanges&&t.onStatusChanges(this.status)),t._updateAncestors(Object.assign({},e,{skipPristineCheck:n}))}enable(e={}){const t=this,n=this._parentMarkedDirty(e.onlySelf);t.status="valid",t._forEachChild((t=>{t.enable(Object.assign({},e,{onlySelf:!0}))})),t.updateValueAndValidate({onlySelf:!0,emitEvent:e.emitEvent}),t._updateAncestors(Object.assign({},e,{skipPristineCheck:n}))}_updateAncestors(e){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidate(e),e.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}}Smart("smart-form-control",class extends Smart.BaseElement{static get properties(){return{action:{value:"",type:"string"},controlType:{value:"input",type:"string"},columnSpan:{value:1,type:"number?"},dataSource:{value:null,type:"array"},dataField:{value:"",type:"string"},disabled:{value:!1,type:"boolean"},hint:{value:"",type:"string"},info:{value:"",type:"string"},label:{value:"",type:"string"},labelPosition:{value:"left",type:"string"},mask:{value:"",type:"string"},min:{value:0,type:"number"},max:{value:999999,type:"number"},minLength:{value:0,type:"number"},maxLength:{value:999999,type:"number"},placeholder:{value:"",type:"string"},readonly:{value:!1,type:"boolean"},required:{value:!1,type:"boolean"},validationRules:{value:[],type:"any"},value:{value:"",type:"any"}}}template(){return'<div id="control"></div>'}propertyChangedHandler(e,t,n){const o=this;let a=o.parentElement;for(;a;){if("Smart-FORM"===a.nodeName){a.getControl(o.controlOptions.dataField)[e]=n;break}a=a.parentElement}o.controlOptions[e]=n}render(){super.render()}get controlOptions(){const e=this;if(!e._controlOptions&&e._properties){let t={},n={};for(let o in e._properties)if(e._properties[o].value!==e._properties[o].defaultValue){switch(o){case"mask":case"min":case"max":case"dataSource":case"minLength":case"maxLength":n[o]=e._properties[o].value}t[o]=e._properties[o].value}t.controlOptions=n,e.classList.remove("smart-element"),e.classList.remove("smart-form-control"),t.cssClass=e.className,"template"===t.controlType&&(t.template=e.innerHTML,e.innerHTML=""),t.custom=!0,e._controlOptions=t}return e._controlOptions}});class t extends e{constructor(e,t,n){super(t,n);const o=this;if(o.element=e,o._initProps(n),n.custom)o._setupCustomInput();else{const n=o.element.parentElement;o.input=e,o.input.value=t,o.labelElement=o.element.parentElement.querySelector("label"),o.label=o.labelElement?o.labelElement.innerHTML.trim():"",o.element=document.createElement("div"),o.element.setAttribute("form-control-name",o.input.getAttribute("form-control-name")),o.element.appendChild(o.input),n.appendChild(o.element)}o.element.classList.add("smart-untouched"),o.element.classList.add("smart-pristine"),o.element.classList.add("smart-form-control"),o._disabled=void 0!==o.input.disabled&&o.input.disabled,void 0!==n.disabled&&(o._disabled=n.disabled,this.element.disabled=n.disabled,this.input.disabled=n.disabled),o._setupInput(),o.updateValueAndValidate(),o._onValueAndStatusUpdate=()=>{o.element&&(o.element.classList.remove("smart-valid"),o.element.classList.remove("smart-invalid"),o.element.classList.add("smart-"+o.status))},"submit"!==o._controlType&&"button"!==o._controlType&&"reset"!==o._controlType||(o.input.name=""),o.refresh()}_initProps(e){const t=this;if(Object.keys(e).forEach((n=>{t["_"+n]=e[n]})),t.name||(t.name=e.name),!t.name){const e=t.element.nodeName.toLowerCase()+Smart.Utilities.Core.createGUID();t.name=e.replace(/-/gi,"")}t._validationRules||(t._validationRules=[]),t._readonly||(t._readonly=!1),t._controlType||(t._controlType="text"),t._labelPosition||(t._labelPosition="left"),t._label||(t._label=""),t._hint||(t._hint=""),t._controlOptions||(t._controlOptions={}),t._info||(t._info=""),t._placeholder&&(t._controlOptions.placeholder=t._placeholder,t._controlOptions.hint=t._placeholder,t._hint&&(t._controlOptions.hint=t._hint)),t._columnSpan||(t._columnSpan=1)}_setupCustomInput(){const e=this;let t=e.element,n=null;switch(e._controlType){case"submit":case"button":Smart.Button?n=document.createElement("smart-button"):(n=document.createElement("button"),n.classList.add("smart-button"),n.innerHTML=e._label||""),n.type=e._controlType,n.innerHTML=e._label||"","submit"===e._action&&(n.type="submit"),"submit"===n.type&&(e._action="submit"),e._action&&(n.onclick=()=>{switch(e._action){case"reset":e.root&&e.root.reset();break;case"submit":e.root&&e.root.submit()}});break;case"boolean":case"bool":case"checkBox":case"checkbox":case"radio":case"radioButton":case"option":{n=document.createElement("div");const t="checkbox"!==e._controlType.toLowerCase()&&"boolean"!==e._controlType&&"bool"!==e._controlType,o=o=>{const a=document.createElement("div"),r="string"==typeof o?o:o.label||o.value,l="string"==typeof o?"":o.value||"";let s=document.createElement("input");if(a.classList.add("smart-form-option"),Smart.RadioButton&&Smart.CheckBox)s=t?document.createElement("smart-radio-button"):document.createElement("smart-check-box"),s.value=l,s.innerHTML=r,s.name=e.name,s.groupName=e.name,a.appendChild(s);else{const n=document.createElement("span");n.innerHTML=r,s.value=l,s.type=t?"radio":"checkbox",s.name=e.name,n.onpointerdown=()=>{s.click()},a.appendChild(s),a.appendChild(n)}n.appendChild(a)};if(e._options)for(let t=0;t<e._options.length;t++){o(e._options[t])}else o(e.label);"horizontal"===e._optionsLayout&&n.classList.add("smart-form-options-horizontal");break}case"textArea":case"textarea":Smart.TextArea?(n=document.createElement("smart-text-area"),n.dropDownAppendTo="body"):(n=document.createElement("textarea"),n.classList.add("smart-input"));break;case"text":case"input":Smart.Input?(n=document.createElement("smart-input"),n.dropDownAppendTo="body"):(n=document.createElement("input"),n.classList.add("smart-input"));break;case"mask":if(!Smart.MaskedTextBox){n=document.createElement("input"),n.classList.add("smart-input");break}n=document.createElement("smart-masked-text-box");break;case"date":case"time":case"datetime":if(Smart.DateTimePicker)n=document.createElement("smart-date-time-picker"),n.calendarButton=!0,"datetime"===e._controlType?(n.formatString="F",n.dropDownDisplayMode="default"):"date"===e._controlType?(n.formatString="d",n.dropDownDisplayMode="calendar"):"time"===e._controlType&&(n.formatString="T",n.dropDownDisplayMode="timePicker"),n.dropDownAppendTo="body";else{if(!Smart.DateRangeInput){n=document.createElement("input"),n.classList.add("smart-input"),n.type="date";break}n=document.createElement("smart-date-range-input"),n.dropDownAppendTo="body"}break;case"numericTextBox":case"numberinput":case"numberInput":case"numeric":case"number":if(Smart.NumberInput)n=document.createElement("smart-number-input"),n.spinButtons=!0;else{if(!Smart.NumericTextBox){n=document.createElement("input"),n.type="number",n.classList.add("smart-input");break}n=document.createElement("smart-numeric-text-box"),n.spinButtons=!0}break;case"password":case"passwordTextBox":case"passwordInput":case"passwordinput":if(Smart.PasswordInput)n=document.createElement("smart-password-input");else{if(!Smart.PasswordTextBox){n=document.createElement("input"),n.type="password",n.classList.add("smart-input");break}n=document.createElement("smart-password-text-box")}break;case"checkInput":case"checkinput":n=document.createElement("smart-check-input"),n.dropDownAppendTo="body";break;case"multiInput":case"multiinput":n=document.createElement("smart-multi-input"),n.dropDownAppendTo="body";break;case"multiComboInput":case"multicomboinput":n=document.createElement("smart-multi-combo-input"),n.dropDownAppendTo="body";break;case"comboBox":case"combobox":n=document.createElement("smart-drop-down-list"),n.dropDownAppendTo="body";break;case"dropDownList":case"dropdownlist":n=document.createElement("smart-drop-down-list"),n.dropDownAppendTo="body";break;case"template":{n=document.createElement("div");let t=e._template;t||(t=e._value),void 0===t&&(t=""),n.innerHTML='<div class="smart-form-template">'+t+"</div>";break}case"label":n=document.createElement("label"),n.innerHTML=e.label}n.setAttribute("editor",e._controlType);for(let t in e._controlOptions)n[t]=e._controlOptions[t];e.input=n,this.value&&this.writeValue(this.value),t.appendChild(n)}_setupInput(){const e=this,t=e.onTouched.bind(e),n=e.onChange.bind(e),o=()=>{if(!e._attached){if(e.input.addEventListener("blur",t),e.input.addEventListener("change",n),"INPUT"===e.input.nodeName?e.input.addEventListener("keyup",n):e.input.querySelector("input")&&e.input.querySelector("input").addEventListener("keyup",n),e.input instanceof HTMLDivElement){const o=e.input.querySelectorAll("input"),a=e.input.querySelectorAll("smart-radio-button"),r=e.input.querySelectorAll("smart-check-box"),l=e.input.querySelectorAll("smart-switch-button");for(let e=0;e<a.length;e++)a[e].addEventListener("blur",t);for(let e=0;e<r.length;e++)r[e].addEventListener("blur",t);for(let e=0;e<l.length;e++)l[e].addEventListener("blur",t);for(let e=0;e<o.length;e++)o[e].addEventListener("blur",t),o[e].addEventListener("change",n)}e._attached=!0}};if(e.input.whenRendered?e.input.whenRendered((()=>{o()})):o(),e.input.onAttached=()=>{o()},e.input.onDetached=()=>{if(e.input.removeEventListener("blur",t),e.input.removeEventListener("change",n),"INPUT"===e.input.nodeName?e.input.removeEventListener("keyup",n):e.input.querySelector("input")&&e.input.querySelector("input").removeEventListener("keyup",n),e.input instanceof HTMLDivElement){const o=e.input.querySelectorAll("input"),a=e.input.querySelectorAll("smart-radio-button"),r=e.input.querySelectorAll("smart-check-box"),l=e.input.querySelectorAll("smart-switch-button");for(let e=0;e<a.length;e++)a[e].removeEventListener("blur",t);for(let e=0;e<r.length;e++)r[e].removeEventListener("blur",t);for(let e=0;e<l.length;e++)l[e].removeEventListener("blur",t);for(let e=0;e<o.length;e++)o[e].removeEventListener("blur",t),o[e].removeEventListener("change",n)}e._attached=!1},e.element.name=e.name,e.input.name=e.element.name,e.input instanceof HTMLDivElement){const t=e.input.querySelectorAll("input");for(let n=0;n<t.length;n++)t[n].name=e.name}if(e.input.setAttribute("name",e.input.name),!e.input.id)if(document.getElementById(e.name)){const t=e.name+"_"+Smart.Utilities.Core.createGUID();e.input.id=t.replace(/-/gi,"")}else e.input.id=e.name;e.input.classList.add("smart-form-editor")}get root(){let e=this;for(;e.parent;)e=e.parent;return e}get prepend(){return this._prepend}get append(){return this._append}get columnSpan(){return this._columnSpan}set columnSpan(e){const t=this;t._columnSpan=e,t._parent&&t._parent.refresh()}get cssClass(){return this._cssClass}set cssClass(e){const t=this;t.input.classList.remove(t.cssClass),t._cssClass=e,t.input.classList.add(t.cssClass)}get required(){return this._required}get controlType(){return this._controlType}get validationRules(){return this._validationRules}set validationRules(e){this._validationRules=e,this.refresh()}get readonly(){return this._readonly}set readonly(e){const t=this;t._readonly=e,t.element&&(e?(t.labelElement&&t.labelElement.setAttribute("readonly",""),t.element.setAttribute("readonly","")):(t.element.removeAttribute("readonly"),t.labelElement&&t.labelElement.removeAttribute("readonly")))}get label(){return this._label}set label(e){this._label=e,this.refresh()}get labelPosition(){return this._labelPosition}set labelPosition(e){this._labelPosition=e,this.refresh()}get hint(){return this._hint}set hint(e){this._hint=e,this.refresh()}get info(){return this._info}set info(e){this._info=e,this.refresh()}refresh(){const e=this;if(e.infoElement&&e.infoElement.remove(),e.appendElement&&e.appendElement.remove(),e.prependElement&&e.prependElement.remove(),e.cssClass)if(e.cssClass.indexOf(" ")>=0){const t=e.cssClass.split(" ");for(let n=0;n<t.length;n++)e.input.classList.add(t[n])}else e.input.classList.add(e.cssClass);if("blank"!==e.controlType&&"separator"!==e.controlType&&"label"!==e.controlType&&"boolean"!==e.controlType&&"radio"!==e.controlType&&"checkBox"!==e.controlType&&"checkbox"!==e.controlType){if(e._align&&(e.element.classList.remove("left"),e.element.classList.remove("center"),e.element.classList.remove("right"),e.element.classList.add(e._align)),e.infoElement=document.createElement("div"),e.infoElementInner=document.createElement("span"),e.infoElementInner.classList.add("smart-grid-icon","smart-form-control-icon","smart-icon-help-circled","show","smart-visibility-hidden"),e.infoElementInner.setAttribute("tooltip",e.info),e.infoElement.appendChild(e.infoElementInner),e.appendElement=document.createElement("div"),e.appendElement.classList.add("smart-form-control-addon"),e.prependElement=document.createElement("div"),e.prependElement.classList.add("smart-form-control-addon"),e.info&&(e.infoElementInner.classList.remove("smart-hidden"),e.infoElementInner.classList.remove("smart-visibility-hidden")),e.append&&(e.appendElement.innerHTML="<span>"+e.append+"</span>",e.element.appendChild(e.appendElement)),e.prepend&&(e.prependElement.innerHTML="<span>"+e.prepend+"</span>",e.element.insertBefore(e.prependElement,e.input)),e.element.appendChild(e.infoElement),e.label&&"button"!==e.controlType&&"submit"!==e.controlType){const t=e.labelElement?e.labelElement:document.createElement("label");t.classList.add("smart-form-control-label"),t.setAttribute("for",e.input.id),(e.validationRules.length>0||e.required)&&t.setAttribute("required",""),t.innerHTML=e.label,e.labelElement=t}e.parent&&e.parent.refresh()}}writeValue(e){this._setControlValue(e)}_isDropDownList(){const e=this;if(!e.input)return!1;const t="Smart-DROP-DOWN-LIST".toUpperCase(),n="Smart-COMBO-BOX".toUpperCase();return e.input.nodeName===n||e.input.nodeName===t}_setControlValue(e){const t=this;if(t._updating=!0,null===e)return t.input.selectedValues&&(t.input.selectedValues=[]),t.input.selectedDates&&(t.input.selectedDates=[]),void 0!==t.input.checked&&(t.input.checked=!1),t.input.value="",void(t._updating=!1);if(t.input.selectedValues&&t._isDropDownList())return Array.isArray(e)?t.input.selectedValues=e:t.input.selectedValues=[e],void(t._updating=!1);if(t.input.selectedDates)return Array.isArray(e)?t.input.selectedDates=e:t.input.selectedDates=[e],void(t._updating=!1);if(void 0!==t.input.checked){""===e&&(e=null);const n="string"==typeof e?"true"===e:e;t.input.checked=n}if(t.input instanceof HTMLDivElement){const n=t.input.querySelectorAll("input"),o=t.input.querySelectorAll("smart-radio-button"),a=t.input.querySelectorAll("smart-check-box"),r=t.input.querySelector(".smart-form-image-template"),l=t.input.querySelector(".smart-form-template");(t=>{for(let n=0;n<t.length;n++){const o=t[n];"string"==typeof e?o.value===e?o.checked=!0:o.checked=!1:Array.isArray(e)?e.indexOf(o.value)>=0?o.checked=!0:o.checked=!1:"boolean"==typeof e&&(o.checked=e)}})(o.length>0?o:a.length>0?a:n),r?r.innerHTML='<img src="'+e+'"/>':l&&(l.innerHTML=e)}t.input.value=e,t._updating=!1}_getControlValue(){const e=this,t=void 0!==e.input.selectedValues?"selectedValues":void 0!==e.input.selectedDates?"selectedDates":null;if(t)return e.input[t].length>1&&e._isDropDownList()?e.input.selectedValues:1===e.input[t].length?void 0!==e.input.selectedDates?e.input.selectedDates[0].toDate():e._isDropDownList()?e.input.selectedValues[0]:e.input.querySelector("input")?e.input.querySelector("input").value:null:e.input.querySelector("input")?e.input.querySelector("input").value:null;if(void 0!==e.input.checked&&this.input.nodeName.toLowerCase().startsWith("smart"))return e.input.checked;if(e.input instanceof HTMLDivElement){const t=e.input.querySelectorAll("input"),n=e.input.querySelectorAll("smart-radio-button"),o=e.input.querySelectorAll("smart-check-box");return(e=>{let t=[];for(let n=0;n<e.length;n++){const o=e[n];""===o.value&&o.checked?t.push(!0):""===o.value&&!1===o.checked?t.push(!1):o.checked&&t.push(o.value)}return 1===t.length?t[0]:0===t.length?"":t})(n.length>0?n:o.length>0?o:t)}return e.input.value}reset(){const e=this;super.reset(),e.element.classList.remove("smart-untouched"),e.element.classList.remove("smart-touched"),e.element.classList.remove("smart-dirty"),e.element.classList.remove("smart-pristine"),e.element.classList.remove("smart-valid"),e.element.classList.remove("smart-invalid")}onTouched(){const e=this;e._updating||(e.element.classList.remove("smart-untouched"),e.element.classList.add("smart-touched"),e.element.touched=!0,e.markAsTouched(),e.updateValueAndValidate())}onChange(){const e=this;e._updating||setTimeout((()=>{e.element.classList.remove("smart-pristine"),e.element.classList.add("smart-dirty"),e.element.pristine=!1,e._pristine=!1,e._pendingValue=e._getControlValue(),e._pendingChange=!0,e._pendingDirty=!0,e.updateControl(e)}))}updateControl(e){e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),e._pendingChange=!1}_validate(){const e=this,t=e.input;e.form&&e.form.validator&&(e.form.isInitialized||!e.form.isInitialized&&e.form.validateOnLoad)&&e.form.validator.validate(null,"#"+t.id);const n={};let o=!1;for(let e in t.errors)!0===t.errors[e]&&(n[e]=!0,o=!0);return o?n:null}disable(){super.disable(),this.element.disabled=!0,this.input.disabled=!0}enable(){super.enable(),this.element.disabled=!1,this.input.disabled=!1}show(){this.element.parentElement.classList.remove("smart-hidden")}hide(){this.element.parentElement.classList.add("smart-hidden")}}Smart("smart-form-group",class extends Smart.BaseElement{static get properties(){return{controlType:{value:"input",type:"string"},columnSpan:{value:1,type:"number?"},columns:{value:1,type:"number?"},dataField:{value:"",type:"string"},disabled:{value:!1,type:"boolean"},showButtons:{value:!1,type:"boolean"},nextButtonLabel:{value:"Next",type:"string"},backButtonLabel:{value:"Back",type:"string"},hint:{value:"",type:"string"},info:{value:"",type:"string"},label:{value:"",type:"string"},labelPosition:{value:"left",type:"string"},onValueChanges:{value:null,type:"any",reflectToAttribute:!1},onStatusChanges:{value:null,type:"any",reflectToAttribute:!1},showColorAfterLabel:{value:!1,type:"boolean"},viewMode:{value:"",type:"string"},readonly:{value:!1,type:"boolean"},validationRules:{value:[],type:"any"},value:{value:"",type:"any"}}}template(){return'<div id="group"></div>'}render(){const e=this,t=[];e.value&&e.value.indexOf&&e.value.indexOf("{")>=0&&(e.value=JSON.parse(e.value));for(let n=0;n<e.$.group.children.length;n++){const o=e.$.group.children[n],a=o.nodeName.toLowerCase();"smart-form-control"!==a&&"smart-form-group"!==a||t.push(o.controlOptions)}e.controlOptions.controls=t,e.controlOptions.controlType="group",super.render()}propertyChangedHandler(e,t,n){const o=this;let a=o.parentElement;for(;a;){if("Smart-FORM"===a.nodeName){a.getControl(o.controlOptions.dataField)[e]=n;break}a=a.parentElement}o.controlOptions[e]=n}get controlOptions(){const e=this;if(!e._controlOptions&&e._properties){let t={};for(let n in e._properties)e._properties[n].value!==e._properties[n].defaultValue&&(t[n]=e._properties[n].value);t.custom=!0,e._controlOptions=t}return e._controlOptions}}),Smart("smart-form",class extends Smart.FormGroup{render(){super.render();const e=this,t=e.controlOptions;e._controls&&(t.controls=e._controls),e.value&&(t.value=e.value),this.children[0]&&this.children[0].classList.add("smart-hidden"),setTimeout((()=>{e.form||(e.form=new o("#"+e.id,t))}),100)}refresh(){const e=this;e.innerHTML="",e.form=new o("#"+e.id,e.controlOptions)}propertyChangedHandler(e,t,n){const a=this;a.form||(a.form=new o("#"+a.id,a.controlOptions)),a.form[e]=n}getControl(e){return this.form.getControl(e)}validate(){this.form?this.form.validate():setTimeout((()=>{this.form&&this.form.validate()}),100)}get columns(){return this.form?this.form.columns:1}set columns(e){this.form?this.form.columns=e:this.controlOptions.columns=e}get labelPosition(){return this.form?this.form.labelPosition:"left"}set labelPosition(e){this.controlOptions.labelPosition=e,this.form?this.form.labelPosition=e:this.controlOptions.labelPosition=e}submit(e){this.form?this.form.submit(e):setTimeout((()=>{this.form&&this.form.submit(e)}),100)}reset(){this.form?this.form.reset():setTimeout((()=>{this.form&&this.form.reset()}),100)}get showColonAfterLabel(){return void 0!==this._showColonAfterLabel&&this._showColonAfterLabel}set showColonAfterLabel(e){this._showColonAfterLabel=e,this.controlOptions.showColonAfterLabel=e,this.refresh()}get controls(){return this._controls?this._controls:[]}set controls(e){this._controls=e,this.form&&(this.innerHTML="",this.controlOptions.controls=e,this.form=new o("#"+this.id,this.controlOptions))}get state(){return this.form?this.form.state:null}set state(e){}});class n extends e{constructor(e,t){super(null,t);const n=this;if(e&&void 0!==e.custom&&(e.controls||(e.controls=[])),e.value&&!e.controls){let t=[];for(let n in e.value){const o=e.value[n];let a=n.toLowerCase().indexOf("date")>=0||o instanceof Date?"date":o.length<40?"text":"textarea";("number"==typeof o||"date"!==a&&!isNaN(new Number(o)))&&(a="number"),"true"!==o&&"false"!==o&&!0!==o&&!1!==o||(a="boolean"),(o.indexOf(".jpg")>=0||o.indexOf(".png")>=0||o.indexOf(".gif")>=0)&&(a="template");const r={dataField:n,label:n,value:o,controlType:a};"template"===a&&(r.template='<div class="smart-form-image-template"><img src="'+o+'"/></div>'),t.push(r)}e.controls=t}if(e.controls){n._labelPosition=e.labelPosition||"",n._labelOffset=e.labelOffset||10,n._showColonAfterLabel=e.showColonAfterLabel||!1,n._columnSpan=e.columnSpan||1,n._controls={},n._columns=e.columns||1,n._label=e.label||"",n._viewMode=e.viewMode||"",n._readonly=e.readonly||!1,n._labelAlign=e.labelAlign||"",n._showButtons=e.showButtons||"",n._nextButtonLabel=e.nextButtonLabel||"Next",n._backButtonLabel=e.backButtonLabel||"Back",e.onValueChanges&&(n.onValueChanges=e.onValueChanges),e.onStatusChanges&&(n.onStatusChanges=e.onStatusChanges),e.name?e.dataField||(e.dataField=e.name):e.name=e.dataField,n.name=e.name||"",n.dataField=e.dataField||"",n.element=document.createElement("div"),n.labelElement=document.createElement("div"),n.contentElement=document.createElement("div"),n.element.appendChild(n.labelElement),n.element.appendChild(n.contentElement),n.labelElement.classList.add("smart-form-group-label"),n.contentElement.classList.add("smart-form-group-content"),n.label||n.labelElement.classList.add("smart-hidden"),n.element.classList.add("smart-form-group"),""===n.viewMode&&n.element.setAttribute("columns",n.columns),n.labelElement.innerHTML=n.label+(n._showColonAfterLabel?":":"");for(let t=0;t<e.controls.length;t++){let o=e.controls[t];if("string"==typeof o){o={dataField:o,label:o,type:"text"}}const a=o;n._addControl=e=>{const t=document.createElement("div");if(e.labelPosition||(e.labelPosition=n._labelPosition),e.name?e.dataField||(e.dataField=e.name):e.name=e.dataField,("button"===e.controlType||"submit"===e.controlType||"reset"===e.controlType)&&!e.name){const t=function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()};e.name=e.controlType+t()}const o=n._createControl(e.name,e);return e.name&&(n._controls[e.name]=o),n._controls.$||(n._controls.$=[]),n._controls.$.push(o),o._parent=this,t.classList.add("smart-form-row"),o.labelElement&&t.appendChild(o.labelElement),t.appendChild(o.element),n.contentElement.appendChild(t),o},n._addControl(a)}n.refresh()}else n._controls=n._reduceControls(e);n._onValueAndStatusUpdate=()=>{n.element&&(n.element.classList.remove("smart-valid"),n.element.classList.remove("smart-invalid"),n.element.classList.add("smart-"+n.status))},n._setUpControls(),n.updateValueAndValidate({onlySelf:!0,emitEvent:!1})}addControl(e){const t=this,n=t._addControl(e);t[n.name]=n,t.refresh()}insertControl(e,t){const n=this,o=n.contentElement.querySelectorAll(".smart-form-row")[e],a=n._addControl(t);n[a.name]=a,n.contentElement.insertBefore(a.element.parentElement,o),n.refresh()}removeControl(e){const t=this;if(t[e]){t[e].element.parentElement.remove();const n=t.controls.$.indexOf(t[e]);t.controls.$.splice(n,1),delete t[e],delete t._controls[e]}}refresh(){const e=this;let t="";""===e.viewMode&&e.element.setAttribute("columns",e.columns),e.labelElement.innerHTML=e.label+("group"!==e.controlType&&e.showColonAfterLabel?":":""),e.labelElement.className="smart-form-group-label",e.label||e.labelElement.classList.add("smart-hidden"),e.labelAlign&&e.labelElement.classList.add(e.labelAlign),e._controls?e._controls&&!e._controls.$&&(e._controls.$=[]):e._controls={$:[]};for(let n=0;n<e._controls.$.length;n++){const o=e._controls.$[n];"group"!==o._controlType&&(o.labelElement&&t.length<o.label.length&&(t=o.label))}const n=n=>{const o=document.createElement("label");o.classList.add("smart-form-control-label"),o.innerHTML=t,document.body.appendChild(o);const a=n._labelOffset||e._labelOffset,r=o.offsetWidth+a;return o.remove(),r};for(let t=0;t<e._controls.$.length;t++){const o=e._controls.$[t],a=o.element.parentElement;o.labelElement&&"group"!==o.controlType&&("left"===o.labelPosition?(a.style.display="grid",a.style.gridTemplateColumns=n(o)+"px auto"):(a.style.display="",a.style.gridTemplateColumns=""))}const o=[];for(let t=0;t<e._controls.$.length;t++){const n=e._controls.$[t],a=n.element.parentElement;n.readonly=e.readonly,n.showColonAfterLabel=e.showColonAfterLabel,n.columnSpan>1&&n.columnSpan<=e.columns?a.style.gridColumn="span "+n.columnSpan:a.style.gridColumn="",n.labelElement&&(n.labelElement.innerHTML=n.label+("group"!==n.controlType&&e._showColonAfterLabel?":":""),"tabs"!==e.viewMode&&"accordion"!==e.viewMode&&"breadcrumb"!==e.viewMode||n.label&&"button"!==n._controlType&&"label"!==n._controlType&&"submit"!==n._controlType&&o.push({label:n.label,control:n,id:n.name,row:a})),n.labelElement&&!a.contains(n.labelElement)&&(a.firstElementChild.remove(),a.insertBefore(n.labelElement,n.element))}if(e._refreshButtons(),"tabs"===e.viewMode||"accordion"===e.viewMode||"breadcrumb"===e.viewMode){e.tabs&&e.tabs.remove();const t=document.createElement("div");t.classList.add("smart-form-tab-strip"),"accordion"===e.viewMode?t.setAttribute("vertical",""):"breadcrumb"===e.viewMode&&t.setAttribute("breadcrumb","");for(let n=0;n<o.length;n++){const a=document.createElement("div"),r=o[n];0===n&&(a.classList.add("selected"),r.row.classList.add("selected"),e._currentTabItem=r),a.classList.add("smart-form-tab"),"breadcrumb"===e.viewMode?a.innerHTML='<div class="smart-form-tab-label"><span class="circle">'+(1+n)+"</span><span>"+r.label+"</span></div>":a.innerHTML='<div class="smart-form-tab-label">'+r.label+"</div>","accordion"===e.viewMode&&(a.innerHTML+='<div class="smart-form-tab-button"><span class="smart-arrow smart-arrow-up"></span></div>'),a.dataField=r.control.name,r.control.tabItem=r,r.control.nextButton=e.nextButton,r.control.backButton=e.backButton,a.onclick=function(){let n=null;if("invalid"!==e._currentTabItem.control.status){for(let t=0;t<o.length;t++){const a=o[t];a.tab.classList.remove("selected"),a.row.classList.remove("selected"),a.tab===this&&(n=a,e._currentTabItem=a,e.showButtons&&(e.backButton.classList.remove("smart-hidden"),e.nextButton.classList.remove("smart-hidden"),0===t?e.backButton.classList.add("smart-hidden"):t===o.length-1&&e.nextButton.classList.add("smart-hidden")))}this.classList.add("selected"),requestAnimationFrame((()=>{n.row.classList.add("selected"),"accordion"===e.viewMode&&t.insertBefore(n.row,this.nextSibling)}))}},r.tab=a,r.row.classList.add("smart-form-tab-control"),t.appendChild(a),"accordion"===e.viewMode&&(0===n&&t.appendChild(r.row),r.row.setAttribute("vertical",""))}e.tabs=t,e.contentElement.insertBefore(t,e.contentElement.firstElementChild)}}_refreshButtons(){const e=this;e.buttonsContainer&&e.buttonsContainer.remove(),e.nextButton=document.createElement("smart-button"),e.backButton=document.createElement("smart-button"),e.nextButton.classList.add("primary"),e.backButton.classList.add("flat"),e.nextButton.innerHTML=e.nextButtonLabel,e.backButton.innerHTML=e.backButtonLabel;const t=document.createElement("div");t.classList.add("smart-form-group-buttons","smart-form-row"),t.appendChild(e.backButton),t.appendChild(e.nextButton),e.contentElement.appendChild(t),e.buttonsContainer=t,e.backButton.classList.add("smart-hidden"),e.nextButton.onclick=()=>{const t=e.contentElement.querySelectorAll(".smart-form-tab");for(let e=0;e<t.length;e++){if(t[e].classList.contains("selected")){const n=t[e+1];if(n){n.click();break}}}},e.backButton.onclick=()=>{const t=e.contentElement.querySelectorAll(".smart-form-tab");for(let e=0;e<t.length;e++){if(t[e].classList.contains("selected")){const n=t[e-1];if(n){n.click();break}}}},e.showButtons||(e.backButton.classList.add("smart-hidden"),e.nextButton.classList.add("smart-hidden"))}get labelAlign(){return this._labelAlign}set labelAlign(e){this._labelAlign=e,this.refresh()}get showButtons(){return this._showButtons}set showButtons(e){this._showButtons=e,this.refresh()}get nextButtonLabel(){return this._nextButtonLabel}set nextButtonLabel(e){this._nextButtonLabel=e,this.refresh()}get backButtonLabel(){return this._backButtonLabel}set backButtonLabel(e){this._backButtonLabel=e,this.refresh()}get viewMode(){return this._viewMode}set viewMode(e){this._viewMode=e,this.refresh()}get columnSpan(){return this._columnSpan}set columnSpan(e){const t=this;t._columnSpan=e,t._parent&&t._parent.refresh()}get controlType(){return"group"}get labelOffset(){return this._labelOffset}set labelOffset(e){this._labelOffset=e,this.refresh()}get readonly(){return this._readonly}set readonly(e){this._readonly=e,this.refresh()}get showColonAfterLabel(){return this._showColonAfterLabel}set showColonAfterLabel(e){this._showColonAfterLabel=e,this.refresh()}get labelPosition(){return this._labelPosition}set labelPosition(e){const t=this;t._labelPosition=e;for(let n=0;n<t.controls.$.length;n++)t.controls.$[n].labelPosition=e;t.refresh()}get columns(){return this._columns}set columns(e){this._columns=e,this.refresh()}get label(){return this._label}set label(e){this._label=e,this.refresh()}_group(e,t){e=this._reduceControls(e);return new n(e,t)}_reduceControls(e){const t=this,n={};return Object.keys(e).forEach((o=>{""!==o&&(n[o]=t._createControl(o,e[o]))})),n}_createControl(e,o){const a=this;let r=document.querySelector(`[form-control-name="${e}"]`),l=document.querySelector(`[form-group-name="${e}"]`);if(l&&!(o instanceof n))return this._group(o,{});if(o instanceof t||o instanceof n)return o.name=e,l&&(o.element=l),o instanceof t?o.element.setAttribute("form-control-name",e):o instanceof n&&o.element.setAttribute("form-group-name",e),o;if(Array.isArray(o)&&o.length>0){const n=o[0],l=o.length>1?o[1]:{};return l.name=e,r?new t(r,n,l):a._createTemplateControl(l)}return r?e?a._createTemplateControl(e,o):(r.name=e,new t(r,"",o)):a._createTemplateControl(e,o)}_createTemplateControl(e,o={}){const a=document.createElement("div");return""!==o&&"string"!=typeof o||(o={}),!0!==o&&!1!==o||(o={}),e&&a.setAttribute("form-control-name",e),o.custom=!0,"group"===o.controlType?new n(o):new t(a,o.value||"",o)}_setUpControls(){const e=this;this._forEachChild((t=>{t.parent=e,e[t.name]=t}))}_forEachChild(e){const t=this,n=Object.keys(t.controls);for(let o=0;o<n.length;o++){const a=n[o];if("$"===a)continue;e(t.controls[a],a)}}_checkAllValuesPresent(e){this._forEachChild(((t,n)=>{if("$"!==n&&void 0===e[n]&&""!==e[n])throw new Error(`Must supply a value for form control with name: '${n}'.`)}))}get controls(){return this._controls}setValue(e,t={emitEvent:!1}){const n=this;if(null===e)return this._forEachChild((e=>{e.value=null})),void n.updateValueAndValidate(t);n._checkAllValuesPresent(e),Object.keys(e).forEach((o=>{n._throwIfControlMissing(o),n.controls[o].setValue(e[o],{onlySelf:!0,emitEvent:t.emitEvent})})),n.updateValueAndValidate(t)}_throwIfControlMissing(e){if(!this.at(e))throw new Error(`Cannot find form control at index ${e}`)}at(e){return this.controls[e]}patchValue(e,t={emitEvent:!1}){Object.keys(e).forEach((n=>{this.controls[n]&&this.controls[n].patchValue(e[n],{onlySelf:!0,emitEvent:t.emitEvent})})),this.updateValueAndValidate(t)}get root(){let e=this;for(;e.parent;)e=e.parent;return e}_allControls(e){let t=!0;return this._forEachChild((n=>{t=t&&n[e]})),t}_anyControls(e){let t=!1;return this._forEachChild((n=>{t=t||n[e]})),t}_updateValue(){this._value=this._reduceValue()}_reduceValue(){return this._reduceChildren({},((e,t,n)=>((t.enabled||this.disabled)&&(e[n]=t.value),e)))}_reduceChildren(e,t){let n=e;return this._forEachChild(((e,o)=>{n=t(n,e,o)})),n}}class o extends e{constructor(e,t,o){super();const a=this;if(a.element=document.querySelector(e),a.element){if(a.element&&a.element.classList.contains("smart-form")&&!a.element.querySelector("smart-form-group")){const n=document.createElement("form");a.element.parentElement.insertBefore(n,a.element),a.element.remove(),a.element=n,a.element.id=e.replace("#",""),t=JSON.parse(JSON.stringify(t))}}else a.element=document.createElement("div");a.element.classList.add("smart-form"),a.submitted=!1,a.selector=e,a.rootFormGroup=new n(t),a.rootFormGroup.parent=a,a.rootFormGroup.element&&!a.element.contains(a.rootFormGroup.element)?a.element.appendChild(a.rootFormGroup.element):a.rootFormGroup.element=a.element;let r=[];const l=document.createElement("div");l.classList.add("smart-form-row","smart-validation-summary"),l.id=a.element.id+"_validationSummary",a.summary=l,a.rootFormGroup._forEachChild(((e,t)=>{a[t]=e,e.form=a;const o=e=>{const t=e.name;if(e.validationRules&&e.validationRules.length>0)for(let t=0;t<e.validationRules.length;t++){const n=e.validationRules[t],o=n;n.type||(n.type="required"),n.message||(n.message="Invalid Input"),n.input="#"+e.input.id,n.action="keyup, blur, change",r.push(o)}else if(e.required){const n={type:"required",message:`${t} is required`,action:"keyup, blur, change",input:"#"+e.input.id};r.push(n)}};o(e);const l=e=>{e._forEachChild((e=>{e.form=a,o(e),e instanceof n&&l(e)}))};e instanceof n&&l(e)})),a.element.appendChild(l),a.validator=new Smart.Utilities.Validator(r,"#"+l.id);const s=!0===o&&a.validator.validate();a.element.addEventListener("submit",(e=>{a.async&&(e.preventDefault(),a.submit({async:!0}))})),a.rootFormGroup._onValueAndStatusUpdate=()=>{"invalid"===a.rootFormGroup.status?a._handleValidity(!1):a._handleValidity(!0),a.element.classList.remove("smart-valid"),a.element.classList.remove("smart-invalid"),a.element.classList.add("smart-"+a.rootFormGroup.status)},a._showSummary=void 0===t.showSummary||t.showSummary,a._readonly=t.readonly||!1,a._async=t.async||!1,a._showColonAfterLabel=t.showColonAfterLabel||!1,"manual"===window.Smart.RenderMode&&window.Smart.Render(),a._handleSummaryVisibility(),a._handleValidity(s),t.value&&(a.value=t.value),setTimeout((()=>{a._updateStatus()}),100),"complete"!==document.readyState&&window.addEventListener("load",(()=>{a._handleSummaryVisibility(),a._handleValidity(s),a._updateStatus()})),a.isInitialized=!0}_updateStatus(){this.rootFormGroup._forEachChild((e=>{const t=e=>{e._forEachChild((e=>{e instanceof n?t(e):e.updateValueAndValidate()}))};e instanceof n?t(e):e.updateValueAndValidate()}))}getControl(e){let t=null;return this.rootFormGroup._forEachChild((o=>{const a=o=>{o._forEachChild((o=>{o instanceof n&&a(o),o.name===e&&(t=o)}))};o.dataField===e&&(t=o),o instanceof n&&a(o)})),t}_handleValidity(e){const t=this.element.querySelector('[type="submit"]');if(!t)return;t.disabled=!e;const n=t.closest(".smart-form-group");n&&1===n.querySelectorAll(".smart-form-row").length&&(t.disabled?n.classList.add("smart-disabled"):n.classList.remove("smart-disabled"))}get readonly(){return this._readonly}set readonly(e){this._readonly=e,this.rootFormGroup&&(this.rootFormGroup.readonly=e)}get showColonAfterLabel(){return this._showColonAfterLabel}set showColonAfterLabel(e){this._showColonAfterLabel=e,this.rootFormGroup&&(this.rootFormGroup.showColonAfterLabel=e)}get showSummary(){return this._showSummary}set showSummary(e){this._showSummary=e,this._handleSummaryVisibility()}get async(){return this._async}set async(e){this._async=e}addControl(e){this.rootFormGroup&&this.rootFormGroup.addControl(e)}insertControl(e,t){this.rootFormGroup&&this.rootFormGroup.insertControl(e,t)}removeControl(e){this.rootFormGroup&&this.rootFormGroup.removeControl(e),delete this[e]}_handleSummaryVisibility(){const e=this;e.showSummary?e.summary.classList.remove("smart-hidden"):e.summary.classList.add("smart-hidden")}get status(){return this.rootFormGroup&&this.rootFormGroup._calculateStatus(),this.rootFormGroup.status}set status(e){}get labelPosition(){return this.rootFormGroup?this.rootFormGroup.labelPosition:"top"}set labelPosition(e){this.rootFormGroup&&(this.rootFormGroup.labelPosition=e)}get columns(){return this.rootFormGroup?this.rootFormGroup.columns:1}set columns(e){this.rootFormGroup&&(this.rootFormGroup.columns=e)}get onValueChanges(){return this.rootFormGroup?this.rootFormGroup.onValueChanges:null}set onValueChanges(e){this.rootFormGroup&&(this.rootFormGroup.onValueChanges=e)}get onStatusChanges(){return this.rootFormGroup?this.rootFormGroup.onStatusChanges:null}set onStatusChanges(e){const t=this;this.rootFormGroup&&(this.rootFormGroup.onStatusChanges=()=>{e(t.state)})}get state(){const e={form:this.status},t={};return e.state=t,this.rootFormGroup._forEachChild(((o,a)=>{const r=t=>{t._forEachChild(((t,o)=>{t instanceof n?r(t):e[o]=t.status}))};o instanceof n?r(o):(e[a]=o.status,t[a]={dirty:o.dirty,untouched:o.untouched,disabled:o.disabled})})),e}get control(){return this.rootFormGroup}get value(){return this.control.value}set value(e){const t=this;if(t.control.setValue(e),t.validator){const e=t.validator.validate();t._handleValidity(e)}}patchValue(e,t){this.control.patchValue(e,t)}setValue(e){this.value=e}getValue(){return this.value}validate(){const e=this;if(e.validator){const t=e.validator.validate();e._handleValidity(t)}}submit(e){const t=this;e||(e={},t.element.action&&(e.action=t.element.action),t.element.target&&(e.target=t.element.target),t.element.method&&(e.method=t.element.method));const o=e.action,a=e.target,r=e.method;if(e.async||t.async){const e=new XMLHttpRequest,a=new FormData;t.rootFormGroup._forEachChild(((e,t)=>{const o=e=>{e._forEachChild(((e,t)=>{e instanceof n?o(e):a.append(t,e.value)}))};e instanceof n?o(e):a.append(t,e.value)})),e.addEventListener("load",(function(e){console.log(e.target.responseText)})),e.addEventListener(" error",(function(e){console.log(e.target.responseText)})),e.open("POST",o,!0),e.send(a)}else if("form"===t.element.nodeName)t.element.submit();else{let l="<form id='smart_formToSubmit'";o&&(l+=' action="'+o+'"'),a&&(l+=' target="'+a+'"'),r&&"get"===r.toString().toLowerCase()?l+=' method="GET"':l+=' method="POST"',e.acceptCharset&&(l+=' accept-charset="'+e.acceptCharset+'"'),e.enctype&&(l+=' enctype="'+e.enctype+'"'),e.name&&(l+=' name="'+e.name+'"'),e.enctype&&(l+=' id="'+e.id+'"'),l+=">",t.rootFormGroup._forEachChild(((e,t)=>{const o=e=>{e._forEachChild(((e,t)=>{e instanceof n?o(e):(l+='<input type="hidden" ',l+=' name="'+t+'"',l+=' value="'+e.value+'"',l+=">")}))};e instanceof n?o(e):(l+='<input type="hidden" ',l+=' name="'+t+'"',l+=' value="'+e.value+'"',l+=">")})),l+="</form>";const s=document.createElement("div");s.innerHTML=l,t.element.appendChild(s),s.querySelector("#smart_formToSubmit").submit(),t.element.removeChild(s)}this.submitted=!0}reset(){this.submitted=!1,this.value=null}}const a=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/;function r(e){return null===e||0===e.length}class l{static null(e){return null===e.value}static email(e){return r(e.value)||a.test(e.value)?null:{email:!0}}static min(e,t){return e=>{if(r(e.value)||r(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n<t?{min:{min:t,actual:e.value}}:null}}static max(e,t){return e=>{if(r(e.value)||r(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n>t?{max:{max:t,actual:e.value}}:null}}static required(e){return r(e.value)?{required:!0}:null}static requiredTrue(e){return!0===e.value?null:{required:!0}}static minLength(e,t){return e=>{if(r(e.value))return null;const n=e.value?e.value.length:0;return n<t?{minlength:{requiredLength:t,actualLength:n}}:null}}static maxLength(e,t){return e=>{const n=e.value?e.value.length:0;return n>t?{maxlength:{requiredLength:t,actualLength:n}}:null}}static pattern(e,t){if(!t)return l.null;let n,o;return"string"==typeof t?(o="","^"!==t.charAt(0)&&(o+="^"),o+=t,"$"!==t.charAt(t.length-1)&&(o+="$"),n=new RegExp(o)):(o=t.toString(),n=t),e=>{if(r(e.value))return null;const t=e.value;return n.test(t)?null:{pattern:{requiredPattern:o,actualValue:t}}}}}Smart.Form=o,Smart.FormControl=t,Smart.FormGroup=n,Smart.FormValidator=l})();