@wavemaker/app-ng-runtime 12.0.0-next.45503 → 12.0.0-next.45752
Sign up to get free protection for your applications and to get access to all the features.
- app-ng-runtime/components/base/bundles/index.umd.js +7 -1
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
- app-ng-runtime/components/base/fesm2022/index.mjs +7 -1
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +4 -0
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +5 -1
- app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -0
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
- app-ng-runtime/components/data/table/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +3 -3
- app-ng-runtime/components/data/table/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +15 -13
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +17 -15
- app-ng-runtime/components/input/default/fesm2022/index.mjs +16 -14
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/data/form/src/form.props.ts","../../../../../projects/components/widgets/data/form/src/form.component.html","../../../../../projects/components/widgets/data/form/src/form.component.ts","../../../../../projects/components/widgets/data/form/src/form-widget.directive.ts","../../../../../projects/components/widgets/data/form/src/form-action/form-action.props.ts","../../../../../projects/components/widgets/data/form/src/form-action/form-action.directive.ts","../../../../../projects/components/widgets/data/form/src/form-field/form-field.props.ts","../../../../../projects/components/widgets/data/form/src/form-field/form-field.directive.ts","../../../../../projects/components/widgets/data/form/src/live-actions/live-actions.directive.ts","../../../../../projects/components/widgets/data/form/src/live-actions/dependson.directive.ts","../../../../../projects/components/widgets/data/form/src/live-filter/live-filter.directive.ts","../../../../../projects/components/widgets/data/form/src/live-form/live-form.directive.ts","../../../../../projects/components/widgets/data/form/src/form.module.ts","../../../../../projects/components/widgets/data/form/src/index.ts"],"sourcesContent":["import { isMobileApp } from '@wm/core';\n\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nconst propsMap = new Map(\n [\n ['autocomplete', {value: false, ...PROP_BOOLEAN}],\n ['captionalign', {value: 'left', ...PROP_STRING}],\n ['captionposition', {value: 'left', ...PROP_STRING}],\n ['captionsize', PROP_STRING],\n ['captionwidth', {value: 'xs-12 sm-3 md-3 lg-3', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['collapsible', PROP_BOOLEAN],\n ['dataset', PROP_ANY],\n ['datasource', PROP_STRING],\n ['expanded', {value: true, ...PROP_BOOLEAN}],\n ['formdatasource', PROP_STRING],\n ['name', PROP_STRING],\n ['numberOfFields', PROP_NUMBER],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showindevice', {displayType: 'inline-block', value: 'all', ...PROP_STRING}],\n ['subheading', PROP_STRING],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['title', PROP_STRING]\n ]\n);\n\n\nexport const registerFormProps = () => {\n if (isMobileApp()) {\n propsMap.set('captionwidth', {value: 'xs-4 sm-4 md-4 lg-4', ...PROP_STRING});\n }\n const formMap = new Map(propsMap);\n formMap.set('action', PROP_STRING);\n formMap.set('defaultmode', {value: 'Edit', ...PROP_STRING});\n formMap.set('metadata', PROP_STRING);\n formMap.set('method', PROP_STRING);\n formMap.set('postmessage', {value: 'Data posted successfully', ...PROP_STRING});\n formMap.set('target', PROP_STRING);\n formMap.set('enctype', PROP_STRING);\n formMap.set('errormessage', {value: 'An error occured. Please try again!', ...PROP_STRING});\n formMap.set('messagelayout', {value: 'Inline', ...PROP_STRING});\n formMap.set('formdata', PROP_STRING);\n formMap.set('novalidate', PROP_BOOLEAN);\n formMap.set('validationtype', {value: 'default', ...PROP_STRING});\n formMap.set('iconclass', PROP_STRING);\n\n register(\n 'wm-form',\n formMap\n );\n};\n\nexport const registerLiveFormProps = () => {\n if (isMobileApp()) {\n propsMap.set('captionwidth', {value: 'xs-4 sm-4 md-4 lg-4', ...PROP_STRING});\n }\n const liveFormMap = new Map(propsMap);\n liveFormMap.set('defaultmode', {value: 'View', ...PROP_STRING});\n liveFormMap.set('formlayout', {value: 'inline', ...PROP_STRING});\n liveFormMap.set('insertmessage', {value: 'Record added successfully', ...PROP_STRING});\n liveFormMap.set('updatemessage', {value: 'Record updated successfully', ...PROP_STRING});\n liveFormMap.set('deletemessage', {value: 'Record deleted successfully', ...PROP_STRING});\n liveFormMap.set('errormessage', {value: 'An error occured. Please try again!', ...PROP_STRING});\n liveFormMap.set('messagelayout', {value: 'Toaster', ...PROP_STRING});\n liveFormMap.set('formdata', PROP_STRING);\n liveFormMap.set('novalidate', PROP_BOOLEAN);\n liveFormMap.set('validationtype', {value: 'default', ...PROP_STRING});\n liveFormMap.set('iconclass', PROP_STRING);\n\n register(\n 'wm-liveform',\n liveFormMap\n );\n};\n\nexport const registerLiveFilterProps = () => {\n if (isMobileApp()) {\n propsMap.set('captionwidth', {value: 'xs-4 sm-4 md-4 lg-4', ...PROP_STRING});\n }\n const liveFilterMap = new Map(propsMap);\n liveFilterMap.set('autoupdate', PROP_BOOLEAN);\n liveFilterMap.set('enableemptyfilter', {value: ' ', ...PROP_STRING});\n liveFilterMap.set('pagesize', {value: 20, ...PROP_NUMBER});\n liveFilterMap.set('iconclass', {value: 'wi wi-filter-list', ...PROP_STRING});\n\n register(\n 'wm-livefilter',\n liveFilterMap\n );\n};\n","<ng-template #content><ng-content></ng-content></ng-template>\n\n<ng-container *ngIf=\"formlayout === 'page'; then pageLayoutTemplate else defaultTemplate\">\n</ng-container>\n\n<ng-template #defaultTemplate>\n <div class=\"panel-heading\" *ngIf=\"!isLayoutDialog && (title || subheading || iconclass || showButtons('header'))\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\">\n <i class=\"app-icon panel-icon\" aria-hidden=\"true\" [ngClass]=\"iconclass\" *ngIf=\"iconclass\"></i>\n </div>\n <div class=\"pull-left\">\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n </div>\n <div class=\"form-action panel-actions basic-btn-grp\">\n <ng-container *ngFor=\"let btn of buttonArray | filter : 'position' : 'header'; let index = index\"\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('action_header_' + index, {btn:btn})\">\n </ng-container>\n <button type=\"button\" class=\"app-icon wi panel-action\" *ngIf=\"collapsible\" title=\"Collapse/Expand\"\n [ngClass]=\"expanded ? 'wi-minus': 'wi-plus'\" (click)=\"expandCollapsePanel();\"></button>\n </div>\n </h3>\n </div>\n <div class=\"panel-body\" [ngClass]=\"{'form-elements': isLayoutDialog, 'form-body': !isLayoutDialog}\" [class.hidden]=\"!expanded\">\n <p wmMessage *ngIf=\"!!statusMessage.caption\" [attr.aria-hidden]=\"!statusMessage.caption\" [attr.aria-label]=\"statusMessage.caption\" caption.bind=\"statusMessage.caption\" type.bind=\"statusMessage.type\"></p>\n <div [ngClass]=\"{'form-elements': !isLayoutDialog, 'form-content': isLayoutDialog}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"basic-btn-grp form-action panel-footer clearfix\" [ngClass]=\"{'modal-footer': isLayoutDialog}\" [class.hidden]=\"!expanded || !showButtons('footer')\">\n <ng-container *ngFor=\"let btn of buttonArray | filter : 'position' : 'footer'; let index = index\"\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('action_footer_' + index, {btn:btn})\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #pageLayoutTemplate>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #buttonRef let-btn=\"btn\">\n <button wmButton name=\"{{btn.key}}\" caption.bind=\"btn.displayName\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" show.bind=\"btn.show\"\n (click)=\"invokeActionEvent($event, btn.action)\" type.bind=\"btn.type\" hint.bind=\"btn.title\" shortcutkey.bind=\"btn.shortcutkey\" disabled.bind=\"ngform.status === 'PENDING' || btn.disabled\"\n tabindex.bind=\"btn.tabindex\" [attr.aria-label]=\"btn.displayName\" [class.hidden]=\"btn.updateMode ? !isUpdateMode : isUpdateMode\"></button>\n</ng-template>\n\n<ng-template #anchorRef let-btn=\"btn\">\n <a wmAnchor name=\"{{btn.key}}\" caption.bind=\"btn.displayName\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" show.bind=\"btn.show\"\n (click)=\"invokeActionEvent($event, btn.action)\" hint.bind=\"btn.title\" shortcutkey.bind=\"btn.shortcutkey\"\n hyperlink.bind=\"btn.hyperlink\" target.bind=\"btn.target\"\n tabindex.bind=\"btn.tabindex\" [class.hidden]=\"btn.updateMode ? !isUpdateMode : isUpdateMode\"></a>\n</ng-template>\n\n<ng-container #dynamicForm></ng-container>\n","import {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding,\n HostListener, Inject,\n Injector,\n NgZone,\n OnDestroy,\n Optional,\n SkipSelf,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport {FormArray, FormBuilder, FormGroup} from '@angular/forms';\n\nimport {\n $appDigest,\n $invokeWatchers,\n $parseEvent,\n AbstractDialogService,\n App,\n DataSource,\n DataType,\n debounce,\n DynamicComponentRefProvider,\n extendProto,\n getClonedObject,\n getFiles,\n getValidJSON,\n isDefined,\n isElementInViewport,\n removeAttr,\n removeClass,\n scrollToElement,\n} from '@wm/core';\nimport {\n getFieldLayoutConfig,\n Live_Operations,\n MessageComponent,\n parseValueByType,\n PartialDirective,\n performDataOperation,\n provideAsWidgetRef,\n StylableComponent,\n styler,\n WidgetRef\n} from '@wm/components/base';\nimport {PrefabDirective} from '@wm/components/prefab';\nimport {ListComponent} from '@wm/components/data/list';\n\nimport {registerFormProps} from './form.props';\nimport {\n debounce as _debounce,\n filter,\n find, findIndex,\n forEach,\n get,\n includes,\n isArray,\n isEmpty, isEqual,\n isUndefined,\n keys,\n last,\n set,\n some,\n split\n} from \"lodash-es\";\n\nconst WIDGET_CONFIG = {widgetType: 'wm-form', hostClass: 'panel app-panel app-form'};\nconst LOGIN_FORM_CONFIG = {widgetType: 'wm-form', hostClass: 'app-form app-login-form'};\nconst LIVE_FORM_CONFIG = {widgetType: 'wm-liveform', hostClass: 'panel app-panel app-liveform liveform-inline'};\nconst LIVE_FILTER_CONFIG = {widgetType: 'wm-livefilter', hostClass: 'panel app-panel app-livefilter clearfix liveform-inline'};\n\nconst getWidgetConfig = (isLiveForm, isLiveFilter, role) => {\n let config = WIDGET_CONFIG;\n if (isLiveForm !== null) {\n config = LIVE_FORM_CONFIG;\n } else if (isLiveFilter !== null) {\n config = LIVE_FILTER_CONFIG;\n } else if (role === 'app-login') {\n config = LOGIN_FORM_CONFIG;\n }\n return config;\n};\n\n// Generate the form field with given field definition. Add a grid column wrapper around the form field.\nconst setMarkupForFormField = (field, columnWidth) => {\n let propsTmpl = '';\n forEach(field, (value, key) => {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n });\n return `<wm-gridcolumn columnwidth=\"${columnWidth}\">\n <wm-form-field ${propsTmpl}></wm-form-field>\n </wm-gridcolumn>`;\n};\n\n// Function to find out the first invalid element in form\nconst findInvalidElement = ($formEle, ngForm) => {\n const $ele = $formEle.find('form.ng-invalid:visible, [formControlName].ng-invalid:visible').first();\n let formObj = ngForm;\n // If element is form, find out the first invalid element in this form\n if ($ele.is('form')) {\n formObj = ngForm && ngForm.controls[$ele.attr('formControlName') || $ele.attr('name')];\n if (formObj) {\n return findInvalidElement($ele, formObj);\n }\n }\n return {\n ngForm: formObj,\n $ele: $ele\n };\n};\n\n// Function to get the active element markup based on widget type\nconst getActiveElement = (element) => {\n const widgetType = element.getAttribute('widgettype');\n switch (widgetType) {\n case 'select':\n return element.querySelector('select');\n break;\n case 'textarea':\n return element.querySelector('textarea');\n break;\n default:\n return element.querySelector('input');\n }\n}\nconst setTouchedState = (self, ngForm, fieldName) => {\n if (ngForm.valid) {\n return;\n }\n if (ngForm.controls) {\n forEach(ngForm.controls, (ctrl, fieldName) => {\n setTouchedState(self, ctrl, fieldName);\n });\n } else {\n let element = self.$element.find(`[wmformfield][key=\"${fieldName}\"]`);\n if (!element.length) {\n element = self.$element.find(`[wmformfield][name=\"${fieldName}\"]`);\n }\n element[0].setAttribute('__errormsg', element[0].getAttribute('__validationId'));\n let activeElement = getActiveElement(element[0]);\n activeElement?.setAttribute('aria-invalid', ngForm.invalid);\n activeElement?.setAttribute('aria-describedby', element[0].getAttribute('__validationId'));\n ngForm.markAsTouched();\n }\n};\n\n@Component({\n selector: 'form[wmForm]',\n templateUrl: './form.component.html',\n providers: [\n provideAsWidgetRef(FormComponent)\n ]\n})\nexport class FormComponent extends StylableComponent implements OnDestroy, AfterContentInit, AfterViewInit {\n static initializeProps = registerFormProps();\n @ViewChild('dynamicForm', { static: true, read: ViewContainerRef }) dynamicFormRef: ViewContainerRef;\n @ViewChild(MessageComponent) messageRef;\n // this is the reference to the component refs inside the form-group\n @ContentChildren(WidgetRef, {descendants: true}) componentRefs;\n\n autoupdate;\n public formlayout: any;\n public isDataSourceUpdated: boolean;\n captionAlignClass: string;\n validationtype: string;\n captionalign: string;\n captionposition: string;\n captionsize;\n collapsible: boolean;\n expanded: boolean;\n elScope;\n _widgetClass = '';\n captionwidth: string;\n _captionClass = '';\n ngform: FormGroup;\n formFields = [];\n formfields = {};\n formWidgets = {};\n filterWidgets = {};\n buttonArray = [];\n dataoutput = {};\n datasource;\n formdatasource;\n formdata = {};\n isSelected;\n prevDataValues;\n prevDataObject;\n prevformFields;\n statusMessage = {\n caption: '',\n type: ''\n };\n messagelayout;\n metadata;\n errormessage;\n onError;\n onSuccess;\n primaryKey = [];\n postmessage;\n _liveTableParent;\n updateMode;\n name;\n // Live Form Methods\n clearData: Function;\n cancel: Function;\n delete: Function;\n save: Function;\n saveAndNew: Function;\n saveAndView: Function;\n setPrimaryKey: () => {};\n dialogId: string;\n // Live Filter\n enableemptyfilter;\n pagesize;\n result;\n pagination;\n clearFilter: Function;\n applyFilter: Function;\n filter: Function;\n filterOnDefault: Function;\n onMaxDefaultValueChange: Function;\n numberOfFields: number;\n\n private _debouncedUpdateFieldSource: Function = _debounce(this.updateFieldSource, 350);\n private operationType;\n private _isLayoutDialog;\n private _dynamicContext;\n private _isGridLayoutPresent;\n private validationMessages = [];\n private formGroupName;\n private formArrayIndex;\n private bindingValue;\n private _formIsInList;\n private _triggeredByUser: boolean;\n\n\n private _debouncedSubmitForm = debounce(($event) => {\n // calling submit event in ngZone as change detection is not triggered post the submit callback and actions like notification are not shown\n this.ngZone.run(() => {\n this.submitForm($event);\n });\n }, 250);\n\n set isLayoutDialog(nv) {\n if (nv) {\n removeClass(this.nativeElement, 'panel app-panel liveform-inline');\n }\n this._isLayoutDialog = nv;\n }\n\n get isLayoutDialog() {\n return this._isLayoutDialog;\n }\n\n private _isUpdateMode;\n set isUpdateMode(nv) {\n this._isUpdateMode = nv;\n this.formFields.forEach(field => {\n field.setReadOnlyState(nv);\n });\n }\n\n get isUpdateMode() {\n return this._isUpdateMode;\n }\n\n @HostBinding('action') action: string;\n\n @HostListener('submit', ['$event']) submit($event) {\n this._debouncedSubmitForm($event);\n }\n\n @HostListener('reset') onReset() {\n this.reset();\n }\n\n @HostListener('keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n this._triggeredByUser = true;\n }\n // returns the formArray control on the parentForm.\n get parentFormArray(): FormArray {\n return this.parentForm && this.isParentList && this.parentForm.ngform.get(this.parentList.name) as FormArray;\n }\n\n // returns true only when closest livelist is the immediate parent of the form.\n // checks for livelist having any form elements with parentForm name.\n // If livelist is not containing any parentForm elements then it returns true.\n get isParentList() {\n if (this.parentList && this.parentForm && !isDefined(this._formIsInList)) {\n const formEle = this.$element;\n const listEle = formEle.closest('.app-livelist[name=\"' + this.parentList.name + '\"]');\n if (listEle.length) {\n this._formIsInList = !(listEle.find('form[widget-id=\"' + this.parentForm.widgetId + '\"]')).length;\n }\n }\n return isDefined(this._formIsInList) ? this._formIsInList : this.parentList;\n }\n\n constructor(\n inj: Injector,\n private fb: FormBuilder,\n private app: App,\n private dialogService: AbstractDialogService,\n private dynamicComponentProvider: DynamicComponentRefProvider,\n private ngZone: NgZone,\n @Optional() public parentList: ListComponent,\n @SkipSelf() @Optional() public parentForm: FormComponent,\n @SkipSelf() @Optional() public parentPrefab: PrefabDirective,\n @SkipSelf() @Optional() public parentPartial: PartialDirective,\n @Attribute('beforesubmit.event') public onBeforeSubmitEvt,\n @Attribute('submit.event') public onSubmitEvt,\n @Attribute('beforerender.event') public onBeforeRenderEvt,\n @Attribute('dataset.bind') public binddataset,\n @Attribute('formdata.bind') private bindformdata,\n @Attribute('wmLiveForm') isLiveForm,\n @Attribute('wmLiveFilter') isLiveFilter,\n @Attribute('data-role') role,\n @Attribute('key') key,\n @Attribute('name') name,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, getWidgetConfig(isLiveForm, isLiveFilter, role), explicitContext);\n\n styler(this.nativeElement, this);\n\n // remove title property as attribute as it is causing unnecessary tooltip\n removeAttr(this.nativeElement, 'title');\n this.isUpdateMode = true;\n this.dialogId = this.nativeElement.getAttribute('dialogId');\n this.ngform = fb.group({});\n this.bindingValue = key || name;\n\n // On value change in form, update the dataoutput\n const onValueChangeSubscription = this.ngform.valueChanges\n .subscribe(this.updateDataOutput.bind(this));\n this.registerDestroyListener(() => onValueChangeSubscription.unsubscribe());\n this.elScope = this;\n\n this.addEventsToContext(this.context);\n }\n\n ngAfterContentInit() {\n setTimeout(() => {\n this.componentRefs.forEach(componentRef => {\n if (componentRef.name) {\n // Register widgets inside form with formWidgets\n this.formWidgets[componentRef.name] = componentRef;\n }\n });\n }, 250);\n }\n\n ngAfterViewInit() {\n if (this.parentForm && this.parentForm.ngform && this.isParentList) {\n // setting formArray control on ngform.\n if (!get(this.parentForm.ngform.controls, this.parentList.name)) {\n this.parentForm.ngform.setControl(this.parentList.name, new FormArray([]));\n }\n // pushing the ngform to formArray.\n this.parentFormArray.push(this.ngform);\n this.formArrayIndex = this.parentFormArray.length - 1;\n }\n this.addInnerNgFormToForm(this.bindingValue);\n }\n\n findOperationType() {}\n\n private addInnerNgFormToForm(binding) {\n if (this.parentForm && this.parentForm.ngform) {\n // handling as formArray when parent is list. Hence returning here from adding to parentForm again.\n if (this.isParentList) {\n return;\n }\n // assigning the control name of the form inside the prefab with the prefab name.\n // This will happen only when there is only one form inside prefab.\n // We do not support changing this when multiple forms are inside prefab.\n // This scenario has to be handled by end user by changing form names in prefab according to the datamodel binding.\n const parentContainer = this.parentPrefab || this.parentPartial;\n if (parentContainer) {\n let parentContentEl;\n if (this.parentPrefab) {\n parentContentEl = parentContainer.$element.find('[wmprefabcontainer]');\n } else {\n parentContentEl = parentContainer.$element;\n }\n /**\n * assigning the form name to the parentContainer name i.e. partial name or perfab name by following\n * 1. retrieving all the forms in the parentContainer\n * 2. consider the first form\n * 3. if this form is inside list i.e. also find if this list is also inside the parentContainer (prefab / partial)\n * 4. then do not change the form name when form is inside list and also when there are siblings to the form\n * 5. this means form name change applies only when there is single form (immediate child) inside the parentContainer.\n */\n const prefabInnerForm = parentContentEl.find('form').first();\n if (get(prefabInnerForm[0], 'widget.widgetId') === this.widgetId) {\n // check whether form inside prefab container is inside the list. If true, do not change the name.\n if (!prefabInnerForm.isParentList && !prefabInnerForm.siblings('form').length) {\n binding = get(parentContainer, 'name');\n }\n }\n }\n let counter = 1;\n let innerBinding = binding;\n // Inner forms may have same names. If same name is present, append unqiue identifier\n while (this.parentForm.ngform.controls.hasOwnProperty(innerBinding)) {\n innerBinding = `${binding}_${counter}`;\n counter++;\n }\n this.formGroupName = innerBinding;\n // If parent form is present, add the current form as as formGroup for parent form\n this.parentForm.ngform.addControl(innerBinding, this.ngform);\n }\n }\n\n // Expose the events on context so that they can be accessed by form actions\n private addEventsToContext(context) {\n context.cancel = () => this.cancel();\n context.reset = () => this.reset();\n context.save = evt => this.save(evt);\n context.saveAndNew = () => this.saveAndNew();\n context.saveAndView = () => this.saveAndView();\n context.delete = () => this.delete();\n context.new = () => this.new();\n context.edit = () => this.edit();\n context.highlightInvalidFields = () => this.highlightInvalidFields();\n context.filter = () => this.filter();\n context.clearFilter = () => this.clearFilter();\n context.submit = evt => this.submit(evt);\n }\n\n // This method gets all the inner forms and validates each form.\n private setValidationOnInnerForms(validateTouch) {\n const formEle = this.getNativeElement();\n const formObjs = formEle.querySelectorAll('.app-form');\n const validationMsgs = [];\n forEach(formObjs, e => {\n const formInstance = (e as any).widget;\n // differentiating the validationMessages prefix based on the formGroupName\n // as the formName's are same when forms are in list\n let formName = get(formInstance, 'formGroupName') || formInstance.name;\n if (isDefined(formInstance.formArrayIndex)) {\n formName = formName + '[' + formInstance.formArrayIndex + ']';\n }\n let current = formInstance;\n while (get(current, 'parentForm')) {\n let parentName = current.parentForm.formGroupName || current.parentForm.name;\n if (current.parentForm.parentFormArray) {\n parentName = parentName + '[' + current.parentForm.formArrayIndex + ']';\n }\n formName = parentName + '.' + formName;\n current = current.parentForm;\n }\n this.setValidationOnFields(formInstance, formName, validateTouch);\n });\n }\n\n /**\n * This method sets validation on formFields.\n * Applies to innerform and also sets innerform validation on parent form.\n * @param prefix contains the form name, which also includes its parents form name\n * @param {boolean} validateTouch\n */\n private setValidationOnFields(form: FormComponent, prefix: string, validateTouch?: boolean) {\n const controls = form.ngform.controls;\n const formFields = form.formFields;\n if (!formFields) {\n return;\n }\n forEach(controls, (v, k) => {\n const field = formFields.find(e => e.key === k);\n if (!field || (validateTouch && !v.touched)) {\n return;\n }\n field.nativeElement.querySelector('input')?.setAttribute('aria-invalid', v.invalid);\n // invoking the prepareValidation on both parent form and current form.\n this.prepareValidationObj(v, k, field, prefix);\n this.prepareValidationObj.call(form, v, k, field, prefix);\n });\n }\n\n // Assigns / updates validationMessages based on angular errors on field\n private prepareValidationObj(v, k, field, prefix) {\n const index = this.validationMessages.findIndex(e => (e.field === k && e.fullyQualifiedFormName === prefix));\n if (v.invalid) {\n if (index === -1) {\n /**\n * field contains the fieldName\n * value contains the field value\n * errorType contains the list of errors\n * message contains the validation message\n * getElement returns the element having focus-target\n * formName returns the name of the form\n */\n this.validationMessages.push({\n field: k,\n value: field.value,\n errorType: keys(v.errors),\n message: field.validationmessage || '',\n getElement: () => {\n return field.$element.find('[focus-target]');\n },\n formName: last(prefix.split('.')),\n fullyQualifiedFormName: prefix\n });\n } else {\n this.validationMessages[index].value = field.value;\n this.validationMessages[index].errorType = keys(v.errors);\n }\n } else if (v.valid && index > -1) {\n this.validationMessages.splice(index, 1);\n }\n }\n\n // This will return a object containing the error details from the list of formFields that are invalid\n private setValidationMsgs(validateTouch?: boolean) {\n if (!this.formFields.length && isEmpty(this.ngform.controls)) {\n return;\n }\n this.setValidationOnFields(this, this.name, validateTouch);\n this.setValidationOnInnerForms(validateTouch);\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'submit') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n\n private updateFieldSource() {\n if (this.formdatasource && this.formdatasource.execute(DataSource.Operation.IS_API_AWARE)) {\n return;\n } else if (this.formdatasource && !this.formdatasource.twoWayBinding) {\n return;\n }\n this.formFields.forEach(formField => {\n formField.setFormWidget('datavaluesource', this.formdatasource);\n formField.setFormWidget('binddatavalue', `${this.bindformdata}.${formField.key}`);\n });\n }\n\n // This method loops through the form fields and highlights the invalid fields by setting state to touched\n highlightInvalidFields() {\n setTouchedState(this, this.ngform, '');\n }\n\n // Disable the form submit if form is in invalid state. Highlight all the invalid fields if validation type is default\n validateFieldsOnSubmit() {\n this.setValidationMsgs();\n // Disable the form submit if form is in invalid state. For delete operation, do not check the validation.\n if (this.operationType !== 'delete' && (this.validationtype === 'html' || this.validationtype === 'default')\n && this.ngform && this.ngform.invalid) {\n\n if (this.ngform.invalid) {\n if (this.validationtype === 'default') {\n this.highlightInvalidFields();\n }\n // Find the first invalid untoched element and set it to touched.\n // Safari does not form validations. this will ensure that error is shown for user\n const eleForm = findInvalidElement(this.$element, this.ngform);\n const $invalidForm = eleForm.ngForm;\n let $invalidEle = eleForm.$ele;\n $invalidEle = $invalidEle.parent().find('[focus-target]');\n if ($invalidEle.length) {\n // on save click in page layout liveform, focus of autocomplete widget opens full-screen search.\n if (!$invalidEle.hasClass('app-search-input')) {\n $invalidEle.focus();\n }\n const ngEle = $invalidForm && $invalidForm.controls[$invalidEle.attr('formControlName') || $invalidEle.attr('name')];\n if (ngEle && ngEle.markAsTouched) {\n ngEle.markAsTouched();\n }\n $appDigest();\n return true;\n }\n return true;\n }\n return false;\n }\n return false;\n }\n\n onPropertyChange(key, nv, ov?) {\n switch (key) {\n case 'captionalign':\n this.captionAlignClass = 'align-' + nv;\n break;\n case 'captionposition':\n this.setLayoutConfig();\n break;\n case 'captionwidth':\n this.setLayoutConfig();\n break;\n case 'captionsize':\n this.captionsize = nv;\n break;\n case 'novalidate':\n // Set validation type based on the novalidate property\n this.widget.validationtype = (nv === true || nv === 'true') ? 'none' : 'default';\n break;\n case 'formdata':\n // For livelist when multiselect is enabled, formdata will be array of objects. In this case consider the last object as formdata.\n if (isEqual(nv, ov)) {\n break;\n }\n isArray(nv) ? this.setFormData(last(nv)) : this.setFormData(nv);\n // if dataset on the formFields are not set as the datasourceChange is triggered before the formFields are registered.\n if (!this.isDataSourceUpdated && this.datasource) {\n this.onDataSourceChange();\n }\n break;\n case 'defaultmode':\n if (!this.isLayoutDialog) {\n if (nv && nv === 'Edit') {\n this.updateMode = true;\n } else {\n this.updateMode = false;\n }\n this.isUpdateMode = this.updateMode;\n }\n break;\n case 'datasource':\n this.onDataSourceChange();\n break;\n case 'formdatasource':\n this.onFormDataSourceChange();\n break;\n case 'metadata':\n this.generateFormFields();\n break;\n case 'dataset':\n const formFields = this.getFormFields();\n formFields.forEach(field => {\n // notifying the dataset change to the form-field widget.\n if (!field.isDataSetBound && get(field.formWidget, 'dataset$')) {\n field.formWidget.dataset$.next();\n }\n });\n break;\n default:\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n // Event callbacks on success/error\n onResultCb(data, status, event?) {\n const params = {$event: event, $data: data, $operation: this.operationType};\n // whether service call success or failure call this method\n this.invokeEventCallback('result', params);\n if (status) {\n // if service call is success call this method\n this.invokeEventCallback('success', params);\n } else {\n // if service call fails call this method\n this.invokeEventCallback('error', params);\n }\n }\n\n // Display or hide the inline message/ toaster\n toggleMessage(show: boolean, msg?: string, type?: string, header?: string) {\n let template;\n if (show && msg) {\n template = (type === 'error' && this.errormessage) ? this.errormessage : msg;\n if (this.messagelayout === 'Inline') {\n template = this.checkAppServiceErrorMsg(type) || template;\n this.statusMessage = {'caption': template || '', type: type};\n if (this.messageRef) {\n this.messageRef.showMessage(this.statusMessage.caption, this.statusMessage.type);\n }\n // when message layout is inline on save, scroll the view to top of the form to see the status of the operation\n if (!isElementInViewport(this.$element[0])) {\n scrollToElement(this.$element[0]);\n }\n } else {\n this.app.notifyApp(template, type, header);\n }\n } else {\n this.statusMessage.caption = '';\n }\n }\n\n // if there is an App.onServiceError handler for the app, that message should be used instead of server returned error message\n checkAppServiceErrorMsg(type) {\n const notificationAction = get(this.app, 'Actions.appNotification');\n if (notificationAction && type === 'error') {\n return notificationAction.getMessage();\n }\n return;\n }\n\n // Hide the inline message/ toaster\n clearMessage() {\n this.toggleMessage(false);\n }\n\n // Set the classes on the form based on the captionposition and captionwidth properties\n private setLayoutConfig() {\n let layoutConfig;\n layoutConfig = getFieldLayoutConfig(this.captionwidth, this.captionposition, get(this.app.selectedViewPort, 'os'));\n this._widgetClass = layoutConfig.widgetCls;\n this._captionClass = layoutConfig.captionCls;\n\n $appDigest();\n }\n\n registerFormWidget(widget) {\n const name = widget.name || widget.key;\n this.formWidgets[name] = widget;\n }\n\n registerFormFields(formField) {\n const fieldCount = this.formFields.push(formField);\n this.formfields[formField.key] = formField;\n this.registerFormWidget(formField);\n this._debouncedUpdateFieldSource();\n if (this.parentForm) {\n this.parentForm.formFields.push(formField);\n this.parentForm.formfields[formField.key] = formField;\n // inner formfields are pushed to parentForm, passing current innerForm's formdata to set innerFormdata to these innerFormFields\n this.parentForm.setFormData(this.parentForm.formdata, this.formFields, this.formdata || {});\n }\n // WMS-18967: Applying formadata after formfields are ready\n if (fieldCount === this.numberOfFields && !isEmpty(this.formdata)) {\n this.onDataSourceChange();\n isArray(this.formdata) ? this.setFormData(last(this.formdata)) : this.setFormData(this.formdata);\n }\n }\n\n registerActions(formAction) {\n this.buttonArray.push(formAction);\n }\n\n // Update the dataoutput whenever there is a change in inside form widget value\n updateFormDataOutput(dataObject) {\n // Set the values of the widgets inside the live form (other than form fields) in form data\n forEach(this.ngform.value, (val, key) => {\n if (!find(this.formFields, {key})) {\n dataObject[key] = val;\n }\n });\n this.dataoutput = dataObject;\n }\n\n // Construct the data object merging the form fields and custom widgets data\n constructDataObject() {\n const formData = {};\n const formFields = this.getFormFields();\n // Get all form fields and prepare form data as key value pairs\n formFields.forEach(field => {\n let fieldName,\n fieldValue;\n fieldValue = field.datavalue || field._control.value;\n fieldValue = (fieldValue === null || fieldValue === '') ? undefined : fieldValue;\n\n if (field.type === 'file') {\n fieldValue = getFiles(this.name, field.key + '_formWidget', field.multiple);\n }\n\n fieldName = field.key || field.target || field.name;\n\n // on current Form, when field is innerForm field then we group these fields under new object using formGroupName as key\n // For suppose, applicantName, applicantID are formfields in currentForm\n // This form is having innerform i.e. address, these fields are listed as\n // {\"applicantName\": \"\", \"applicantID\": \"\", \"address\": {\"street\": \"\"}}\n if (field.form.widgetId !== this.widgetId && field.form.formGroupName) {\n const fd = get(formData, field.form.formGroupName, {});\n fd[fieldName] = fieldValue;\n set(formData, field.form.formGroupName, fd);\n } else if ((typeof field.form.formArrayIndex === 'number') && field.form.isParentList && !this.parentForm) { // Fix for [WMS-25806]: use formArrayIndex only if form has a parent form\n // setting formdata based on formArrayIndex\n const fd = get(formData, field.form.parentList.name, []);\n fd[field.form.formArrayIndex] = fd[field.form.formArrayIndex] || {};\n fd[field.form.formArrayIndex][fieldName] = fieldValue;\n set(formData, field.form.parentList.name, fd);\n } else {\n // In case of update the field will be already present in form data\n set(formData, fieldName, fieldValue);\n }\n });\n this.updateFormDataOutput(formData);\n return this.dataoutput;\n }\n\n updateDataOutput() {\n this.constructDataObject();\n if (this.ngform.touched) {\n this.setValidationMsgs(true);\n }\n }\n\n // FormFields will contain all the fields in parent and inner form also.\n // This returns the formFields in the form based on the form name.\n getFormFields() {\n return filter(this.formFields, formField => {\n return formField.form.name === this.name;\n });\n }\n\n setFieldValue(field, data, innerFormdata?) {\n const key = field.key || field.name;\n // if customfield param value is not in the formdata then do not assign field value\n // as it can contain default value which will again be overridden by undefined.\n const fd = innerFormdata ? innerFormdata : data;\n if (fd) {\n if (fd.hasOwnProperty(key)) {\n field.value = get(fd, key);\n } else if (includes(key, '.')) {\n // key contains '.' when mapping the fields to child reference i.e. childCol is having key as \"parent.childCol\"\n if (fd.hasOwnProperty(split(key, '.')[0])) {\n field.value = get(fd, key);\n }\n }\n // WMS-18906: For default value, do not mark the form as dirty.\n if (this.dirty && !this._triggeredByUser) {\n this.markAsPristine();\n }\n }\n const formGroupName = field.form.formGroupName;\n /**\n * if formGroupName is defined which means field is inside the inner form\n * then set the formdata on the field's form using formGroupName\n */\n if (formGroupName && get(data, formGroupName)) {\n this.setFormData.call(field.form, data[formGroupName]);\n }\n // if formdata is assigned later then on propertyChangeHandler, even inner forms data also needs to be updated.\n if (get(field.form, 'parentFormArray')) {\n this.setFormDataFromParentFormData.call(field.form, data);\n }\n }\n\n setFormData(data, innerFormFields?, innerFormdata?) {\n // whereas formFields explicitly passed can contain innerform fields also.\n const formFields = innerFormFields || this.formFields;\n formFields.forEach(field => {\n this.setFieldValue(field, data, innerFormdata);\n if (field.fieldValidations) {\n field.fieldValidations.setCustomValidationMessage();\n }\n });\n this.constructDataObject();\n }\n\n resetFormState() {\n // clearing the validationMessages on reset.\n if (this.validationMessages.length) {\n this.validationMessages = [];\n }\n if (!this.ngform) {\n return;\n }\n this.ngform.markAsUntouched();\n this.ngform.markAsPristine();\n }\n\n reset() {\n this.resetFormState();\n this.formFields.forEach(field => {\n field.value = '';\n if (field.widgettype === 'upload' || field.type === DataType.BLOB) {\n this.resetFileUploadWidget(field, true);\n }\n field.nativeElement.querySelector('input')?.removeAttribute('aria-invalid');\n });\n this.constructDataObject();\n this.clearMessage();\n }\n\n savePrevformFields() {\n this.prevformFields = getClonedObject(this.formFields.map(field => {\n return {\n 'key': field.key,\n 'type': field.type,\n 'widgettype': field.widgettype,\n 'outputformat': field.outputformat,\n 'value': field.value\n };\n }));\n }\n\n savePrevDataValues() {\n this.prevDataValues = this.formFields.map((obj) => {\n return {'key': obj.key, 'value': obj.value};\n });\n }\n\n setReadonlyFields() {\n this.formFields.forEach(field => {\n field.setReadOnlyState();\n });\n }\n\n resetFileUploadWidget(field, skipValueSet?) {\n const $formEle = this.$element;\n $formEle.find('[name=\"' + field.key + '_formWidget\"]').val('');\n field._control.reset();\n if (!skipValueSet) {\n field.href = '';\n field.value = null;\n }\n }\n\n emptyDataModel() {\n this.formFields.forEach(field => {\n if (isDefined(field)) {\n if (field.type === DataType.BLOB) {\n this.resetFileUploadWidget(field);\n } else {\n field.datavalue = '';\n }\n }\n });\n }\n\n setDefaultValues() {\n this.formFields.forEach(field => {\n this.onFieldDefaultValueChange(field, field.defaultvalue);\n });\n }\n\n setOperationType(mode) {\n this.operationType = mode || 'insert';\n }\n\n new() {\n this.resetFormState();\n this.operationType = Live_Operations.INSERT;\n this.clearMessage();\n if (this.isSelected) {\n this.savePrevformFields();\n }\n this.emptyDataModel();\n setTimeout(() => {\n this.setDefaultValues();\n this.savePrevDataValues();\n this.constructDataObject();\n });\n this.isUpdateMode = true;\n }\n\n edit() {\n this.resetFormState();\n this.clearMessage();\n\n this.operationType = Live_Operations.UPDATE;\n\n if (this.isSelected) {\n this.savePrevformFields();\n this.savePrevDataValues();\n }\n this.prevDataObject = getClonedObject(this.formdata || {});\n\n this.setReadonlyFields();\n this.isUpdateMode = true;\n\n $appDigest();\n }\n\n private triggerWMEvent(eventName) {\n const tableId = this.nativeElement.getAttribute('dependsontable');\n if (!tableId) {\n return;\n }\n $invokeWatchers(true);\n this.app.notify('wm-event', {eventName, widgetName: tableId});\n }\n\n submitForm($event) {\n let template, formData, result;\n const dataSource = this.datasource;\n // Disable the form submit if form is in invalid state.\n if (this.validateFieldsOnSubmit()) {\n return;\n }\n\n formData = getClonedObject(this.constructDataObject());\n\n const getParams = () => {\n return {$event, $formData: formData, $data: formData};\n };\n\n\n if (this.onBeforeSubmitEvt) {\n if (this.invokeEventCallback('beforesubmit', getParams()) === false) {\n return;\n } else {\n this.resetFormState();\n }\n } else {\n this.resetFormState();\n }\n\n if (this.onSubmitEvt || dataSource) {\n // If on submit is there execute it and if it returns true do service variable invoke else return\n // If its a service variable call setInput and assign form data and invoke the service\n if (dataSource) {\n const currentPageNum = dataSource.pagination && dataSource.pagination.number + 1;\n const operationType = this.operationType ? this.operationType : 'insert';\n performDataOperation(dataSource, formData, {operationType: operationType})\n .then((data) => {\n if (dataSource.category === 'wm.CrudVariable') {\n this.triggerWMEvent('resetEditMode');\n this.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true,\n 'operation': 'list',\n 'page': currentPageNum,\n 'preventMissingOpMsg': true\n });\n if (this.dialogId) {\n this.closeDialog();\n }\n }\n if (isDefined(data.body)) {\n result = getValidJSON(data.body);\n result = isDefined(result) ? result : data.body;\n } else {\n result = data;\n }\n return {\n 'result': result,\n 'status': true,\n 'message': this.postmessage,\n 'type': 'success'\n };\n }, (error) => {\n template = this.errormessage || error.error || error;\n $appDigest();\n return {\n 'result': get(error, 'error') || error,\n 'status': false,\n 'message': template,\n 'type': 'error'\n };\n }).then(response => {\n if ((response.type === 'error' && !this.onError) || (response.type === 'success' && !this.onSuccess)) {\n this.toggleMessage(true, response.message, response.type);\n }\n this.invokeEventCallback('submit', getParams());\n this.onResultCb(response.result, response.status, $event);\n });\n } else {\n this.invokeEventCallback('submit', getParams());\n this.onResultCb({}, true, $event);\n }\n } else {\n this.onResultCb({}, true, $event);\n }\n }\n\n closeDialog() {\n this.dialogService.close(this.dialogId);\n }\n\n // Method to show/hide the panel header or footer based on the buttons\n showButtons(position) {\n return some(this.buttonArray, btn => {\n return includes(btn.position, position) && btn.updateMode === this.isUpdateMode;\n });\n }\n\n // Expand or collapse the panel\n expandCollapsePanel() {\n if (this.collapsible) {\n // flip the active flag\n this.expanded = !this.expanded;\n }\n }\n\n onDataSourceUpdate(response, newForm, updateMode) {\n if (newForm) {\n this.new();\n } else {\n this.setFormData(response);\n this.closeDialog();\n }\n this.isUpdateMode = isDefined(updateMode) ? updateMode : true;\n }\n\n /**\n * This method tranverses through the parent containing formdata and returns the parent formdata.\n * @param form, represents the current form instance\n * @returns {any}\n */\n getNearestParentFormData(form) {\n if (!form.parentForm) {\n return {};\n }\n if (!form.bindformdata && get(form.parentForm, 'formdata') && !isEmpty(form.parentForm.formdata)) {\n return form.parentForm.formdata;\n }\n return this.getNearestParentFormData(form.parentForm);\n }\n\n setFormDataFromParentFormData(formdata: any) {\n if (isEmpty(this.formdata) && this.parentForm && formdata) {\n /**\n * If form is inside list,\n * 1. directly applying the formdata to the formArray to update the formdata on list of forms using patchValue.\n * 2. and also setting individual formdata to the form inside each item based on formArrayIndex, when form is not bound to formdata.\n * 3. explicitly invoking formdata as formFields will contain all the formfields including innerForm's fields\n * (if we do not invoke explicitly then formFields will just contain the fields inside current form and not inner form fields)\n * 4. if childFormArrayData is not available we will check for inner form data using \"formGroupName\" and will set the innerform data\n * If not inside list, just set the formdata on all the formfields including innerForm fields\n */\n if (this.parentFormArray) {\n let childFormArrayData = get(formdata, this.parentList.name);\n if (childFormArrayData) {\n if (!isArray(childFormArrayData)) {\n childFormArrayData = [childFormArrayData];\n }\n this.parentFormArray.patchValue(childFormArrayData);\n if (!this.bindformdata) {\n this.formdata = childFormArrayData[this.formArrayIndex];\n }\n this.setFormData(this.formdata);\n } else if (this.isParentList && this.parentForm.formGroupName) {\n const parentFormData = get(formdata, this.parentForm.formGroupName);\n this.setFormDataFromParentFormData(parentFormData);\n }\n } else {\n this.setFormData(formdata);\n }\n }\n }\n\n // On form data source change. This method is overridden by live form and live filter\n onDataSourceChange() {\n if (get(this.formFields, 'length') && !this.bindformdata) {\n this.isDataSourceUpdated = true;\n /**\n * formdata on the parent form will be set before the inner forms are rendered.\n * Hence handling formdata on the innerForms, which might be rendered slowly (suppose prefab with form)\n * setting inner form's formdata obtained from parent formdata\n * this applies only when formdata is not given on the inner form.\n */\n const formdata = this.getNearestParentFormData(this);\n this.setFormDataFromParentFormData(formdata);\n }\n }\n\n // On form data source change. This method is overridden by live form and live filter\n onFormDataSourceChange() {\n this.updateFieldSource();\n }\n\n // On form field default value change. This method is overridden by live form and live filter\n onFieldDefaultValueChange(field, nv) {\n field.value = parseValueByType(nv, undefined, field.widgettype, field.trailingzero);\n // WMS-22434: For default value set on individual form fields, do not mark the form as dirty.\n if (this.dirty && !this._triggeredByUser) {\n this.markAsPristine();\n }\n }\n\n // On form field value change. This method is overridden by live form and live filter\n onFieldValueChange() {\n }\n\n // Function to generate and compile the form fields from the metadata\n async generateFormFields() {\n let noOfColumns;\n let $gridLayout;\n // Check if grid layout is present or not for first time\n if (isUndefined(this._isGridLayoutPresent)) {\n this._isGridLayoutPresent = this.$element.find('.panel-body [wmlayoutgrid]').length > 0;\n }\n if (this._isGridLayoutPresent) {\n $gridLayout = this.$element.find('.form-elements [wmlayoutgrid]').first();\n noOfColumns = Number($gridLayout.attr('columns')) || 1;\n } else {\n $gridLayout = this.$element.find('.form-elements .dynamic-form-container');\n if (!$gridLayout.length) {\n this.$element.find('.form-elements').prepend('<div class=\"dynamic-form-container\"></div>');\n $gridLayout = this.$element.find('.form-elements .dynamic-form-container');\n }\n noOfColumns = 1;\n }\n const columnWidth = 12 / noOfColumns;\n let fieldTemplate = '';\n let colCount = 0;\n let index;\n let userFields;\n let fields = this.metadata ? this.metadata.data || this.metadata : [];\n\n this.formFields = []; // empty the form fields\n\n if (isEmpty(fields)) {\n return;\n }\n\n if (this.onBeforeRenderEvt) {\n userFields = this.invokeEventCallback('beforerender', {$metadata: fields});\n if (userFields) {\n fields = userFields;\n }\n }\n\n if (!isArray(fields)) {\n return;\n }\n\n while (fields[colCount]) {\n let colTmpl = '';\n for (index = 0; index < noOfColumns; index++) {\n if (fields[colCount]) {\n colTmpl += setMarkupForFormField(fields[colCount], columnWidth);\n }\n colCount++;\n }\n fieldTemplate += `<wm-gridrow>${colTmpl}</wm-gridrow>`;\n }\n\n if (!this._isGridLayoutPresent) {\n fieldTemplate = `<wm-layoutgrid>${fieldTemplate}</wm-layoutgrid>`;\n }\n\n this.dynamicFormRef.clear();\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext.form = this;\n }\n const componentFactoryRef = await this.dynamicComponentProvider.getComponentFactoryRef(\n 'app-form-dynamic-' + this.widgetId,\n fieldTemplate,\n {\n noCache: true,\n transpile: true\n });\n const component = this.dynamicFormRef.createComponent(componentFactoryRef, 0, this.inj);\n extendProto(component.instance, this._dynamicContext);\n $gridLayout[0].appendChild(component.location.nativeElement);\n this.setFormData(this.formdata);\n }\n\n get mode() {\n return this.operationType || this.findOperationType();\n }\n\n get dirty() {\n return this.ngform && this.ngform.dirty;\n }\n\n /**\n * This method sets the form state to pristine by internally calling angular markAsPristine method on the form\n * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false\n * @returns {void}\n */\n markAsPristine(value: boolean = false) {\n this.ngform.markAsPristine({ onlySelf: value });\n }\n\n /**\n * This method sets the form state to dirty by internally calling angular markAsDirty method on the form\n * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false\n * @returns {void}\n */\n markAsDirty(value: boolean = false) {\n this.ngform.markAsDirty({ onlySelf: value });\n }\n\n get invalid() {\n return this.ngform && this.ngform.invalid;\n }\n\n get touched() {\n return this.ngform && this.ngform.touched;\n }\n\n get valid() {\n return this.ngform && this.ngform.valid;\n }\n\n get pristine() {\n return this.ngform && this.ngform.pristine;\n }\n\n /**\n * This method sets the form state to touched by internally calling angular markAsTouched method on the form\n * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false\n * @returns {void}\n */\n markAsTouched(value: boolean = false) {\n this.ngform.markAsTouched({ onlySelf: value });\n }\n\n /**\n * This method sets the form state to untouched by internally calling angular markAsUntouched method on the form\n * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false\n * @returns {void}\n */\n markAsUntouched(value: boolean = false) {\n this.ngform.markAsUntouched({ onlySelf: value });\n }\n\n invokeActionEvent($event, expression: string) {\n const fn = $parseEvent(expression);\n fn(this.viewParent, Object.assign(this.context, {$event}));\n }\n\n ngOnDestroy() {\n // on form destroy, removing this form from the parentForm too.\n const controls = this.parentForm && get(this.parentForm, 'ngform.controls');\n if (controls) {\n // when current form is inside the list (i.e. incase of formArray).\n if (get(this.parentList, 'name') && controls.hasOwnProperty(this.parentList.name)) {\n //get the index of current form in the list and remove the FormControl from FormArray\n const index = findIndex(this.parentList.getWidgets(this.name), {widgetId: this.widgetId});\n (<FormArray>this.parentForm.ngform.controls[this.parentList.name]).removeAt(index);\n }\n // when we have formGroupName set i.e. multiple formInstance with counter appended to formName\n if (this.formGroupName && controls.hasOwnProperty(this.formGroupName)) {\n this.parentForm.ngform.removeControl(this.formGroupName);\n } else {\n this.parentForm.ngform.removeControl(this.name);\n }\n }\n super.ngOnDestroy();\n }\n}\n","import { Attribute, Directive, Inject, OnInit, Self, Optional } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\nimport { WidgetRef } from '@wm/components/base';\nimport { TableComponent } from '@wm/components/data/table';\n\nimport { FormComponent } from './form.component';\n\n@Directive({\n selector: '[wmFormWidget]'\n})\nexport class FormWidgetDirective implements OnInit {\n\n ngform: FormGroup;\n fb;\n parent;\n\n constructor(\n @Optional() @Inject(FormComponent) form,\n @Optional() @Inject(TableComponent) table,\n @Self() @Inject(WidgetRef) public componentInstance,\n fb: FormBuilder,\n @Attribute('name') public name,\n @Attribute('key') public key) {\n this.fb = fb;\n this.parent = form || table;\n this.ngform = this.parent.ngform;\n\n this.componentInstance.registerPropertyChangeListener((k, nv) => {\n if (k === 'datavalue' && this._control) {\n this._control.setValue(nv);\n } else if (k === 'name' && !this._control) {\n this.addControl(this.key || nv);\n }\n });\n }\n\n get _control() {\n const fieldName = this.key || this.name;\n if (!fieldName) {\n return undefined;\n }\n return this.ngform && this.ngform.controls[fieldName];\n }\n\n addControl(fieldName) {\n this.ngform.addControl(fieldName, this.createControl());\n }\n\n createControl() {\n return this.fb.control(this.componentInstance.datavalue);\n }\n\n ngOnInit() {\n const fieldName = this.key || this.name;\n\n if (fieldName && !this._control) {\n this.addControl(fieldName);\n this.parent.registerFormWidget(this.componentInstance);\n }\n }\n}\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-form-action',\n new Map(\n [\n ['accessroles', PROP_STRING],\n ['action', PROP_STRING],\n ['class', PROP_STRING],\n ['binding', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['display-name', PROP_STRING],\n ['hyperlink', PROP_STRING],\n ['iconclass', PROP_STRING],\n ['iconname', PROP_STRING],\n ['key', PROP_STRING],\n ['position', {value: 'footer', ...PROP_STRING}],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['target', PROP_STRING],\n ['title', PROP_STRING],\n ['type', {value: 'button', ...PROP_STRING}],\n ['update-mode', {value: true, ...PROP_BOOLEAN}],\n ['widget-type', {value: 'button', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {Directive, Inject, Injector, OnInit, Optional} from '@angular/core';\n\nimport { BaseComponent, provideAsWidgetRef } from '@wm/components/base';\n\nimport { registerProps } from './form-action.props';\nimport { FormComponent } from '../form.component';\nimport {isUndefined} from \"lodash-es\";\n\nconst WIDGET_CONFIG = {widgetType: 'wm-form-action', hostClass: ''};\n\n@Directive({\n selector: '[wmFormAction]',\n providers: [\n provideAsWidgetRef(FormActionDirective)\n ]\n})\nexport class FormActionDirective extends BaseComponent implements OnInit {\n static initializeProps = registerProps();\n\n accessroles;\n action;\n binding;\n class;\n disabled;\n displayName;\n iconclass;\n iconname;\n key;\n position;\n shortcutkey;\n show;\n tabindex;\n title;\n type;\n updateMode;\n buttonDef;\n hyperlink;\n target;\n\n private _propsInitialized: boolean;\n\n constructor(inj: Injector, @Optional() public form: FormComponent, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n populateAction() {\n this.buttonDef = {\n key: this.key || this.binding,\n displayName: this['display-name'],\n show: this.show,\n class: this.class ? this.class : (this['widget-type'] === 'button' ? 'btn-secondary' : ''),\n iconclass: this.iconclass || '',\n title: isUndefined(this.title) ? (this['display-name'] || '') : this.title,\n action: this.action,\n accessroles: this.accessroles,\n shortcutkey: this.shortcutkey,\n disabled: this.disabled,\n tabindex: this.tabindex,\n iconname: this.iconname,\n type: this.type,\n updateMode: this['update-mode'],\n position: this.position,\n widgetType: this['widget-type'],\n hyperlink: this.hyperlink,\n target: this.target\n };\n this._propsInitialized = true;\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.populateAction();\n this.form.registerActions(this.buttonDef);\n }\n\n onPropertyChange(key, nv, ov) {\n if (!this._propsInitialized) {\n return;\n }\n switch (key) {\n case 'display-name':\n this.buttonDef.displayName = nv;\n default:\n this.buttonDef[key] = nv;\n break;\n }\n }\n}\n","import { FormWidgetType } from '@wm/core';\n\nimport { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, getWidgetPropsByType } from '@wm/components/base';\n\nexport const registerProps = () => {\n const formFieldMap = new Map(\n [\n ['dataentrymode', {value: 'default', ...PROP_STRING}],\n ['debouncetime', {value: 250, ...PROP_NUMBER}],\n ['defaultvalue', PROP_STRING],\n ['displayname', PROP_STRING],\n ['display-name', PROP_STRING],\n ['field', PROP_STRING],\n ['filterexpressions', PROP_STRING],\n ['filter-on', PROP_STRING],\n ['generator', PROP_STRING],\n ['hint', PROP_STRING],\n ['inputtype', PROP_STRING],\n ['is-primary-key', PROP_BOOLEAN],\n ['is-range', PROP_BOOLEAN],\n ['is-related', PROP_BOOLEAN],\n ['isformfield', {value: true}],\n ['key', PROP_STRING],\n ['limit', PROP_NUMBER],\n ['lookup-type', PROP_STRING],\n ['lookup-field', PROP_STRING],\n ['name', PROP_STRING],\n ['matchmode', PROP_STRING],\n ['maxdefaultvalue', PROP_STRING],\n ['maxplaceholder', PROP_STRING],\n ['mobile-display', {value: true, ...PROP_BOOLEAN}],\n ['period', PROP_BOOLEAN],\n ['pc-display', {value: true, ...PROP_BOOLEAN}],\n ['placeholder', PROP_STRING],\n ['primary-key', PROP_BOOLEAN],\n ['related-entity-name', PROP_STRING],\n ['required', PROP_BOOLEAN],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tablet-display', {value: true, ...PROP_BOOLEAN}],\n ['type', PROP_STRING],\n ['validationmessage', PROP_STRING],\n ['viewmodewidget', PROP_STRING],\n ['widgettype', PROP_STRING]\n ]\n );\n\n for (const key in FormWidgetType) {\n const widgetName = 'wm-form-field-' + FormWidgetType[key];\n const widgetProps = getWidgetPropsByType(widgetName);\n formFieldMap.forEach((v, k: string) => {\n if (widgetProps.get(k) == undefined) {\n widgetProps.set(k, v);\n }\n });\n }\n};\n","import {\n AfterContentInit,\n Attribute,\n ContentChild,\n Directive,\n HostListener,\n Inject,\n Injector,\n OnInit,\n Optional,\n Self\n} from '@angular/core';\nimport {FormBuilder, FormGroup, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {debounceTime} from 'rxjs/operators';\n\nimport {\n addForIdAttributes,\n App,\n debounce,\n FormWidgetType,\n isDateTimeType,\n isDefined,\n isMobile,\n noop,\n Viewport\n} from '@wm/core';\nimport {\n BaseFieldValidations,\n Context,\n getDefaultViewModeWidget,\n getEvaluatedData,\n provideAs,\n provideAsWidgetRef,\n StylableComponent\n} from '@wm/components/base';\nimport {ListComponent} from '@wm/components/data/list';\n\nimport {registerProps} from './form-field.props';\nimport {FormComponent} from '../form.component';\nimport {forEach, get, isArray, isObject, join} from \"lodash-es\";\n\ndeclare const $;\n\n// Custom validator to show validation error, if setValidationMessage method is used\nconst customValidatorFn = () => {\n return { custom: true };\n};\n\nconst FILE_TYPES = {\n 'image' : 'image/*',\n 'video' : 'video/*',\n 'audio' : 'audio/*'\n};\n\n@Directive({\n selector: '[wmFormField]',\n exportAs: 'wmFormField',\n providers: [\n provideAsWidgetRef(FormFieldDirective),\n provideAs(FormFieldDirective, NG_VALUE_ACCESSOR, true),\n {provide: Context, useFactory: () => { return {} }, multi: true}\n ]\n})\nexport class FormFieldDirective extends StylableComponent implements OnInit, AfterContentInit {\n static initializeProps = registerProps();\n\n @ContentChild('formWidget', {static: true}) formWidget;\n @ContentChild('formWidgetMax') formWidgetMax;\n\n private fb;\n private viewport;\n\n // excludeProps is used to store the props that should not be applied on inner widget\n private excludeProps;\n private _validators;\n private _oldUploadVal;\n\n ngform: FormGroup;\n defaultvalue;\n displayexpression;\n displayfield;\n displaylabel;\n displayname;\n generator;\n key;\n target;\n binding;\n widgettype;\n class;\n readonly;\n show;\n type;\n isDataSetBound;\n viewmodewidget;\n binddataset;\n binddisplayexpression;\n bindChipclass;\n displayimagesrc: string;\n binddisplayimagesrc;\n binddisplaylabel;\n form;\n filetype;\n extensions;\n permitted;\n period;\n isRange;\n name;\n // Validation properties\n required;\n maxchars;\n minvalue;\n maxvalue;\n regexp;\n fieldDefConfig;\n placeholder;\n inputtype;\n validationmessage;\n\n public _fieldName;\n\n private _debounceSetUpValidators;\n private _initPropsRes;\n private parentList;\n private showPendingSpinner: boolean;\n private _activeField: boolean;\n private notifyForFields: any;\n private fieldValidations;\n private _triggeredByUser: boolean;\n private _clicktriggeredByUser: boolean;\n private app: App;\n\n @HostListener('keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n this._triggeredByUser = true;\n }\n\n @HostListener('click', ['$event']) handleClick(event) {\n this._clicktriggeredByUser = true;\n }\n\n private isFocused;\n constructor(\n inj: Injector,\n form: FormComponent,\n fb: FormBuilder,\n viewport: Viewport,\n app: App,\n @Optional() parentList: ListComponent,\n @Attribute('chipclass.bind') bindChipclass: string,\n @Attribute('dataset.bind') binddataset,\n @Attribute('displayexpression.bind') binddisplayexpression: string,\n @Attribute('displaylabel.bind') binddisplaylabel: string,\n @Attribute('widgettype') _widgetType,\n @Attribute('name') name,\n @Attribute('displayimagesrc.bind') binddisplayimagesrc: String,\n @Attribute('key') key,\n @Attribute('is-range') isRange,\n @Attribute('pc-display') pcDisplay,\n @Attribute('mobile-display') mobileDisplay,\n @Attribute('tablet-display') tabletDisplay,\n @Self() @Inject(Context) contexts: Array<any>,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n const WIDGET_CONFIG = {\n widgetType: 'wm-form-field',\n hostClass: '',\n widgetSubType: 'wm-form-field-' + (_widgetType || FormWidgetType.TEXT).trim()\n };\n let resolveFn: Function = noop;\n\n super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n this._initPropsRes = resolveFn;\n this.app = app;\n this.fieldDefConfig = {};\n this.class = '';\n this.binddataset = binddataset;\n this.binddisplayimagesrc = binddisplayimagesrc;\n this.binddisplayexpression = binddisplayexpression;\n this.bindChipclass = bindChipclass;\n this.binddisplaylabel = binddisplaylabel;\n this.form = form;\n this.fb = fb;\n this.viewport = viewport;\n this._fieldName = key || name;\n this.isRange = isRange;\n this.excludeProps = new Set(['type', 'name']);\n this.widgettype = _widgetType;\n this.parentList = parentList;\n this.notifyForFields = [];\n\n if (this.binddataset || this.$element.attr('dataset')) {\n this.isDataSetBound = true;\n }\n\n contexts[0]._onFocusField = this._onFocusField.bind(this);\n contexts[0]._onBlurField = this._onBlurField.bind(this);\n\n this._debounceSetUpValidators = debounce(() => this.setUpValidators(), 500);\n }\n\n _onFocusField($evt) {\n this._activeField = true;\n $($evt.target).closest('.live-field').addClass('active');\n\n }\n\n // Function to get the active element markup based on widget type\n getActiveElement() {\n const widgetType = this.nativeElement.getAttribute('widgettype');\n switch (widgetType) {\n case 'select':\n return this.nativeElement.querySelector('select');\n case 'textarea':\n return this.nativeElement.querySelector('textarea');\n default:\n return this.nativeElement.querySelector('input');\n }\n }\n\n setAriaAttributes() {\n const element = this.getActiveElement();\n if (this.ngform.controls[this._fieldName].invalid && this.ngform.controls[this._fieldName].touched && this.form.isUpdateMode) {\n this.nativeElement.setAttribute('__errormsg', `${this.nativeElement.getAttribute('__validationId')}`);\n element?.setAttribute('aria-invalid', `${this.ngform.controls[this._fieldName].invalid}`);\n element?.setAttribute('aria-describedby', `${this.nativeElement.getAttribute('__validationId')}`);\n } else {\n this.nativeElement.removeAttribute('__errormsg');\n element?.removeAttribute('aria-invalid');\n element?.removeAttribute('aria-describedby');\n }\n }\n\n _onBlurField($evt) {\n $($evt.target).closest('.live-field').removeClass('active');\n const ele = this.nativeElement.querySelector('p.text-danger');\n // Fix for [WMS-23959]: ADA issue - adding aria-describedby, aria-invalid, __errormsg attributes only when the form field is invalid , else removing the attributes\n this.setAriaAttributes();\n this._activeField = false;\n this._triggeredByUser = false;\n this._clicktriggeredByUser = false;\n }\n\n // Expression to be evaluated in view mode of form field\n evaluateExpr(object, displayField, displayExpr) {\n if (!displayExpr || !displayField) {\n displayField = Object.keys(object)[0];\n // If dataset is not ready, display expression will not be defined\n if (!displayField) {\n return;\n }\n }\n return getEvaluatedData(object, {\n field: displayField,\n expression: displayExpr\n }, this.viewParent);\n }\n\n // Expression to be evaluated in view mode of form field\n getDisplayExpr() {\n const caption = [];\n const value = this.value;\n const displayField = this.displayfield || this.displaylabel\n const displayExpr = this.displayexpression;\n if (isObject(value)) {\n if (isArray(value)) {\n forEach(value, obj => {\n if (isObject(obj)) {\n caption.push(this.evaluateExpr(obj, displayField, displayExpr));\n }\n });\n } else {\n caption.push(this.evaluateExpr(value, displayField, displayExpr));\n }\n return join(caption, ',');\n }\n return (value === undefined || value === null) ? '' : this.value;\n }\n\n getCaption() {\n return (this.value === undefined || this.value === null) ? (get(this.form.dataoutput, this._fieldName) || '') : this.value;\n }\n\n // Notifies changes to observing validation fields\n notifyChanges() {\n forEach(this.notifyForFields, field => {\n field.fieldValidations.validate();\n });\n }\n\n // Registers observer of validation fields\n observeOn(fields) {\n this.fieldValidations.observeOn(fields, 'formfields');\n }\n\n // Method to setup validators for reactive form control\n setUpValidators(customValidator?) {\n this.fieldValidations.setUpValidators(customValidator);\n }\n\n // sets the custom async validation on the form field\n setAsyncValidators(validators) {\n this.fieldValidations.setAsyncValidators(validators);\n }\n\n // sets the default and custom sync validation on the form field\n setValidators(validators) {\n this.fieldValidations.setValidators(validators);\n }\n\n // Method to set the properties on inner form widget\n setFormWidget(key, val) {\n if (this.formWidget && this.formWidget.widget) {\n this.formWidget.widget[key] = val;\n }\n }\n\n boundFn(fn) {\n return fn();\n }\n\n // Method to set the properties on inner max form widget (when range is selected)\n setMaxFormWidget(key, val) {\n if (this.formWidgetMax) {\n this.formWidgetMax.widget[key] = val;\n }\n }\n\n onPropertyChange(key, nv, ov?) {\n const isFormDirty = this.form.dirty;\n\n if (key !== 'tabindex') {\n super.onPropertyChange(key, nv, ov);\n }\n\n if (this.excludeProps.has(key)) {\n return;\n }\n\n // As upload widget is an HTML widget, only required property is setup\n if (this.widgettype === FormWidgetType.UPLOAD) {\n if (key === 'required') {\n this._debounceSetUpValidators();\n }\n super.onPropertyChange(key, nv, ov);\n return;\n }\n\n this.setFormWidget(key, nv);\n\n // Placeholder should not be setup on max widget\n if (key !== 'placeholder') {\n this.setMaxFormWidget(key, nv);\n }\n\n switch (key) {\n case 'defaultvalue':\n this.form.onFieldDefaultValueChange(this, nv);\n break;\n case 'maxdefaultvalue':\n this.maxValue = nv;\n this.setMaxFormWidget('datavalue', nv);\n this.form.onMaxDefaultValueChange();\n break;\n case 'maxplaceholder':\n this.setMaxFormWidget('placeholder', nv);\n break;\n case 'required':\n // WMS-18906 : Do not make form as dirty during required prop initialization\n if (isFormDirty !== this.form.dirty) {\n this.form.markAsPristine();\n }\n case 'maxchars':\n case 'minvalue':\n case 'maxvalue':\n case 'regexp':\n case 'show':\n this._debounceSetUpValidators();\n break;\n case 'primary-key':\n if (nv) {\n this.form.setPrimaryKey(this._fieldName);\n }\n break;\n case 'display-name':\n this.displayname = nv;\n break;\n case 'readonly':\n this.setReadOnlyState();\n break;\n }\n }\n\n onStyleChange(key, nv, ov?) {\n this.setFormWidget(key, nv);\n this.setMaxFormWidget(key, nv);\n super.onStyleChange(key, nv, ov);\n }\n\n get datavalue() {\n return this.formWidget && this.formWidget.datavalue;\n }\n\n set datavalue(val) {\n if (this._control && this.widgettype !== FormWidgetType.UPLOAD) {\n this._control.setValue(val);\n }\n }\n\n get value() {\n return this.datavalue;\n }\n\n set value(val) {\n this.datavalue = val;\n }\n\n get maxValue() {\n return this.formWidgetMax && this.formWidgetMax.datavalue;\n }\n\n set maxValue(val) {\n if (this._maxControl) {\n this._maxControl.setValue(val);\n }\n }\n\n get minValue() {\n return this.value;\n }\n\n set minValue(val) {\n this.value = val;\n }\n\n // Get the reactive form control\n get _control() {\n return this.ngform && this.ngform.controls[this._fieldName];\n }\n\n // Get the reactive max form control\n get _maxControl() {\n return this.ngform && this.ngform.controls[this._fieldName + '_max'];\n }\n\n // Get the displayValue\n get displayValue() {\n return this.formWidget && this.formWidget.displayValue;\n }\n\n //Get the timestamp\n get timestamp(){\n return this.formWidget && this.formWidget.timestamp;\n }\n\n //Get the charlength\n get charlength(){\n return this.formWidget && this.formWidget.charlength;\n }\n\n // Create the reactive form control\n createControl() {\n return this.fb.control(undefined, {\n validators: this._validators\n });\n }\n\n // On field value change, propagate event to parent form\n onValueChange(val) {\n if (!this.isDestroyed) {\n const captionEl = $(this.nativeElement).find('.caption-floating');\n if (captionEl.length > 0) {\n // hasValue check whether form-field has a value from passed val attribute\n // Added sanity check on val to support values liked 0, false etc as input val - WMS-20084\n // explicitly checking for input value or -webkit-autofill to see whether there are any autofilled fields - WMS-20141\n\n const hasValue = ((isDefined(val) && val !== '' && val !== null) || captionEl.find('input').val()) || captionEl.find('input:-webkit-autofill').length;\n\n this.app.notify('captionPositionAnimate', {\n displayVal: hasValue,\n nativeEl: captionEl,\n isSelectMultiple: this.formWidget && this.formWidget.multiple,\n isFocused: this._activeField\n });\n }\n // Fix for [WMS-23959]: ADA issue - adding aria-describedby, aria-invalid, __errormsg attributes only when the form field is invalid , else removing the attributes\n this.setAriaAttributes();\n this.form.onFieldValueChange(this, val);\n this.notifyChanges();\n // Do mark as touched, only incase when user has entered an input but not through the script. Hence added mousedown event check\n // active class checks whether user is on the current field, if so marking the field as touched. And form field validation happens once a field is touched\n // _triggeredByUser checks whether the field is touched by the user or triggered from external script\n // WMS-22456: _clicktriggeredByUser checks when user selects datetimetype from picker, mark the field as touched to show validation errors in mobile\n\n if (this.$element.find('.active').length > 0 || this.form.touched) {\n if (this._triggeredByUser || (isMobile() && this._clicktriggeredByUser && isDateTimeType(this.widgettype))) {\n this.ngform.controls[this._fieldName].markAsTouched();\n }\n this.fieldValidations.setCustomValidationMessage();\n }\n }\n }\n\n onStatusChange(status) {\n if (!this.isDestroyed) {\n this.showPendingSpinner = (status === 'PENDING');\n // while running validation, widget is disabled and spinner is shown\n // otherwise formWidget disabled state is reset to the state of the formField.\n if (status === 'PENDING') {\n this.formWidget.disabled = true;\n } else if (this.formWidget.disabled !== (this as any).disabled) {\n this.formWidget.disabled = (this as any).disabled;\n }\n }\n }\n\n // Method to expose validation message and set control to invalid\n setValidationMessage(val) {\n setTimeout(() => {\n this.validationmessage = val;\n this.setUpValidators(customValidatorFn);\n });\n }\n\n setReadOnlyState() {\n let readOnly;\n if (this.form.isUpdateMode) {\n if (this['primary-key'] && !this['is-related'] && !this.period) {\n /*If the field is primary but is assigned set readonly false.\n Assigned is where the user inputs the value while a new entry.\n This is not editable(in update mode) once entry is successful*/\n readOnly = !(this.generator === 'assigned' && this.form.operationType !== 'update');\n } else {\n readOnly = this.readonly;\n }\n } else {\n // In view mode, set widget state to readonly always\n readOnly = true;\n }\n this.setFormWidget('readonly', readOnly);\n }\n\n resetDisplayInput() {\n if ((!isDefined(this.value) || this.value === '')) {\n this.formWidget && this.formWidget.resetDisplayInput && this.formWidget.resetDisplayInput();\n }\n }\n\n triggerUploadEvent($event, eventName) {\n const params: any = { $event };\n if (eventName === 'change') {\n params.newVal = $event.target.files;\n params.oldVal = this._oldUploadVal;\n this._oldUploadVal = params.newVal;\n }\n this.invokeEventCallback(eventName, params);\n }\n\n private registerFormField() {\n\n const fieldName = this._fieldName;\n\n if (this.parentList && !(this.form.parentList === this.parentList)) {\n let counter = 1;\n let _fieldName = fieldName;\n while (this.ngform.controls.hasOwnProperty(_fieldName)) {\n _fieldName = `${fieldName}_${counter}`;\n counter++;\n }\n this.ngform.addControl(_fieldName, this.createControl());\n this._fieldName = _fieldName;\n } else {\n this.ngform.addControl(fieldName, this.createControl());\n }\n const onValueChangeSubscription = this._control.valueChanges\n .pipe(debounceTime(200))\n .subscribe(this.onValueChange.bind(this));\n this.registerDestroyListener(() => onValueChangeSubscription.unsubscribe());\n\n const onStatusChangeSubscription = this._control.statusChanges\n .pipe(debounceTime(100))\n .subscribe(this.onStatusChange.bind(this));\n this.registerDestroyListener(() => onStatusChangeSubscription.unsubscribe());\n\n if (this.isRange === 'true') {\n this.ngform.addControl(fieldName + '_max', this.createControl());\n // registering for valueChanges on MaxformWidget\n const onMaxValueChangeSubscription = this._maxControl.valueChanges\n .pipe(debounceTime(200))\n .subscribe(this.onValueChange.bind(this));\n this.registerDestroyListener(() => onMaxValueChangeSubscription.unsubscribe());\n }\n this.value = get(this.form.formdata, this._fieldName);\n }\n\n ngOnInit() {\n this.ngform = this.form.ngform;\n this.registerFormField();\n // Instantiate custom validators class for form field\n this.fieldValidations = new BaseFieldValidations(this, this.formWidget, this.widgettype, this._control, this.form);\n super.ngOnInit();\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n if (this.formWidget) {\n this._initPropsRes();\n\n // setting displayExpressions on the formwidget explicitly as expr was evaluated to \"\".\n this.setFormWidget('binddisplaylabel', this.binddisplaylabel);\n this.setFormWidget('binddisplayexpression', this.binddisplayexpression);\n this.setFormWidget('binddisplayimagesrc', this.binddisplayimagesrc);\n this.setFormWidget('bindChipclass', this.bindChipclass);\n this.setFormWidget('binddataset', this.binddataset);\n }\n\n this.registerReadyStateListener(() => {\n this.key = this._fieldName || this.target || this.binding;\n this.viewmodewidget = this.viewmodewidget || getDefaultViewModeWidget(this.widgettype);\n\n // For upload widget, generate the permitted field\n if (this.widgettype === FormWidgetType.UPLOAD) {\n let fileType;\n // Create the accepts string from file type and extensions\n fileType = this.filetype ? FILE_TYPES[this.filetype] : '';\n this.permitted = fileType + (this.extensions ? (fileType ? ',' : '') + this.extensions : '');\n }\n if (isMobile() && this.viewport.isMobileType) {\n if (!this['mobile-display']) {\n this.widget.show = false;\n }\n } else if (this.viewport.isTabletType) {\n if (!this['tablet-display']) {\n this.widget.show = false;\n }\n } else {\n if (!this['pc-display']) {\n this.widget.show = false;\n }\n }\n\n this.fieldDefConfig.displaname = this.displayname;\n this.fieldDefConfig.show = this.show;\n this.fieldDefConfig.isRelated = this['is-related'];\n this.fieldDefConfig.inputtype = this.inputtype;\n this.fieldDefConfig.generator = this.generator;\n this.fieldDefConfig.placeholder = this.placeholder;\n this.fieldDefConfig.primaryKey = this['primary-key'];\n this.fieldDefConfig.required = this.required;\n this.fieldDefConfig._readonly = this.readonly;\n this.fieldDefConfig.regexp = this.regexp;\n this.fieldDefConfig.type = this.type;\n this.fieldDefConfig.key = this.key;\n this.fieldDefConfig.mobileDisplay = this['mobile-display'];\n this.fieldDefConfig.name = this.name;\n this.fieldDefConfig.pcDisplay = this['pc-display'];\n this.fieldDefConfig.tabletDisplay = this['tablet-display'];\n this.fieldDefConfig.validationmessage = this.validationmessage;\n this.fieldDefConfig.viewmodewidget = this.viewmodewidget;\n this.fieldDefConfig.widget = this.widgettype;\n\n // Register the form field with parent form\n this.form.registerFormFields(this.widget);\n\n addForIdAttributes(this.nativeElement);\n\n this.setReadOnlyState();\n });\n }\n}\n","import { Directive, Inject, Self } from '@angular/core';\n\nimport { AbstractDialogService, App, DataSource, triggerFn } from '@wm/core';\nimport { Live_Operations, performDataOperation } from '@wm/components/base';\nimport { ListComponent } from '@wm/components/data/list';\n\n@Directive({\n selector: '[wmLiveActions]'\n})\nexport class LiveActionsDirective {\n\n constructor(\n @Self() @Inject(ListComponent) private subscribedWidget,\n private app: App,\n private dialogService: AbstractDialogService\n ) {\n subscribedWidget.addRow = this.addRow.bind(this);\n subscribedWidget.updateRow = this.updateRow.bind(this);\n subscribedWidget.deleteRow = this.deleteRow.bind(this);\n subscribedWidget.call = this.call.bind(this);\n }\n\n public addRow() {\n this.app.notify('wm-event', {eventName: Live_Operations.INSERT, widgetName: this.subscribedWidget.name, row: this.subscribedWidget.selecteditem});\n }\n\n public updateRow() {\n this.app.notify('wm-event', {eventName: Live_Operations.UPDATE, widgetName: this.subscribedWidget.name, row: this.subscribedWidget.selecteditem});\n }\n\n public deleteRow() {\n this.app.notify('wm-event', {eventName: Live_Operations.DELETE, widgetName: this.subscribedWidget.name, row: this.subscribedWidget.selecteditem});\n }\n\n private successHandler(options, response) {\n triggerFn(options.success, response);\n }\n\n private errorHandler(options, error) {\n this.app.notifyApp(error, 'error', 'ERROR');\n triggerFn(options.error, error);\n }\n\n public getRecords(options, operation) {\n let index;\n let dataNavigator;\n\n if (this.subscribedWidget.navigation !== 'None' && this.subscribedWidget.dataNavigator) {\n dataNavigator = this.subscribedWidget.dataNavigator;\n\n // If operation is delete, decrease the data size and check if navigation to previous page is required\n if (operation === Live_Operations.DELETE) {\n dataNavigator.dataSize -= 1;\n dataNavigator.calculatePagingValues();\n index = dataNavigator.pageCount < dataNavigator.dn.currentPage ? 'prev' : undefined;\n } else {\n // If operation is insert, go to last page. If update operation, stay on current page\n index = operation === Live_Operations.INSERT ? 'last' : 'current';\n if (index === 'last') {\n dataNavigator.dataSize += 1;\n }\n dataNavigator.calculatePagingValues();\n }\n\n dataNavigator.navigatePage(index, null, true, response => {\n this.successHandler(options, response);\n });\n } else {\n this.subscribedWidget.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true\n }).then(response => {\n this.successHandler(options, response);\n }, err => {\n this.errorHandler(options, err);\n });\n }\n }\n\n private performCUDOperation(requestData, operation, options) {\n performDataOperation(this.subscribedWidget.datasource, requestData, {\n operationType: operation\n }).then(response => {\n if (response.error) {\n this.errorHandler(options, response.error);\n return;\n }\n if (this.subscribedWidget.datasource.category === 'wm.CrudVariable' && operation === 'delete') {\n this.subscribedWidget.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true\n }).then(response => {\n this.successHandler(options, response);\n }, err => {\n this.errorHandler(options, err);\n });\n } else {\n this.getRecords(options, operation);\n }\n // show delete success toaster\n if (operation === 'delete') {\n this.app.notifyApp(this.app.appLocale.MESSAGE_DELETE_RECORD_SUCCESS, 'success');\n }\n }, (error) => {\n this.errorHandler(options, error);\n });\n }\n\n private insertRecord(requestData, operation, options) {\n this.performCUDOperation(requestData, operation, options);\n }\n\n private updateRecord(requestData, operation, options) {\n this.performCUDOperation(requestData, operation, options);\n }\n\n private deleteRecord(requestData, operation, options) {\n // Show the delete confirmation dialog. On Ok, delete the record.\n this.dialogService.showAppConfirmDialog({\n title: this.app.appLocale.MESSAGE_DELETE_RECORD || 'Delete Record',\n iconclass: 'wi wi-delete fa-lg',\n message: this.subscribedWidget.confirmdelete || 'Are you sure you want to delete this?',\n oktext: this.subscribedWidget.deleteoktext || 'Ok',\n canceltext: this.subscribedWidget.deletecanceltext || 'Cancel',\n onOk: () => {\n this.performCUDOperation(requestData, operation, options);\n this.dialogService.closeAppConfirmDialog();\n },\n onCancel: () => {\n triggerFn(options.cancelDeleteCallback);\n this.dialogService.closeAppConfirmDialog();\n }\n });\n }\n\n private performOperation(operation, options) {\n const requestData = {\n row: options.row,\n prevData: {},\n rowData: {},\n transform: true,\n skipNotification: true\n };\n\n if (operation === Live_Operations.UPDATE) {\n requestData.rowData = options.rowData;\n requestData.prevData = options.prevData;\n }\n\n /* decide routine based on CRUD operation to be performed */\n switch (operation) {\n case Live_Operations.INSERT:\n this.insertRecord(requestData, operation, options);\n break;\n case Live_Operations.UPDATE:\n this.updateRecord(requestData, operation, options);\n break;\n case Live_Operations.DELETE:\n this.deleteRecord(requestData, operation, options);\n break;\n case Live_Operations.READ:\n this.getRecords(options, operation);\n break;\n }\n }\n\n // API exposed to make CRUD operations\n public call(operation, options, success?, error?) {\n options.success = success;\n options.error = error;\n\n this.performOperation(operation, options);\n }\n}\n","import { Directive, Attribute, ContentChildren, AfterContentInit, OnDestroy } from '@angular/core';\n\nimport { AbstractDialogService, App, DataSource } from '@wm/core';\nimport { Live_Operations } from '@wm/components/base';\nimport { FormComponent } from '../form.component';\n\n@Directive({\n selector: '[dependson]'\n})\nexport class DependsonDirective implements AfterContentInit, OnDestroy {\n\n @ContentChildren(FormComponent, {descendants: true}) formChildren;\n\n private dialogId;\n private dependson;\n private isLayoutDialog;\n private form;\n private editMode;\n private currentOp;\n private currentFormData;\n private formSubscription;\n private eventSubscription;\n\n constructor(\n @Attribute('dialogid') dialogId: string,\n @Attribute('dependson') dependson: string,\n private dialogService: AbstractDialogService,\n private app: App\n ) {\n // If dialogId is present, form is in dialog mode\n if (dialogId) {\n this.isLayoutDialog = true;\n this.dialogId = dialogId;\n }\n this.dependson = dependson;\n // Listen to the wm-event called from subscribed widgets\n this.eventSubscription = this.app.subscribe('wm-event', this.handleEvent.bind(this));\n }\n\n private openFormDialog() {\n this.dialogService.open(this.dialogId);\n }\n\n private onUpdate(newValue?, table?, editClicked?) {\n this.editMode = editClicked || this.editMode ;\n this.form.operationType = Live_Operations.UPDATE;\n this.form.isSelected = true;\n let rowData = this.currentFormData;\n if (newValue && table) {\n if (table.multiselect) {\n rowData = newValue[0];\n } else {\n rowData = newValue[newValue.length - 1];\n }\n }\n this.form.setFormData(rowData);\n this.form.edit();\n if (!this.editMode) {\n this.form.isUpdateMode = false;\n }\n }\n private onInsert() {\n this.form.operationType = Live_Operations.INSERT;\n this.form.isSelected = true;\n this.form.setFormData({});\n this.form.new();\n }\n\n private handleEvent(options) {\n if (this.dependson !== options.widgetName) {\n return;\n }\n this.currentOp = options.eventName;\n switch (options.eventName) {\n case Live_Operations.UPDATE:\n this.currentFormData = options.row;\n if (this.isLayoutDialog) {\n this.openFormDialog();\n } else {\n this.onUpdate(undefined,undefined, true);\n }\n break;\n case Live_Operations.INSERT:\n if (this.isLayoutDialog) {\n this.openFormDialog();\n } else {\n this.onInsert();\n }\n break;\n case Live_Operations.DELETE:\n (<any>this.app).Widgets[this.dependson].call('delete', {row: options.row});\n break;\n case Live_Operations.READ:\n if (!this.isLayoutDialog) {\n this.form.isUpdateMode = false;\n }\n break;\n case 'rerender':\n if (options.dataSource) {\n options.dataSource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true,\n 'operation': 'list'\n });\n }\n break;\n case 'selectedItemChange':\n if (options.table) {\n this.onUpdate(options.row, options.table);\n }\n break;\n case 'resetEditMode':\n this.editMode = false;\n }\n }\n\n private onFormRender() {\n // On opening the form in dialog mode, complete the pending operations\n if (this.form && this.isLayoutDialog) {\n this.form.isLayoutDialog = true;\n setTimeout(() => {\n if (this.currentOp === Live_Operations.UPDATE) {\n this.onUpdate(undefined, undefined, true);\n } else if (this.currentOp === Live_Operations.INSERT) {\n this.onInsert();\n }\n }, 250);\n }\n }\n\n ngAfterContentInit() {\n // If form instance is present, form is in inline mode. Else, it is in dialog mode and listen to form instance changes\n if (this.formChildren.first) {\n this.form = this.formChildren.first;\n } else {\n this.formSubscription = this.formChildren.changes.subscribe((val) => {\n this.form = val.first;\n this.onFormRender();\n });\n }\n\n // find the dependent widget (table/list)\n this.app.notify('setup-cud-listener', this.dependson);\n }\n\n ngOnDestroy() {\n if (this.formSubscription) {\n this.formSubscription.unsubscribe();\n }\n if (this.eventSubscription) {\n this.eventSubscription();\n }\n }\n}\n","import { Directive, Inject, Self } from '@angular/core';\nimport { $appDigest, DataSource, DataType, debounce, FormWidgetType, getClonedObject, isDefined } from '@wm/core';\nimport { applyFilterOnField, fetchDistinctValues, getDistinctValuesForField, getEmptyMatchMode, getEnableEmptyFilter, getRangeFieldValue, getRangeMatchMode, isDataSetWidget } from '@wm/components/base';\n\nimport { FormComponent } from '../form.component';\nimport { registerLiveFilterProps } from '../form.props';\nimport {find} from \"lodash-es\";\n\nconst FILTER_CONSTANTS = {\n 'EMPTY_KEY' : 'EMPTY_NULL_FILTER'\n};\nconst noop = () => {};\n\n@Directive({\n selector: '[wmLiveFilter]'\n})\nexport class LiveFilterDirective {\n static initializeProps = registerLiveFilterProps();\n private _options;\n\n orderBy;\n\n // debounce the filter function. If multiple filter calls are made at same time, calls will be delayed and last call is fired\n _filter = debounce(options => {\n this.filter(options);\n }, 250);\n\n constructor(@Self() @Inject(FormComponent) private form) {\n form.clearFilter = this.clearFilter.bind(this);\n form.applyFilter = this.applyFilter.bind(this);\n form.filter = this.filter.bind(this);\n form.filterOnDefault = this.filterOnDefault.bind(this);\n form.execute = this.execute.bind(this);\n form.onFieldDefaultValueChange = this.onFieldDefaultValueChange.bind(this);\n form.onMaxDefaultValueChange = this.onMaxDefaultValueChange.bind(this);\n form.onDataSourceChange = this.onDataSourceChange.bind(this);\n form.onFieldValueChange = this.onFieldValueChange.bind(this);\n form.submitForm = this.submitForm.bind(this);\n form.registerFormWidget = this.registerFormWidget.bind(this);\n }\n\n execute(operation, options) {\n if (operation === DataSource.Operation.LIST_RECORDS || operation === DataSource.Operation.DOWNLOAD) {\n return this.applyFilter(options);\n }\n if (operation === DataSource.Operation.GET_OPTIONS) {\n return this._options || {};\n }\n if (operation === DataSource.Operation.GET_PAGING_OPTIONS) {\n return this.form.pagination;\n }\n if (!this.form.datasource) {\n return {};\n }\n if (operation === DataSource.Operation.FETCH_DISTINCT_VALUES) {\n return fetchDistinctValues(this.form.datasource, this.form.formFields, {\n widget: 'widgettype',\n enableemptyfilter: this.form.enableemptyfilter,\n EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE\n });\n }\n return this.form.datasource.execute(operation, options);\n }\n\n onFieldDefaultValueChange(field, nv) {\n field.minValue = nv;\n field.value = nv;\n this.filterOnDefault();\n }\n\n onFieldValueChange(field, nv) {\n applyFilterOnField(this.form.datasource, field.widget, this.form.formFields, nv, {\n EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE\n });\n if (this.form.autoupdate && isDefined(nv)) {\n this._filter();\n }\n }\n\n onMaxDefaultValueChange() {\n setTimeout(() => {\n this.filterOnDefault();\n });\n }\n\n onDataSourceChange() {\n const dataSource = this.form.datasource;\n\n if (!dataSource) {\n return;\n }\n\n this.form.formFields.forEach(field => {\n if (isDataSetWidget(field.widgettype)) {\n getDistinctValuesForField(dataSource, field.widget, {\n widget: 'widgettype',\n enableemptyfilter: this.form.enableemptyfilter,\n EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE\n });\n applyFilterOnField(dataSource, field.widget, this.form.formFields, field.value, {\n isFirst: true,\n EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE\n });\n }\n });\n\n // On load check if default value exists and apply filter, Call the filter with the result options\n this._filter(this._options);\n }\n\n clearFilter() {\n this.form.resetFormState();\n this.form.formFields.forEach(filterField => {\n // Added check for range field\n if (!filterField.readonly && filterField.show) {\n if (filterField.widgettype === FormWidgetType.AUTOCOMPLETE || filterField.widgettype === FormWidgetType.TYPEAHEAD) {\n this.form.$element.find('div[name=' + filterField.name + '] input').val('');\n }\n if (filterField['is-range']) {\n filterField.minValue = '';\n filterField.maxValue = '';\n } else {\n filterField.value = '';\n filterField.resetDisplayInput();\n }\n }\n });\n // If variable has any bindings, wait for the bindings to be updated\n setTimeout(() => {\n // Setting result to the default data\n this._filter();\n });\n }\n\n submitForm() {\n this.filter();\n }\n\n applyFilter(options) {\n options = options ? (options.data || options) : {};\n options.page = options.page || 1;\n options.orderBy = isDefined(options.orderBy) ? options.orderBy : this.orderBy;\n return this.filter(options);\n }\n\n filter(options?) {\n if (!this.form.datasource) {\n return;\n }\n const filterFields = {};\n const dataModel = {};\n let page = 1,\n orderBy,\n isValid;\n options = options || {};\n page = options.page || page;\n orderBy = isDefined(options.orderBy) ? options.orderBy : (this.orderBy || '');\n this.orderBy = orderBy; // Store the order by in scope. This can be used to retain the sort after filtering\n // Copy the values to be sent to the user as '$data' before servicecall\n this.form.formFields.forEach(field => {\n const fieldSelector = 'div[name=' + field.name + '] input';\n const $el = this.form.$element;\n let fieldEle;\n if ((field.widgettype === FormWidgetType.AUTOCOMPLETE || field.widgettype === FormWidgetType.TYPEAHEAD) && $el) {\n fieldEle = $el.find(fieldSelector);\n if (!field['is-range']) {\n dataModel[field.field] = {\n 'value': isDefined(field.value) ? field.value : fieldEle.val() // For autocomplete, set the datavalue. If not present, set query value\n };\n } else {\n dataModel[field.field] = {\n 'minValue': isDefined(field.minValue) ? field.minValue : fieldEle.first().val(),\n 'maxValue': isDefined(field.maxValue) ? field.maxValue : fieldEle.last().val()\n };\n }\n return;\n }\n if (!field['is-range']) {\n dataModel[field.field] = {\n 'value': field.value\n };\n } else {\n dataModel[field.field] = {\n 'minValue': field.minValue,\n 'maxValue': field.maxValue\n };\n }\n });\n /*Perform this function for the event onBeforeservicecall*/\n try {\n isValid = this.form.invokeEventCallback('beforeservicecall', {$data: dataModel});\n if (isValid === false) {\n return;\n }\n if (isValid && isValid.error) {\n this.form.toggleMessage(true, isValid.error, 'error', 'ERROR');\n return;\n }\n /*Update these values in the formFields with new reference, inorder to maintain the UI values*/\n this.form.formFields.forEach(filterField => {\n if (!filterField['is-range']) {\n filterField._value = dataModel[filterField.field].value;\n } else {\n filterField._minValue = dataModel[filterField.field].minValue;\n filterField._maxValue = dataModel[filterField.field].maxValue;\n }\n });\n } catch (err) {\n if (err.message === 'Abort') {\n return;\n }\n }\n /* Construct the formFields Variable to send it to the queryBuilder */\n this.form.formFields.forEach(filterField => {\n let fieldValue;\n let matchMode;\n let colName = filterField.field;\n const minValue = filterField._minValue;\n const maxvalue = filterField._maxValue;\n /* if field is part of a related entity, column name will be 'entity.fieldName' */\n if (filterField['is-related']) {\n colName += '.' + filterField['lookup-field'];\n }\n if (filterField['is-range']) {\n /*Based on the min and max values, decide the matchmode condition*/\n fieldValue = getRangeFieldValue(minValue, maxvalue);\n matchMode = getRangeMatchMode(minValue, maxvalue);\n if (isDefined(fieldValue)) {\n filterFields[colName] = {\n 'value' : fieldValue,\n 'matchMode' : matchMode,\n 'logicalOp' : 'AND'\n };\n }\n } else {\n switch (filterField.widgettype) {\n case FormWidgetType.SELECT:\n case FormWidgetType.RADIOSET:\n if (getEnableEmptyFilter(this.form.enableemptyfilter) && filterField._value === FILTER_CONSTANTS.EMPTY_KEY) {\n matchMode = getEmptyMatchMode(this.form.enableemptyfilter);\n fieldValue = filterField._value;\n } else {\n if (filterField.type === DataType.BOOLEAN) {\n if (isDefined(filterField._value) && filterField._value !== '') {\n fieldValue = JSON.parse(filterField._value);\n }\n } else {\n fieldValue = filterField._value;\n }\n }\n break;\n case FormWidgetType.CHECKBOXSET:\n case FormWidgetType.CHIPS:\n if (filterField._value && filterField._value.length) {\n fieldValue = filterField._value;\n }\n break;\n case FormWidgetType.CHECKBOX:\n case FormWidgetType.TOGGLE:\n if (isDefined(filterField._value) && filterField._value !== '') {\n fieldValue = filterField.type === DataType.BOOLEAN ? JSON.parse(filterField._value) : filterField._value;\n }\n break;\n default:\n fieldValue = filterField._value;\n break;\n }\n if (isDefined(fieldValue) && fieldValue !== '' && fieldValue !== null) {\n filterFields[colName] = {};\n if (matchMode) {\n filterFields[colName].matchMode = matchMode;\n fieldValue = undefined;\n } else if (filterField.type === DataType.STRING || filterField.isRelated) { // Only for string types and related fields, custom match modes are enabled.\n filterFields[colName].matchMode = matchMode || filterField.matchmode ||\n this.form.datasource.execute(DataSource.Operation.GET_MATCH_MODE);\n }\n filterFields[colName].value = fieldValue;\n filterFields[colName].logicalOp = 'AND';\n filterFields[colName].type = filterField.type;\n }\n }\n });\n\n if (options.exportType) {\n return this.form.datasource.execute(DataSource.Operation.DOWNLOAD, {\n data: {\n matchMode : 'anywhereignorecase',\n filterFields : filterFields,\n orderBy : orderBy,\n exportType : options.exportType,\n logicalOp : 'AND',\n exportSize : options.exportSize,\n fields : options.fields,\n fileName: options.fileName\n }\n });\n }\n return this.form.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n filterFields : filterFields,\n orderBy : orderBy,\n page : page,\n pagesize : this.form.pagesize || 20,\n skipDataSetUpdate : true, // dont update the actual variable dataset,\n inFlightBehavior : 'executeAll'\n }).then(response => {\n const data = response.data;\n this.form.pagination = response.pagination;\n\n if (data.error) {\n // disable readonly and show the appropriate error\n this.form.toggleMessage(true, data.error, 'error', 'ERROR');\n this.form.onResultCb(data, false);\n } else {\n this._options = {\n 'page': page,\n 'orderBy': orderBy\n };\n this.form.result = getClonedObject(data);\n this.form.onResultCb(data, true);\n }\n $appDigest();\n return this.form.result;\n }, error => {\n this.form.toggleMessage(true, error, 'error', 'ERROR');\n this.form.onResultCb(error, false);\n return error;\n });\n }\n\n // Calls the filter function if default values are present\n filterOnDefault() {\n /*Check if default value is present for any filter field*/\n const defaultObj = find(this.form.formFields, obj => {\n return isDefined(obj.value) || isDefined(obj.minValue) || isDefined(obj.maxValue);\n });\n /*If default value exists and data is loaded, apply the filter*/\n if (defaultObj) {\n this._filter(this._options);\n }\n }\n\n registerFormWidget(widget) {\n const name = widget.key || widget.name;\n this.form.filterWidgets[name] = widget;\n }\n}\n","import { Directive, Inject, Optional, Self, Attribute, HostListener } from '@angular/core';\n\nimport { $appDigest, AbstractDialogService, DataSource, DataType, debounce, getClonedObject, getFiles, getValidDateObject, isDateTimeType, isDefined, isEmptyObject } from '@wm/core';\nimport { ALLFIELDS, applyFilterOnField, fetchRelatedFieldData, getDistinctValuesForField, isDataSetWidget, Live_Operations, parseValueByType, performDataOperation, ToDatePipe } from '@wm/components/base';\nimport { LiveTableComponent } from '@wm/components/data/live-table';\n\nimport { registerLiveFormProps } from '../form.props';\nimport { FormComponent } from '../form.component';\nimport {forEach, fromPairs, get, isEmpty, isEqual, isString, map, some, split} from \"lodash-es\";\n\nconst isTimeType = field => field.widgettype === DataType.TIME || (field.type === DataType.TIME && !field.widgettype);\nconst getValidTime = val => {\n if (val) {\n const date = (new Date()).toDateString();\n return (new Date(`${date} ${val}`)).getTime();\n }\n return undefined;\n};\n\n@Directive({\n selector: '[wmLiveForm]'\n})\nexport class LiveFormDirective {\n static initializeProps = registerLiveFormProps();\n private _triggeredByUser: boolean;\n private _debouncedSavePrevDataValues = debounce(() => {\n this.savePrevDataValues();\n }, 250);\n\n @HostListener('keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n this._triggeredByUser = true;\n }\n\n constructor(\n @Self() @Inject(FormComponent) private form,\n @Optional() liveTable: LiveTableComponent,\n public datePipe: ToDatePipe,\n private dialogService: AbstractDialogService,\n @Attribute('formlayout') formlayout: string\n ) {\n // If parent live table is present and this form is first child of live table, set this form instance on livetable\n if (liveTable) {\n if (!this.form.parentForm) {\n this.form._liveTableParent = liveTable;\n }\n this.form.isLayoutDialog = liveTable.isLayoutDialog;\n liveTable.onFormReady(this.form);\n } else {\n this.form.isLayoutDialog = formlayout === 'dialog';\n }\n // CUD operations\n form.cancel = this.cancel.bind(this);\n form.reset = this.reset.bind(this);\n form.delete = this.delete.bind(this);\n form.save = this.save.bind(this);\n form.saveAndNew = this.saveAndNew.bind(this);\n form.saveAndView = this.saveAndView.bind(this);\n\n form.setPrimaryKey = this.setPrimaryKey.bind(this);\n form.constructDataObject = this.constructDataObject.bind(this);\n form.changeDataObject = this.setFormData.bind(this);\n form.setFormData = this.setFormData.bind(this);\n form.findOperationType = this.findOperationType.bind(this);\n form.clearData = this.clearData.bind(this);\n form.onFieldDefaultValueChange = this.onFieldDefaultValueChange.bind(this);\n form.onDataSourceChange = this.onDataSourceChange.bind(this);\n form.onFieldValueChange = this.onFieldValueChange.bind(this);\n form.submitForm = this.submitForm.bind(this);\n form.form_registerFormFields = form.registerFormFields;\n form.registerFormFields = this.registerFormFields.bind(this);\n }\n\n /*\n WMS:18583\n Overriding 'registerFormFields' for liveForms,\n On Each field added, check if the dataSource is updated or not\n if the field is added after the dataSource is updated at LiveForm, retrigger\n */\n registerFormFields(formField) {\n const formFields = this.form.getFormFields();\n this.form.form_registerFormFields(formField);\n if (this.form.isDataSourceUpdated) {\n this._updateFieldOnDataSourceChange(formField, formFields);\n }\n }\n private _updateFieldOnDataSourceChange(field, formFields) {\n if (!field.isDataSetBound && isDataSetWidget(field.widgettype)) {\n if (field['is-related']) {\n field.isDataSetBound = true;\n fetchRelatedFieldData(this.form.datasource, field.widget, {\n relatedField: field.key,\n datafield: ALLFIELDS,\n widget: 'widgettype',\n });\n } else {\n getDistinctValuesForField(this.form.datasource, field.widget, {\n widget: 'widgettype',\n enableemptyfilter: this.form.enableemptyfilter\n });\n applyFilterOnField(this.form.datasource, field.widget, formFields, field.value, {isFirst: true});\n }\n }\n }\n onDataSourceChange() {\n if (get(this.form.formFields, 'length')) {\n this.form.isDataSourceUpdated = true;\n }\n const formFields = this.form.getFormFields();\n formFields.forEach(field => {\n this._updateFieldOnDataSourceChange(field, formFields);\n });\n }\n\n onFieldDefaultValueChange(field, nv) {\n // In Edit, do not set default values\n if (this.form.operationType === 'update') {\n return;\n }\n // Set the default value only if it exists.\n if (isDefined(nv) && nv !== null && nv !== '' && nv !== 'null') {\n field.value = parseValueByType(nv, field.type, field.widgettype, field.trailingzero);\n } else {\n field.value = undefined;\n }\n\n // WMS-22434: For default value set on individual form fields, do not mark the form as dirty.\n if (this.form.dirty && !this._triggeredByUser) {\n this.form.markAsPristine();\n }\n this._debouncedSavePrevDataValues();\n }\n\n onFieldValueChange(field, nv) {\n applyFilterOnField(this.form.datasource, field.widget, this.form.formFields, nv);\n }\n\n getBlobURL(dataObj, key, value) {\n let href = '';\n let primaryKeys;\n let primaryKey;\n if (value === null || value === undefined || !this.form.datasource) {\n return href;\n }\n primaryKeys = this.form.datasource.execute(DataSource.Operation.GET_PRIMARY_KEY) || [];\n primaryKey = dataObj[primaryKeys[0]];\n // TODO: Handle mobile case\n // if (CONSTANTS.hasCordova && CONSTANTS.isRunMode) {\n // href += $rootScope.project.deployedUrl;\n // }\n href += this.form.datasource.execute(DataSource.Operation.GET_BLOB_URL, {\n primaryValue: primaryKey,\n columnName: key\n });\n href += '?' + Math.random();\n return href;\n }\n\n setFormData(dataObj, formFields?) {\n if (!dataObj) {\n return;\n }\n formFields = formFields || this.form.formFields;\n formFields.forEach(field => {\n const value = get(dataObj, field.key || field.name);\n if (isTimeType(field)) {\n field.value = getValidTime(value);\n } else if (field.type === DataType.BLOB) {\n this.form.resetFileUploadWidget(field, true);\n field.href = this.getBlobURL(dataObj, field.key, value);\n field.value = isString(value) ? '' : value;\n } else {\n this.form.setFieldValue(field, dataObj);\n }\n });\n this.savePrevDataValues();\n this.form.constructDataObject();\n }\n\n onDataSourceUpdate(response, newForm, updateMode) {\n if (newForm) {\n this.form.new();\n } else {\n this.form.setFormData(response);\n this.closeDialog();\n }\n this.form.isUpdateMode = isDefined(updateMode) ? updateMode : true;\n }\n\n savePrevformFields() {\n this.form.prevformFields = getClonedObject(this.form.formFields.map(field => {\n return {\n 'key': field.key,\n 'type': field.type,\n 'widgettype': field.widgettype,\n 'outputformat': field.outputformat,\n 'value': field.value\n };\n }));\n }\n\n getPrevformFields() {\n this.form.formFields.map(field => {\n const prevField = this.form.prevformFields.find(pField => pField.key === field.key);\n field.value = prevField.value;\n });\n }\n\n getDataObject() {\n if (this.form.operationType === Live_Operations.INSERT) {\n return {};\n }\n if (isDefined(this.form.prevDataObject) && !isEmptyObject(this.form.prevDataObject)) {\n return getClonedObject(this.form.prevDataObject);\n }\n return getClonedObject(this.form.formdata || {});\n }\n\n constructDataObject(isPreviousData?) {\n const dataObject = this.getDataObject();\n const formName = this.form.name;\n let formFields;\n formFields = isPreviousData ? this.form.prevformFields : this.form.getFormFields();\n formFields.forEach(field => {\n let dateTime,\n fieldValue;\n const fieldTarget = split(field.key, '.');\n const fieldName = fieldTarget[0] || field.key;\n\n /*collect the values from the fields and construct the object*/\n /*Format the output of date time widgets to the given output format*/\n if ((field.widgettype && isDateTimeType(field.widgettype)) || isDateTimeType(field.type)) {\n if (field.value) {\n dateTime = getValidDateObject(field.value);\n if (field.outputformat === DataType.TIMESTAMP || field.type === DataType.TIMESTAMP) {\n fieldValue = field.value ? dateTime : null;\n } else if (field.outputformat) {\n fieldValue = this.datePipe.transform(dateTime, field.outputformat);\n } else {\n fieldValue = field.value;\n }\n } else {\n fieldValue = undefined;\n }\n } else if (field.type === DataType.BLOB) {\n fieldValue = getFiles(formName, fieldName + '_formWidget', field.multiple);\n } else if (field.type === DataType.LIST) {\n fieldValue = field.value || undefined;\n } else {\n fieldValue = (field.value === null || field.value === '') ? undefined : field.value;\n }\n\n if (fieldTarget.length === 1) {\n dataObject[fieldName] = fieldValue;\n } else {\n dataObject[fieldName] = dataObject[fieldName] || {};\n dataObject[fieldName][fieldTarget[1]] = fieldValue;\n }\n });\n if (!isPreviousData) {\n this.form.updateFormDataOutput(dataObject);\n return this.form.dataoutput;\n }\n return dataObject;\n }\n\n setPrimaryKey(fieldName) {\n /*Store the primary key of data*/\n this.form.primaryKey = this.form.primaryKey || [];\n if (this.form.primaryKey.indexOf(fieldName) === -1) {\n this.form.primaryKey.push(fieldName);\n }\n }\n\n findOperationType() {\n let operation;\n let isPrimary = false;\n const sourceOperation = this.form.datasource && this.form.datasource.execute(DataSource.Operation.GET_OPERATION_TYPE);\n if (sourceOperation && sourceOperation !== 'read') {\n return sourceOperation;\n }\n /*If OperationType is not set then based on the formdata object return the operation type,\n this case occurs only if the form is outside a livegrid*/\n /*If the formdata object has primary key value then return update else insert*/\n if (this.form.primaryKey && !isEmpty(this.form.formdata)) {\n /*If only one column is primary key*/\n if (this.form.primaryKey.length === 1) {\n if (this.form.formdata[this.form.primaryKey[0]]) {\n operation = Live_Operations.UPDATE;\n }\n /*If only no column is primary key*/\n } else if (this.form.primaryKey.length === 0) {\n forEach(this.form.formdata, (value) => {\n if (value) {\n isPrimary = true;\n }\n });\n if (isPrimary) {\n operation = Live_Operations.UPDATE;\n }\n /*If multiple columns are primary key*/\n } else {\n isPrimary = some(this.form.primaryKey, (primaryKey) => {\n if (this.form.formdata[primaryKey]) {\n return true;\n }\n });\n if (isPrimary) {\n operation = Live_Operations.UPDATE;\n }\n }\n }\n return operation || Live_Operations.INSERT;\n }\n\n getPrevDataValues() {\n const prevDataValues = fromPairs(map(this.form.prevDataValues, (item) => {\n return [item.key, item.value];\n })); // Convert of array of values to an object\n this.form.formFields.forEach(field => {\n field.value = prevDataValues[field.key] || '';\n field.resetDisplayInput();\n });\n return prevDataValues;\n }\n\n savePrevDataValues() {\n this.form.prevDataValues = this.form.formFields.map((obj) => {\n return {'key': obj.key, 'value': obj.value};\n });\n }\n\n clearData() {\n this.form.toggleMessage(false);\n this.form.emptyDataModel();\n }\n\n setReadonlyFields() {\n this.form.formFields.forEach(field => {\n field.setReadOnlyState();\n });\n }\n\n reset() {\n let prevDataValues;\n this.form.resetFormState();\n prevDataValues = this.getPrevDataValues();\n this.form.formFields.forEach(field => {\n if (field.type === DataType.BLOB || field.widgettype === 'upload') {\n this.form.resetFileUploadWidget(field, true);\n field.href = this.getBlobURL(prevDataValues, field.key, field.value);\n }\n field.nativeElement.querySelector('input')?.removeAttribute('aria-invalid');\n });\n this.form.constructDataObject();\n }\n\n closeDialog() {\n if (this.form.isLayoutDialog) {\n this.dialogService.close(this.form.dialogId);\n }\n }\n\n cancel() {\n this.form.clearMessage();\n this.form.isUpdateMode = false;\n\n this.form.reset();\n /*Show the previous selected data*/\n if (this.form.isSelected) {\n this.getPrevformFields();\n }\n this.form.isUpdateMode = false;\n if (this.form._liveTableParent) {\n this.form._liveTableParent.onCancel();\n } else {\n /*\n WMS-18759: dialog close is calling twice and dialog onHidden subscription is calling once from the library\n due to this if we have another dialog inside liveform and if we click on cancel of second dialog the library\n subscription is calling for both the dialogs.\n */\n this.closeDialog();\n }\n $appDigest();\n }\n\n\n\n delete(callBackFn) {\n this.form.resetFormState();\n this.form.operationType = Live_Operations.DELETE;\n this.form.prevDataObject = getClonedObject(this.form.formdata || {});\n this.form.save(undefined, undefined, undefined, callBackFn);\n }\n\n // Function use to save the form and open new form after save\n saveAndNew() {\n this.save(undefined, true, true);\n }\n // Function use to save the form and open new form after save\n saveAndView() {\n this.save(undefined, false);\n }\n\n submitForm($event) {\n this.save($event);\n }\n\n save(event?, updateMode?, newForm?) {\n if (!this.form.datasource) {\n return;\n }\n let data, prevData, operationType, isValid;\n const requestData: any = {};\n\n operationType = this.form.operationType = this.form.operationType || this.findOperationType();\n\n // Disable the form submit if form is in invalid state.\n if (this.form.validateFieldsOnSubmit()) {\n return;\n }\n\n data = getClonedObject(this.form.constructDataObject());\n prevData = this.form.prevformFields ? this.form.constructDataObject(true) : data;\n\n try {\n isValid = this.form.invokeEventCallback('beforeservicecall', {$event: event, $operation: this.form.operationType, $data: data, options: requestData});\n if (isValid === false) {\n return;\n }\n if (isValid && isValid.error) {\n this.form.toggleMessage(true, isValid.error, 'error');\n return;\n }\n } catch (err) {\n if (err.message === 'Abort') {\n return;\n }\n }\n\n // If operation is update, form is not touched and current data and previous data is same, Show no changes detected message\n if (this.form.operationType === Live_Operations.UPDATE && this.form.ngform && this.form.ngform.pristine &&\n (this.form.isSelected && isEqual(data, prevData))) {\n this.form.toggleMessage(true, this.form.appLocale.MESSAGE_NO_CHANGES, 'info', '');\n $appDigest();\n return;\n }\n\n requestData.row = data;\n requestData.transform = true;\n requestData.skipNotification = true;\n\n if (operationType === Live_Operations.UPDATE) {\n requestData.rowData = this.form.formdata;\n requestData.prevData = prevData;\n }\n\n performDataOperation(this.form.datasource, requestData, {\n operationType: operationType\n }).then((response) => {\n const msg = operationType === Live_Operations.INSERT ? this.form.insertmessage : (operationType === Live_Operations.UPDATE ?\n this.form.updatemessage : this.form.deletemessage);\n let result;\n\n if (operationType === Live_Operations.DELETE) {\n result = requestData.row;\n this.form.emptyDataModel();\n this.form.prevDataValues = [];\n this.form.isSelected = false;\n } else {\n result = response;\n }\n if (!this.form.onSuccess) {\n this.form.toggleMessage(true, msg, 'success');\n }\n if (this.form._liveTableParent) {\n // highlight the current updated row\n this.form._liveTableParent.onResult(operationType, response, newForm, updateMode);\n } else {\n /*get updated data without refreshing page*/\n this.form.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true\n });\n this.onDataSourceUpdate(response, newForm, updateMode);\n }\n return {\n 'result': result,\n 'status': true\n };\n }, (error) => {\n if (!this.form.onError) {\n this.form.toggleMessage(true, error, 'error');\n }\n $appDigest();\n return {\n 'result': error,\n 'status': false\n };\n }).then(response => {\n // reset the form to pristine state\n this.form.resetFormState();\n this.form.onResultCb(response.result, response.status, event);\n });\n\n\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { BasicModule } from '@wm/components/basic';\nimport { InputModule } from '@wm/components/input';\nimport { DesignDialogModule } from '@wm/components/dialogs/design-dialog';\n\nimport { FormComponent } from './form.component';\nimport { FormWidgetDirective } from './form-widget.directive';\nimport { FormActionDirective } from './form-action/form-action.directive';\nimport { FormFieldDirective } from './form-field/form-field.directive';\nimport { LiveActionsDirective } from './live-actions/live-actions.directive';\nimport { DependsonDirective } from './live-actions/dependson.directive';\nimport { LiveFilterDirective } from './live-filter/live-filter.directive';\nimport { LiveFormDirective } from './live-form/live-form.directive';\n\nconst components = [\n FormComponent,\n FormWidgetDirective,\n FormActionDirective,\n FormFieldDirective,\n LiveActionsDirective,\n DependsonDirective,\n LiveFilterDirective,\n LiveFormDirective\n];\n\n@NgModule({\n imports: [\n BasicModule,\n CommonModule,\n DesignDialogModule,\n InputModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class FormModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["WIDGET_CONFIG","_debounce","debounce","i2","_c1","registerProps","noop","i1.FormComponent","i3","i4","i1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/data/form/src/form.props.ts","../../../../../projects/components/widgets/data/form/src/form.component.html","../../../../../projects/components/widgets/data/form/src/form.component.ts","../../../../../projects/components/widgets/data/form/src/form-widget.directive.ts","../../../../../projects/components/widgets/data/form/src/form-action/form-action.props.ts","../../../../../projects/components/widgets/data/form/src/form-action/form-action.directive.ts","../../../../../projects/components/widgets/data/form/src/form-field/form-field.props.ts","../../../../../projects/components/widgets/data/form/src/form-field/form-field.directive.ts","../../../../../projects/components/widgets/data/form/src/live-actions/live-actions.directive.ts","../../../../../projects/components/widgets/data/form/src/live-actions/dependson.directive.ts","../../../../../projects/components/widgets/data/form/src/live-filter/live-filter.directive.ts","../../../../../projects/components/widgets/data/form/src/live-form/live-form.directive.ts","../../../../../projects/components/widgets/data/form/src/form.module.ts","../../../../../projects/components/widgets/data/form/src/index.ts"],"sourcesContent":["import { isMobileApp } from '@wm/core';\n\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nconst propsMap = new Map(\n [\n ['autocomplete', {value: false, ...PROP_BOOLEAN}],\n ['captionalign', {value: 'left', ...PROP_STRING}],\n ['captionposition', {value: 'left', ...PROP_STRING}],\n ['captionsize', PROP_STRING],\n ['captionwidth', {value: 'xs-12 sm-3 md-3 lg-3', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['collapsible', PROP_BOOLEAN],\n ['dataset', PROP_ANY],\n ['datasource', PROP_STRING],\n ['expanded', {value: true, ...PROP_BOOLEAN}],\n ['formdatasource', PROP_STRING],\n ['name', PROP_STRING],\n ['numberOfFields', PROP_NUMBER],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showindevice', {displayType: 'inline-block', value: 'all', ...PROP_STRING}],\n ['subheading', PROP_STRING],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['title', PROP_STRING]\n ]\n);\n\n\nexport const registerFormProps = () => {\n if (isMobileApp()) {\n propsMap.set('captionwidth', {value: 'xs-4 sm-4 md-4 lg-4', ...PROP_STRING});\n }\n const formMap = new Map(propsMap);\n formMap.set('action', PROP_STRING);\n formMap.set('defaultmode', {value: 'Edit', ...PROP_STRING});\n formMap.set('metadata', PROP_STRING);\n formMap.set('method', PROP_STRING);\n formMap.set('postmessage', {value: 'Data posted successfully', ...PROP_STRING});\n formMap.set('target', PROP_STRING);\n formMap.set('enctype', PROP_STRING);\n formMap.set('errormessage', {value: 'An error occured. Please try again!', ...PROP_STRING});\n formMap.set('messagelayout', {value: 'Inline', ...PROP_STRING});\n formMap.set('formdata', PROP_STRING);\n formMap.set('novalidate', PROP_BOOLEAN);\n formMap.set('validationtype', {value: 'default', ...PROP_STRING});\n formMap.set('iconclass', PROP_STRING);\n\n register(\n 'wm-form',\n formMap\n );\n};\n\nexport const registerLiveFormProps = () => {\n if (isMobileApp()) {\n propsMap.set('captionwidth', {value: 'xs-4 sm-4 md-4 lg-4', ...PROP_STRING});\n }\n const liveFormMap = new Map(propsMap);\n liveFormMap.set('defaultmode', {value: 'View', ...PROP_STRING});\n liveFormMap.set('formlayout', {value: 'inline', ...PROP_STRING});\n liveFormMap.set('insertmessage', {value: 'Record added successfully', ...PROP_STRING});\n liveFormMap.set('updatemessage', {value: 'Record updated successfully', ...PROP_STRING});\n liveFormMap.set('deletemessage', {value: 'Record deleted successfully', ...PROP_STRING});\n liveFormMap.set('errormessage', {value: 'An error occured. Please try again!', ...PROP_STRING});\n liveFormMap.set('messagelayout', {value: 'Toaster', ...PROP_STRING});\n liveFormMap.set('formdata', PROP_STRING);\n liveFormMap.set('novalidate', PROP_BOOLEAN);\n liveFormMap.set('validationtype', {value: 'default', ...PROP_STRING});\n liveFormMap.set('iconclass', PROP_STRING);\n\n register(\n 'wm-liveform',\n liveFormMap\n );\n};\n\nexport const registerLiveFilterProps = () => {\n if (isMobileApp()) {\n propsMap.set('captionwidth', {value: 'xs-4 sm-4 md-4 lg-4', ...PROP_STRING});\n }\n const liveFilterMap = new Map(propsMap);\n liveFilterMap.set('autoupdate', PROP_BOOLEAN);\n liveFilterMap.set('enableemptyfilter', {value: ' ', ...PROP_STRING});\n liveFilterMap.set('pagesize', {value: 20, ...PROP_NUMBER});\n liveFilterMap.set('iconclass', {value: 'wi wi-filter-list', ...PROP_STRING});\n\n register(\n 'wm-livefilter',\n liveFilterMap\n );\n};\n","<ng-template #content><ng-content></ng-content></ng-template>\n\n<ng-container *ngIf=\"formlayout === 'page'; then pageLayoutTemplate else defaultTemplate\">\n</ng-container>\n\n<ng-template #defaultTemplate>\n <div class=\"panel-heading\" *ngIf=\"!isLayoutDialog && (title || subheading || iconclass || showButtons('header'))\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\">\n <i class=\"app-icon panel-icon\" aria-hidden=\"true\" [ngClass]=\"iconclass\" *ngIf=\"iconclass\"></i>\n </div>\n <div class=\"pull-left\">\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n </div>\n <div class=\"form-action panel-actions basic-btn-grp\">\n <ng-container *ngFor=\"let btn of buttonArray | filter : 'position' : 'header'; let index = index\"\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('action_header_' + index, {btn:btn})\">\n </ng-container>\n <button type=\"button\" class=\"app-icon wi panel-action\" *ngIf=\"collapsible\" title=\"Collapse/Expand\"\n [ngClass]=\"expanded ? 'wi-minus': 'wi-plus'\" (click)=\"expandCollapsePanel();\"></button>\n </div>\n </h3>\n </div>\n <div class=\"panel-body\" [ngClass]=\"{'form-elements': isLayoutDialog, 'form-body': !isLayoutDialog}\" [class.hidden]=\"!expanded\">\n <p wmMessage *ngIf=\"!!statusMessage.caption\" [attr.aria-hidden]=\"!statusMessage.caption\" [attr.aria-label]=\"statusMessage.caption\" caption.bind=\"statusMessage.caption\" type.bind=\"statusMessage.type\"></p>\n <div [ngClass]=\"{'form-elements': !isLayoutDialog, 'form-content': isLayoutDialog}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"basic-btn-grp form-action panel-footer clearfix\" [ngClass]=\"{'modal-footer': isLayoutDialog}\" [class.hidden]=\"!expanded || !showButtons('footer')\">\n <ng-container *ngFor=\"let btn of buttonArray | filter : 'position' : 'footer'; let index = index\"\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('action_footer_' + index, {btn:btn})\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #pageLayoutTemplate>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #buttonRef let-btn=\"btn\">\n <button wmButton name=\"{{btn.key}}\" caption.bind=\"btn.displayName\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" show.bind=\"btn.show\"\n (click)=\"invokeActionEvent($event, btn.action)\" type.bind=\"btn.type\" hint.bind=\"btn.title\" shortcutkey.bind=\"btn.shortcutkey\" disabled.bind=\"ngform.status === 'PENDING' || btn.disabled\"\n tabindex.bind=\"btn.tabindex\" [attr.aria-label]=\"btn.displayName\" [class.hidden]=\"btn.updateMode ? !isUpdateMode : isUpdateMode\"></button>\n</ng-template>\n\n<ng-template #anchorRef let-btn=\"btn\">\n <a wmAnchor name=\"{{btn.key}}\" caption.bind=\"btn.displayName\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" show.bind=\"btn.show\"\n (click)=\"invokeActionEvent($event, btn.action)\" hint.bind=\"btn.title\" shortcutkey.bind=\"btn.shortcutkey\"\n hyperlink.bind=\"btn.hyperlink\" target.bind=\"btn.target\"\n tabindex.bind=\"btn.tabindex\" [class.hidden]=\"btn.updateMode ? !isUpdateMode : isUpdateMode\"></a>\n</ng-template>\n\n<ng-container #dynamicForm></ng-container>\n","import {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding,\n HostListener, Inject,\n Injector,\n NgZone,\n OnDestroy,\n Optional,\n SkipSelf,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport {FormArray, FormBuilder, FormGroup} from '@angular/forms';\n\nimport {\n $appDigest,\n $invokeWatchers,\n $parseEvent,\n AbstractDialogService,\n App,\n DataSource,\n DataType,\n debounce,\n DynamicComponentRefProvider,\n extendProto,\n getClonedObject,\n getFiles,\n getValidJSON,\n isDefined,\n isElementInViewport,\n removeAttr,\n removeClass,\n scrollToElement,\n} from '@wm/core';\nimport {\n getFieldLayoutConfig,\n Live_Operations,\n MessageComponent,\n parseValueByType,\n PartialDirective,\n performDataOperation,\n provideAsWidgetRef,\n StylableComponent,\n styler,\n WidgetRef\n} from '@wm/components/base';\nimport {PrefabDirective} from '@wm/components/prefab';\nimport {ListComponent} from '@wm/components/data/list';\n\nimport {registerFormProps} from './form.props';\nimport {\n debounce as _debounce,\n filter,\n find, findIndex,\n forEach,\n get,\n includes,\n isArray,\n isEmpty, isEqual,\n isUndefined,\n keys,\n last,\n set,\n some,\n split\n} from \"lodash-es\";\n\nconst WIDGET_CONFIG = {widgetType: 'wm-form', hostClass: 'panel app-panel app-form'};\nconst LOGIN_FORM_CONFIG = {widgetType: 'wm-form', hostClass: 'app-form app-login-form'};\nconst LIVE_FORM_CONFIG = {widgetType: 'wm-liveform', hostClass: 'panel app-panel app-liveform liveform-inline'};\nconst LIVE_FILTER_CONFIG = {widgetType: 'wm-livefilter', hostClass: 'panel app-panel app-livefilter clearfix liveform-inline'};\n\nconst getWidgetConfig = (isLiveForm, isLiveFilter, role) => {\n let config = WIDGET_CONFIG;\n if (isLiveForm !== null) {\n config = LIVE_FORM_CONFIG;\n } else if (isLiveFilter !== null) {\n config = LIVE_FILTER_CONFIG;\n } else if (role === 'app-login') {\n config = LOGIN_FORM_CONFIG;\n }\n return config;\n};\n\n// Generate the form field with given field definition. Add a grid column wrapper around the form field.\nconst setMarkupForFormField = (field, columnWidth) => {\n let propsTmpl = '';\n forEach(field, (value, key) => {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n });\n return `<wm-gridcolumn columnwidth=\"${columnWidth}\">\n <wm-form-field ${propsTmpl}></wm-form-field>\n </wm-gridcolumn>`;\n};\n\n// Function to find out the first invalid element in form\nconst findInvalidElement = ($formEle, ngForm) => {\n const $ele = $formEle.find('form.ng-invalid:visible, [formControlName].ng-invalid:visible').first();\n let formObj = ngForm;\n // If element is form, find out the first invalid element in this form\n if ($ele.is('form')) {\n formObj = ngForm && ngForm.controls[$ele.attr('formControlName') || $ele.attr('name')];\n if (formObj) {\n return findInvalidElement($ele, formObj);\n }\n }\n return {\n ngForm: formObj,\n $ele: $ele\n };\n};\n\n// Function to get the active element markup based on widget type\nconst getActiveElement = (element) => {\n const widgetType = element.getAttribute('widgettype');\n switch (widgetType) {\n case 'select':\n return element.querySelector('select');\n break;\n case 'textarea':\n return element.querySelector('textarea');\n break;\n default:\n return element.querySelector('input');\n }\n}\nconst setTouchedState = (self, ngForm, fieldName) => {\n if (ngForm.valid) {\n return;\n }\n if (ngForm.controls) {\n forEach(ngForm.controls, (ctrl, fieldName) => {\n setTouchedState(self, ctrl, fieldName);\n });\n } else {\n let element = self.$element.find(`[wmformfield][key=\"${fieldName}\"]`);\n if (!element.length) {\n element = self.$element.find(`[wmformfield][name=\"${fieldName}\"]`);\n }\n element[0].setAttribute('__errormsg', element[0].getAttribute('__validationId'));\n let activeElement = getActiveElement(element[0]);\n activeElement?.setAttribute('aria-invalid', ngForm.invalid);\n activeElement?.setAttribute('aria-describedby', element[0].getAttribute('__validationId'));\n ngForm.markAsTouched();\n }\n};\n\n@Component({\n selector: 'form[wmForm]',\n templateUrl: './form.component.html',\n providers: [\n provideAsWidgetRef(FormComponent)\n ]\n})\nexport class FormComponent extends StylableComponent implements OnDestroy, AfterContentInit, AfterViewInit {\n static initializeProps = registerFormProps();\n @ViewChild('dynamicForm', { static: true, read: ViewContainerRef }) dynamicFormRef: ViewContainerRef;\n @ViewChild(MessageComponent) messageRef;\n // this is the reference to the component refs inside the form-group\n @ContentChildren(WidgetRef, {descendants: true}) componentRefs;\n\n autoupdate;\n public formlayout: any;\n public isDataSourceUpdated: boolean;\n captionAlignClass: string;\n validationtype: string;\n captionalign: string;\n captionposition: string;\n captionsize;\n collapsible: boolean;\n expanded: boolean;\n elScope;\n _widgetClass = '';\n captionwidth: string;\n _captionClass = '';\n ngform: FormGroup;\n formFields = [];\n formfields = {};\n formWidgets = {};\n filterWidgets = {};\n buttonArray = [];\n dataoutput = {};\n datasource;\n formdatasource;\n formdata = {};\n isSelected;\n prevDataValues;\n prevDataObject;\n prevformFields;\n statusMessage = {\n caption: '',\n type: ''\n };\n messagelayout;\n metadata;\n errormessage;\n onError;\n onSuccess;\n primaryKey = [];\n postmessage;\n _liveTableParent;\n updateMode;\n name;\n // Live Form Methods\n clearData: Function;\n cancel: Function;\n delete: Function;\n save: Function;\n saveAndNew: Function;\n saveAndView: Function;\n setPrimaryKey: () => {};\n dialogId: string;\n // Live Filter\n enableemptyfilter;\n pagesize;\n result;\n pagination;\n clearFilter: Function;\n applyFilter: Function;\n filter: Function;\n filterOnDefault: Function;\n onMaxDefaultValueChange: Function;\n numberOfFields: number;\n\n private _debouncedUpdateFieldSource: Function = _debounce(this.updateFieldSource, 350);\n private operationType;\n private _isLayoutDialog;\n private _dynamicContext;\n private _isGridLayoutPresent;\n private validationMessages = [];\n private formGroupName;\n private formArrayIndex;\n private bindingValue;\n private _formIsInList;\n private _triggeredByUser: boolean;\n\n\n private _debouncedSubmitForm = debounce(($event) => {\n // calling submit event in ngZone as change detection is not triggered post the submit callback and actions like notification are not shown\n this.ngZone.run(() => {\n this.submitForm($event);\n });\n }, 250);\n\n set isLayoutDialog(nv) {\n if (nv) {\n removeClass(this.nativeElement, 'panel app-panel liveform-inline');\n }\n this._isLayoutDialog = nv;\n }\n\n get isLayoutDialog() {\n return this._isLayoutDialog;\n }\n\n private _isUpdateMode;\n set isUpdateMode(nv) {\n this._isUpdateMode = nv;\n this.formFields.forEach(field => {\n field.setReadOnlyState(nv);\n });\n }\n\n get isUpdateMode() {\n return this._isUpdateMode;\n }\n\n @HostBinding('action') action: string;\n\n @HostListener('submit', ['$event']) submit($event) {\n this._debouncedSubmitForm($event);\n }\n\n @HostListener('reset') onReset() {\n this.reset();\n }\n\n @HostListener('keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n this._triggeredByUser = true;\n }\n // returns the formArray control on the parentForm.\n get parentFormArray(): FormArray {\n return this.parentForm && this.isParentList && this.parentForm.ngform.get(this.parentList.name) as FormArray;\n }\n\n // returns true only when closest livelist is the immediate parent of the form.\n // checks for livelist having any form elements with parentForm name.\n // If livelist is not containing any parentForm elements then it returns true.\n get isParentList() {\n if (this.parentList && this.parentForm && !isDefined(this._formIsInList)) {\n const formEle = this.$element;\n const listEle = formEle.closest('.app-livelist[name=\"' + this.parentList.name + '\"]');\n if (listEle.length) {\n this._formIsInList = !(listEle.find('form[widget-id=\"' + this.parentForm.widgetId + '\"]')).length;\n }\n }\n return isDefined(this._formIsInList) ? this._formIsInList : this.parentList;\n }\n\n constructor(\n inj: Injector,\n private fb: FormBuilder,\n private app: App,\n private dialogService: AbstractDialogService,\n private dynamicComponentProvider: DynamicComponentRefProvider,\n private ngZone: NgZone,\n @Optional() public parentList: ListComponent,\n @SkipSelf() @Optional() public parentForm: FormComponent,\n @SkipSelf() @Optional() public parentPrefab: PrefabDirective,\n @SkipSelf() @Optional() public parentPartial: PartialDirective,\n @Attribute('beforesubmit.event') public onBeforeSubmitEvt,\n @Attribute('submit.event') public onSubmitEvt,\n @Attribute('beforerender.event') public onBeforeRenderEvt,\n @Attribute('dataset.bind') public binddataset,\n @Attribute('formdata.bind') private bindformdata,\n @Attribute('wmLiveForm') isLiveForm,\n @Attribute('wmLiveFilter') isLiveFilter,\n @Attribute('data-role') role,\n @Attribute('key') key,\n @Attribute('name') name,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, getWidgetConfig(isLiveForm, isLiveFilter, role), explicitContext);\n\n styler(this.nativeElement, this);\n\n // remove title property as attribute as it is causing unnecessary tooltip\n removeAttr(this.nativeElement, 'title');\n this.isUpdateMode = true;\n this.dialogId = this.nativeElement.getAttribute('dialogId');\n this.ngform = fb.group({});\n this.bindingValue = key || name;\n\n // On value change in form, update the dataoutput\n const onValueChangeSubscription = this.ngform.valueChanges\n .subscribe(this.updateDataOutput.bind(this));\n this.registerDestroyListener(() => onValueChangeSubscription.unsubscribe());\n this.elScope = this;\n\n this.addEventsToContext(this.context);\n }\n\n ngAfterContentInit() {\n setTimeout(() => {\n this.componentRefs.forEach(componentRef => {\n if (componentRef.name) {\n // Register widgets inside form with formWidgets\n this.formWidgets[componentRef.name] = componentRef;\n }\n });\n }, 250);\n }\n\n ngAfterViewInit() {\n if (this.parentForm && this.parentForm.ngform && this.isParentList) {\n // setting formArray control on ngform.\n if (!get(this.parentForm.ngform.controls, this.parentList.name)) {\n this.parentForm.ngform.setControl(this.parentList.name, new FormArray([]));\n }\n // pushing the ngform to formArray.\n this.parentFormArray.push(this.ngform);\n this.formArrayIndex = this.parentFormArray.length - 1;\n }\n this.addInnerNgFormToForm(this.bindingValue);\n }\n\n findOperationType() {}\n\n private addInnerNgFormToForm(binding) {\n if (this.parentForm && this.parentForm.ngform) {\n // handling as formArray when parent is list. Hence returning here from adding to parentForm again.\n if (this.isParentList) {\n return;\n }\n // assigning the control name of the form inside the prefab with the prefab name.\n // This will happen only when there is only one form inside prefab.\n // We do not support changing this when multiple forms are inside prefab.\n // This scenario has to be handled by end user by changing form names in prefab according to the datamodel binding.\n const parentContainer = this.parentPrefab || this.parentPartial;\n if (parentContainer) {\n let parentContentEl;\n if (this.parentPrefab) {\n parentContentEl = parentContainer.$element.find('[wmprefabcontainer]');\n } else {\n parentContentEl = parentContainer.$element;\n }\n /**\n * assigning the form name to the parentContainer name i.e. partial name or perfab name by following\n * 1. retrieving all the forms in the parentContainer\n * 2. consider the first form\n * 3. if this form is inside list i.e. also find if this list is also inside the parentContainer (prefab / partial)\n * 4. then do not change the form name when form is inside list and also when there are siblings to the form\n * 5. this means form name change applies only when there is single form (immediate child) inside the parentContainer.\n */\n const prefabInnerForm = parentContentEl.find('form').first();\n if (get(prefabInnerForm[0], 'widget.widgetId') === this.widgetId) {\n // check whether form inside prefab container is inside the list. If true, do not change the name.\n if (!prefabInnerForm.isParentList && !prefabInnerForm.siblings('form').length) {\n binding = get(parentContainer, 'name');\n }\n }\n }\n let counter = 1;\n let innerBinding = binding;\n // Inner forms may have same names. If same name is present, append unqiue identifier\n while (this.parentForm.ngform.controls.hasOwnProperty(innerBinding)) {\n innerBinding = `${binding}_${counter}`;\n counter++;\n }\n this.formGroupName = innerBinding;\n // If parent form is present, add the current form as as formGroup for parent form\n this.parentForm.ngform.addControl(innerBinding, this.ngform);\n }\n }\n\n // Expose the events on context so that they can be accessed by form actions\n private addEventsToContext(context) {\n context.cancel = () => this.cancel();\n context.reset = () => this.reset();\n context.save = evt => this.save(evt);\n context.saveAndNew = () => this.saveAndNew();\n context.saveAndView = () => this.saveAndView();\n context.delete = () => this.delete();\n context.new = () => this.new();\n context.edit = () => this.edit();\n context.highlightInvalidFields = () => this.highlightInvalidFields();\n context.filter = () => this.filter();\n context.clearFilter = () => this.clearFilter();\n context.submit = evt => this.submit(evt);\n }\n\n // This method gets all the inner forms and validates each form.\n private setValidationOnInnerForms(validateTouch) {\n const formEle = this.getNativeElement();\n const formObjs = formEle.querySelectorAll('.app-form');\n const validationMsgs = [];\n forEach(formObjs, e => {\n const formInstance = (e as any).widget;\n // differentiating the validationMessages prefix based on the formGroupName\n // as the formName's are same when forms are in list\n let formName = get(formInstance, 'formGroupName') || formInstance.name;\n if (isDefined(formInstance.formArrayIndex)) {\n formName = formName + '[' + formInstance.formArrayIndex + ']';\n }\n let current = formInstance;\n while (get(current, 'parentForm')) {\n let parentName = current.parentForm.formGroupName || current.parentForm.name;\n if (current.parentForm.parentFormArray) {\n parentName = parentName + '[' + current.parentForm.formArrayIndex + ']';\n }\n formName = parentName + '.' + formName;\n current = current.parentForm;\n }\n this.setValidationOnFields(formInstance, formName, validateTouch);\n });\n }\n\n /**\n * This method sets validation on formFields.\n * Applies to innerform and also sets innerform validation on parent form.\n * @param prefix contains the form name, which also includes its parents form name\n * @param {boolean} validateTouch\n */\n private setValidationOnFields(form: FormComponent, prefix: string, validateTouch?: boolean) {\n const controls = form.ngform.controls;\n const formFields = form.formFields;\n if (!formFields) {\n return;\n }\n forEach(controls, (v, k) => {\n const field = formFields.find(e => e.key === k);\n if (!field || (validateTouch && !v.touched)) {\n return;\n }\n field.nativeElement.querySelector('input')?.setAttribute('aria-invalid', v.invalid);\n // invoking the prepareValidation on both parent form and current form.\n this.prepareValidationObj(v, k, field, prefix);\n this.prepareValidationObj.call(form, v, k, field, prefix);\n });\n }\n\n // Assigns / updates validationMessages based on angular errors on field\n private prepareValidationObj(v, k, field, prefix) {\n const index = this.validationMessages.findIndex(e => (e.field === k && e.fullyQualifiedFormName === prefix));\n if (v.invalid) {\n if (index === -1) {\n /**\n * field contains the fieldName\n * value contains the field value\n * errorType contains the list of errors\n * message contains the validation message\n * getElement returns the element having focus-target\n * formName returns the name of the form\n */\n this.validationMessages.push({\n field: k,\n value: field.value,\n errorType: keys(v.errors),\n message: field.validationmessage || '',\n getElement: () => {\n return field.$element.find('[focus-target]');\n },\n formName: last(prefix.split('.')),\n fullyQualifiedFormName: prefix\n });\n } else {\n this.validationMessages[index].value = field.value;\n this.validationMessages[index].errorType = keys(v.errors);\n }\n } else if (v.valid && index > -1) {\n this.validationMessages.splice(index, 1);\n }\n }\n\n // This will return a object containing the error details from the list of formFields that are invalid\n private setValidationMsgs(validateTouch?: boolean) {\n if (!this.formFields.length && isEmpty(this.ngform.controls)) {\n return;\n }\n this.setValidationOnFields(this, this.name, validateTouch);\n this.setValidationOnInnerForms(validateTouch);\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'submit') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n\n private updateFieldSource() {\n if (this.formdatasource && this.formdatasource.execute(DataSource.Operation.IS_API_AWARE)) {\n return;\n } else if (this.formdatasource && !this.formdatasource.twoWayBinding) {\n return;\n }\n this.formFields.forEach(formField => {\n formField.setFormWidget('datavaluesource', this.formdatasource);\n formField.setFormWidget('binddatavalue', `${this.bindformdata}.${formField.key}`);\n });\n }\n\n // This method loops through the form fields and highlights the invalid fields by setting state to touched\n highlightInvalidFields() {\n setTouchedState(this, this.ngform, '');\n }\n\n // Disable the form submit if form is in invalid state. Highlight all the invalid fields if validation type is default\n validateFieldsOnSubmit() {\n this.setValidationMsgs();\n // Disable the form submit if form is in invalid state. For delete operation, do not check the validation.\n if (this.operationType !== 'delete' && (this.validationtype === 'html' || this.validationtype === 'default')\n && this.ngform && this.ngform.invalid) {\n\n if (this.ngform.invalid) {\n if (this.validationtype === 'default') {\n this.highlightInvalidFields();\n }\n // Find the first invalid untoched element and set it to touched.\n // Safari does not form validations. this will ensure that error is shown for user\n const eleForm = findInvalidElement(this.$element, this.ngform);\n const $invalidForm = eleForm.ngForm;\n let $invalidEle = eleForm.$ele;\n $invalidEle = $invalidEle.parent().find('[focus-target]');\n if ($invalidEle.length) {\n // on save click in page layout liveform, focus of autocomplete widget opens full-screen search.\n if (!$invalidEle.hasClass('app-search-input')) {\n $invalidEle.focus();\n }\n const ngEle = $invalidForm && $invalidForm.controls[$invalidEle.attr('formControlName') || $invalidEle.attr('name')];\n if (ngEle && ngEle.markAsTouched) {\n ngEle.markAsTouched();\n }\n $appDigest();\n return true;\n }\n return true;\n }\n return false;\n }\n return false;\n }\n\n onPropertyChange(key, nv, ov?) {\n switch (key) {\n case 'captionalign':\n this.captionAlignClass = 'align-' + nv;\n break;\n case 'captionposition':\n this.setLayoutConfig();\n break;\n case 'captionwidth':\n this.setLayoutConfig();\n break;\n case 'captionsize':\n this.captionsize = nv;\n break;\n case 'novalidate':\n // Set validation type based on the novalidate property\n this.widget.validationtype = (nv === true || nv === 'true') ? 'none' : 'default';\n break;\n case 'formdata':\n // For livelist when multiselect is enabled, formdata will be array of objects. In this case consider the last object as formdata.\n if (isEqual(nv, ov)) {\n break;\n }\n isArray(nv) ? this.setFormData(last(nv)) : this.setFormData(nv);\n // if dataset on the formFields are not set as the datasourceChange is triggered before the formFields are registered.\n if (!this.isDataSourceUpdated && this.datasource) {\n this.onDataSourceChange();\n }\n break;\n case 'defaultmode':\n if (!this.isLayoutDialog) {\n if (nv && nv === 'Edit') {\n this.updateMode = true;\n } else {\n this.updateMode = false;\n }\n this.isUpdateMode = this.updateMode;\n }\n break;\n case 'datasource':\n this.onDataSourceChange();\n break;\n case 'formdatasource':\n this.onFormDataSourceChange();\n break;\n case 'metadata':\n this.generateFormFields();\n break;\n case 'dataset':\n const formFields = this.getFormFields();\n formFields.forEach(field => {\n // notifying the dataset change to the form-field widget.\n if (!field.isDataSetBound && get(field.formWidget, 'dataset$')) {\n field.formWidget.dataset$.next();\n }\n });\n break;\n default:\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n // Event callbacks on success/error\n onResultCb(data, status, event?) {\n const params = {$event: event, $data: data, $operation: this.operationType};\n // whether service call success or failure call this method\n this.invokeEventCallback('result', params);\n if (status) {\n // if service call is success call this method\n this.invokeEventCallback('success', params);\n } else {\n // if service call fails call this method\n this.invokeEventCallback('error', params);\n }\n }\n\n // Display or hide the inline message/ toaster\n toggleMessage(show: boolean, msg?: string, type?: string, header?: string) {\n let template;\n if (show && msg) {\n template = (type === 'error' && this.errormessage) ? this.errormessage : msg;\n if (this.messagelayout === 'Inline') {\n template = this.checkAppServiceErrorMsg(type) || template;\n this.statusMessage = {'caption': template || '', type: type};\n if (this.messageRef) {\n this.messageRef.showMessage(this.statusMessage.caption, this.statusMessage.type);\n }\n // when message layout is inline on save, scroll the view to top of the form to see the status of the operation\n if (!isElementInViewport(this.$element[0])) {\n scrollToElement(this.$element[0]);\n }\n } else {\n this.app.notifyApp(template, type, header);\n }\n } else {\n this.statusMessage.caption = '';\n }\n }\n\n // if there is an App.onServiceError handler for the app, that message should be used instead of server returned error message\n checkAppServiceErrorMsg(type) {\n const notificationAction = get(this.app, 'Actions.appNotification');\n if (notificationAction && type === 'error') {\n return notificationAction.getMessage();\n }\n return;\n }\n\n // Hide the inline message/ toaster\n clearMessage() {\n this.toggleMessage(false);\n }\n\n // Set the classes on the form based on the captionposition and captionwidth properties\n private setLayoutConfig() {\n let layoutConfig;\n layoutConfig = getFieldLayoutConfig(this.captionwidth, this.captionposition, get(this.app.selectedViewPort, 'os'));\n this._widgetClass = layoutConfig.widgetCls;\n this._captionClass = layoutConfig.captionCls;\n\n $appDigest();\n }\n\n registerFormWidget(widget) {\n const name = widget.name || widget.key;\n this.formWidgets[name] = widget;\n }\n\n registerFormFields(formField) {\n const fieldCount = this.formFields.push(formField);\n this.formfields[formField.key] = formField;\n this.registerFormWidget(formField);\n this._debouncedUpdateFieldSource();\n if (this.parentForm) {\n this.parentForm.formFields.push(formField);\n this.parentForm.formfields[formField.key] = formField;\n // inner formfields are pushed to parentForm, passing current innerForm's formdata to set innerFormdata to these innerFormFields\n this.parentForm.setFormData(this.parentForm.formdata, this.formFields, this.formdata || {});\n }\n // WMS-18967: Applying formadata after formfields are ready\n if (fieldCount === this.numberOfFields && !isEmpty(this.formdata)) {\n this.onDataSourceChange();\n isArray(this.formdata) ? this.setFormData(last(this.formdata)) : this.setFormData(this.formdata);\n }\n }\n\n registerActions(formAction) {\n this.buttonArray.push(formAction);\n }\n\n // Update the dataoutput whenever there is a change in inside form widget value\n updateFormDataOutput(dataObject) {\n // Set the values of the widgets inside the live form (other than form fields) in form data\n forEach(this.ngform.value, (val, key) => {\n if (!find(this.formFields, {key})) {\n dataObject[key] = val;\n }\n });\n this.dataoutput = dataObject;\n }\n\n // Construct the data object merging the form fields and custom widgets data\n constructDataObject() {\n const formData = {};\n const formFields = this.getFormFields();\n // Get all form fields and prepare form data as key value pairs\n formFields.forEach(field => {\n let fieldName,\n fieldValue;\n fieldValue = field.datavalue || field._control.value;\n fieldValue = (fieldValue === null || fieldValue === '') ? undefined : fieldValue;\n\n if (field.type === 'file') {\n fieldValue = getFiles(this.name, field.key + '_formWidget', field.multiple);\n }\n\n fieldName = field.key || field.target || field.name;\n\n // on current Form, when field is innerForm field then we group these fields under new object using formGroupName as key\n // For suppose, applicantName, applicantID are formfields in currentForm\n // This form is having innerform i.e. address, these fields are listed as\n // {\"applicantName\": \"\", \"applicantID\": \"\", \"address\": {\"street\": \"\"}}\n if (field.form.widgetId !== this.widgetId && field.form.formGroupName) {\n const fd = get(formData, field.form.formGroupName, {});\n fd[fieldName] = fieldValue;\n set(formData, field.form.formGroupName, fd);\n } else if ((typeof field.form.formArrayIndex === 'number') && field.form.isParentList && !this.parentForm) { // Fix for [WMS-25806]: use formArrayIndex only if form has a parent form\n // setting formdata based on formArrayIndex\n const fd = get(formData, field.form.parentList.name, []);\n fd[field.form.formArrayIndex] = fd[field.form.formArrayIndex] || {};\n fd[field.form.formArrayIndex][fieldName] = fieldValue;\n set(formData, field.form.parentList.name, fd);\n } else {\n // In case of update the field will be already present in form data\n set(formData, fieldName, fieldValue);\n }\n });\n this.updateFormDataOutput(formData);\n return this.dataoutput;\n }\n\n updateDataOutput() {\n this.constructDataObject();\n if (this.ngform.touched) {\n this.setValidationMsgs(true);\n }\n }\n\n // FormFields will contain all the fields in parent and inner form also.\n // This returns the formFields in the form based on the form name.\n getFormFields() {\n return filter(this.formFields, formField => {\n return formField.form.name === this.name;\n });\n }\n\n setFieldValue(field, data, innerFormdata?) {\n const key = field.key || field.name;\n // if customfield param value is not in the formdata then do not assign field value\n // as it can contain default value which will again be overridden by undefined.\n const fd = innerFormdata ? innerFormdata : data;\n if (fd) {\n if (fd.hasOwnProperty(key)) {\n field.value = get(fd, key);\n } else if (includes(key, '.')) {\n // key contains '.' when mapping the fields to child reference i.e. childCol is having key as \"parent.childCol\"\n if (fd.hasOwnProperty(split(key, '.')[0])) {\n field.value = get(fd, key);\n }\n }\n // WMS-18906: For default value, do not mark the form as dirty.\n if (this.dirty && !this._triggeredByUser) {\n this.markAsPristine();\n }\n }\n const formGroupName = field.form.formGroupName;\n /**\n * if formGroupName is defined which means field is inside the inner form\n * then set the formdata on the field's form using formGroupName\n */\n if (formGroupName && get(data, formGroupName)) {\n this.setFormData.call(field.form, data[formGroupName]);\n }\n // if formdata is assigned later then on propertyChangeHandler, even inner forms data also needs to be updated.\n if (get(field.form, 'parentFormArray')) {\n this.setFormDataFromParentFormData.call(field.form, data);\n }\n }\n\n setFormData(data, innerFormFields?, innerFormdata?) {\n // whereas formFields explicitly passed can contain innerform fields also.\n const formFields = innerFormFields || this.formFields;\n formFields.forEach(field => {\n this.setFieldValue(field, data, innerFormdata);\n if (field.fieldValidations) {\n field.fieldValidations.setCustomValidationMessage();\n }\n });\n this.constructDataObject();\n }\n\n resetFormState() {\n // clearing the validationMessages on reset.\n if (this.validationMessages.length) {\n this.validationMessages = [];\n }\n if (!this.ngform) {\n return;\n }\n this.ngform.markAsUntouched();\n this.ngform.markAsPristine();\n }\n\n reset() {\n this.resetFormState();\n this.formFields.forEach(field => {\n field.value = '';\n if (field.widgettype === 'upload' || field.type === DataType.BLOB) {\n this.resetFileUploadWidget(field, true);\n }\n field.nativeElement.querySelector('input')?.removeAttribute('aria-invalid');\n });\n this.constructDataObject();\n this.clearMessage();\n }\n\n savePrevformFields() {\n this.prevformFields = getClonedObject(this.formFields.map(field => {\n return {\n 'key': field.key,\n 'type': field.type,\n 'widgettype': field.widgettype,\n 'outputformat': field.outputformat,\n 'value': field.value\n };\n }));\n }\n\n savePrevDataValues() {\n this.prevDataValues = this.formFields.map((obj) => {\n return {'key': obj.key, 'value': obj.value};\n });\n }\n\n setReadonlyFields() {\n this.formFields.forEach(field => {\n field.setReadOnlyState();\n });\n }\n\n resetFileUploadWidget(field, skipValueSet?) {\n const $formEle = this.$element;\n $formEle.find('[name=\"' + field.key + '_formWidget\"]').val('');\n field._control.reset();\n if (!skipValueSet) {\n field.href = '';\n field.value = null;\n }\n }\n\n emptyDataModel() {\n this.formFields.forEach(field => {\n if (isDefined(field)) {\n if (field.type === DataType.BLOB) {\n this.resetFileUploadWidget(field);\n } else {\n field.datavalue = '';\n }\n }\n });\n }\n\n setDefaultValues() {\n this.formFields.forEach(field => {\n this.onFieldDefaultValueChange(field, field.defaultvalue);\n });\n }\n\n setOperationType(mode) {\n this.operationType = mode || 'insert';\n }\n\n new() {\n this.resetFormState();\n this.operationType = Live_Operations.INSERT;\n this.clearMessage();\n if (this.isSelected) {\n this.savePrevformFields();\n }\n this.emptyDataModel();\n setTimeout(() => {\n this.setDefaultValues();\n this.savePrevDataValues();\n this.constructDataObject();\n });\n this.isUpdateMode = true;\n }\n\n edit() {\n this.resetFormState();\n this.clearMessage();\n\n this.operationType = Live_Operations.UPDATE;\n\n if (this.isSelected) {\n this.savePrevformFields();\n this.savePrevDataValues();\n }\n this.prevDataObject = getClonedObject(this.formdata || {});\n\n this.setReadonlyFields();\n this.isUpdateMode = true;\n\n $appDigest();\n }\n\n private triggerWMEvent(eventName) {\n const tableId = this.nativeElement.getAttribute('dependsontable');\n if (!tableId) {\n return;\n }\n $invokeWatchers(true);\n this.app.notify('wm-event', {eventName, widgetName: tableId});\n }\n\n submitForm($event) {\n let template, formData, result;\n const dataSource = this.datasource;\n // Disable the form submit if form is in invalid state.\n if (this.validateFieldsOnSubmit()) {\n return;\n }\n\n formData = getClonedObject(this.constructDataObject());\n\n const getParams = () => {\n return {$event, $formData: formData, $data: formData};\n };\n\n\n if (this.onBeforeSubmitEvt) {\n if (this.invokeEventCallback('beforesubmit', getParams()) === false) {\n return;\n } else {\n this.resetFormState();\n }\n } else {\n this.resetFormState();\n }\n\n if (this.onSubmitEvt || dataSource) {\n // If on submit is there execute it and if it returns true do service variable invoke else return\n // If its a service variable call setInput and assign form data and invoke the service\n if (dataSource) {\n const currentPageNum = dataSource.pagination && dataSource.pagination.number + 1;\n const operationType = this.operationType ? this.operationType : 'insert';\n performDataOperation(dataSource, formData, {operationType: operationType})\n .then((data) => {\n if (dataSource.category === 'wm.CrudVariable') {\n this.triggerWMEvent('resetEditMode');\n this.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true,\n 'operation': 'list',\n 'page': currentPageNum,\n 'preventMissingOpMsg': true\n });\n if (this.dialogId) {\n this.closeDialog();\n }\n }\n if (isDefined(data.body)) {\n result = getValidJSON(data.body);\n result = isDefined(result) ? result : data.body;\n } else {\n result = data;\n }\n return {\n 'result': result,\n 'status': true,\n 'message': this.postmessage,\n 'type': 'success'\n };\n }, (error) => {\n template = this.errormessage || error.error || error;\n $appDigest();\n return {\n 'result': get(error, 'error') || error,\n 'status': false,\n 'message': template,\n 'type': 'error'\n };\n }).then(response => {\n if ((response.type === 'error' && !this.onError) || (response.type === 'success' && !this.onSuccess)) {\n this.toggleMessage(true, response.message, response.type);\n }\n this.invokeEventCallback('submit', getParams());\n this.onResultCb(response.result, response.status, $event);\n });\n } else {\n this.invokeEventCallback('submit', getParams());\n this.onResultCb({}, true, $event);\n }\n } else {\n this.onResultCb({}, true, $event);\n }\n }\n\n closeDialog() {\n this.dialogService.close(this.dialogId);\n }\n\n // Method to show/hide the panel header or footer based on the buttons\n showButtons(position) {\n return some(this.buttonArray, btn => {\n return includes(btn.position, position) && btn.updateMode === this.isUpdateMode;\n });\n }\n\n // Expand or collapse the panel\n expandCollapsePanel() {\n if (this.collapsible) {\n // flip the active flag\n this.expanded = !this.expanded;\n }\n }\n\n onDataSourceUpdate(response, newForm, updateMode) {\n if (newForm) {\n this.new();\n } else {\n this.setFormData(response);\n this.closeDialog();\n }\n this.isUpdateMode = isDefined(updateMode) ? updateMode : true;\n }\n\n /**\n * This method tranverses through the parent containing formdata and returns the parent formdata.\n * @param form, represents the current form instance\n * @returns {any}\n */\n getNearestParentFormData(form) {\n if (!form.parentForm) {\n return {};\n }\n if (!form.bindformdata && get(form.parentForm, 'formdata') && !isEmpty(form.parentForm.formdata)) {\n return form.parentForm.formdata;\n }\n return this.getNearestParentFormData(form.parentForm);\n }\n\n setFormDataFromParentFormData(formdata: any) {\n if (isEmpty(this.formdata) && this.parentForm && formdata) {\n /**\n * If form is inside list,\n * 1. directly applying the formdata to the formArray to update the formdata on list of forms using patchValue.\n * 2. and also setting individual formdata to the form inside each item based on formArrayIndex, when form is not bound to formdata.\n * 3. explicitly invoking formdata as formFields will contain all the formfields including innerForm's fields\n * (if we do not invoke explicitly then formFields will just contain the fields inside current form and not inner form fields)\n * 4. if childFormArrayData is not available we will check for inner form data using \"formGroupName\" and will set the innerform data\n * If not inside list, just set the formdata on all the formfields including innerForm fields\n */\n if (this.parentFormArray) {\n let childFormArrayData = get(formdata, this.parentList.name);\n if (childFormArrayData) {\n if (!isArray(childFormArrayData)) {\n childFormArrayData = [childFormArrayData];\n }\n this.parentFormArray.patchValue(childFormArrayData);\n if (!this.bindformdata) {\n this.formdata = childFormArrayData[this.formArrayIndex];\n }\n this.setFormData(this.formdata);\n } else if (this.isParentList && this.parentForm.formGroupName) {\n const parentFormData = get(formdata, this.parentForm.formGroupName);\n this.setFormDataFromParentFormData(parentFormData);\n }\n } else {\n this.setFormData(formdata);\n }\n }\n }\n\n // On form data source change. This method is overridden by live form and live filter\n onDataSourceChange() {\n if (get(this.formFields, 'length') && !this.bindformdata) {\n this.isDataSourceUpdated = true;\n /**\n * formdata on the parent form will be set before the inner forms are rendered.\n * Hence handling formdata on the innerForms, which might be rendered slowly (suppose prefab with form)\n * setting inner form's formdata obtained from parent formdata\n * this applies only when formdata is not given on the inner form.\n */\n const formdata = this.getNearestParentFormData(this);\n this.setFormDataFromParentFormData(formdata);\n }\n }\n\n // On form data source change. This method is overridden by live form and live filter\n onFormDataSourceChange() {\n this.updateFieldSource();\n }\n\n // On form field default value change. This method is overridden by live form and live filter\n onFieldDefaultValueChange(field, nv) {\n field.value = parseValueByType(nv, undefined, field.widgettype, field.trailingzero);\n // WMS-22434: For default value set on individual form fields, do not mark the form as dirty.\n if (this.dirty && !this._triggeredByUser) {\n this.markAsPristine();\n }\n }\n\n // On form field value change. This method is overridden by live form and live filter\n onFieldValueChange() {\n }\n\n // Function to generate and compile the form fields from the metadata\n async generateFormFields() {\n let noOfColumns;\n let $gridLayout;\n // Check if grid layout is present or not for first time\n if (isUndefined(this._isGridLayoutPresent)) {\n this._isGridLayoutPresent = this.$element.find('.panel-body [wmlayoutgrid]').length > 0;\n }\n if (this._isGridLayoutPresent) {\n $gridLayout = this.$element.find('.form-elements [wmlayoutgrid]').first();\n noOfColumns = Number($gridLayout.attr('columns')) || 1;\n } else {\n $gridLayout = this.$element.find('.form-elements .dynamic-form-container');\n if (!$gridLayout.length) {\n this.$element.find('.form-elements').prepend('<div class=\"dynamic-form-container\"></div>');\n $gridLayout = this.$element.find('.form-elements .dynamic-form-container');\n }\n noOfColumns = 1;\n }\n const columnWidth = 12 / noOfColumns;\n let fieldTemplate = '';\n let colCount = 0;\n let index;\n let userFields;\n let fields = this.metadata ? this.metadata.data || this.metadata : [];\n\n this.formFields = []; // empty the form fields\n\n if (isEmpty(fields)) {\n return;\n }\n\n if (this.onBeforeRenderEvt) {\n userFields = this.invokeEventCallback('beforerender', {$metadata: fields});\n if (userFields) {\n fields = userFields;\n }\n }\n\n if (!isArray(fields)) {\n return;\n }\n\n while (fields[colCount]) {\n let colTmpl = '';\n for (index = 0; index < noOfColumns; index++) {\n if (fields[colCount]) {\n colTmpl += setMarkupForFormField(fields[colCount], columnWidth);\n }\n colCount++;\n }\n fieldTemplate += `<wm-gridrow>${colTmpl}</wm-gridrow>`;\n }\n\n if (!this._isGridLayoutPresent) {\n fieldTemplate = `<wm-layoutgrid>${fieldTemplate}</wm-layoutgrid>`;\n }\n\n this.dynamicFormRef.clear();\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext.form = this;\n }\n const componentFactoryRef = await this.dynamicComponentProvider.getComponentFactoryRef(\n 'app-form-dynamic-' + this.widgetId,\n fieldTemplate,\n {\n noCache: true,\n transpile: true\n });\n const component = this.dynamicFormRef.createComponent(componentFactoryRef, 0, this.inj);\n extendProto(component.instance, this._dynamicContext);\n $gridLayout[0].appendChild(component.location.nativeElement);\n this.setFormData(this.formdata);\n }\n\n get mode() {\n return this.operationType || this.findOperationType();\n }\n\n get dirty() {\n return this.ngform && this.ngform.dirty;\n }\n\n /**\n * This method sets the form state to pristine by internally calling angular markAsPristine method on the form\n * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false\n * @returns {void}\n */\n markAsPristine(value: boolean = false) {\n this.ngform.markAsPristine({ onlySelf: value });\n }\n\n /**\n * This method sets the form state to dirty by internally calling angular markAsDirty method on the form\n * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false\n * @returns {void}\n */\n markAsDirty(value: boolean = false) {\n this.ngform.markAsDirty({ onlySelf: value });\n }\n\n get invalid() {\n return this.ngform && this.ngform.invalid;\n }\n\n get touched() {\n return this.ngform && this.ngform.touched;\n }\n\n get valid() {\n return this.ngform && this.ngform.valid;\n }\n\n get pristine() {\n return this.ngform && this.ngform.pristine;\n }\n\n /**\n * This method sets the form state to touched by internally calling angular markAsTouched method on the form\n * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false\n * @returns {void}\n */\n markAsTouched(value: boolean = false) {\n this.ngform.markAsTouched({ onlySelf: value });\n }\n\n /**\n * This method sets the form state to untouched by internally calling angular markAsUntouched method on the form\n * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false\n * @returns {void}\n */\n markAsUntouched(value: boolean = false) {\n this.ngform.markAsUntouched({ onlySelf: value });\n }\n\n invokeActionEvent($event, expression: string) {\n const fn = $parseEvent(expression);\n fn(this.viewParent, Object.assign(this.context, {$event}));\n }\n\n ngOnDestroy() {\n // on form destroy, removing this form from the parentForm too.\n const controls = this.parentForm && get(this.parentForm, 'ngform.controls');\n if (controls) {\n // when current form is inside the list (i.e. incase of formArray).\n if (get(this.parentList, 'name') && controls.hasOwnProperty(this.parentList.name)) {\n //get the index of current form in the list and remove the FormControl from FormArray\n const index = findIndex(this.parentList.getWidgets(this.name), {widgetId: this.widgetId});\n (<FormArray>this.parentForm.ngform.controls[this.parentList.name]).removeAt(index);\n }\n // when we have formGroupName set i.e. multiple formInstance with counter appended to formName\n if (this.formGroupName && controls.hasOwnProperty(this.formGroupName)) {\n this.parentForm.ngform.removeControl(this.formGroupName);\n } else {\n this.parentForm.ngform.removeControl(this.name);\n }\n }\n super.ngOnDestroy();\n }\n}\n","import { Attribute, Directive, Inject, OnInit, Self, Optional } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\nimport { WidgetRef } from '@wm/components/base';\nimport { TableComponent } from '@wm/components/data/table';\n\nimport { FormComponent } from './form.component';\n\n@Directive({\n selector: '[wmFormWidget]'\n})\nexport class FormWidgetDirective implements OnInit {\n\n ngform: FormGroup;\n fb;\n parent;\n\n constructor(\n @Optional() @Inject(FormComponent) form,\n @Optional() @Inject(TableComponent) table,\n @Self() @Inject(WidgetRef) public componentInstance,\n fb: FormBuilder,\n @Attribute('name') public name,\n @Attribute('key') public key) {\n this.fb = fb;\n this.parent = form || table;\n this.ngform = this.parent.ngform;\n\n this.componentInstance.registerPropertyChangeListener((k, nv) => {\n if (k === 'datavalue' && this._control) {\n this._control.setValue(nv);\n } else if (k === 'name' && !this._control) {\n this.addControl(this.key || nv);\n }\n });\n }\n\n get _control() {\n const fieldName = this.key || this.name;\n if (!fieldName) {\n return undefined;\n }\n return this.ngform && this.ngform.controls[fieldName];\n }\n\n addControl(fieldName) {\n this.ngform.addControl(fieldName, this.createControl());\n }\n\n createControl() {\n return this.fb.control(this.componentInstance.datavalue);\n }\n\n ngOnInit() {\n const fieldName = this.key || this.name;\n\n if (fieldName && !this._control) {\n this.addControl(fieldName);\n this.parent.registerFormWidget(this.componentInstance);\n }\n }\n}\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-form-action',\n new Map(\n [\n ['accessroles', PROP_STRING],\n ['action', PROP_STRING],\n ['class', PROP_STRING],\n ['binding', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['display-name', PROP_STRING],\n ['hyperlink', PROP_STRING],\n ['iconclass', PROP_STRING],\n ['iconname', PROP_STRING],\n ['key', PROP_STRING],\n ['position', {value: 'footer', ...PROP_STRING}],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['target', PROP_STRING],\n ['title', PROP_STRING],\n ['type', {value: 'button', ...PROP_STRING}],\n ['update-mode', {value: true, ...PROP_BOOLEAN}],\n ['widget-type', {value: 'button', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {Directive, Inject, Injector, OnInit, Optional} from '@angular/core';\n\nimport { BaseComponent, provideAsWidgetRef } from '@wm/components/base';\n\nimport { registerProps } from './form-action.props';\nimport { FormComponent } from '../form.component';\nimport {isUndefined} from \"lodash-es\";\n\nconst WIDGET_CONFIG = {widgetType: 'wm-form-action', hostClass: ''};\n\n@Directive({\n selector: '[wmFormAction]',\n providers: [\n provideAsWidgetRef(FormActionDirective)\n ]\n})\nexport class FormActionDirective extends BaseComponent implements OnInit {\n static initializeProps = registerProps();\n\n accessroles;\n action;\n binding;\n class;\n disabled;\n displayName;\n iconclass;\n iconname;\n key;\n position;\n shortcutkey;\n show;\n tabindex;\n title;\n type;\n updateMode;\n buttonDef;\n hyperlink;\n target;\n\n private _propsInitialized: boolean;\n\n constructor(inj: Injector, @Optional() public form: FormComponent, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n populateAction() {\n this.buttonDef = {\n key: this.key || this.binding,\n displayName: this['display-name'],\n show: this.show,\n class: this.class ? this.class : (this['widget-type'] === 'button' ? 'btn-secondary' : ''),\n iconclass: this.iconclass || '',\n title: isUndefined(this.title) ? (this['display-name'] || '') : this.title,\n action: this.action,\n accessroles: this.accessroles,\n shortcutkey: this.shortcutkey,\n disabled: this.disabled,\n tabindex: this.tabindex,\n iconname: this.iconname,\n type: this.type,\n updateMode: this['update-mode'],\n position: this.position,\n widgetType: this['widget-type'],\n hyperlink: this.hyperlink,\n target: this.target\n };\n this._propsInitialized = true;\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.populateAction();\n this.form.registerActions(this.buttonDef);\n }\n\n onPropertyChange(key, nv, ov) {\n if (!this._propsInitialized) {\n return;\n }\n switch (key) {\n case 'display-name':\n this.buttonDef.displayName = nv;\n default:\n this.buttonDef[key] = nv;\n break;\n }\n }\n}\n","import { FormWidgetType } from '@wm/core';\n\nimport { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, getWidgetPropsByType } from '@wm/components/base';\n\nexport const registerProps = () => {\n const formFieldMap = new Map(\n [\n ['dataentrymode', {value: 'default', ...PROP_STRING}],\n ['debouncetime', {value: 250, ...PROP_NUMBER}],\n ['defaultvalue', PROP_STRING],\n ['displayname', PROP_STRING],\n ['display-name', PROP_STRING],\n ['field', PROP_STRING],\n ['filterexpressions', PROP_STRING],\n ['filter-on', PROP_STRING],\n ['generator', PROP_STRING],\n ['hint', PROP_STRING],\n ['inputtype', PROP_STRING],\n ['is-primary-key', PROP_BOOLEAN],\n ['is-range', PROP_BOOLEAN],\n ['is-related', PROP_BOOLEAN],\n ['isformfield', {value: true}],\n ['key', PROP_STRING],\n ['limit', PROP_NUMBER],\n ['lookup-type', PROP_STRING],\n ['lookup-field', PROP_STRING],\n ['name', PROP_STRING],\n ['matchmode', PROP_STRING],\n ['maxdefaultvalue', PROP_STRING],\n ['maxplaceholder', PROP_STRING],\n ['mobile-display', {value: true, ...PROP_BOOLEAN}],\n ['period', PROP_BOOLEAN],\n ['pc-display', {value: true, ...PROP_BOOLEAN}],\n ['placeholder', PROP_STRING],\n ['primary-key', PROP_BOOLEAN],\n ['related-entity-name', PROP_STRING],\n ['required', PROP_BOOLEAN],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tablet-display', {value: true, ...PROP_BOOLEAN}],\n ['type', PROP_STRING],\n ['validationmessage', PROP_STRING],\n ['viewmodewidget', PROP_STRING],\n ['widgettype', PROP_STRING]\n ]\n );\n\n for (const key in FormWidgetType) {\n const widgetName = 'wm-form-field-' + FormWidgetType[key];\n const widgetProps = getWidgetPropsByType(widgetName);\n formFieldMap.forEach((v, k: string) => {\n if (widgetProps.get(k) == undefined) {\n widgetProps.set(k, v);\n }\n });\n }\n};\n","import {\n AfterContentInit,\n Attribute,\n ContentChild,\n Directive,\n HostListener,\n Inject,\n Injector,\n OnInit,\n Optional,\n Self\n} from '@angular/core';\nimport {FormBuilder, FormGroup, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {debounceTime} from 'rxjs/operators';\n\nimport {\n addForIdAttributes,\n App,\n debounce,\n FormWidgetType,\n isDateTimeType,\n isDefined,\n isMobile,\n noop,\n Viewport\n} from '@wm/core';\nimport {\n BaseFieldValidations,\n Context,\n getDefaultViewModeWidget,\n getEvaluatedData,\n provideAs,\n provideAsWidgetRef,\n StylableComponent\n} from '@wm/components/base';\nimport {ListComponent} from '@wm/components/data/list';\n\nimport {registerProps} from './form-field.props';\nimport {FormComponent} from '../form.component';\nimport {forEach, get, isArray, isObject, join} from \"lodash-es\";\n\ndeclare const $;\n\n// Custom validator to show validation error, if setValidationMessage method is used\nconst customValidatorFn = () => {\n return { custom: true };\n};\n\nconst FILE_TYPES = {\n 'image' : 'image/*',\n 'video' : 'video/*',\n 'audio' : 'audio/*'\n};\n\n@Directive({\n selector: '[wmFormField]',\n exportAs: 'wmFormField',\n providers: [\n provideAsWidgetRef(FormFieldDirective),\n provideAs(FormFieldDirective, NG_VALUE_ACCESSOR, true),\n {provide: Context, useFactory: () => { return {} }, multi: true}\n ]\n})\nexport class FormFieldDirective extends StylableComponent implements OnInit, AfterContentInit {\n static initializeProps = registerProps();\n\n @ContentChild('formWidget', {static: true}) formWidget;\n @ContentChild('formWidgetMax') formWidgetMax;\n\n private fb;\n private viewport;\n\n // excludeProps is used to store the props that should not be applied on inner widget\n private excludeProps;\n private _validators;\n private _oldUploadVal;\n\n ngform: FormGroup;\n defaultvalue;\n displayexpression;\n displayfield;\n displaylabel;\n displayname;\n generator;\n key;\n target;\n binding;\n widgettype;\n class;\n readonly;\n show;\n type;\n isDataSetBound;\n viewmodewidget;\n binddataset;\n binddisplayexpression;\n bindChipclass;\n displayimagesrc: string;\n binddisplayimagesrc;\n binddisplaylabel;\n form;\n filetype;\n extensions;\n permitted;\n period;\n isRange;\n name;\n // Validation properties\n required;\n maxchars;\n minvalue;\n maxvalue;\n regexp;\n fieldDefConfig;\n placeholder;\n inputtype;\n validationmessage;\n\n public _fieldName;\n\n private _debounceSetUpValidators;\n private _initPropsRes;\n private parentList;\n private showPendingSpinner: boolean;\n private _activeField: boolean;\n private notifyForFields: any;\n private fieldValidations;\n private _triggeredByUser: boolean;\n private _clicktriggeredByUser: boolean;\n private app: App;\n\n @HostListener('keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n this._triggeredByUser = true;\n }\n\n @HostListener('click', ['$event']) handleClick(event) {\n this._clicktriggeredByUser = true;\n }\n\n private isFocused;\n constructor(\n inj: Injector,\n form: FormComponent,\n fb: FormBuilder,\n viewport: Viewport,\n app: App,\n @Optional() parentList: ListComponent,\n @Attribute('chipclass.bind') bindChipclass: string,\n @Attribute('dataset.bind') binddataset,\n @Attribute('displayexpression.bind') binddisplayexpression: string,\n @Attribute('displaylabel.bind') binddisplaylabel: string,\n @Attribute('widgettype') _widgetType,\n @Attribute('name') name,\n @Attribute('displayimagesrc.bind') binddisplayimagesrc: String,\n @Attribute('key') key,\n @Attribute('is-range') isRange,\n @Attribute('pc-display') pcDisplay,\n @Attribute('mobile-display') mobileDisplay,\n @Attribute('tablet-display') tabletDisplay,\n @Self() @Inject(Context) contexts: Array<any>,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n const WIDGET_CONFIG = {\n widgetType: 'wm-form-field',\n hostClass: '',\n widgetSubType: 'wm-form-field-' + (_widgetType || FormWidgetType.TEXT).trim()\n };\n let resolveFn: Function = noop;\n\n super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n this._initPropsRes = resolveFn;\n this.app = app;\n this.fieldDefConfig = {};\n this.class = '';\n this.binddataset = binddataset;\n this.binddisplayimagesrc = binddisplayimagesrc;\n this.binddisplayexpression = binddisplayexpression;\n this.bindChipclass = bindChipclass;\n this.binddisplaylabel = binddisplaylabel;\n this.form = form;\n this.fb = fb;\n this.viewport = viewport;\n this._fieldName = key || name;\n this.isRange = isRange;\n this.excludeProps = new Set(['type', 'name']);\n this.widgettype = _widgetType;\n this.parentList = parentList;\n this.notifyForFields = [];\n\n if (this.binddataset || this.$element.attr('dataset')) {\n this.isDataSetBound = true;\n }\n\n contexts[0]._onFocusField = this._onFocusField.bind(this);\n contexts[0]._onBlurField = this._onBlurField.bind(this);\n\n this._debounceSetUpValidators = debounce(() => this.setUpValidators(), 500);\n }\n\n _onFocusField($evt) {\n this._activeField = true;\n $($evt.target).closest('.live-field').addClass('active');\n\n }\n\n // Function to get the active element markup based on widget type\n getActiveElement() {\n const widgetType = this.nativeElement.getAttribute('widgettype');\n switch (widgetType) {\n case 'select':\n return this.nativeElement.querySelector('select');\n case 'textarea':\n return this.nativeElement.querySelector('textarea');\n default:\n return this.nativeElement.querySelector('input');\n }\n }\n\n setAriaAttributes() {\n const element = this.getActiveElement();\n if (this.ngform.controls[this._fieldName].invalid && this.ngform.controls[this._fieldName].touched && this.form.isUpdateMode) {\n this.nativeElement.setAttribute('__errormsg', `${this.nativeElement.getAttribute('__validationId')}`);\n element?.setAttribute('aria-invalid', `${this.ngform.controls[this._fieldName].invalid}`);\n element?.setAttribute('aria-describedby', `${this.nativeElement.getAttribute('__validationId')}`);\n } else {\n this.nativeElement.removeAttribute('__errormsg');\n element?.removeAttribute('aria-invalid');\n element?.removeAttribute('aria-describedby');\n }\n }\n\n _onBlurField($evt) {\n $($evt.target).closest('.live-field').removeClass('active');\n const ele = this.nativeElement.querySelector('p.text-danger');\n // Fix for [WMS-23959]: ADA issue - adding aria-describedby, aria-invalid, __errormsg attributes only when the form field is invalid , else removing the attributes\n this.setAriaAttributes();\n this._activeField = false;\n this._triggeredByUser = false;\n this._clicktriggeredByUser = false;\n }\n\n // Expression to be evaluated in view mode of form field\n evaluateExpr(object, displayField, displayExpr) {\n if (!displayExpr || !displayField) {\n displayField = Object.keys(object)[0];\n // If dataset is not ready, display expression will not be defined\n if (!displayField) {\n return;\n }\n }\n return getEvaluatedData(object, {\n field: displayField,\n expression: displayExpr\n }, this.viewParent);\n }\n\n // Expression to be evaluated in view mode of form field\n getDisplayExpr() {\n const caption = [];\n const value = this.value;\n const displayField = this.displayfield || this.displaylabel\n const displayExpr = this.displayexpression;\n if (isObject(value)) {\n if (isArray(value)) {\n forEach(value, obj => {\n if (isObject(obj)) {\n caption.push(this.evaluateExpr(obj, displayField, displayExpr));\n }\n });\n } else {\n caption.push(this.evaluateExpr(value, displayField, displayExpr));\n }\n return join(caption, ',');\n }\n return (value === undefined || value === null) ? '' : this.value;\n }\n\n getCaption() {\n return (this.value === undefined || this.value === null) ? (get(this.form.dataoutput, this._fieldName) || '') : this.value;\n }\n\n // Notifies changes to observing validation fields\n notifyChanges() {\n forEach(this.notifyForFields, field => {\n field.fieldValidations.validate();\n });\n }\n\n // Registers observer of validation fields\n observeOn(fields) {\n this.fieldValidations.observeOn(fields, 'formfields');\n }\n\n // Method to setup validators for reactive form control\n setUpValidators(customValidator?) {\n this.fieldValidations.setUpValidators(customValidator);\n }\n\n // sets the custom async validation on the form field\n setAsyncValidators(validators) {\n this.fieldValidations.setAsyncValidators(validators);\n }\n\n // sets the default and custom sync validation on the form field\n setValidators(validators) {\n this.fieldValidations.setValidators(validators);\n }\n\n // Method to set the properties on inner form widget\n setFormWidget(key, val) {\n if (this.formWidget && this.formWidget.widget) {\n this.formWidget.widget[key] = val;\n }\n }\n\n boundFn(fn) {\n return fn();\n }\n\n // Method to set the properties on inner max form widget (when range is selected)\n setMaxFormWidget(key, val) {\n if (this.formWidgetMax) {\n this.formWidgetMax.widget[key] = val;\n }\n }\n\n onPropertyChange(key, nv, ov?) {\n const isFormDirty = this.form.dirty;\n\n if (key !== 'tabindex') {\n super.onPropertyChange(key, nv, ov);\n }\n\n if (this.excludeProps.has(key)) {\n return;\n }\n\n // As upload widget is an HTML widget, only required property is setup\n if (this.widgettype === FormWidgetType.UPLOAD) {\n if (key === 'required') {\n this._debounceSetUpValidators();\n }\n super.onPropertyChange(key, nv, ov);\n return;\n }\n\n this.setFormWidget(key, nv);\n\n // Placeholder should not be setup on max widget\n if (key !== 'placeholder') {\n this.setMaxFormWidget(key, nv);\n }\n\n switch (key) {\n case 'defaultvalue':\n this.form.onFieldDefaultValueChange(this, nv);\n break;\n case 'maxdefaultvalue':\n this.maxValue = nv;\n this.setMaxFormWidget('datavalue', nv);\n this.form.onMaxDefaultValueChange();\n break;\n case 'maxplaceholder':\n this.setMaxFormWidget('placeholder', nv);\n break;\n case 'required':\n // WMS-18906 : Do not make form as dirty during required prop initialization\n if (isFormDirty !== this.form.dirty) {\n this.form.markAsPristine();\n }\n case 'maxchars':\n case 'minvalue':\n case 'maxvalue':\n case 'regexp':\n case 'show':\n this._debounceSetUpValidators();\n break;\n case 'primary-key':\n if (nv) {\n this.form.setPrimaryKey(this._fieldName);\n }\n break;\n case 'display-name':\n this.displayname = nv;\n break;\n case 'readonly':\n this.setReadOnlyState();\n break;\n }\n }\n\n onStyleChange(key, nv, ov?) {\n this.setFormWidget(key, nv);\n this.setMaxFormWidget(key, nv);\n super.onStyleChange(key, nv, ov);\n }\n\n get datavalue() {\n return this.formWidget && this.formWidget.datavalue;\n }\n\n set datavalue(val) {\n if (this._control && this.widgettype !== FormWidgetType.UPLOAD) {\n this._control.setValue(val);\n }\n }\n\n get value() {\n return this.datavalue;\n }\n\n set value(val) {\n this.datavalue = val;\n }\n\n get maxValue() {\n return this.formWidgetMax && this.formWidgetMax.datavalue;\n }\n\n set maxValue(val) {\n if (this._maxControl) {\n this._maxControl.setValue(val);\n }\n }\n\n get minValue() {\n return this.value;\n }\n\n set minValue(val) {\n this.value = val;\n }\n\n // Get the reactive form control\n get _control() {\n return this.ngform && this.ngform.controls[this._fieldName];\n }\n\n // Get the reactive max form control\n get _maxControl() {\n return this.ngform && this.ngform.controls[this._fieldName + '_max'];\n }\n\n // Get the displayValue\n get displayValue() {\n return this.formWidget && this.formWidget.displayValue;\n }\n\n //Get the timestamp\n get timestamp(){\n return this.formWidget && this.formWidget.timestamp;\n }\n\n //Get the charlength\n get charlength(){\n return this.formWidget && this.formWidget.charlength;\n }\n\n // Create the reactive form control\n createControl() {\n return this.fb.control(undefined, {\n validators: this._validators\n });\n }\n\n // On field value change, propagate event to parent form\n onValueChange(val) {\n if (!this.isDestroyed) {\n const captionEl = $(this.nativeElement).find('.caption-floating');\n if (captionEl.length > 0) {\n // hasValue check whether form-field has a value from passed val attribute\n // Added sanity check on val to support values liked 0, false etc as input val - WMS-20084\n // explicitly checking for input value or -webkit-autofill to see whether there are any autofilled fields - WMS-20141\n\n const hasValue = ((isDefined(val) && val !== '' && val !== null) || captionEl.find('input').val()) || captionEl.find('input:-webkit-autofill').length;\n\n this.app.notify('captionPositionAnimate', {\n displayVal: hasValue,\n nativeEl: captionEl,\n isSelectMultiple: this.formWidget && this.formWidget.multiple,\n isFocused: this._activeField\n });\n }\n // Fix for [WMS-23959]: ADA issue - adding aria-describedby, aria-invalid, __errormsg attributes only when the form field is invalid , else removing the attributes\n this.setAriaAttributes();\n this.form.onFieldValueChange(this, val);\n this.notifyChanges();\n // Do mark as touched, only incase when user has entered an input but not through the script. Hence added mousedown event check\n // active class checks whether user is on the current field, if so marking the field as touched. And form field validation happens once a field is touched\n // _triggeredByUser checks whether the field is touched by the user or triggered from external script\n // WMS-22456: _clicktriggeredByUser checks when user selects datetimetype from picker, mark the field as touched to show validation errors in mobile\n\n if (this.$element.find('.active').length > 0 || this.form.touched) {\n if (this._triggeredByUser || (isMobile() && this._clicktriggeredByUser && isDateTimeType(this.widgettype))) {\n this.ngform.controls[this._fieldName].markAsTouched();\n }\n this.fieldValidations.setCustomValidationMessage();\n }\n }\n }\n\n onStatusChange(status) {\n if (!this.isDestroyed) {\n this.showPendingSpinner = (status === 'PENDING');\n // while running validation, widget is disabled and spinner is shown\n // otherwise formWidget disabled state is reset to the state of the formField.\n if (status === 'PENDING') {\n this.formWidget.disabled = true;\n } else if (this.formWidget.disabled !== (this as any).disabled) {\n this.formWidget.disabled = (this as any).disabled;\n }\n }\n }\n\n // Method to expose validation message and set control to invalid\n setValidationMessage(val) {\n setTimeout(() => {\n this.validationmessage = val;\n this.setUpValidators(customValidatorFn);\n });\n }\n\n setReadOnlyState() {\n let readOnly;\n if (this.form.isUpdateMode) {\n if (this['primary-key'] && !this['is-related'] && !this.period) {\n /*If the field is primary but is assigned set readonly false.\n Assigned is where the user inputs the value while a new entry.\n This is not editable(in update mode) once entry is successful*/\n readOnly = !(this.generator === 'assigned' && this.form.operationType !== 'update');\n } else {\n readOnly = this.readonly;\n }\n } else {\n // In view mode, set widget state to readonly always\n readOnly = true;\n }\n this.setFormWidget('readonly', readOnly);\n }\n\n resetDisplayInput() {\n if ((!isDefined(this.value) || this.value === '')) {\n this.formWidget && this.formWidget.resetDisplayInput && this.formWidget.resetDisplayInput();\n }\n }\n\n reset() {\n if(this._control) \n this._control.reset();\n }\n\n triggerUploadEvent($event, eventName) {\n const params: any = { $event };\n if (eventName === 'change') {\n params.newVal = $event.target.files;\n params.oldVal = this._oldUploadVal;\n this._oldUploadVal = params.newVal;\n }\n this.invokeEventCallback(eventName, params);\n }\n\n private registerFormField() {\n\n const fieldName = this._fieldName;\n\n if (this.parentList && !(this.form.parentList === this.parentList)) {\n let counter = 1;\n let _fieldName = fieldName;\n while (this.ngform.controls.hasOwnProperty(_fieldName)) {\n _fieldName = `${fieldName}_${counter}`;\n counter++;\n }\n this.ngform.addControl(_fieldName, this.createControl());\n this._fieldName = _fieldName;\n } else {\n this.ngform.addControl(fieldName, this.createControl());\n }\n const onValueChangeSubscription = this._control.valueChanges\n .pipe(debounceTime(200))\n .subscribe(this.onValueChange.bind(this));\n this.registerDestroyListener(() => onValueChangeSubscription.unsubscribe());\n\n const onStatusChangeSubscription = this._control.statusChanges\n .pipe(debounceTime(100))\n .subscribe(this.onStatusChange.bind(this));\n this.registerDestroyListener(() => onStatusChangeSubscription.unsubscribe());\n\n if (this.isRange === 'true') {\n this.ngform.addControl(fieldName + '_max', this.createControl());\n // registering for valueChanges on MaxformWidget\n const onMaxValueChangeSubscription = this._maxControl.valueChanges\n .pipe(debounceTime(200))\n .subscribe(this.onValueChange.bind(this));\n this.registerDestroyListener(() => onMaxValueChangeSubscription.unsubscribe());\n }\n this.value = get(this.form.formdata, this._fieldName);\n }\n\n ngOnInit() {\n this.ngform = this.form.ngform;\n this.registerFormField();\n // Instantiate custom validators class for form field\n this.fieldValidations = new BaseFieldValidations(this, this.formWidget, this.widgettype, this._control, this.form);\n super.ngOnInit();\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n if (this.formWidget) {\n this._initPropsRes();\n\n // setting displayExpressions on the formwidget explicitly as expr was evaluated to \"\".\n this.setFormWidget('binddisplaylabel', this.binddisplaylabel);\n this.setFormWidget('binddisplayexpression', this.binddisplayexpression);\n this.setFormWidget('binddisplayimagesrc', this.binddisplayimagesrc);\n this.setFormWidget('bindChipclass', this.bindChipclass);\n this.setFormWidget('binddataset', this.binddataset);\n }\n\n this.registerReadyStateListener(() => {\n this.key = this._fieldName || this.target || this.binding;\n this.viewmodewidget = this.viewmodewidget || getDefaultViewModeWidget(this.widgettype);\n\n // For upload widget, generate the permitted field\n if (this.widgettype === FormWidgetType.UPLOAD) {\n let fileType;\n // Create the accepts string from file type and extensions\n fileType = this.filetype ? FILE_TYPES[this.filetype] : '';\n this.permitted = fileType + (this.extensions ? (fileType ? ',' : '') + this.extensions : '');\n }\n if (isMobile() && this.viewport.isMobileType) {\n if (!this['mobile-display']) {\n this.widget.show = false;\n }\n } else if (this.viewport.isTabletType) {\n if (!this['tablet-display']) {\n this.widget.show = false;\n }\n } else {\n if (!this['pc-display']) {\n this.widget.show = false;\n }\n }\n\n this.fieldDefConfig.displaname = this.displayname;\n this.fieldDefConfig.show = this.show;\n this.fieldDefConfig.isRelated = this['is-related'];\n this.fieldDefConfig.inputtype = this.inputtype;\n this.fieldDefConfig.generator = this.generator;\n this.fieldDefConfig.placeholder = this.placeholder;\n this.fieldDefConfig.primaryKey = this['primary-key'];\n this.fieldDefConfig.required = this.required;\n this.fieldDefConfig._readonly = this.readonly;\n this.fieldDefConfig.regexp = this.regexp;\n this.fieldDefConfig.type = this.type;\n this.fieldDefConfig.key = this.key;\n this.fieldDefConfig.mobileDisplay = this['mobile-display'];\n this.fieldDefConfig.name = this.name;\n this.fieldDefConfig.pcDisplay = this['pc-display'];\n this.fieldDefConfig.tabletDisplay = this['tablet-display'];\n this.fieldDefConfig.validationmessage = this.validationmessage;\n this.fieldDefConfig.viewmodewidget = this.viewmodewidget;\n this.fieldDefConfig.widget = this.widgettype;\n\n // Register the form field with parent form\n this.form.registerFormFields(this.widget);\n\n addForIdAttributes(this.nativeElement);\n\n this.setReadOnlyState();\n });\n }\n}\n","import { Directive, Inject, Self } from '@angular/core';\n\nimport { AbstractDialogService, App, DataSource, triggerFn } from '@wm/core';\nimport { Live_Operations, performDataOperation } from '@wm/components/base';\nimport { ListComponent } from '@wm/components/data/list';\n\n@Directive({\n selector: '[wmLiveActions]'\n})\nexport class LiveActionsDirective {\n\n constructor(\n @Self() @Inject(ListComponent) private subscribedWidget,\n private app: App,\n private dialogService: AbstractDialogService\n ) {\n subscribedWidget.addRow = this.addRow.bind(this);\n subscribedWidget.updateRow = this.updateRow.bind(this);\n subscribedWidget.deleteRow = this.deleteRow.bind(this);\n subscribedWidget.call = this.call.bind(this);\n }\n\n public addRow() {\n this.app.notify('wm-event', {eventName: Live_Operations.INSERT, widgetName: this.subscribedWidget.name, row: this.subscribedWidget.selecteditem});\n }\n\n public updateRow() {\n this.app.notify('wm-event', {eventName: Live_Operations.UPDATE, widgetName: this.subscribedWidget.name, row: this.subscribedWidget.selecteditem});\n }\n\n public deleteRow() {\n this.app.notify('wm-event', {eventName: Live_Operations.DELETE, widgetName: this.subscribedWidget.name, row: this.subscribedWidget.selecteditem});\n }\n\n private successHandler(options, response) {\n triggerFn(options.success, response);\n }\n\n private errorHandler(options, error) {\n this.app.notifyApp(error, 'error', 'ERROR');\n triggerFn(options.error, error);\n }\n\n public getRecords(options, operation) {\n let index;\n let dataNavigator;\n\n if (this.subscribedWidget.navigation !== 'None' && this.subscribedWidget.dataNavigator) {\n dataNavigator = this.subscribedWidget.dataNavigator;\n\n // If operation is delete, decrease the data size and check if navigation to previous page is required\n if (operation === Live_Operations.DELETE) {\n dataNavigator.dataSize -= 1;\n dataNavigator.calculatePagingValues();\n index = dataNavigator.pageCount < dataNavigator.dn.currentPage ? 'prev' : undefined;\n } else {\n // If operation is insert, go to last page. If update operation, stay on current page\n index = operation === Live_Operations.INSERT ? 'last' : 'current';\n if (index === 'last') {\n dataNavigator.dataSize += 1;\n }\n dataNavigator.calculatePagingValues();\n }\n\n dataNavigator.navigatePage(index, null, true, response => {\n this.successHandler(options, response);\n });\n } else {\n this.subscribedWidget.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true\n }).then(response => {\n this.successHandler(options, response);\n }, err => {\n this.errorHandler(options, err);\n });\n }\n }\n\n private performCUDOperation(requestData, operation, options) {\n performDataOperation(this.subscribedWidget.datasource, requestData, {\n operationType: operation\n }).then(response => {\n if (response.error) {\n this.errorHandler(options, response.error);\n return;\n }\n if (this.subscribedWidget.datasource.category === 'wm.CrudVariable' && operation === 'delete') {\n this.subscribedWidget.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true\n }).then(response => {\n this.successHandler(options, response);\n }, err => {\n this.errorHandler(options, err);\n });\n } else {\n this.getRecords(options, operation);\n }\n // show delete success toaster\n if (operation === 'delete') {\n this.app.notifyApp(this.app.appLocale.MESSAGE_DELETE_RECORD_SUCCESS, 'success');\n }\n }, (error) => {\n this.errorHandler(options, error);\n });\n }\n\n private insertRecord(requestData, operation, options) {\n this.performCUDOperation(requestData, operation, options);\n }\n\n private updateRecord(requestData, operation, options) {\n this.performCUDOperation(requestData, operation, options);\n }\n\n private deleteRecord(requestData, operation, options) {\n // Show the delete confirmation dialog. On Ok, delete the record.\n this.dialogService.showAppConfirmDialog({\n title: this.app.appLocale.MESSAGE_DELETE_RECORD || 'Delete Record',\n iconclass: 'wi wi-delete fa-lg',\n message: this.subscribedWidget.confirmdelete || 'Are you sure you want to delete this?',\n oktext: this.subscribedWidget.deleteoktext || 'Ok',\n canceltext: this.subscribedWidget.deletecanceltext || 'Cancel',\n onOk: () => {\n this.performCUDOperation(requestData, operation, options);\n this.dialogService.closeAppConfirmDialog();\n },\n onCancel: () => {\n triggerFn(options.cancelDeleteCallback);\n this.dialogService.closeAppConfirmDialog();\n }\n });\n }\n\n private performOperation(operation, options) {\n const requestData = {\n row: options.row,\n prevData: {},\n rowData: {},\n transform: true,\n skipNotification: true\n };\n\n if (operation === Live_Operations.UPDATE) {\n requestData.rowData = options.rowData;\n requestData.prevData = options.prevData;\n }\n\n /* decide routine based on CRUD operation to be performed */\n switch (operation) {\n case Live_Operations.INSERT:\n this.insertRecord(requestData, operation, options);\n break;\n case Live_Operations.UPDATE:\n this.updateRecord(requestData, operation, options);\n break;\n case Live_Operations.DELETE:\n this.deleteRecord(requestData, operation, options);\n break;\n case Live_Operations.READ:\n this.getRecords(options, operation);\n break;\n }\n }\n\n // API exposed to make CRUD operations\n public call(operation, options, success?, error?) {\n options.success = success;\n options.error = error;\n\n this.performOperation(operation, options);\n }\n}\n","import { Directive, Attribute, ContentChildren, AfterContentInit, OnDestroy } from '@angular/core';\n\nimport { AbstractDialogService, App, DataSource } from '@wm/core';\nimport { Live_Operations } from '@wm/components/base';\nimport { FormComponent } from '../form.component';\n\n@Directive({\n selector: '[dependson]'\n})\nexport class DependsonDirective implements AfterContentInit, OnDestroy {\n\n @ContentChildren(FormComponent, {descendants: true}) formChildren;\n\n private dialogId;\n private dependson;\n private isLayoutDialog;\n private form;\n private editMode;\n private currentOp;\n private currentFormData;\n private formSubscription;\n private eventSubscription;\n\n constructor(\n @Attribute('dialogid') dialogId: string,\n @Attribute('dependson') dependson: string,\n private dialogService: AbstractDialogService,\n private app: App\n ) {\n // If dialogId is present, form is in dialog mode\n if (dialogId) {\n this.isLayoutDialog = true;\n this.dialogId = dialogId;\n }\n this.dependson = dependson;\n // Listen to the wm-event called from subscribed widgets\n this.eventSubscription = this.app.subscribe('wm-event', this.handleEvent.bind(this));\n }\n\n private openFormDialog() {\n this.dialogService.open(this.dialogId);\n }\n\n private onUpdate(newValue?, table?, editClicked?) {\n this.editMode = editClicked || this.editMode ;\n this.form.operationType = Live_Operations.UPDATE;\n this.form.isSelected = true;\n let rowData = this.currentFormData;\n if (newValue && table) {\n if (table.multiselect) {\n rowData = newValue[0];\n } else {\n rowData = newValue[newValue.length - 1];\n }\n }\n this.form.setFormData(rowData);\n this.form.edit();\n if (!this.editMode) {\n this.form.isUpdateMode = false;\n }\n }\n private onInsert() {\n this.form.operationType = Live_Operations.INSERT;\n this.form.isSelected = true;\n this.form.setFormData({});\n this.form.new();\n }\n\n private handleEvent(options) {\n if (this.dependson !== options.widgetName) {\n return;\n }\n this.currentOp = options.eventName;\n switch (options.eventName) {\n case Live_Operations.UPDATE:\n this.currentFormData = options.row;\n if (this.isLayoutDialog) {\n this.openFormDialog();\n } else {\n this.onUpdate(undefined,undefined, true);\n }\n break;\n case Live_Operations.INSERT:\n if (this.isLayoutDialog) {\n this.openFormDialog();\n } else {\n this.onInsert();\n }\n break;\n case Live_Operations.DELETE:\n (<any>this.app).Widgets[this.dependson].call('delete', {row: options.row});\n break;\n case Live_Operations.READ:\n if (!this.isLayoutDialog) {\n this.form.isUpdateMode = false;\n }\n break;\n case 'rerender':\n if (options.dataSource) {\n options.dataSource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true,\n 'operation': 'list'\n });\n }\n break;\n case 'selectedItemChange':\n if (options.table) {\n this.onUpdate(options.row, options.table);\n }\n break;\n case 'resetEditMode':\n this.editMode = false;\n }\n }\n\n private onFormRender() {\n // On opening the form in dialog mode, complete the pending operations\n if (this.form && this.isLayoutDialog) {\n this.form.isLayoutDialog = true;\n setTimeout(() => {\n if (this.currentOp === Live_Operations.UPDATE) {\n this.onUpdate(undefined, undefined, true);\n } else if (this.currentOp === Live_Operations.INSERT) {\n this.onInsert();\n }\n }, 250);\n }\n }\n\n ngAfterContentInit() {\n // If form instance is present, form is in inline mode. Else, it is in dialog mode and listen to form instance changes\n if (this.formChildren.first) {\n this.form = this.formChildren.first;\n } else {\n this.formSubscription = this.formChildren.changes.subscribe((val) => {\n this.form = val.first;\n this.onFormRender();\n });\n }\n\n // find the dependent widget (table/list)\n this.app.notify('setup-cud-listener', this.dependson);\n }\n\n ngOnDestroy() {\n if (this.formSubscription) {\n this.formSubscription.unsubscribe();\n }\n if (this.eventSubscription) {\n this.eventSubscription();\n }\n }\n}\n","import { Directive, Inject, Self } from '@angular/core';\nimport { $appDigest, DataSource, DataType, debounce, FormWidgetType, getClonedObject, isDefined } from '@wm/core';\nimport { applyFilterOnField, fetchDistinctValues, getDistinctValuesForField, getEmptyMatchMode, getEnableEmptyFilter, getRangeFieldValue, getRangeMatchMode, isDataSetWidget } from '@wm/components/base';\n\nimport { FormComponent } from '../form.component';\nimport { registerLiveFilterProps } from '../form.props';\nimport {find} from \"lodash-es\";\n\nconst FILTER_CONSTANTS = {\n 'EMPTY_KEY' : 'EMPTY_NULL_FILTER'\n};\nconst noop = () => {};\n\n@Directive({\n selector: '[wmLiveFilter]'\n})\nexport class LiveFilterDirective {\n static initializeProps = registerLiveFilterProps();\n private _options;\n\n orderBy;\n\n // debounce the filter function. If multiple filter calls are made at same time, calls will be delayed and last call is fired\n _filter = debounce(options => {\n this.filter(options);\n }, 250);\n\n constructor(@Self() @Inject(FormComponent) private form) {\n form.clearFilter = this.clearFilter.bind(this);\n form.applyFilter = this.applyFilter.bind(this);\n form.filter = this.filter.bind(this);\n form.filterOnDefault = this.filterOnDefault.bind(this);\n form.execute = this.execute.bind(this);\n form.onFieldDefaultValueChange = this.onFieldDefaultValueChange.bind(this);\n form.onMaxDefaultValueChange = this.onMaxDefaultValueChange.bind(this);\n form.onDataSourceChange = this.onDataSourceChange.bind(this);\n form.onFieldValueChange = this.onFieldValueChange.bind(this);\n form.submitForm = this.submitForm.bind(this);\n form.registerFormWidget = this.registerFormWidget.bind(this);\n }\n\n execute(operation, options) {\n if (operation === DataSource.Operation.LIST_RECORDS || operation === DataSource.Operation.DOWNLOAD) {\n return this.applyFilter(options);\n }\n if (operation === DataSource.Operation.GET_OPTIONS) {\n return this._options || {};\n }\n if (operation === DataSource.Operation.GET_PAGING_OPTIONS) {\n return this.form.pagination;\n }\n if (!this.form.datasource) {\n return {};\n }\n if (operation === DataSource.Operation.FETCH_DISTINCT_VALUES) {\n return fetchDistinctValues(this.form.datasource, this.form.formFields, {\n widget: 'widgettype',\n enableemptyfilter: this.form.enableemptyfilter,\n EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE\n });\n }\n return this.form.datasource.execute(operation, options);\n }\n\n onFieldDefaultValueChange(field, nv) {\n field.minValue = nv;\n field.value = nv;\n this.filterOnDefault();\n }\n\n onFieldValueChange(field, nv) {\n applyFilterOnField(this.form.datasource, field.widget, this.form.formFields, nv, {\n EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE\n });\n if (this.form.autoupdate && isDefined(nv)) {\n this._filter();\n }\n }\n\n onMaxDefaultValueChange() {\n setTimeout(() => {\n this.filterOnDefault();\n });\n }\n\n onDataSourceChange() {\n const dataSource = this.form.datasource;\n\n if (!dataSource) {\n return;\n }\n\n this.form.formFields.forEach(field => {\n if (isDataSetWidget(field.widgettype)) {\n getDistinctValuesForField(dataSource, field.widget, {\n widget: 'widgettype',\n enableemptyfilter: this.form.enableemptyfilter,\n EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE\n });\n applyFilterOnField(dataSource, field.widget, this.form.formFields, field.value, {\n isFirst: true,\n EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE\n });\n }\n });\n\n // On load check if default value exists and apply filter, Call the filter with the result options\n this._filter(this._options);\n }\n\n clearFilter() {\n this.form.resetFormState();\n this.form.formFields.forEach(filterField => {\n // Added check for range field\n if (!filterField.readonly && filterField.show) {\n if (filterField.widgettype === FormWidgetType.AUTOCOMPLETE || filterField.widgettype === FormWidgetType.TYPEAHEAD) {\n this.form.$element.find('div[name=' + filterField.name + '] input').val('');\n }\n if (filterField['is-range']) {\n filterField.minValue = '';\n filterField.maxValue = '';\n } else {\n filterField.value = '';\n filterField.resetDisplayInput();\n }\n }\n });\n // If variable has any bindings, wait for the bindings to be updated\n setTimeout(() => {\n // Setting result to the default data\n this._filter();\n });\n }\n\n submitForm() {\n this.filter();\n }\n\n applyFilter(options) {\n options = options ? (options.data || options) : {};\n options.page = options.page || 1;\n options.orderBy = isDefined(options.orderBy) ? options.orderBy : this.orderBy;\n return this.filter(options);\n }\n\n filter(options?) {\n if (!this.form.datasource) {\n return;\n }\n const filterFields = {};\n const dataModel = {};\n let page = 1,\n orderBy,\n isValid;\n options = options || {};\n page = options.page || page;\n orderBy = isDefined(options.orderBy) ? options.orderBy : (this.orderBy || '');\n this.orderBy = orderBy; // Store the order by in scope. This can be used to retain the sort after filtering\n // Copy the values to be sent to the user as '$data' before servicecall\n this.form.formFields.forEach(field => {\n const fieldSelector = 'div[name=' + field.name + '] input';\n const $el = this.form.$element;\n let fieldEle;\n if ((field.widgettype === FormWidgetType.AUTOCOMPLETE || field.widgettype === FormWidgetType.TYPEAHEAD) && $el) {\n fieldEle = $el.find(fieldSelector);\n if (!field['is-range']) {\n dataModel[field.field] = {\n 'value': isDefined(field.value) ? field.value : fieldEle.val() // For autocomplete, set the datavalue. If not present, set query value\n };\n } else {\n dataModel[field.field] = {\n 'minValue': isDefined(field.minValue) ? field.minValue : fieldEle.first().val(),\n 'maxValue': isDefined(field.maxValue) ? field.maxValue : fieldEle.last().val()\n };\n }\n return;\n }\n if (!field['is-range']) {\n dataModel[field.field] = {\n 'value': field.value\n };\n } else {\n dataModel[field.field] = {\n 'minValue': field.minValue,\n 'maxValue': field.maxValue\n };\n }\n });\n /*Perform this function for the event onBeforeservicecall*/\n try {\n isValid = this.form.invokeEventCallback('beforeservicecall', {$data: dataModel});\n if (isValid === false) {\n return;\n }\n if (isValid && isValid.error) {\n this.form.toggleMessage(true, isValid.error, 'error', 'ERROR');\n return;\n }\n /*Update these values in the formFields with new reference, inorder to maintain the UI values*/\n this.form.formFields.forEach(filterField => {\n if (!filterField['is-range']) {\n filterField._value = dataModel[filterField.field].value;\n } else {\n filterField._minValue = dataModel[filterField.field].minValue;\n filterField._maxValue = dataModel[filterField.field].maxValue;\n }\n });\n } catch (err) {\n if (err.message === 'Abort') {\n return;\n }\n }\n /* Construct the formFields Variable to send it to the queryBuilder */\n this.form.formFields.forEach(filterField => {\n let fieldValue;\n let matchMode;\n let colName = filterField.field;\n const minValue = filterField._minValue;\n const maxvalue = filterField._maxValue;\n /* if field is part of a related entity, column name will be 'entity.fieldName' */\n if (filterField['is-related']) {\n colName += '.' + filterField['lookup-field'];\n }\n if (filterField['is-range']) {\n /*Based on the min and max values, decide the matchmode condition*/\n fieldValue = getRangeFieldValue(minValue, maxvalue);\n matchMode = getRangeMatchMode(minValue, maxvalue);\n if (isDefined(fieldValue)) {\n filterFields[colName] = {\n 'value' : fieldValue,\n 'matchMode' : matchMode,\n 'logicalOp' : 'AND'\n };\n }\n } else {\n switch (filterField.widgettype) {\n case FormWidgetType.SELECT:\n case FormWidgetType.RADIOSET:\n if (getEnableEmptyFilter(this.form.enableemptyfilter) && filterField._value === FILTER_CONSTANTS.EMPTY_KEY) {\n matchMode = getEmptyMatchMode(this.form.enableemptyfilter);\n fieldValue = filterField._value;\n } else {\n if (filterField.type === DataType.BOOLEAN) {\n if (isDefined(filterField._value) && filterField._value !== '') {\n fieldValue = JSON.parse(filterField._value);\n }\n } else {\n fieldValue = filterField._value;\n }\n }\n break;\n case FormWidgetType.CHECKBOXSET:\n case FormWidgetType.CHIPS:\n if (filterField._value && filterField._value.length) {\n fieldValue = filterField._value;\n }\n break;\n case FormWidgetType.CHECKBOX:\n case FormWidgetType.TOGGLE:\n if (isDefined(filterField._value) && filterField._value !== '') {\n fieldValue = filterField.type === DataType.BOOLEAN ? JSON.parse(filterField._value) : filterField._value;\n }\n break;\n default:\n fieldValue = filterField._value;\n break;\n }\n if (isDefined(fieldValue) && fieldValue !== '' && fieldValue !== null) {\n filterFields[colName] = {};\n if (matchMode) {\n filterFields[colName].matchMode = matchMode;\n fieldValue = undefined;\n } else if (filterField.type === DataType.STRING || filterField.isRelated) { // Only for string types and related fields, custom match modes are enabled.\n filterFields[colName].matchMode = matchMode || filterField.matchmode ||\n this.form.datasource.execute(DataSource.Operation.GET_MATCH_MODE);\n }\n filterFields[colName].value = fieldValue;\n filterFields[colName].logicalOp = 'AND';\n filterFields[colName].type = filterField.type;\n }\n }\n });\n\n if (options.exportType) {\n return this.form.datasource.execute(DataSource.Operation.DOWNLOAD, {\n data: {\n matchMode : 'anywhereignorecase',\n filterFields : filterFields,\n orderBy : orderBy,\n exportType : options.exportType,\n logicalOp : 'AND',\n exportSize : options.exportSize,\n fields : options.fields,\n fileName: options.fileName\n }\n });\n }\n return this.form.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n filterFields : filterFields,\n orderBy : orderBy,\n page : page,\n pagesize : this.form.pagesize || 20,\n skipDataSetUpdate : true, // dont update the actual variable dataset,\n inFlightBehavior : 'executeAll'\n }).then(response => {\n const data = response.data;\n this.form.pagination = response.pagination;\n\n if (data.error) {\n // disable readonly and show the appropriate error\n this.form.toggleMessage(true, data.error, 'error', 'ERROR');\n this.form.onResultCb(data, false);\n } else {\n this._options = {\n 'page': page,\n 'orderBy': orderBy\n };\n this.form.result = getClonedObject(data);\n this.form.onResultCb(data, true);\n }\n $appDigest();\n return this.form.result;\n }, error => {\n this.form.toggleMessage(true, error, 'error', 'ERROR');\n this.form.onResultCb(error, false);\n return error;\n });\n }\n\n // Calls the filter function if default values are present\n filterOnDefault() {\n /*Check if default value is present for any filter field*/\n const defaultObj = find(this.form.formFields, obj => {\n return isDefined(obj.value) || isDefined(obj.minValue) || isDefined(obj.maxValue);\n });\n /*If default value exists and data is loaded, apply the filter*/\n if (defaultObj) {\n this._filter(this._options);\n }\n }\n\n registerFormWidget(widget) {\n const name = widget.key || widget.name;\n this.form.filterWidgets[name] = widget;\n }\n}\n","import { Directive, Inject, Optional, Self, Attribute, HostListener } from '@angular/core';\n\nimport { $appDigest, AbstractDialogService, DataSource, DataType, debounce, getClonedObject, getFiles, getValidDateObject, isDateTimeType, isDefined, isEmptyObject } from '@wm/core';\nimport { ALLFIELDS, applyFilterOnField, fetchRelatedFieldData, getDistinctValuesForField, isDataSetWidget, Live_Operations, parseValueByType, performDataOperation, ToDatePipe } from '@wm/components/base';\nimport { LiveTableComponent } from '@wm/components/data/live-table';\n\nimport { registerLiveFormProps } from '../form.props';\nimport { FormComponent } from '../form.component';\nimport {forEach, fromPairs, get, isEmpty, isEqual, isString, map, some, split} from \"lodash-es\";\n\nconst isTimeType = field => field.widgettype === DataType.TIME || (field.type === DataType.TIME && !field.widgettype);\nconst getValidTime = val => {\n if (val) {\n const date = (new Date()).toDateString();\n return (new Date(`${date} ${val}`)).getTime();\n }\n return undefined;\n};\n\n@Directive({\n selector: '[wmLiveForm]'\n})\nexport class LiveFormDirective {\n static initializeProps = registerLiveFormProps();\n private _triggeredByUser: boolean;\n private _debouncedSavePrevDataValues = debounce(() => {\n this.savePrevDataValues();\n }, 250);\n\n @HostListener('keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n this._triggeredByUser = true;\n }\n\n constructor(\n @Self() @Inject(FormComponent) private form,\n @Optional() liveTable: LiveTableComponent,\n public datePipe: ToDatePipe,\n private dialogService: AbstractDialogService,\n @Attribute('formlayout') formlayout: string\n ) {\n // If parent live table is present and this form is first child of live table, set this form instance on livetable\n if (liveTable) {\n if (!this.form.parentForm) {\n this.form._liveTableParent = liveTable;\n }\n this.form.isLayoutDialog = liveTable.isLayoutDialog;\n liveTable.onFormReady(this.form);\n } else {\n this.form.isLayoutDialog = formlayout === 'dialog';\n }\n // CUD operations\n form.cancel = this.cancel.bind(this);\n form.reset = this.reset.bind(this);\n form.delete = this.delete.bind(this);\n form.save = this.save.bind(this);\n form.saveAndNew = this.saveAndNew.bind(this);\n form.saveAndView = this.saveAndView.bind(this);\n\n form.setPrimaryKey = this.setPrimaryKey.bind(this);\n form.constructDataObject = this.constructDataObject.bind(this);\n form.changeDataObject = this.setFormData.bind(this);\n form.setFormData = this.setFormData.bind(this);\n form.findOperationType = this.findOperationType.bind(this);\n form.clearData = this.clearData.bind(this);\n form.onFieldDefaultValueChange = this.onFieldDefaultValueChange.bind(this);\n form.onDataSourceChange = this.onDataSourceChange.bind(this);\n form.onFieldValueChange = this.onFieldValueChange.bind(this);\n form.submitForm = this.submitForm.bind(this);\n form.form_registerFormFields = form.registerFormFields;\n form.registerFormFields = this.registerFormFields.bind(this);\n }\n\n /*\n WMS:18583\n Overriding 'registerFormFields' for liveForms,\n On Each field added, check if the dataSource is updated or not\n if the field is added after the dataSource is updated at LiveForm, retrigger\n */\n registerFormFields(formField) {\n const formFields = this.form.getFormFields();\n this.form.form_registerFormFields(formField);\n if (this.form.isDataSourceUpdated) {\n this._updateFieldOnDataSourceChange(formField, formFields);\n }\n }\n private _updateFieldOnDataSourceChange(field, formFields) {\n if (!field.isDataSetBound && isDataSetWidget(field.widgettype)) {\n if (field['is-related']) {\n field.isDataSetBound = true;\n fetchRelatedFieldData(this.form.datasource, field.widget, {\n relatedField: field.key,\n datafield: ALLFIELDS,\n widget: 'widgettype',\n });\n } else {\n getDistinctValuesForField(this.form.datasource, field.widget, {\n widget: 'widgettype',\n enableemptyfilter: this.form.enableemptyfilter\n });\n applyFilterOnField(this.form.datasource, field.widget, formFields, field.value, {isFirst: true});\n }\n }\n }\n onDataSourceChange() {\n if (get(this.form.formFields, 'length')) {\n this.form.isDataSourceUpdated = true;\n }\n const formFields = this.form.getFormFields();\n formFields.forEach(field => {\n this._updateFieldOnDataSourceChange(field, formFields);\n });\n }\n\n onFieldDefaultValueChange(field, nv) {\n // In Edit, do not set default values\n if (this.form.operationType === 'update') {\n return;\n }\n // Set the default value only if it exists.\n if (isDefined(nv) && nv !== null && nv !== '' && nv !== 'null') {\n field.value = parseValueByType(nv, field.type, field.widgettype, field.trailingzero);\n } else {\n field.value = undefined;\n }\n\n // WMS-22434: For default value set on individual form fields, do not mark the form as dirty.\n if (this.form.dirty && !this._triggeredByUser) {\n this.form.markAsPristine();\n }\n this._debouncedSavePrevDataValues();\n }\n\n onFieldValueChange(field, nv) {\n applyFilterOnField(this.form.datasource, field.widget, this.form.formFields, nv);\n }\n\n getBlobURL(dataObj, key, value) {\n let href = '';\n let primaryKeys;\n let primaryKey;\n if (value === null || value === undefined || !this.form.datasource) {\n return href;\n }\n primaryKeys = this.form.datasource.execute(DataSource.Operation.GET_PRIMARY_KEY) || [];\n primaryKey = dataObj[primaryKeys[0]];\n // TODO: Handle mobile case\n // if (CONSTANTS.hasCordova && CONSTANTS.isRunMode) {\n // href += $rootScope.project.deployedUrl;\n // }\n href += this.form.datasource.execute(DataSource.Operation.GET_BLOB_URL, {\n primaryValue: primaryKey,\n columnName: key\n });\n href += '?' + Math.random();\n return href;\n }\n\n setFormData(dataObj, formFields?) {\n if (!dataObj) {\n return;\n }\n formFields = formFields || this.form.formFields;\n formFields.forEach(field => {\n const value = get(dataObj, field.key || field.name);\n if (isTimeType(field)) {\n field.value = getValidTime(value);\n } else if (field.type === DataType.BLOB) {\n this.form.resetFileUploadWidget(field, true);\n field.href = this.getBlobURL(dataObj, field.key, value);\n field.value = isString(value) ? '' : value;\n } else {\n this.form.setFieldValue(field, dataObj);\n }\n });\n this.savePrevDataValues();\n this.form.constructDataObject();\n }\n\n onDataSourceUpdate(response, newForm, updateMode) {\n if (newForm) {\n this.form.new();\n } else {\n this.form.setFormData(response);\n this.closeDialog();\n }\n this.form.isUpdateMode = isDefined(updateMode) ? updateMode : true;\n }\n\n savePrevformFields() {\n this.form.prevformFields = getClonedObject(this.form.formFields.map(field => {\n return {\n 'key': field.key,\n 'type': field.type,\n 'widgettype': field.widgettype,\n 'outputformat': field.outputformat,\n 'value': field.value\n };\n }));\n }\n\n getPrevformFields() {\n this.form.formFields.map(field => {\n const prevField = this.form.prevformFields.find(pField => pField.key === field.key);\n field.value = prevField.value;\n });\n }\n\n getDataObject() {\n if (this.form.operationType === Live_Operations.INSERT) {\n return {};\n }\n if (isDefined(this.form.prevDataObject) && !isEmptyObject(this.form.prevDataObject)) {\n return getClonedObject(this.form.prevDataObject);\n }\n return getClonedObject(this.form.formdata || {});\n }\n\n constructDataObject(isPreviousData?) {\n const dataObject = this.getDataObject();\n const formName = this.form.name;\n let formFields;\n formFields = isPreviousData ? this.form.prevformFields : this.form.getFormFields();\n formFields.forEach(field => {\n let dateTime,\n fieldValue;\n const fieldTarget = split(field.key, '.');\n const fieldName = fieldTarget[0] || field.key;\n\n /*collect the values from the fields and construct the object*/\n /*Format the output of date time widgets to the given output format*/\n if ((field.widgettype && isDateTimeType(field.widgettype)) || isDateTimeType(field.type)) {\n if (field.value) {\n dateTime = getValidDateObject(field.value);\n if (field.outputformat === DataType.TIMESTAMP || field.type === DataType.TIMESTAMP) {\n fieldValue = field.value ? dateTime : null;\n } else if (field.outputformat) {\n fieldValue = this.datePipe.transform(dateTime, field.outputformat);\n } else {\n fieldValue = field.value;\n }\n } else {\n fieldValue = undefined;\n }\n } else if (field.type === DataType.BLOB) {\n fieldValue = getFiles(formName, fieldName + '_formWidget', field.multiple);\n } else if (field.type === DataType.LIST) {\n fieldValue = field.value || undefined;\n } else {\n fieldValue = (field.value === null || field.value === '') ? undefined : field.value;\n }\n\n if (fieldTarget.length === 1) {\n dataObject[fieldName] = fieldValue;\n } else {\n dataObject[fieldName] = dataObject[fieldName] || {};\n dataObject[fieldName][fieldTarget[1]] = fieldValue;\n }\n });\n if (!isPreviousData) {\n this.form.updateFormDataOutput(dataObject);\n return this.form.dataoutput;\n }\n return dataObject;\n }\n\n setPrimaryKey(fieldName) {\n /*Store the primary key of data*/\n this.form.primaryKey = this.form.primaryKey || [];\n if (this.form.primaryKey.indexOf(fieldName) === -1) {\n this.form.primaryKey.push(fieldName);\n }\n }\n\n findOperationType() {\n let operation;\n let isPrimary = false;\n const sourceOperation = this.form.datasource && this.form.datasource.execute(DataSource.Operation.GET_OPERATION_TYPE);\n if (sourceOperation && sourceOperation !== 'read') {\n return sourceOperation;\n }\n /*If OperationType is not set then based on the formdata object return the operation type,\n this case occurs only if the form is outside a livegrid*/\n /*If the formdata object has primary key value then return update else insert*/\n if (this.form.primaryKey && !isEmpty(this.form.formdata)) {\n /*If only one column is primary key*/\n if (this.form.primaryKey.length === 1) {\n if (this.form.formdata[this.form.primaryKey[0]]) {\n operation = Live_Operations.UPDATE;\n }\n /*If only no column is primary key*/\n } else if (this.form.primaryKey.length === 0) {\n forEach(this.form.formdata, (value) => {\n if (value) {\n isPrimary = true;\n }\n });\n if (isPrimary) {\n operation = Live_Operations.UPDATE;\n }\n /*If multiple columns are primary key*/\n } else {\n isPrimary = some(this.form.primaryKey, (primaryKey) => {\n if (this.form.formdata[primaryKey]) {\n return true;\n }\n });\n if (isPrimary) {\n operation = Live_Operations.UPDATE;\n }\n }\n }\n return operation || Live_Operations.INSERT;\n }\n\n getPrevDataValues() {\n const prevDataValues = fromPairs(map(this.form.prevDataValues, (item) => {\n return [item.key, item.value];\n })); // Convert of array of values to an object\n this.form.formFields.forEach(field => {\n field.value = prevDataValues[field.key] || '';\n field.resetDisplayInput();\n });\n return prevDataValues;\n }\n\n savePrevDataValues() {\n this.form.prevDataValues = this.form.formFields.map((obj) => {\n return {'key': obj.key, 'value': obj.value};\n });\n }\n\n clearData() {\n this.form.toggleMessage(false);\n this.form.emptyDataModel();\n }\n\n setReadonlyFields() {\n this.form.formFields.forEach(field => {\n field.setReadOnlyState();\n });\n }\n\n reset() {\n let prevDataValues;\n this.form.resetFormState();\n prevDataValues = this.getPrevDataValues();\n this.form.formFields.forEach(field => {\n if (field.type === DataType.BLOB || field.widgettype === 'upload') {\n this.form.resetFileUploadWidget(field, true);\n field.href = this.getBlobURL(prevDataValues, field.key, field.value);\n }\n field.nativeElement.querySelector('input')?.removeAttribute('aria-invalid');\n });\n this.form.constructDataObject();\n }\n\n closeDialog() {\n if (this.form.isLayoutDialog) {\n this.dialogService.close(this.form.dialogId);\n }\n }\n\n cancel() {\n this.form.clearMessage();\n this.form.isUpdateMode = false;\n\n this.form.reset();\n /*Show the previous selected data*/\n if (this.form.isSelected) {\n this.getPrevformFields();\n }\n this.form.isUpdateMode = false;\n if (this.form._liveTableParent) {\n this.form._liveTableParent.onCancel();\n } else {\n /*\n WMS-18759: dialog close is calling twice and dialog onHidden subscription is calling once from the library\n due to this if we have another dialog inside liveform and if we click on cancel of second dialog the library\n subscription is calling for both the dialogs.\n */\n this.closeDialog();\n }\n $appDigest();\n }\n\n\n\n delete(callBackFn) {\n this.form.resetFormState();\n this.form.operationType = Live_Operations.DELETE;\n this.form.prevDataObject = getClonedObject(this.form.formdata || {});\n this.form.save(undefined, undefined, undefined, callBackFn);\n }\n\n // Function use to save the form and open new form after save\n saveAndNew() {\n this.save(undefined, true, true);\n }\n // Function use to save the form and open new form after save\n saveAndView() {\n this.save(undefined, false);\n }\n\n submitForm($event) {\n this.save($event);\n }\n\n save(event?, updateMode?, newForm?) {\n if (!this.form.datasource) {\n return;\n }\n let data, prevData, operationType, isValid;\n const requestData: any = {};\n\n operationType = this.form.operationType = this.form.operationType || this.findOperationType();\n\n // Disable the form submit if form is in invalid state.\n if (this.form.validateFieldsOnSubmit()) {\n return;\n }\n\n data = getClonedObject(this.form.constructDataObject());\n prevData = this.form.prevformFields ? this.form.constructDataObject(true) : data;\n\n try {\n isValid = this.form.invokeEventCallback('beforeservicecall', {$event: event, $operation: this.form.operationType, $data: data, options: requestData});\n if (isValid === false) {\n return;\n }\n if (isValid && isValid.error) {\n this.form.toggleMessage(true, isValid.error, 'error');\n return;\n }\n } catch (err) {\n if (err.message === 'Abort') {\n return;\n }\n }\n\n // If operation is update, form is not touched and current data and previous data is same, Show no changes detected message\n if (this.form.operationType === Live_Operations.UPDATE && this.form.ngform && this.form.ngform.pristine &&\n (this.form.isSelected && isEqual(data, prevData))) {\n this.form.toggleMessage(true, this.form.appLocale.MESSAGE_NO_CHANGES, 'info', '');\n $appDigest();\n return;\n }\n\n requestData.row = data;\n requestData.transform = true;\n requestData.skipNotification = true;\n\n if (operationType === Live_Operations.UPDATE) {\n requestData.rowData = this.form.formdata;\n requestData.prevData = prevData;\n }\n\n performDataOperation(this.form.datasource, requestData, {\n operationType: operationType\n }).then((response) => {\n const msg = operationType === Live_Operations.INSERT ? this.form.insertmessage : (operationType === Live_Operations.UPDATE ?\n this.form.updatemessage : this.form.deletemessage);\n let result;\n\n if (operationType === Live_Operations.DELETE) {\n result = requestData.row;\n this.form.emptyDataModel();\n this.form.prevDataValues = [];\n this.form.isSelected = false;\n } else {\n result = response;\n }\n if (!this.form.onSuccess) {\n this.form.toggleMessage(true, msg, 'success');\n }\n if (this.form._liveTableParent) {\n // highlight the current updated row\n this.form._liveTableParent.onResult(operationType, response, newForm, updateMode);\n } else {\n /*get updated data without refreshing page*/\n this.form.datasource.execute(DataSource.Operation.LIST_RECORDS, {\n 'skipToggleState': true\n });\n this.onDataSourceUpdate(response, newForm, updateMode);\n }\n return {\n 'result': result,\n 'status': true\n };\n }, (error) => {\n if (!this.form.onError) {\n this.form.toggleMessage(true, error, 'error');\n }\n $appDigest();\n return {\n 'result': error,\n 'status': false\n };\n }).then(response => {\n // reset the form to pristine state\n this.form.resetFormState();\n this.form.onResultCb(response.result, response.status, event);\n });\n\n\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { BasicModule } from '@wm/components/basic';\nimport { InputModule } from '@wm/components/input';\nimport { DesignDialogModule } from '@wm/components/dialogs/design-dialog';\n\nimport { FormComponent } from './form.component';\nimport { FormWidgetDirective } from './form-widget.directive';\nimport { FormActionDirective } from './form-action/form-action.directive';\nimport { FormFieldDirective } from './form-field/form-field.directive';\nimport { LiveActionsDirective } from './live-actions/live-actions.directive';\nimport { DependsonDirective } from './live-actions/dependson.directive';\nimport { LiveFilterDirective } from './live-filter/live-filter.directive';\nimport { LiveFormDirective } from './live-form/live-form.directive';\n\nconst components = [\n FormComponent,\n FormWidgetDirective,\n FormActionDirective,\n FormFieldDirective,\n LiveActionsDirective,\n DependsonDirective,\n LiveFilterDirective,\n LiveFormDirective\n];\n\n@NgModule({\n imports: [\n BasicModule,\n CommonModule,\n DesignDialogModule,\n InputModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class FormModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["WIDGET_CONFIG","_debounce","debounce","i2","_c1","registerProps","noop","i1.FormComponent","i3","i4","i1"],"mappings":"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"}
|