@syncfusion/ej2-angular-base 20.2.49 → 20.3.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -27
- package/dist/ej2-angular-base.umd.min.js +2 -2
- package/dist/ej2-angular-base.umd.min.js.map +1 -1
- package/dist/es6/ej2-angular-base.es2015.js +11 -11
- package/dist/es6/ej2-angular-base.es2015.js.map +1 -1
- package/dist/es6/ej2-angular-base.es5.js +12 -11
- package/dist/es6/ej2-angular-base.es5.js.map +1 -1
- package/dist/global/ej2-angular-base.min.js +2 -2
- package/dist/global/ej2-angular-base.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/dist/ts/complex-array-base.ts +262 -0
- package/dist/ts/component-base.ts +381 -0
- package/dist/ts/form-base.ts +156 -0
- package/dist/ts/template.ts +81 -0
- package/dist/ts/util.ts +143 -0
- package/package.json +17 -7
- package/schematics/utils/get-project.js +3 -0
- package/src/form-base.js +11 -10
- package/src/template.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-angular-base.min.js","sources":["../../src/util.js","../../src/template.js","../../src/complex-array-base.js","../../src/component-base.js","../../src/form-base.js"],"sourcesContent":["import { EventEmitter } from '@angular/core';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Angular Utility Module\n */\n/* tslint:disable */\nexport function applyMixins(derivedClass, baseClass) {\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (!derivedClass.prototype.hasOwnProperty(name) || baseClass.isFormBase) {\n derivedClass.prototype[name] = baseClass.prototype[name];\n }\n });\n });\n}\n/* tslint:disable */\nexport function ComponentMixins(baseClass) {\n return function (derivedClass) {\n applyMixins(derivedClass, baseClass);\n };\n}\n/**\n * @private\n */\nexport function registerEvents(eventList, obj, direct) {\n var ngEventsEmitter = {};\n if (eventList && eventList.length) {\n for (var _i = 0, eventList_1 = eventList; _i < eventList_1.length; _i++) {\n var event_1 = eventList_1[_i];\n if (direct === true) {\n obj.propCollection[event_1] = new EventEmitter(false);\n obj[event_1] = obj.propCollection[event_1];\n }\n else {\n ngEventsEmitter[event_1] = new EventEmitter(false);\n }\n }\n if (direct !== true) {\n obj.setProperties(ngEventsEmitter, true);\n }\n }\n}\n/**\n * @private\n */\nexport function clearTemplate(_this, templateNames, index) {\n var regTemplates = Object.keys(_this.registeredTemplate);\n if (regTemplates.length) {\n /* istanbul ignore next */\n var regProperties = templateNames && templateNames.filter(function (val) {\n return (/\\./g.test(val) ? false : true);\n });\n for (var _i = 0, _a = (regProperties && regProperties || regTemplates); _i < _a.length; _i++) {\n var registeredTemplate = _a[_i];\n /* istanbul ignore next */\n if (index && index.length) {\n for (var e = 0; e < index.length; e++) {\n for (var m = 0; m < _this.registeredTemplate.template.length; m++) {\n var value = _this.registeredTemplate.template[m].rootNodes[0];\n if (value === index[e]) {\n var rt = _this.registeredTemplate[registeredTemplate];\n rt[m].destroy();\n }\n }\n }\n }\n else {\n if (_this.registeredTemplate[registeredTemplate]) {\n for (var _b = 0, _c = _this.registeredTemplate[registeredTemplate]; _b < _c.length; _b++) {\n var rt = _c[_b];\n if (!rt.destroyed) {\n if (rt._view) {\n var pNode = rt._view.renderer.parentNode(rt.rootNodes[0]);\n if (!isNullOrUndefined(pNode)) {\n for (var m = 0; m < rt.rootNodes.length; m++) {\n pNode.appendChild(rt.rootNodes[m]);\n }\n }\n }\n rt.destroy();\n }\n }\n }\n }\n delete _this.registeredTemplate[registeredTemplate];\n }\n }\n var _loop_1 = function (tagObject) {\n if (tagObject.instance) {\n /* istanbul ignore next */\n tagObject.instance.clearTemplate((templateNames && templateNames.filter(function (val) {\n return (new RegExp(tagObject.name).test(val) ? true : false);\n })));\n }\n };\n for (var _d = 0, _e = _this.tagObjects; _d < _e.length; _d++) {\n var tagObject = _e[_d];\n _loop_1(tagObject);\n }\n}\n/**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @return {void}\n * @private\n */\nexport function setValue(nameSpace, value, object) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n /* istanbul ignore next */\n var fromObj = object || {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (i + 1 === keys.length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (fromObj[key] === undefined) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return fromObj;\n}\n","import { setTemplateEngine, getTemplateEngine } from '@syncfusion/ej2-base';\nimport { setValue, getValue } from '@syncfusion/ej2-base';\nvar stringCompiler = getTemplateEngine();\n/**\n * Angular Template Compiler\n */\nexport function compile(templateEle, helper) {\n if (typeof templateEle === 'string') {\n return stringCompiler(templateEle, helper);\n }\n else {\n var contRef_1 = templateEle.elementRef.nativeElement._viewContainerRef;\n var pName_1 = templateEle.elementRef.nativeElement.propName;\n //tslint:disable-next-line \n return function (data, component, propName) {\n var context = { $implicit: data };\n /* istanbul ignore next */\n var conRef = contRef_1 ? contRef_1 : component.viewContainerRef;\n var viewRef = conRef.createEmbeddedView(templateEle, context);\n viewRef.markForCheck();\n /* istanbul ignore next */\n var viewCollection = (component && component.registeredTemplate) ?\n component.registeredTemplate : getValue('currentInstance.registeredTemplate', conRef);\n propName = (propName && component.registeredTemplate) ? propName : pName_1;\n if (typeof viewCollection[propName] === 'undefined') {\n viewCollection[propName] = [];\n }\n viewCollection[propName].push(viewRef);\n return viewRef.rootNodes;\n };\n }\n}\n/**\n * Property decorator for angular.\n */\nexport function Template(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: setter(key),\n get: getter(key, defaultValue),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, propertyDescriptor);\n };\n}\nfunction setter(key) {\n return function (val) {\n if (val === undefined) {\n return;\n }\n setValue(key + 'Ref', val, this);\n if (typeof val !== 'string') {\n val.elementRef.nativeElement._viewContainerRef = this.viewContainerRef;\n val.elementRef.nativeElement.propName = key;\n }\n else {\n if (this.saveChanges) {\n this.saveChanges(key, val, undefined);\n this.dataBind();\n }\n }\n };\n}\nfunction getter(key, defaultValue) {\n return function () {\n /* istanbul ignore next */\n return getValue(key + 'Ref', this) || defaultValue;\n };\n}\n//tslint:disable-next-line\nsetTemplateEngine({ compile: compile });\n","import { getValue, setValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { clearTemplate, registerEvents } from './util';\nvar refRegex = /Ref$/;\nvar ComplexBase = /** @class */ (function () {\n function ComplexBase() {\n this.hasChanges = false;\n this.propCollection = {};\n this.dataSource = {};\n this.tags = [];\n this.tagObjects = [];\n }\n ComplexBase.prototype.ngOnInit = function () {\n this.registeredTemplate = {};\n for (var _i = 0, _a = this.tags; _i < _a.length; _i++) {\n var tag = _a[_i];\n var objInstance = getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), this);\n if (objInstance) {\n this.tagObjects.push({ instance: objInstance, name: tag });\n }\n }\n var templateProperties = Object.keys(this);\n for (var i = 0; i < templateProperties.length; i++) {\n var tempProp = getValue(templateProperties[i], this);\n if (typeof tempProp === 'object' && tempProp.elementRef && !getValue(templateProperties[i].indexOf('Ref') !== -1 ? templateProperties[i] : templateProperties[i] + 'Ref', this)) {\n setValue(templateProperties[i].indexOf('Ref') !== -1 ? templateProperties[i] : templateProperties[i] + 'Ref', tempProp, this);\n }\n }\n templateProperties = Object.keys(this);\n templateProperties = templateProperties.filter(function (val) {\n return /Ref$/i.test(val);\n });\n for (var _b = 0, templateProperties_1 = templateProperties; _b < templateProperties_1.length; _b++) {\n var tempName = templateProperties_1[_b];\n var propName = tempName.replace('Ref', '');\n setValue(propName.replace('_', '.'), getValue(propName, this), this.propCollection);\n }\n // Angular 9 compatibility to overcome ngOnchange not get triggered issue\n // To Update properties to \"this.propCollection\"\n var propList = Object.keys(this);\n /* istanbul ignore next */\n if (this.directivePropList) {\n for (var k = 0; k < this.directivePropList.length; k++) {\n var dirPropName = this.directivePropList[k];\n if (propList.indexOf(dirPropName) !== -1 && getValue(dirPropName, this)) {\n setValue(dirPropName, getValue(dirPropName, this), this.propCollection);\n }\n }\n this.hasChanges = true;\n }\n this.isInitChanges = true;\n };\n ComplexBase.prototype.registerEvents = function (eventList) {\n registerEvents(eventList, this, true);\n };\n ComplexBase.prototype.ngOnChanges = function (changes) {\n for (var _i = 0, _a = Object.keys(changes); _i < _a.length; _i++) {\n var propName = _a[_i];\n var changedVal = changes[propName];\n this.propCollection[propName] = changedVal.currentValue;\n }\n this.isUpdated = false;\n this.hasChanges = true;\n };\n /* istanbul ignore next */\n ComplexBase.prototype.clearTemplate = function (templateNames) {\n clearTemplate(this, templateNames);\n };\n ComplexBase.prototype.getProperties = function () {\n /* istanbul ignore next */\n for (var _i = 0, _a = this.tagObjects; _i < _a.length; _i++) {\n var tagObject = _a[_i];\n this.propCollection[tagObject.name] = tagObject.instance.getProperties();\n }\n return this.propCollection;\n };\n ComplexBase.prototype.isChanged = function () {\n var result = this.hasChanges;\n if (!isNullOrUndefined(this.propCollection[this.property])) {\n var tempProps = this.propCollection[this.property];\n var props = Object.keys(tempProps[0]);\n for (var d = 0; d < props.length; d++) {\n if (!isNullOrUndefined(this.propCollection[props[d]])) {\n var val = getValue(props[d], this);\n var propVal = this.propCollection[this.property][0][props[d]];\n if (!isNullOrUndefined(val) && this.propCollection[props[d]] !== val\n && propVal !== val) {\n setValue(props[d], val, this.propCollection[this.property][0]);\n setValue(props[d], val, this.propCollection);\n this.hasChanges = true;\n this.isUpdated = false;\n }\n }\n }\n }\n /* istanbul ignore next */\n for (var _i = 0, _a = this.tagObjects; _i < _a.length; _i++) {\n var item = _a[_i];\n result = result || item.instance.hasChanges;\n }\n return result || this.hasChanges;\n };\n ComplexBase.prototype.ngAfterContentChecked = function () {\n this.hasChanges = this.isChanged();\n if (this.isInitChanges || this.hasChanges) {\n var templateProperties = Object.keys(this);\n templateProperties = templateProperties.filter(function (val) {\n return refRegex.test(val);\n });\n for (var _i = 0, templateProperties_2 = templateProperties; _i < templateProperties_2.length; _i++) {\n var tempName = templateProperties_2[_i];\n var propName = tempName.replace('Ref', '');\n setValue(propName.replace('_', '.'), getValue(propName, this), this.propCollection);\n }\n }\n };\n ComplexBase.prototype.ngAfterViewChecked = function () {\n /* istanbul ignore next */\n if (this.isUpdated) {\n this.hasChanges = false;\n }\n };\n ComplexBase.prototype.ngAfterViewInit = function () {\n /* istanbul ignore next */\n this.isInitChanges = false;\n };\n ComplexBase.prototype.ngOnDestroy = function () {\n /* istanbul ignore next */\n this.directivePropList = [];\n };\n return ComplexBase;\n}());\nexport { ComplexBase };\nvar ArrayBase = /** @class */ (function () {\n function ArrayBase(propertyName) {\n this.list = [];\n this.hasChanges = false;\n this.propertyName = propertyName;\n }\n ArrayBase.prototype.ngOnInit = function () {\n this.isInitChanges = true;\n };\n ArrayBase.prototype.ngAfterContentInit = function () {\n var _this = this;\n var index = 0;\n /* istanbul ignore next */\n this.list = this.children.map(function (child) {\n child.dirIndex = index++;\n child.property = _this.propertyName;\n return child;\n });\n this.hasChanges = true;\n };\n ArrayBase.prototype.getProperties = function () {\n var onlyProp = [];\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var item = _a[_i];\n onlyProp.push(item.getProperties());\n }\n return onlyProp;\n };\n ArrayBase.prototype.isChanged = function () {\n var _this = this;\n var result = false;\n var index = 0;\n var isSourceChanged = false;\n // tslint:disable-next-line\n var childrenDataSource = this.children.map(function (child) {\n return child;\n });\n /* istanbul ignore next */\n if (this.list.length === this.children.length) {\n for (var i = 0; i < this.list.length; i++) {\n if (this.list[i].propCollection.dataSource) {\n if (this.list[i].dataSource && this.list[i].propCollection.dataSource !== this.list[i].dataSource) {\n this.list[i].propCollection.dataSource = this.list[i].dataSource;\n this.list[i].hasChanges = true;\n }\n isSourceChanged = (JSON.stringify(this.list[i].propCollection.dataSource) !==\n JSON.stringify(childrenDataSource[i].propCollection.dataSource));\n }\n isSourceChanged = this.list[i].hasChanges !== childrenDataSource[i].hasChanges;\n }\n }\n this.hasNewChildren = (this.list.length !== this.children.length || isSourceChanged) ? true : null;\n if (this.hasNewChildren) {\n this.list = this.children.map(function (child) {\n child.dirIndex = index++;\n child.property = _this.propertyName;\n return child;\n });\n }\n /* istanbul ignore end */\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var item = _a[_i];\n result = result || item.hasChanges;\n }\n return !!this.list.length && result;\n };\n ArrayBase.prototype.clearTemplate = function (templateNames) {\n var _this = this;\n /* istanbul ignore next */\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var item = _a[_i];\n item.clearTemplate(templateNames && templateNames.map(function (val) {\n return new RegExp(_this.propertyName).test(val) ? val.replace(_this.propertyName + '.', '') : val;\n }));\n }\n };\n ArrayBase.prototype.ngAfterContentChecked = function () {\n this.hasChanges = this.isChanged();\n for (var i = 0; i < this.list.length; i++) {\n if (getValue('childColumns', this.list[i]) && getValue('property', this.list[i]) === 'columns') {\n setValue('columns', getValue('childColumns', this.list[i]).getProperties(), this.list[i].propCollection);\n }\n this.list[i].isUpdated = true;\n }\n };\n ArrayBase.prototype.ngAfterViewInit = function () {\n this.isInitChanges = false;\n };\n ArrayBase.prototype.ngOnDestroy = function () {\n this.list = [];\n };\n return ArrayBase;\n}());\nexport { ArrayBase };\n","/**\n * Angular Component Base Module\n */\nimport { getValue, isUndefined, setValue, isNullOrUndefined, attributes, createElement } from '@syncfusion/ej2-base';\nimport { EventEmitter } from '@angular/core';\nimport { clearTemplate, registerEvents } from './util';\nvar SVG_REG = /^svg|^path|^g/;\nvar ComponentBase = /** @class */ (function () {\n function ComponentBase() {\n this.isProtectedOnChange = true;\n this.isFormInit = true;\n }\n ComponentBase.prototype.saveChanges = function (key, newValue, oldValue) {\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n // tslint:disable-next-line:no-any\n var changeTime = setTimeout(this.dataBind.bind(this));\n var clearUpdate = function () {\n clearTimeout(changeTime);\n };\n this.finalUpdate = clearUpdate;\n };\n ;\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngOnInit = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempOnThis = isTempRef || this;\n tempOnThis.registeredTemplate = {};\n tempOnThis.ngBoundedEvents = {};\n tempOnThis.isAngular = true;\n tempOnThis.isFormInit = true;\n /* istanbul ignore next */\n if (isTempRef) {\n this.tags = isTempRef.tags;\n }\n tempOnThis.tags = this.tags || [];\n tempOnThis.complexTemplate = this.complexTemplate || [];\n tempOnThis.tagObjects = [];\n tempOnThis.ngAttr = this.getAngularAttr(tempOnThis.element);\n /* istanbul ignore next */\n tempOnThis.createElement = function (tagName, prop) {\n //tslint:disable-next-line\n var ele = tempOnThis.srenderer ? tempOnThis.srenderer.createElement(tagName) : createElement(tagName);\n if (typeof (prop) === 'undefined') {\n return ele;\n }\n ele.innerHTML = (prop.innerHTML ? prop.innerHTML : '');\n if (prop.className !== undefined) {\n ele.className = prop.className;\n }\n if (prop.id !== undefined) {\n ele.id = prop.id;\n }\n if (prop.styles !== undefined) {\n ele.setAttribute('style', prop.styles);\n }\n if (tempOnThis.ngAttr !== undefined) {\n ele.setAttribute(tempOnThis.ngAttr, '');\n }\n if (prop.attrs !== undefined) {\n attributes(ele, prop.attrs);\n }\n return ele;\n };\n for (var _i = 0, _a = tempOnThis.tags; _i < _a.length; _i++) {\n var tag = _a[_i];\n var tagObject = {\n instance: getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), tempOnThis),\n name: tag\n };\n tempOnThis.tagObjects.push(tagObject);\n }\n var complexTemplates = Object.keys(tempOnThis);\n for (var i = 0; i < complexTemplates.length; i++) {\n var compProp = getValue(complexTemplates[i], tempOnThis);\n if (typeof compProp === 'object' && compProp && compProp.elementRef) {\n if (typeof compProp === 'object' && compProp && compProp.elementRef && complexTemplates[i].indexOf('_') !== -1 && complexTemplates[i].indexOf('Ref') === -1) {\n setValue(complexTemplates[i] + 'Ref', compProp, tempOnThis);\n }\n if (tempOnThis.viewContainerRef && !getValue(\"_viewContainerRef\", compProp.elementRef.nativeElement) && !getValue(\"propName\", compProp.elementRef.nativeElement)) {\n setValue(\"_viewContainerRef\", tempOnThis.viewContainerRef, compProp.elementRef.nativeElement);\n setValue(\"propName\", complexTemplates[i].replace(\"Ref\", ''), compProp.elementRef.nativeElement);\n }\n }\n }\n complexTemplates = Object.keys(tempOnThis);\n complexTemplates = complexTemplates.filter(function (val) {\n return /Ref$/i.test(val) && /\\_/i.test(val);\n });\n for (var _b = 0, complexTemplates_1 = complexTemplates; _b < complexTemplates_1.length; _b++) {\n var tempName = complexTemplates_1[_b];\n var propName = tempName.replace('Ref', '');\n var val = {};\n setValue(propName.replace('_', '.'), getValue(propName, tempOnThis), val);\n tempOnThis.setProperties(val, true);\n }\n };\n ComponentBase.prototype.getAngularAttr = function (ele) {\n var attributes = ele.attributes;\n var length = attributes.length;\n var ngAr;\n for (var i = 0; i < length; i++) {\n /* istanbul ignore next */\n if (/_ngcontent/g.test(attributes[i].name)) {\n ngAr = attributes[i].name;\n }\n }\n return ngAr;\n };\n ;\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngAfterViewInit = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempAfterViewThis = isTempRef || this;\n var regExp = /ejs-tab|ejs-accordion/g;\n /* istanbul ignore next */\n if (regExp.test(tempAfterViewThis.ngEle.nativeElement.outerHTML)) {\n tempAfterViewThis.ngEle.nativeElement.style.visibility = 'hidden';\n }\n /**\n * Root level template properties are not getting rendered,\n * Due to ngonchanges not get triggered.\n * so that we have set template value for root level template properties,\n * for example: refer below syntax\n * ```html\n * <ejs-grid>\n * <e-column></e-column>\n * <ng-template #editSettingsTemplate></ng-template>\n * </ejs-grid>\n * ```\n */\n var templateProperties = Object.keys(tempAfterViewThis);\n templateProperties = templateProperties.filter(function (val) {\n return /Ref$/i.test(val);\n });\n for (var _i = 0, templateProperties_1 = templateProperties; _i < templateProperties_1.length; _i++) {\n var tempName = templateProperties_1[_i];\n var propName = tempName.replace('Ref', '');\n setValue(propName.replace('_', '.'), getValue(propName + 'Ref', tempAfterViewThis), tempAfterViewThis);\n }\n // Used setTimeout for template binding\n // Refer Link: https://github.com/angular/angular/issues/6005\n setTimeout(function () {\n /* istanbul ignore else */\n if (typeof window !== 'undefined' && tempAfterViewThis.element || tempAfterViewThis.getModuleName().includes('btn')) {\n tempAfterViewThis.appendTo(tempAfterViewThis.element);\n tempAfterViewThis.ngEle.nativeElement.style.visibility = '';\n }\n });\n };\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngOnDestroy = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempOnDestroyThis = isTempRef || this;\n /* istanbul ignore else */\n setTimeout(function () {\n if (typeof window !== 'undefined' && (tempOnDestroyThis.element.classList.contains('e-control'))) {\n tempOnDestroyThis.destroy();\n tempOnDestroyThis.clearTemplate(null);\n // removing bounded events and tagobjects from component after destroy\n tempOnDestroyThis.ngBoundedEvents = {};\n tempOnDestroyThis.tagObjects = {};\n tempOnDestroyThis.ngEle = null;\n }\n });\n };\n //tslint:disable-next-line\n ComponentBase.prototype.clearTemplate = function (templateNames, index) {\n clearTemplate(this, templateNames, index);\n };\n ;\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngAfterContentChecked = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempAfterContentThis = isTempRef || this;\n for (var _i = 0, _a = tempAfterContentThis.tagObjects; _i < _a.length; _i++) {\n var tagObject = _a[_i];\n if (!isUndefined(tagObject.instance) &&\n (tagObject.instance.isInitChanges || tagObject.instance.hasChanges || tagObject.instance.hasNewChildren)) {\n if (tagObject.instance.isInitChanges) {\n var propObj = {};\n // For angular 9 compatibility\n // Not able to get complex directive properties reference ni Onint hook\n // So we have constructed property here and used\n var complexDirProps = void 0;\n var list = getValue('instance.list', tagObject);\n if (list && list.length) {\n complexDirProps = list[0].directivePropList;\n }\n var skip = true;\n if (tempAfterContentThis.getModuleName && tempAfterContentThis.getModuleName() === 'gantt') {\n skip = false;\n }\n if (complexDirProps && skip && complexDirProps.indexOf(tagObject.instance.propertyName) === -1) {\n var compDirPropList = Object.keys(tagObject.instance.list[0].propCollection);\n for (var h = 0; h < tagObject.instance.list.length; h++) {\n tagObject.instance.list[h].propCollection[tagObject.instance.propertyName] = [];\n var obj = {};\n for (var k = 0; k < compDirPropList.length; k++) {\n var complexPropName = compDirPropList[k];\n obj[complexPropName] = tagObject.instance.list[h].propCollection[complexPropName];\n }\n for (var i = 0; i < tagObject.instance.list[h].tags.length; i++) {\n var tag = tagObject.instance.list[h].tags[i];\n var childObj = getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), tagObject.instance.list[h]);\n if (childObj) {\n var innerchildObj = tagObject.instance.list[h]['child' + tag.substring(0, 1).toUpperCase() + tag.substring(1)];\n if (innerchildObj) {\n for (var j = 0; j < innerchildObj.list.length; j++) {\n var innerTag = innerchildObj.list[0].tags[0];\n if (innerTag) {\n var innerchildTag = getValue('child' + innerTag.substring(0, 1).toUpperCase() + innerTag.substring(1), innerchildObj.list[j]);\n if (innerchildTag) {\n innerchildObj.list[j].tagObjects.push({ instance: innerchildTag, name: innerTag });\n }\n }\n }\n }\n tagObject.instance.list[h].tagObjects.push({ instance: childObj, name: tag });\n }\n }\n tagObject.instance.list[h].propCollection[tagObject.instance.propertyName].push(obj);\n }\n }\n // End angular 9 compatibility\n propObj[tagObject.name] = tagObject.instance.getProperties();\n tempAfterContentThis.setProperties(propObj, tagObject.instance.isInitChanges);\n }\n else {\n /* istanbul ignore next */\n if ((tempAfterContentThis[tagObject.name].length !== tagObject.instance.list.length) || (/diagram|tab|DashboardLayout/.test(tempAfterContentThis.getModuleName()))) {\n tempAfterContentThis[tagObject.name] = tagObject.instance.list;\n }\n for (var _b = 0, _c = tagObject.instance.list; _b < _c.length; _b++) {\n var list = _c[_b];\n var curIndex = tagObject.instance.list.indexOf(list);\n var curChild = getValue(tagObject.name, tempAfterContentThis)[curIndex];\n var complexTemplates = Object.keys(curChild);\n complexTemplates = complexTemplates.filter(function (val) {\n return /Ref$/i.test(val);\n });\n if (curChild.properties && Object.keys(curChild.properties).length !== 0) {\n for (var _d = 0, complexTemplates_2 = complexTemplates; _d < complexTemplates_2.length; _d++) {\n var complexPropName = complexTemplates_2[_d];\n complexPropName = complexPropName.replace(/Ref/, '');\n curChild.properties[complexPropName] = !curChild.properties[complexPropName] ?\n curChild.propCollection[complexPropName] : curChild.properties[complexPropName];\n }\n }\n if (!isUndefined(curChild) && !isUndefined(curChild.setProperties)) {\n if (/diagram|DashboardLayout/.test(tempAfterContentThis.getModuleName())) {\n curChild.setProperties(list.getProperties(), true);\n }\n else {\n curChild.setProperties(list.getProperties());\n }\n }\n list.isUpdated = true;\n }\n }\n }\n }\n };\n ComponentBase.prototype.registerEvents = function (eventList) {\n registerEvents(eventList, this);\n };\n ComponentBase.prototype.twoWaySetter = function (newVal, prop) {\n var oldVal = getValue(prop, this.properties);\n if (oldVal === newVal) {\n return;\n }\n this.saveChanges(prop, newVal, oldVal);\n setValue(prop, (isNullOrUndefined(newVal) ? null : newVal), this.properties);\n getValue(prop + 'Change', this).emit(newVal);\n };\n ComponentBase.prototype.addTwoWay = function (propList) {\n var _this = this;\n var _loop_1 = function (prop) {\n getValue(prop, this_1);\n Object.defineProperty(this_1, prop, {\n get: function () {\n return getValue(prop, _this.properties);\n },\n set: function (newVal) { return _this.twoWaySetter(newVal, prop); }\n });\n setValue(prop + 'Change', new EventEmitter(), this_1);\n };\n var this_1 = this;\n for (var _i = 0, propList_1 = propList; _i < propList_1.length; _i++) {\n var prop = propList_1[_i];\n _loop_1(prop);\n }\n };\n ComponentBase.prototype.addEventListener = function (eventName, handler) {\n var eventObj = getValue(eventName, this);\n if (!isUndefined(eventObj)) {\n if (!this.ngBoundedEvents[eventName]) {\n this.ngBoundedEvents[eventName] = new Map();\n }\n this.ngBoundedEvents[eventName].set(handler, eventObj.subscribe(handler));\n }\n };\n ComponentBase.prototype.removeEventListener = function (eventName, handler) {\n var eventObj = getValue(eventName, this);\n if (!isUndefined(eventObj)) {\n this.ngBoundedEvents[eventName].get(handler).unsubscribe();\n }\n };\n ComponentBase.prototype.trigger = function (eventName, eventArgs, success) {\n var eventObj = getValue(eventName, this);\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventArgs) {\n eventArgs.name = eventName;\n }\n if (!isUndefined(eventObj)) {\n eventObj.next(eventArgs);\n }\n var localEventObj = getValue('local' + eventName.charAt(0).toUpperCase() + eventName.slice(1), this);\n if (!isUndefined(localEventObj)) {\n localEventObj.call(this, eventArgs);\n }\n this.isProtectedOnChange = prevDetection;\n /* istanbul ignore else */\n if (success) {\n this.preventChange = this.isPreventChange;\n success.call(this, eventArgs);\n }\n this.isPreventChange = false;\n };\n return ComponentBase;\n}());\nexport { ComponentBase };\n","import { getValue, setValue, isNullOrUndefined, isObject } from '@syncfusion/ej2-base';\n/**\n * Angular Form Base Module\n */\nvar FormBase = /** @class */ (function () {\n function FormBase() {\n }\n FormBase.prototype.propagateChange = function (_) { return; };\n FormBase.prototype.propagateTouch = function () { return; };\n FormBase.prototype.localChange = function (e) {\n //tslint:disable-next-line\n var value = (e.checked === undefined ? e.value : e.checked);\n this.objCheck = isObject(value);\n if (this.isUpdated === true) {\n this.angularValue = this.oldValue;\n }\n if (this.objCheck === true) {\n this.duplicateValue = JSON.stringify(value);\n this.duplicateAngularValue = JSON.stringify(this.angularValue);\n if (this.duplicateValue !== this.duplicateAngularValue && this.propagateChange !== undefined && value !== undefined) {\n // Update angular from our control\n this.propagateChange(value);\n this.angularValue = value;\n }\n }\n else {\n if (value !== this.angularValue && this.propagateChange !== undefined && value !== undefined) {\n // While reset form using reset() method ng-dirty not get updated, so while value is empty just update angularValue only\n if (value !== '' && value !== null) {\n // Update angular from our control\n this.propagateChange(value);\n this.angularValue = value;\n }\n else {\n //tslint:disable-next-line\n var optionalValue = value;\n this.propagateChange(optionalValue);\n this.angularValue = value;\n }\n }\n }\n };\n FormBase.prototype.registerOnChange = function (registerFunction) {\n this.propagateChange = registerFunction;\n };\n FormBase.prototype.registerOnTouched = function (registerFunction) {\n this.propagateTouch = registerFunction;\n };\n FormBase.prototype.twoWaySetter = function (newVal, prop) {\n var oldVal = this.oldValue || getValue(prop, this.properties);\n var ele = this.inputElement || this.element;\n if (ele && oldVal === newVal && this.value === newVal &&\n (ele.value === undefined || ele.value === '')) {\n return;\n }\n this.saveChanges(prop, newVal, oldVal);\n setValue(prop, (isNullOrUndefined(newVal) ? null : newVal), this.properties);\n getValue(prop + 'Change', this).emit(newVal);\n };\n // tslint:disable-next-line:no-any\n FormBase.prototype.ngAfterViewInit = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempFormAfterViewThis = isTempRef || this;\n // Used setTimeout for template binding\n // Refer Link: https://github.com/angular/angular/issues/6005\n // Removed setTimeout, Because we have called markForCheck() method in Angular Template Compiler\n // setTimeout(() => {\n /* istanbul ignore else */\n if (typeof window !== 'undefined') {\n tempFormAfterViewThis.appendTo(tempFormAfterViewThis.element);\n var ele = tempFormAfterViewThis.inputElement || tempFormAfterViewThis.element;\n ele.addEventListener('focus', tempFormAfterViewThis.ngOnFocus.bind(tempFormAfterViewThis));\n ele.addEventListener('blur', tempFormAfterViewThis.ngOnBlur.bind(tempFormAfterViewThis));\n }\n this.isFormInit = false;\n // });\n };\n FormBase.prototype.setDisabledState = function (disabled) {\n this.enabled = !disabled;\n this.disabled = disabled;\n };\n FormBase.prototype.writeValue = function (value) {\n var regExp = /ejs-radiobutton/g;\n //update control value from angular\n if (this.checked === undefined) {\n this.value = value;\n }\n else {\n // To resolve boolean type formControl value is not working for radio button control.\n /* istanbul ignore next */\n if (this.ngEle) {\n if (typeof value === 'boolean') {\n if (regExp.test(this.ngEle.nativeElement.outerHTML)) {\n this.checked = value === this.value;\n }\n else {\n this.checked = value;\n }\n }\n else {\n this.checked = value === this.value;\n }\n }\n }\n this.angularValue = value;\n this.isUpdated = true;\n // When binding Html textbox value to syncfusion textbox, change event triggered dynamically.\n // To prevent change event, trigger change in component side based on `preventChange` value\n this.preventChange = this.isFormInit ? false : true;\n if (value === null) {\n return;\n }\n };\n FormBase.prototype.ngOnFocus = function (e) {\n /* istanbul ignore else */\n if (this.skipFromEvent !== true) {\n this.focus.emit(e);\n }\n };\n FormBase.prototype.ngOnBlur = function (e) {\n this.propagateTouch();\n /* istanbul ignore else */\n if (this.skipFromEvent !== true) {\n this.blur.emit(e);\n }\n };\n FormBase.isFormBase = true;\n return FormBase;\n}());\nexport { FormBase };\n"],"names":["applyMixins","derivedClass","baseClass","forEach","Object","getOwnPropertyNames","prototype","name","hasOwnProperty","isFormBase","ComponentMixins","registerEvents","eventList","obj","direct","ngEventsEmitter","length","_i","eventList_1","event_1","propCollection","EventEmitter","setProperties","clearTemplate","_this","templateNames","index","regTemplates","keys","registeredTemplate","regProperties","filter","val","test","_a","e","m","template","rootNodes","rt","destroy","_b","_c","destroyed","_view","pNode","renderer","parentNode","isNullOrUndefined","appendChild","_d","_e","tagObjects","tagObject","instance","RegExp","setValue","nameSpace","value","object","replace","split","fromObj","i","key","undefined","compile","templateEle","helper","stringCompiler","contRef_1","elementRef","nativeElement","_viewContainerRef","pName_1","propName","data","component","context","$implicit","conRef","viewContainerRef","viewRef","createEmbeddedView","markForCheck","viewCollection","getValue","push","Template","defaultValue","target","propertyDescriptor","set","setter","get","getter","enumerable","configurable","defineProperty","this","saveChanges","dataBind","refRegex","ComplexBase","hasChanges","dataSource","tags","ngOnInit","tag","objInstance","substring","toUpperCase","templateProperties","tempProp","indexOf","templateProperties_1","propList","directivePropList","k","dirPropName","isInitChanges","ngOnChanges","changes","changedVal","currentValue","isUpdated","getProperties","isChanged","result","property","tempProps","props","d","propVal","item","ngAfterContentChecked","templateProperties_2","ngAfterViewChecked","ngAfterViewInit","ngOnDestroy","ArrayBase","propertyName","list","ngAfterContentInit","children","map","child","dirIndex","onlyProp","isSourceChanged","childrenDataSource","JSON","stringify","hasNewChildren","ComponentBase","isProtectedOnChange","isFormInit","newValue","oldValue","oldProperties","changedProperties","finalUpdate","changeTime","setTimeout","bind","clearUpdate","clearTimeout","isTempRef","tempOnThis","ngBoundedEvents","isAngular","complexTemplate","ngAttr","getAngularAttr","element","createElement","tagName","prop","ele","srenderer","innerHTML","className","id","styles","setAttribute","attrs","attributes","complexTemplates","compProp","complexTemplates_1","ngAr","tempAfterViewThis","ngEle","outerHTML","style","visibility","window","getModuleName","includes","appendTo","tempOnDestroyThis","classList","contains","tempAfterContentThis","isUndefined","propObj","complexDirProps","skip","compDirPropList","h","complexPropName","childObj","innerchildObj","j","innerTag","innerchildTag","curIndex","curChild","properties","complexTemplates_2","twoWaySetter","newVal","oldVal","emit","addTwoWay","this_1","propList_1","addEventListener","eventName","handler","eventObj","Map","subscribe","removeEventListener","unsubscribe","trigger","eventArgs","success","prevDetection","next","localEventObj","charAt","slice","call","preventChange","isPreventChange","FormBase","propagateChange","_","propagateTouch","localChange","checked","objCheck","isObject","angularValue","duplicateValue","duplicateAngularValue","optionalValue","registerOnChange","registerFunction","registerOnTouched","inputElement","tempFormAfterViewThis","ngOnFocus","ngOnBlur","setDisabledState","disabled","enabled","writeValue","regExp","skipFromEvent","focus","blur","getTemplateEngine","setTemplateEngine"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-angular-base.min.js","sources":["../../src/util.js","../../src/template.js","../../src/complex-array-base.js","../../src/component-base.js","../../src/form-base.js"],"sourcesContent":["import { EventEmitter } from '@angular/core';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Angular Utility Module\n */\n/* tslint:disable */\nexport function applyMixins(derivedClass, baseClass) {\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (!derivedClass.prototype.hasOwnProperty(name) || baseClass.isFormBase) {\n derivedClass.prototype[name] = baseClass.prototype[name];\n }\n });\n });\n}\n/* tslint:disable */\nexport function ComponentMixins(baseClass) {\n return function (derivedClass) {\n applyMixins(derivedClass, baseClass);\n };\n}\n/**\n * @private\n */\nexport function registerEvents(eventList, obj, direct) {\n var ngEventsEmitter = {};\n if (eventList && eventList.length) {\n for (var _i = 0, eventList_1 = eventList; _i < eventList_1.length; _i++) {\n var event_1 = eventList_1[_i];\n if (direct === true) {\n obj.propCollection[event_1] = new EventEmitter(false);\n obj[event_1] = obj.propCollection[event_1];\n }\n else {\n ngEventsEmitter[event_1] = new EventEmitter(false);\n }\n }\n if (direct !== true) {\n obj.setProperties(ngEventsEmitter, true);\n }\n }\n}\n/**\n * @private\n */\nexport function clearTemplate(_this, templateNames, index) {\n var regTemplates = Object.keys(_this.registeredTemplate);\n if (regTemplates.length) {\n /* istanbul ignore next */\n var regProperties = templateNames && templateNames.filter(function (val) {\n return (/\\./g.test(val) ? false : true);\n });\n for (var _i = 0, _a = (regProperties && regProperties || regTemplates); _i < _a.length; _i++) {\n var registeredTemplate = _a[_i];\n /* istanbul ignore next */\n if (index && index.length) {\n for (var e = 0; e < index.length; e++) {\n for (var m = 0; m < _this.registeredTemplate.template.length; m++) {\n var value = _this.registeredTemplate.template[m].rootNodes[0];\n if (value === index[e]) {\n var rt = _this.registeredTemplate[registeredTemplate];\n rt[m].destroy();\n }\n }\n }\n }\n else {\n if (_this.registeredTemplate[registeredTemplate]) {\n for (var _b = 0, _c = _this.registeredTemplate[registeredTemplate]; _b < _c.length; _b++) {\n var rt = _c[_b];\n if (!rt.destroyed) {\n if (rt._view) {\n var pNode = rt._view.renderer.parentNode(rt.rootNodes[0]);\n if (!isNullOrUndefined(pNode)) {\n for (var m = 0; m < rt.rootNodes.length; m++) {\n pNode.appendChild(rt.rootNodes[m]);\n }\n }\n }\n rt.destroy();\n }\n }\n }\n }\n delete _this.registeredTemplate[registeredTemplate];\n }\n }\n var _loop_1 = function (tagObject) {\n if (tagObject.instance) {\n /* istanbul ignore next */\n tagObject.instance.clearTemplate((templateNames && templateNames.filter(function (val) {\n return (new RegExp(tagObject.name).test(val) ? true : false);\n })));\n }\n };\n for (var _d = 0, _e = _this.tagObjects; _d < _e.length; _d++) {\n var tagObject = _e[_d];\n _loop_1(tagObject);\n }\n}\n/**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @return {void}\n * @private\n */\nexport function setValue(nameSpace, value, object) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n /* istanbul ignore next */\n var fromObj = object || {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (i + 1 === keys.length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (fromObj[key] === undefined) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return fromObj;\n}\n","import { setTemplateEngine, getTemplateEngine } from '@syncfusion/ej2-base';\nimport { setValue, getValue } from '@syncfusion/ej2-base';\nvar stringCompiler = getTemplateEngine();\n/**\n * Angular Template Compiler\n */\nexport function compile(templateEle, helper) {\n if (typeof templateEle === 'string') {\n return stringCompiler(templateEle, helper);\n }\n else {\n var contRef_1 = templateEle.elementRef.nativeElement._viewContainerRef;\n var pName_1 = templateEle.elementRef.nativeElement.propName;\n //tslint:disable-next-line \n return function (data, component, propName) {\n var context = { $implicit: data };\n /* istanbul ignore next */\n var conRef = contRef_1 ? contRef_1 : component.viewContainerRef;\n var viewRef = conRef.createEmbeddedView(templateEle, context);\n viewRef.detectChanges();\n /* istanbul ignore next */\n var viewCollection = (component && component.registeredTemplate) ?\n component.registeredTemplate : getValue('currentInstance.registeredTemplate', conRef);\n propName = (propName && component.registeredTemplate) ? propName : pName_1;\n if (typeof viewCollection[propName] === 'undefined') {\n viewCollection[propName] = [];\n }\n viewCollection[propName].push(viewRef);\n return viewRef.rootNodes;\n };\n }\n}\n/**\n * Property decorator for angular.\n */\nexport function Template(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: setter(key),\n get: getter(key, defaultValue),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, propertyDescriptor);\n };\n}\nfunction setter(key) {\n return function (val) {\n if (val === undefined) {\n return;\n }\n setValue(key + 'Ref', val, this);\n if (typeof val !== 'string') {\n val.elementRef.nativeElement._viewContainerRef = this.viewContainerRef;\n val.elementRef.nativeElement.propName = key;\n }\n else {\n if (this.saveChanges) {\n this.saveChanges(key, val, undefined);\n this.dataBind();\n }\n }\n };\n}\nfunction getter(key, defaultValue) {\n return function () {\n /* istanbul ignore next */\n return getValue(key + 'Ref', this) || defaultValue;\n };\n}\n//tslint:disable-next-line\nsetTemplateEngine({ compile: compile });\n","import { getValue, setValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { clearTemplate, registerEvents } from './util';\nvar refRegex = /Ref$/;\nvar ComplexBase = /** @class */ (function () {\n function ComplexBase() {\n this.hasChanges = false;\n this.propCollection = {};\n this.dataSource = {};\n this.tags = [];\n this.tagObjects = [];\n }\n ComplexBase.prototype.ngOnInit = function () {\n this.registeredTemplate = {};\n for (var _i = 0, _a = this.tags; _i < _a.length; _i++) {\n var tag = _a[_i];\n var objInstance = getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), this);\n if (objInstance) {\n this.tagObjects.push({ instance: objInstance, name: tag });\n }\n }\n var templateProperties = Object.keys(this);\n for (var i = 0; i < templateProperties.length; i++) {\n var tempProp = getValue(templateProperties[i], this);\n if (typeof tempProp === 'object' && tempProp.elementRef && !getValue(templateProperties[i].indexOf('Ref') !== -1 ? templateProperties[i] : templateProperties[i] + 'Ref', this)) {\n setValue(templateProperties[i].indexOf('Ref') !== -1 ? templateProperties[i] : templateProperties[i] + 'Ref', tempProp, this);\n }\n }\n templateProperties = Object.keys(this);\n templateProperties = templateProperties.filter(function (val) {\n return /Ref$/i.test(val);\n });\n for (var _b = 0, templateProperties_1 = templateProperties; _b < templateProperties_1.length; _b++) {\n var tempName = templateProperties_1[_b];\n var propName = tempName.replace('Ref', '');\n setValue(propName.replace('_', '.'), getValue(propName, this), this.propCollection);\n }\n // Angular 9 compatibility to overcome ngOnchange not get triggered issue\n // To Update properties to \"this.propCollection\"\n var propList = Object.keys(this);\n /* istanbul ignore next */\n if (this.directivePropList) {\n for (var k = 0; k < this.directivePropList.length; k++) {\n var dirPropName = this.directivePropList[k];\n if (propList.indexOf(dirPropName) !== -1 && getValue(dirPropName, this)) {\n setValue(dirPropName, getValue(dirPropName, this), this.propCollection);\n }\n }\n this.hasChanges = true;\n }\n this.isInitChanges = true;\n };\n ComplexBase.prototype.registerEvents = function (eventList) {\n registerEvents(eventList, this, true);\n };\n ComplexBase.prototype.ngOnChanges = function (changes) {\n for (var _i = 0, _a = Object.keys(changes); _i < _a.length; _i++) {\n var propName = _a[_i];\n var changedVal = changes[propName];\n this.propCollection[propName] = changedVal.currentValue;\n }\n this.isUpdated = false;\n this.hasChanges = true;\n };\n /* istanbul ignore next */\n ComplexBase.prototype.clearTemplate = function (templateNames) {\n clearTemplate(this, templateNames);\n };\n ComplexBase.prototype.getProperties = function () {\n /* istanbul ignore next */\n for (var _i = 0, _a = this.tagObjects; _i < _a.length; _i++) {\n var tagObject = _a[_i];\n this.propCollection[tagObject.name] = tagObject.instance.getProperties();\n }\n return this.propCollection;\n };\n ComplexBase.prototype.isChanged = function () {\n var result = this.hasChanges;\n if (!isNullOrUndefined(this.propCollection[this.property])) {\n var tempProps = this.propCollection[this.property];\n var props = Object.keys(tempProps[0]);\n for (var d = 0; d < props.length; d++) {\n if (!isNullOrUndefined(this.propCollection[props[d]])) {\n var val = getValue(props[d], this);\n var propVal = this.propCollection[this.property][0][props[d]];\n if (!isNullOrUndefined(val) && this.propCollection[props[d]] !== val\n && propVal !== val) {\n setValue(props[d], val, this.propCollection[this.property][0]);\n setValue(props[d], val, this.propCollection);\n this.hasChanges = true;\n this.isUpdated = false;\n }\n }\n }\n }\n /* istanbul ignore next */\n for (var _i = 0, _a = this.tagObjects; _i < _a.length; _i++) {\n var item = _a[_i];\n result = result || item.instance.hasChanges;\n }\n return result || this.hasChanges;\n };\n ComplexBase.prototype.ngAfterContentChecked = function () {\n this.hasChanges = this.isChanged();\n if (this.isInitChanges || this.hasChanges) {\n var templateProperties = Object.keys(this);\n templateProperties = templateProperties.filter(function (val) {\n return refRegex.test(val);\n });\n for (var _i = 0, templateProperties_2 = templateProperties; _i < templateProperties_2.length; _i++) {\n var tempName = templateProperties_2[_i];\n var propName = tempName.replace('Ref', '');\n setValue(propName.replace('_', '.'), getValue(propName, this), this.propCollection);\n }\n }\n };\n ComplexBase.prototype.ngAfterViewChecked = function () {\n /* istanbul ignore next */\n if (this.isUpdated) {\n this.hasChanges = false;\n }\n };\n ComplexBase.prototype.ngAfterViewInit = function () {\n /* istanbul ignore next */\n this.isInitChanges = false;\n };\n ComplexBase.prototype.ngOnDestroy = function () {\n /* istanbul ignore next */\n this.directivePropList = [];\n };\n return ComplexBase;\n}());\nexport { ComplexBase };\nvar ArrayBase = /** @class */ (function () {\n function ArrayBase(propertyName) {\n this.list = [];\n this.hasChanges = false;\n this.propertyName = propertyName;\n }\n ArrayBase.prototype.ngOnInit = function () {\n this.isInitChanges = true;\n };\n ArrayBase.prototype.ngAfterContentInit = function () {\n var _this = this;\n var index = 0;\n /* istanbul ignore next */\n this.list = this.children.map(function (child) {\n child.dirIndex = index++;\n child.property = _this.propertyName;\n return child;\n });\n this.hasChanges = true;\n };\n ArrayBase.prototype.getProperties = function () {\n var onlyProp = [];\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var item = _a[_i];\n onlyProp.push(item.getProperties());\n }\n return onlyProp;\n };\n ArrayBase.prototype.isChanged = function () {\n var _this = this;\n var result = false;\n var index = 0;\n var isSourceChanged = false;\n // tslint:disable-next-line\n var childrenDataSource = this.children.map(function (child) {\n return child;\n });\n /* istanbul ignore next */\n if (this.list.length === this.children.length) {\n for (var i = 0; i < this.list.length; i++) {\n if (this.list[i].propCollection.dataSource) {\n if (this.list[i].dataSource && this.list[i].propCollection.dataSource !== this.list[i].dataSource) {\n this.list[i].propCollection.dataSource = this.list[i].dataSource;\n this.list[i].hasChanges = true;\n }\n isSourceChanged = (JSON.stringify(this.list[i].propCollection.dataSource) !==\n JSON.stringify(childrenDataSource[i].propCollection.dataSource));\n }\n isSourceChanged = this.list[i].hasChanges !== childrenDataSource[i].hasChanges;\n }\n }\n this.hasNewChildren = (this.list.length !== this.children.length || isSourceChanged) ? true : null;\n if (this.hasNewChildren) {\n this.list = this.children.map(function (child) {\n child.dirIndex = index++;\n child.property = _this.propertyName;\n return child;\n });\n }\n /* istanbul ignore end */\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var item = _a[_i];\n result = result || item.hasChanges;\n }\n return !!this.list.length && result;\n };\n ArrayBase.prototype.clearTemplate = function (templateNames) {\n var _this = this;\n /* istanbul ignore next */\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var item = _a[_i];\n item.clearTemplate(templateNames && templateNames.map(function (val) {\n return new RegExp(_this.propertyName).test(val) ? val.replace(_this.propertyName + '.', '') : val;\n }));\n }\n };\n ArrayBase.prototype.ngAfterContentChecked = function () {\n this.hasChanges = this.isChanged();\n for (var i = 0; i < this.list.length; i++) {\n if (getValue('childColumns', this.list[i]) && getValue('property', this.list[i]) === 'columns') {\n setValue('columns', getValue('childColumns', this.list[i]).getProperties(), this.list[i].propCollection);\n }\n this.list[i].isUpdated = true;\n }\n };\n ArrayBase.prototype.ngAfterViewInit = function () {\n this.isInitChanges = false;\n };\n ArrayBase.prototype.ngOnDestroy = function () {\n this.list = [];\n };\n return ArrayBase;\n}());\nexport { ArrayBase };\n","/**\n * Angular Component Base Module\n */\nimport { getValue, isUndefined, setValue, isNullOrUndefined, attributes, createElement } from '@syncfusion/ej2-base';\nimport { EventEmitter } from '@angular/core';\nimport { clearTemplate, registerEvents } from './util';\nvar SVG_REG = /^svg|^path|^g/;\nvar ComponentBase = /** @class */ (function () {\n function ComponentBase() {\n this.isProtectedOnChange = true;\n this.isFormInit = true;\n }\n ComponentBase.prototype.saveChanges = function (key, newValue, oldValue) {\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n // tslint:disable-next-line:no-any\n var changeTime = setTimeout(this.dataBind.bind(this));\n var clearUpdate = function () {\n clearTimeout(changeTime);\n };\n this.finalUpdate = clearUpdate;\n };\n ;\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngOnInit = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempOnThis = isTempRef || this;\n tempOnThis.registeredTemplate = {};\n tempOnThis.ngBoundedEvents = {};\n tempOnThis.isAngular = true;\n tempOnThis.isFormInit = true;\n /* istanbul ignore next */\n if (isTempRef) {\n this.tags = isTempRef.tags;\n }\n tempOnThis.tags = this.tags || [];\n tempOnThis.complexTemplate = this.complexTemplate || [];\n tempOnThis.tagObjects = [];\n tempOnThis.ngAttr = this.getAngularAttr(tempOnThis.element);\n /* istanbul ignore next */\n tempOnThis.createElement = function (tagName, prop) {\n //tslint:disable-next-line\n var ele = tempOnThis.srenderer ? tempOnThis.srenderer.createElement(tagName) : createElement(tagName);\n if (typeof (prop) === 'undefined') {\n return ele;\n }\n ele.innerHTML = (prop.innerHTML ? prop.innerHTML : '');\n if (prop.className !== undefined) {\n ele.className = prop.className;\n }\n if (prop.id !== undefined) {\n ele.id = prop.id;\n }\n if (prop.styles !== undefined) {\n ele.setAttribute('style', prop.styles);\n }\n if (tempOnThis.ngAttr !== undefined) {\n ele.setAttribute(tempOnThis.ngAttr, '');\n }\n if (prop.attrs !== undefined) {\n attributes(ele, prop.attrs);\n }\n return ele;\n };\n for (var _i = 0, _a = tempOnThis.tags; _i < _a.length; _i++) {\n var tag = _a[_i];\n var tagObject = {\n instance: getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), tempOnThis),\n name: tag\n };\n tempOnThis.tagObjects.push(tagObject);\n }\n var complexTemplates = Object.keys(tempOnThis);\n for (var i = 0; i < complexTemplates.length; i++) {\n var compProp = getValue(complexTemplates[i], tempOnThis);\n if (typeof compProp === 'object' && compProp && compProp.elementRef) {\n if (typeof compProp === 'object' && compProp && compProp.elementRef && complexTemplates[i].indexOf('_') !== -1 && complexTemplates[i].indexOf('Ref') === -1) {\n setValue(complexTemplates[i] + 'Ref', compProp, tempOnThis);\n }\n if (tempOnThis.viewContainerRef && !getValue(\"_viewContainerRef\", compProp.elementRef.nativeElement) && !getValue(\"propName\", compProp.elementRef.nativeElement)) {\n setValue(\"_viewContainerRef\", tempOnThis.viewContainerRef, compProp.elementRef.nativeElement);\n setValue(\"propName\", complexTemplates[i].replace(\"Ref\", ''), compProp.elementRef.nativeElement);\n }\n }\n }\n complexTemplates = Object.keys(tempOnThis);\n complexTemplates = complexTemplates.filter(function (val) {\n return /Ref$/i.test(val) && /\\_/i.test(val);\n });\n for (var _b = 0, complexTemplates_1 = complexTemplates; _b < complexTemplates_1.length; _b++) {\n var tempName = complexTemplates_1[_b];\n var propName = tempName.replace('Ref', '');\n var val = {};\n setValue(propName.replace('_', '.'), getValue(propName, tempOnThis), val);\n tempOnThis.setProperties(val, true);\n }\n };\n ComponentBase.prototype.getAngularAttr = function (ele) {\n var attributes = ele.attributes;\n var length = attributes.length;\n var ngAr;\n for (var i = 0; i < length; i++) {\n /* istanbul ignore next */\n if (/_ngcontent/g.test(attributes[i].name)) {\n ngAr = attributes[i].name;\n }\n }\n return ngAr;\n };\n ;\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngAfterViewInit = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempAfterViewThis = isTempRef || this;\n var regExp = /ejs-tab|ejs-accordion/g;\n /* istanbul ignore next */\n if (regExp.test(tempAfterViewThis.ngEle.nativeElement.outerHTML)) {\n tempAfterViewThis.ngEle.nativeElement.style.visibility = 'hidden';\n }\n /**\n * Root level template properties are not getting rendered,\n * Due to ngonchanges not get triggered.\n * so that we have set template value for root level template properties,\n * for example: refer below syntax\n * ```html\n * <ejs-grid>\n * <e-column></e-column>\n * <ng-template #editSettingsTemplate></ng-template>\n * </ejs-grid>\n * ```\n */\n var templateProperties = Object.keys(tempAfterViewThis);\n templateProperties = templateProperties.filter(function (val) {\n return /Ref$/i.test(val);\n });\n for (var _i = 0, templateProperties_1 = templateProperties; _i < templateProperties_1.length; _i++) {\n var tempName = templateProperties_1[_i];\n var propName = tempName.replace('Ref', '');\n setValue(propName.replace('_', '.'), getValue(propName + 'Ref', tempAfterViewThis), tempAfterViewThis);\n }\n // Used setTimeout for template binding\n // Refer Link: https://github.com/angular/angular/issues/6005\n setTimeout(function () {\n /* istanbul ignore else */\n if (typeof window !== 'undefined' && tempAfterViewThis.element || tempAfterViewThis.getModuleName().includes('btn')) {\n tempAfterViewThis.appendTo(tempAfterViewThis.element);\n tempAfterViewThis.ngEle.nativeElement.style.visibility = '';\n }\n });\n };\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngOnDestroy = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempOnDestroyThis = isTempRef || this;\n /* istanbul ignore else */\n setTimeout(function () {\n if (typeof window !== 'undefined' && (tempOnDestroyThis.element.classList.contains('e-control'))) {\n tempOnDestroyThis.destroy();\n tempOnDestroyThis.clearTemplate(null);\n // removing bounded events and tagobjects from component after destroy\n tempOnDestroyThis.ngBoundedEvents = {};\n tempOnDestroyThis.tagObjects = {};\n tempOnDestroyThis.ngEle = null;\n }\n });\n };\n //tslint:disable-next-line\n ComponentBase.prototype.clearTemplate = function (templateNames, index) {\n clearTemplate(this, templateNames, index);\n };\n ;\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngAfterContentChecked = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempAfterContentThis = isTempRef || this;\n for (var _i = 0, _a = tempAfterContentThis.tagObjects; _i < _a.length; _i++) {\n var tagObject = _a[_i];\n if (!isUndefined(tagObject.instance) &&\n (tagObject.instance.isInitChanges || tagObject.instance.hasChanges || tagObject.instance.hasNewChildren)) {\n if (tagObject.instance.isInitChanges) {\n var propObj = {};\n // For angular 9 compatibility\n // Not able to get complex directive properties reference ni Onint hook\n // So we have constructed property here and used\n var complexDirProps = void 0;\n var list = getValue('instance.list', tagObject);\n if (list && list.length) {\n complexDirProps = list[0].directivePropList;\n }\n var skip = true;\n if (tempAfterContentThis.getModuleName && tempAfterContentThis.getModuleName() === 'gantt') {\n skip = false;\n }\n if (complexDirProps && skip && complexDirProps.indexOf(tagObject.instance.propertyName) === -1) {\n var compDirPropList = Object.keys(tagObject.instance.list[0].propCollection);\n for (var h = 0; h < tagObject.instance.list.length; h++) {\n tagObject.instance.list[h].propCollection[tagObject.instance.propertyName] = [];\n var obj = {};\n for (var k = 0; k < compDirPropList.length; k++) {\n var complexPropName = compDirPropList[k];\n obj[complexPropName] = tagObject.instance.list[h].propCollection[complexPropName];\n }\n for (var i = 0; i < tagObject.instance.list[h].tags.length; i++) {\n var tag = tagObject.instance.list[h].tags[i];\n var childObj = getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), tagObject.instance.list[h]);\n if (childObj) {\n var innerchildObj = tagObject.instance.list[h]['child' + tag.substring(0, 1).toUpperCase() + tag.substring(1)];\n if (innerchildObj) {\n for (var j = 0; j < innerchildObj.list.length; j++) {\n var innerTag = innerchildObj.list[0].tags[0];\n if (innerTag) {\n var innerchildTag = getValue('child' + innerTag.substring(0, 1).toUpperCase() + innerTag.substring(1), innerchildObj.list[j]);\n if (innerchildTag) {\n innerchildObj.list[j].tagObjects.push({ instance: innerchildTag, name: innerTag });\n }\n }\n }\n }\n tagObject.instance.list[h].tagObjects.push({ instance: childObj, name: tag });\n }\n }\n tagObject.instance.list[h].propCollection[tagObject.instance.propertyName].push(obj);\n }\n }\n // End angular 9 compatibility\n propObj[tagObject.name] = tagObject.instance.getProperties();\n tempAfterContentThis.setProperties(propObj, tagObject.instance.isInitChanges);\n }\n else {\n /* istanbul ignore next */\n if ((tempAfterContentThis[tagObject.name].length !== tagObject.instance.list.length) || (/diagram|tab|DashboardLayout/.test(tempAfterContentThis.getModuleName()))) {\n tempAfterContentThis[tagObject.name] = tagObject.instance.list;\n }\n for (var _b = 0, _c = tagObject.instance.list; _b < _c.length; _b++) {\n var list = _c[_b];\n var curIndex = tagObject.instance.list.indexOf(list);\n var curChild = getValue(tagObject.name, tempAfterContentThis)[curIndex];\n var complexTemplates = Object.keys(curChild);\n complexTemplates = complexTemplates.filter(function (val) {\n return /Ref$/i.test(val);\n });\n if (curChild.properties && Object.keys(curChild.properties).length !== 0) {\n for (var _d = 0, complexTemplates_2 = complexTemplates; _d < complexTemplates_2.length; _d++) {\n var complexPropName = complexTemplates_2[_d];\n complexPropName = complexPropName.replace(/Ref/, '');\n curChild.properties[complexPropName] = !curChild.properties[complexPropName] ?\n curChild.propCollection[complexPropName] : curChild.properties[complexPropName];\n }\n }\n if (!isUndefined(curChild) && !isUndefined(curChild.setProperties)) {\n if (/diagram|DashboardLayout/.test(tempAfterContentThis.getModuleName())) {\n curChild.setProperties(list.getProperties(), true);\n }\n else {\n curChild.setProperties(list.getProperties());\n }\n }\n list.isUpdated = true;\n }\n }\n }\n }\n };\n ComponentBase.prototype.registerEvents = function (eventList) {\n registerEvents(eventList, this);\n };\n ComponentBase.prototype.twoWaySetter = function (newVal, prop) {\n var oldVal = getValue(prop, this.properties);\n if (oldVal === newVal) {\n return;\n }\n this.saveChanges(prop, newVal, oldVal);\n setValue(prop, (isNullOrUndefined(newVal) ? null : newVal), this.properties);\n getValue(prop + 'Change', this).emit(newVal);\n };\n ComponentBase.prototype.addTwoWay = function (propList) {\n var _this = this;\n var _loop_1 = function (prop) {\n getValue(prop, this_1);\n Object.defineProperty(this_1, prop, {\n get: function () {\n return getValue(prop, _this.properties);\n },\n set: function (newVal) { return _this.twoWaySetter(newVal, prop); }\n });\n setValue(prop + 'Change', new EventEmitter(), this_1);\n };\n var this_1 = this;\n for (var _i = 0, propList_1 = propList; _i < propList_1.length; _i++) {\n var prop = propList_1[_i];\n _loop_1(prop);\n }\n };\n ComponentBase.prototype.addEventListener = function (eventName, handler) {\n var eventObj = getValue(eventName, this);\n if (!isUndefined(eventObj)) {\n if (!this.ngBoundedEvents[eventName]) {\n this.ngBoundedEvents[eventName] = new Map();\n }\n this.ngBoundedEvents[eventName].set(handler, eventObj.subscribe(handler));\n }\n };\n ComponentBase.prototype.removeEventListener = function (eventName, handler) {\n var eventObj = getValue(eventName, this);\n if (!isUndefined(eventObj)) {\n this.ngBoundedEvents[eventName].get(handler).unsubscribe();\n }\n };\n ComponentBase.prototype.trigger = function (eventName, eventArgs, success) {\n var eventObj = getValue(eventName, this);\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventArgs) {\n eventArgs.name = eventName;\n }\n if (!isUndefined(eventObj)) {\n eventObj.next(eventArgs);\n }\n var localEventObj = getValue('local' + eventName.charAt(0).toUpperCase() + eventName.slice(1), this);\n if (!isUndefined(localEventObj)) {\n localEventObj.call(this, eventArgs);\n }\n this.isProtectedOnChange = prevDetection;\n /* istanbul ignore else */\n if (success) {\n this.preventChange = this.isPreventChange;\n success.call(this, eventArgs);\n }\n this.isPreventChange = false;\n };\n return ComponentBase;\n}());\nexport { ComponentBase };\n","import { getValue, setValue, isNullOrUndefined, isObject } from '@syncfusion/ej2-base';\n/**\n * Angular Form Base Module\n */\nvar FormBase = /** @class */ (function () {\n function FormBase() {\n }\n FormBase.prototype.propagateChange = function (_) { return; };\n FormBase.prototype.propagateTouch = function () { return; };\n FormBase.prototype.localChange = function (e) {\n //tslint:disable-next-line\n var value = (e.checked === undefined ? e.value : e.checked);\n this.objCheck = isObject(value);\n if (this.isUpdated === true) {\n this.angularValue = this.oldValue;\n }\n if (this.objCheck === true) {\n this.duplicateValue = JSON.stringify(value);\n this.duplicateAngularValue = JSON.stringify(this.angularValue);\n if (this.duplicateValue !== this.duplicateAngularValue && this.propagateChange !== undefined && value !== undefined) {\n // Update angular from our control\n this.propagateChange(value);\n this.angularValue = value;\n }\n }\n else {\n if (value !== this.angularValue && this.propagateChange !== undefined && value !== undefined) {\n // While reset form using reset() method ng-dirty not get updated, so while value is empty just update angularValue only\n if (value !== '' && value !== null) {\n // Update angular from our control\n this.propagateChange(value);\n this.angularValue = value;\n }\n else {\n //tslint:disable-next-line\n var optionalValue = value;\n this.propagateChange(optionalValue);\n this.angularValue = value;\n }\n }\n }\n };\n FormBase.prototype.registerOnChange = function (registerFunction) {\n this.propagateChange = registerFunction;\n };\n FormBase.prototype.registerOnTouched = function (registerFunction) {\n this.propagateTouch = registerFunction;\n };\n FormBase.prototype.twoWaySetter = function (newVal, prop) {\n var oldVal = this.oldValue || getValue(prop, this.properties);\n var ele = this.inputElement || this.element;\n if (ele && oldVal === newVal && this.value === newVal &&\n (ele.value === undefined || ele.value === '')) {\n return;\n }\n this.saveChanges(prop, newVal, oldVal);\n setValue(prop, (isNullOrUndefined(newVal) ? null : newVal), this.properties);\n getValue(prop + 'Change', this).emit(newVal);\n };\n // tslint:disable-next-line:no-any\n FormBase.prototype.ngAfterViewInit = function (isTempRef) {\n var _this = this;\n // tslint:disable-next-line:no-any\n var tempFormAfterViewThis = isTempRef || this;\n // Used setTimeout for template binding\n // Refer Link: https://github.com/angular/angular/issues/6005\n // Removed setTimeout, Because we have called markForCheck() method in Angular Template Compiler\n setTimeout(function () {\n /* istanbul ignore else */\n if (typeof window !== 'undefined') {\n tempFormAfterViewThis.appendTo(tempFormAfterViewThis.element);\n var ele = tempFormAfterViewThis.inputElement || tempFormAfterViewThis.element;\n ele.addEventListener('focus', tempFormAfterViewThis.ngOnFocus.bind(tempFormAfterViewThis));\n ele.addEventListener('blur', tempFormAfterViewThis.ngOnBlur.bind(tempFormAfterViewThis));\n }\n _this.isFormInit = false;\n });\n };\n FormBase.prototype.setDisabledState = function (disabled) {\n this.enabled = !disabled;\n this.disabled = disabled;\n };\n FormBase.prototype.writeValue = function (value) {\n var regExp = /ejs-radiobutton/g;\n //update control value from angular\n if (this.checked === undefined) {\n this.value = value;\n }\n else {\n // To resolve boolean type formControl value is not working for radio button control.\n /* istanbul ignore next */\n if (this.ngEle) {\n if (typeof value === 'boolean') {\n if (regExp.test(this.ngEle.nativeElement.outerHTML)) {\n this.checked = value === this.value;\n }\n else {\n this.checked = value;\n }\n }\n else {\n this.checked = value === this.value;\n }\n }\n }\n this.angularValue = value;\n this.isUpdated = true;\n // When binding Html textbox value to syncfusion textbox, change event triggered dynamically.\n // To prevent change event, trigger change in component side based on `preventChange` value\n this.preventChange = this.isFormInit ? false : true;\n if (value === null) {\n return;\n }\n };\n FormBase.prototype.ngOnFocus = function (e) {\n /* istanbul ignore else */\n if (this.skipFromEvent !== true) {\n this.focus.emit(e);\n }\n };\n FormBase.prototype.ngOnBlur = function (e) {\n this.propagateTouch();\n /* istanbul ignore else */\n if (this.skipFromEvent !== true) {\n this.blur.emit(e);\n }\n };\n FormBase.isFormBase = true;\n return FormBase;\n}());\nexport { FormBase };\n"],"names":["applyMixins","derivedClass","baseClass","forEach","Object","getOwnPropertyNames","prototype","name","hasOwnProperty","isFormBase","ComponentMixins","registerEvents","eventList","obj","direct","ngEventsEmitter","length","_i","eventList_1","event_1","propCollection","EventEmitter","setProperties","clearTemplate","_this","templateNames","index","regTemplates","keys","registeredTemplate","regProperties","filter","val","test","_a","e","m","template","rootNodes","rt","destroy","_b","_c","destroyed","_view","pNode","renderer","parentNode","isNullOrUndefined","appendChild","_d","_e","tagObjects","tagObject","instance","RegExp","setValue","nameSpace","value","object","replace","split","fromObj","i","key","undefined","compile","templateEle","helper","stringCompiler","contRef_1","elementRef","nativeElement","_viewContainerRef","pName_1","propName","data","component","context","$implicit","conRef","viewContainerRef","viewRef","createEmbeddedView","detectChanges","viewCollection","getValue","push","Template","defaultValue","target","propertyDescriptor","set","setter","get","getter","enumerable","configurable","defineProperty","this","saveChanges","dataBind","refRegex","ComplexBase","hasChanges","dataSource","tags","ngOnInit","tag","objInstance","substring","toUpperCase","templateProperties","tempProp","indexOf","templateProperties_1","propList","directivePropList","k","dirPropName","isInitChanges","ngOnChanges","changes","changedVal","currentValue","isUpdated","getProperties","isChanged","result","property","tempProps","props","d","propVal","item","ngAfterContentChecked","templateProperties_2","ngAfterViewChecked","ngAfterViewInit","ngOnDestroy","ArrayBase","propertyName","list","ngAfterContentInit","children","map","child","dirIndex","onlyProp","isSourceChanged","childrenDataSource","JSON","stringify","hasNewChildren","ComponentBase","isProtectedOnChange","isFormInit","newValue","oldValue","oldProperties","changedProperties","finalUpdate","changeTime","setTimeout","bind","clearUpdate","clearTimeout","isTempRef","tempOnThis","ngBoundedEvents","isAngular","complexTemplate","ngAttr","getAngularAttr","element","createElement","tagName","prop","ele","srenderer","innerHTML","className","id","styles","setAttribute","attrs","attributes","complexTemplates","compProp","complexTemplates_1","ngAr","tempAfterViewThis","ngEle","outerHTML","style","visibility","window","getModuleName","includes","appendTo","tempOnDestroyThis","classList","contains","tempAfterContentThis","isUndefined","propObj","complexDirProps","skip","compDirPropList","h","complexPropName","childObj","innerchildObj","j","innerTag","innerchildTag","curIndex","curChild","properties","complexTemplates_2","twoWaySetter","newVal","oldVal","emit","addTwoWay","this_1","propList_1","addEventListener","eventName","handler","eventObj","Map","subscribe","removeEventListener","unsubscribe","trigger","eventArgs","success","prevDetection","next","localEventObj","charAt","slice","call","preventChange","isPreventChange","FormBase","propagateChange","_","propagateTouch","localChange","checked","objCheck","isObject","angularValue","duplicateValue","duplicateAngularValue","optionalValue","registerOnChange","registerFunction","registerOnTouched","inputElement","tempFormAfterViewThis","ngOnFocus","ngOnBlur","setDisabledState","disabled","enabled","writeValue","regExp","skipFromEvent","focus","blur","getTemplateEngine","setTemplateEngine"],"mappings":"oEAMA,SAAgBA,GAAYC,EAAcC,GACtCA,EAAUC,QAAQ,SAAUD,GACxBE,OAAOC,oBAAoBH,EAAUI,WAAWH,QAAQ,SAAUI,GACzDN,EAAaK,UAAUE,eAAeD,KAASL,EAAUO,aAC1DR,EAAaK,UAAUC,GAAQL,EAAUI,UAAUC,QAMnE,QAAgBG,GAAgBR,GAC5B,MAAO,UAAUD,GACbD,EAAYC,EAAcC,IAMlC,QAAgBS,GAAeC,EAAWC,EAAKC,GAC3C,GAAIC,KACJ,IAAIH,GAAaA,EAAUI,OAAQ,CAC/B,IAAK,GAAIC,GAAK,EAAGC,EAAcN,EAAWK,EAAKC,EAAYF,OAAQC,IAAM,CACrE,GAAIE,GAAUD,EAAYD,IACX,IAAXH,GACAD,EAAIO,eAAeD,GAAW,GAAIE,iBAAa,GAC/CR,EAAIM,GAAWN,EAAIO,eAAeD,IAGlCJ,EAAgBI,GAAW,GAAIE,iBAAa,IAGrC,IAAXP,GACAD,EAAIS,cAAcP,GAAiB,IAO/C,QAAgBQ,GAAcC,EAAOC,EAAeC,GAChD,GAAIC,GAAevB,OAAOwB,KAAKJ,EAAMK,mBACrC,IAAIF,EAAaX,OAKb,IAAK,GAHDc,GAAgBL,GAAiBA,EAAcM,OAAO,SAAUC,GAChE,OAAQ,MAAMC,KAAKD,KAEdf,EAAK,EAAGiB,EAAMJ,GAAiBA,GAAiBH,EAAeV,EAAKiB,EAAGlB,OAAQC,IAAM,CAC1F,GAAIY,GAAqBK,EAAGjB,EAE5B,IAAIS,GAASA,EAAMV,OACf,IAAK,GAAImB,GAAI,EAAGA,EAAIT,EAAMV,OAAQmB,IAC9B,IAASC,EAAI,EAAGA,EAAIZ,EAAMK,mBAAmBQ,SAASrB,OAAQoB,IAC9CZ,EAAMK,mBAAmBQ,SAASD,GAAGE,UAAU,KAC7CZ,EAAMS,KACZI,EAAKf,EAAMK,mBAAmBA,IAC/BO,GAAGI,cAMlB,IAAIhB,EAAMK,mBAAmBA,GACzB,IAAK,GAAIY,GAAK,EAAGC,EAAKlB,EAAMK,mBAAmBA,GAAqBY,EAAKC,EAAG1B,OAAQyB,IAAM,CACtF,GAAIF,GAAKG,EAAGD,EACZ,KAAKF,EAAGI,UAAW,CACf,GAAIJ,EAAGK,MAAO,CACV,GAAIC,GAAQN,EAAGK,MAAME,SAASC,WAAWR,EAAGD,UAAU,GACtD,KAAKU,oBAAkBH,GACnB,IAAK,GAAIT,GAAI,EAAGA,EAAIG,EAAGD,UAAUtB,OAAQoB,IACrCS,EAAMI,YAAYV,EAAGD,UAAUF,IAI3CG,EAAGC,iBAKZhB,GAAMK,mBAAmBA,GAWxC,IAAK,GAAIqB,GAAK,EAAGC,EAAK3B,EAAM4B,WAAYF,EAAKC,EAAGnC,OAAQkC,KAR1C,SAAUG,GAChBA,EAAUC,UAEVD,EAAUC,SAAS/B,cAAeE,GAAiBA,EAAcM,OAAO,SAAUC,GAC9E,QAAQ,GAAIuB,QAAOF,EAAU9C,MAAM0B,KAAKD,OAKhCmB,EAAGD,IAY3B,QAAgBM,GAASC,EAAWC,EAAOC,GAIvC,IAAK,GAHD/B,GAAO6B,EAAUG,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAAIC,MAAM,KAE9DC,EAAUH,MACLI,EAAI,EAAGA,EAAInC,EAAKZ,OAAQ+C,IAAK,CAClC,GAAIC,GAAMpC,EAAKmC,EACXA,GAAI,IAAMnC,EAAKZ,OACf8C,EAAQE,OAAiBC,KAAVP,KAA2BA,MAEpBO,KAAjBH,EAAQE,KACbF,EAAQE,OAEZF,EAAUA,EAAQE,GAEtB,MAAOF,GCpHX,QAAgBI,GAAQC,EAAaC,GACjC,GAA2B,gBAAhBD,GACP,MAAOE,GAAeF,EAAaC,EAGnC,IAAIE,GAAYH,EAAYI,WAAWC,cAAcC,kBACjDC,EAAUP,EAAYI,WAAWC,cAAcG,QAEnD,OAAO,UAAUC,EAAMC,EAAWF,GAC9B,GAAIG,IAAYC,UAAWH,GAEvBI,EAASV,GAAwBO,EAAUI,iBAC3CC,EAAUF,EAAOG,mBAAmBhB,EAAaW,EACrDI,GAAQE,eAER,IAAIC,GAAkBR,GAAaA,EAAUhD,mBACzCgD,EAAUhD,mBAAqByD,WAAS,qCAAsCN,EAMlF,OALAL,GAAYA,GAAYE,EAAUhD,mBAAsB8C,EAAWD,MAC3B,KAA7BW,EAAeV,KACtBU,EAAeV,OAEnBU,EAAeV,GAAUY,KAAKL,GACvBA,EAAQ5C,WAO3B,QAAgBkD,GAASC,GACrB,MAAO,UAAUC,EAAQ1B,GACrB,GAAI2B,IACAC,IAAKC,EAAO7B,GACZ8B,IAAKC,EAAO/B,EAAKyB,GACjBO,YAAY,EACZC,cAAc,EAElB7F,QAAO8F,eAAeR,EAAQ1B,EAAK2B,IAG3C,QAASE,GAAO7B,GACZ,MAAO,UAAUhC,OACDiC,KAARjC,IAGJwB,WAASQ,EAAM,MAAOhC,EAAKmE,MACR,gBAARnE,IACPA,EAAIuC,WAAWC,cAAcC,kBAAoB0B,KAAKlB,iBACtDjD,EAAIuC,WAAWC,cAAcG,SAAWX,GAGpCmC,KAAKC,cACLD,KAAKC,YAAYpC,EAAKhC,MAAKiC,IAC3BkC,KAAKE,cAKrB,QAASN,GAAO/B,EAAKyB,GACjB,MAAO,YAEH,MAAOH,YAAStB,EAAM,MAAOmC,OAASV,GCjE9C,GAAIa,GAAW,OACXC,EAA6B,WAC7B,QAASA,KACLJ,KAAKK,YAAa,EAClBL,KAAK/E,kBACL+E,KAAKM,cACLN,KAAKO,QACLP,KAAK/C,cAwHT,MAtHAmD,GAAYjG,UAAUqG,SAAW,WAC7BR,KAAKtE,qBACL,KAAK,GAAIZ,GAAK,EAAGiB,EAAKiE,KAAKO,KAAMzF,EAAKiB,EAAGlB,OAAQC,IAAM,CACnD,GAAI2F,GAAM1E,EAAGjB,GACT4F,EAAcvB,WAAS,QAAUsB,EAAIE,UAAU,EAAG,GAAGC,cAAgBH,EAAIE,UAAU,GAAIX,KACvFU,IACAV,KAAK/C,WAAWmC,MAAOjC,SAAUuD,EAAatG,KAAMqG,IAI5D,IAAK,GADDI,GAAqB5G,OAAOwB,KAAKuE,MAC5BpC,EAAI,EAAGA,EAAIiD,EAAmBhG,OAAQ+C,IAAK,CAChD,GAAIkD,GAAW3B,WAAS0B,EAAmBjD,GAAIoC,KACvB,iBAAbc,IAAyBA,EAAS1C,aAAee,YAAmD,IAA1C0B,EAAmBjD,GAAGmD,QAAQ,OAAgBF,EAAmBjD,GAAKiD,EAAmBjD,GAAK,MAAOoC,OACtK3C,YAAmD,IAA1CwD,EAAmBjD,GAAGmD,QAAQ,OAAgBF,EAAmBjD,GAAKiD,EAAmBjD,GAAK,MAAOkD,EAAUd,MAOhI,IAAK,GAAI1D,GAAK,EAAG0E,EAHjBH,GADAA,EAAqB5G,OAAOwB,KAAKuE,OACOpE,OAAO,SAAUC,GACrD,MAAO,QAAQC,KAAKD,KAEoCS,EAAK0E,EAAqBnG,OAAQyB,IAAM,CAChG,GACIkC,GADWwC,EAAqB1E,GACZmB,QAAQ,MAAO,GACvCJ,YAASmB,EAASf,QAAQ,IAAK,KAAM0B,WAASX,EAAUwB,MAAOA,KAAK/E,gBAIxE,GAAIgG,GAAWhH,OAAOwB,KAAKuE,KAE3B,IAAIA,KAAKkB,kBAAmB,CACxB,IAAK,GAAIC,GAAI,EAAGA,EAAInB,KAAKkB,kBAAkBrG,OAAQsG,IAAK,CACpD,GAAIC,GAAcpB,KAAKkB,kBAAkBC,IACF,IAAnCF,EAASF,QAAQK,IAAuBjC,WAASiC,EAAapB,OAC9D3C,WAAS+D,EAAajC,WAASiC,EAAapB,MAAOA,KAAK/E,gBAGhE+E,KAAKK,YAAa,EAEtBL,KAAKqB,eAAgB,GAEzBjB,EAAYjG,UAAUK,eAAiB,SAAUC,GAC7CD,EAAeC,EAAWuF,MAAM,IAEpCI,EAAYjG,UAAUmH,YAAc,SAAUC,GAC1C,IAAK,GAAIzG,GAAK,EAAGiB,EAAK9B,OAAOwB,KAAK8F,GAAUzG,EAAKiB,EAAGlB,OAAQC,IAAM,CAC9D,GAAI0D,GAAWzC,EAAGjB,GACd0G,EAAaD,EAAQ/C,EACzBwB,MAAK/E,eAAeuD,GAAYgD,EAAWC,aAE/CzB,KAAK0B,WAAY,EACjB1B,KAAKK,YAAa,GAGtBD,EAAYjG,UAAUiB,cAAgB,SAAUE,GAC5CF,EAAc4E,KAAM1E,IAExB8E,EAAYjG,UAAUwH,cAAgB,WAElC,IAAK,GAAI7G,GAAK,EAAGiB,EAAKiE,KAAK/C,WAAYnC,EAAKiB,EAAGlB,OAAQC,IAAM,CACzD,GAAIoC,GAAYnB,EAAGjB,EACnBkF,MAAK/E,eAAeiC,EAAU9C,MAAQ8C,EAAUC,SAASwE,gBAE7D,MAAO3B,MAAK/E,gBAEhBmF,EAAYjG,UAAUyH,UAAY,WAC9B,GAAIC,GAAS7B,KAAKK,UAClB,KAAKxD,oBAAkBmD,KAAK/E,eAAe+E,KAAK8B,WAG5C,IAAK,GAFDC,GAAY/B,KAAK/E,eAAe+E,KAAK8B,UACrCE,EAAQ/H,OAAOwB,KAAKsG,EAAU,IACzBE,EAAI,EAAGA,EAAID,EAAMnH,OAAQoH,IAC9B,IAAKpF,oBAAkBmD,KAAK/E,eAAe+G,EAAMC,KAAM,CACnD,GAAIpG,GAAMsD,WAAS6C,EAAMC,GAAIjC,MACzBkC,EAAUlC,KAAK/E,eAAe+E,KAAK8B,UAAU,GAAGE,EAAMC,GACrDpF,qBAAkBhB,IAAQmE,KAAK/E,eAAe+G,EAAMC,MAAQpG,GAC1DqG,IAAYrG,IACfwB,WAAS2E,EAAMC,GAAIpG,EAAKmE,KAAK/E,eAAe+E,KAAK8B,UAAU,IAC3DzE,WAAS2E,EAAMC,GAAIpG,EAAKmE,KAAK/E,gBAC7B+E,KAAKK,YAAa,EAClBL,KAAK0B,WAAY,GAMjC,IAAK,GAAI5G,GAAK,EAAGiB,EAAKiE,KAAK/C,WAAYnC,EAAKiB,EAAGlB,OAAQC,IAAM,CACzD,GAAIqH,GAAOpG,EAAGjB,EACd+G,GAASA,GAAUM,EAAKhF,SAASkD,WAErC,MAAOwB,IAAU7B,KAAKK,YAE1BD,EAAYjG,UAAUiI,sBAAwB,WAE1C,GADApC,KAAKK,WAAaL,KAAK4B,YACnB5B,KAAKqB,eAAiBrB,KAAKK,WAK3B,IAAK,GAJDQ,GAAqB5G,OAAOwB,KAAKuE,MAI5BlF,EAAK,EAAGuH,EAHjBxB,EAAqBA,EAAmBjF,OAAO,SAAUC,GACrD,MAAOsE,GAASrE,KAAKD,KAEmCf,EAAKuH,EAAqBxH,OAAQC,IAAM,CAChG,GACI0D,GADW6D,EAAqBvH,GACZ2C,QAAQ,MAAO,GACvCJ,YAASmB,EAASf,QAAQ,IAAK,KAAM0B,WAASX,EAAUwB,MAAOA,KAAK/E,kBAIhFmF,EAAYjG,UAAUmI,mBAAqB,WAEnCtC,KAAK0B,YACL1B,KAAKK,YAAa,IAG1BD,EAAYjG,UAAUoI,gBAAkB,WAEpCvC,KAAKqB,eAAgB,GAEzBjB,EAAYjG,UAAUqI,YAAc,WAEhCxC,KAAKkB,sBAEFd,KAGPqC,EAA2B,WAC3B,QAASA,GAAUC,GACf1C,KAAK2C,QACL3C,KAAKK,YAAa,EAClBL,KAAK0C,aAAeA,EAuFxB,MArFAD,GAAUtI,UAAUqG,SAAW,WAC3BR,KAAKqB,eAAgB,GAEzBoB,EAAUtI,UAAUyI,mBAAqB,WACrC,GAAIvH,GAAQ2E,KACRzE,EAAQ,CAEZyE,MAAK2C,KAAO3C,KAAK6C,SAASC,IAAI,SAAUC,GAGpC,MAFAA,GAAMC,SAAWzH,IACjBwH,EAAMjB,SAAWzG,EAAMqH,aAChBK,IAEX/C,KAAKK,YAAa,GAEtBoC,EAAUtI,UAAUwH,cAAgB,WAEhC,IAAK,GADDsB,MACKnI,EAAK,EAAGiB,EAAKiE,KAAK2C,KAAM7H,EAAKiB,EAAGlB,OAAQC,IAAM,CACnD,GAAIqH,GAAOpG,EAAGjB,EACdmI,GAAS7D,KAAK+C,EAAKR,iBAEvB,MAAOsB,IAEXR,EAAUtI,UAAUyH,UAAY,WAC5B,GAAIvG,GAAQ2E,KACR6B,GAAS,EACTtG,EAAQ,EACR2H,GAAkB,EAElBC,EAAqBnD,KAAK6C,SAASC,IAAI,SAAUC,GACjD,MAAOA,IAGX,IAAI/C,KAAK2C,KAAK9H,SAAWmF,KAAK6C,SAAShI,OACnC,IAAK,GAAI+C,GAAI,EAAGA,EAAIoC,KAAK2C,KAAK9H,OAAQ+C,IAC9BoC,KAAK2C,KAAK/E,GAAG3C,eAAeqF,aACxBN,KAAK2C,KAAK/E,GAAG0C,YAAcN,KAAK2C,KAAK/E,GAAG3C,eAAeqF,aAAeN,KAAK2C,KAAK/E,GAAG0C,aACnFN,KAAK2C,KAAK/E,GAAG3C,eAAeqF,WAAaN,KAAK2C,KAAK/E,GAAG0C,WACtDN,KAAK2C,KAAK/E,GAAGyC,YAAa,GAE9B6C,EAAmBE,KAAKC,UAAUrD,KAAK2C,KAAK/E,GAAG3C,eAAeqF,cAC1D8C,KAAKC,UAAUF,EAAmBvF,GAAG3C,eAAeqF,aAE5D4C,EAAkBlD,KAAK2C,KAAK/E,GAAGyC,aAAe8C,EAAmBvF,GAAGyC,UAG5EL,MAAKsD,iBAAkBtD,KAAK2C,KAAK9H,SAAWmF,KAAK6C,SAAShI,SAAUqI,IAA0B,KAC1FlD,KAAKsD,iBACLtD,KAAK2C,KAAO3C,KAAK6C,SAASC,IAAI,SAAUC,GAGpC,MAFAA,GAAMC,SAAWzH,IACjBwH,EAAMjB,SAAWzG,EAAMqH,aAChBK,IAIf,KAAK,GAAIjI,GAAK,EAAGiB,EAAKiE,KAAK2C,KAAM7H,EAAKiB,EAAGlB,OAAQC,IAAM,CACnD,GAAIqH,GAAOpG,EAAGjB,EACd+G,GAASA,GAAUM,EAAK9B,WAE5B,QAASL,KAAK2C,KAAK9H,QAAUgH,GAEjCY,EAAUtI,UAAUiB,cAAgB,SAAUE,GAG1C,IAAK,GAFDD,GAAQ2E,KAEHlF,EAAK,EAAGiB,EAAKiE,KAAK2C,KAAM7H,EAAKiB,EAAGlB,OAAQC,IAClCiB,EAAGjB,GACTM,cAAcE,GAAiBA,EAAcwH,IAAI,SAAUjH,GAC5D,MAAO,IAAIuB,QAAO/B,EAAMqH,cAAc5G,KAAKD,GAAOA,EAAI4B,QAAQpC,EAAMqH,aAAe,IAAK,IAAM7G,MAI1G4G,EAAUtI,UAAUiI,sBAAwB,WACxCpC,KAAKK,WAAaL,KAAK4B,WACvB,KAAK,GAAIhE,GAAI,EAAGA,EAAIoC,KAAK2C,KAAK9H,OAAQ+C,IAC9BuB,WAAS,eAAgBa,KAAK2C,KAAK/E,KAA8C,YAAvCuB,WAAS,WAAYa,KAAK2C,KAAK/E,KACzEP,WAAS,UAAW8B,WAAS,eAAgBa,KAAK2C,KAAK/E,IAAI+D,gBAAiB3B,KAAK2C,KAAK/E,GAAG3C,gBAE7F+E,KAAK2C,KAAK/E,GAAG8D,WAAY,GAGjCe,EAAUtI,UAAUoI,gBAAkB,WAClCvC,KAAKqB,eAAgB,GAEzBoB,EAAUtI,UAAUqI,YAAc,WAC9BxC,KAAK2C,SAEFF,KCxNPc,EAA+B,WAC/B,QAASA,KACLvD,KAAKwD,qBAAsB,EAC3BxD,KAAKyD,YAAa,EAoUtB,MAlUAF,GAAcpJ,UAAU8F,YAAc,SAAUpC,EAAK6F,EAAUC,GAC3D,IAAI3D,KAAKwD,oBAAT,CAGAxD,KAAK4D,cAAc/F,GAAO8F,EAC1B3D,KAAK6D,kBAAkBhG,GAAO6F,EAC9B1D,KAAK8D,aAEL,IAAIC,GAAaC,WAAWhE,KAAKE,SAAS+D,KAAKjE,OAC3CkE,EAAc,WACdC,aAAaJ,GAEjB/D,MAAK8D,YAAcI,IAIvBX,EAAcpJ,UAAUqG,SAAW,SAAU4D,GAEzC,GAAIC,GAAaD,GAAapE,IAC9BqE,GAAW3I,sBACX2I,EAAWC,mBACXD,EAAWE,WAAY,EACvBF,EAAWZ,YAAa,EAEpBW,IACApE,KAAKO,KAAO6D,EAAU7D,MAE1B8D,EAAW9D,KAAOP,KAAKO,SACvB8D,EAAWG,gBAAkBxE,KAAKwE,oBAClCH,EAAWpH,cACXoH,EAAWI,OAASzE,KAAK0E,eAAeL,EAAWM,SAEnDN,EAAWO,cAAgB,SAAUC,EAASC,GAE1C,GAAIC,GAAMV,EAAWW,UAAYX,EAAWW,UAAUJ,cAAcC,GAAWD,gBAAcC,EAC7F,YAAsB,OACXE,GAEXA,EAAIE,UAAaH,EAAKG,UAAYH,EAAKG,UAAY,OAC5BnH,KAAnBgH,EAAKI,YACLH,EAAIG,UAAYJ,EAAKI,eAETpH,KAAZgH,EAAKK,KACLJ,EAAII,GAAKL,EAAKK,QAEErH,KAAhBgH,EAAKM,QACLL,EAAIM,aAAa,QAASP,EAAKM,YAETtH,KAAtBuG,EAAWI,QACXM,EAAIM,aAAahB,EAAWI,OAAQ,QAErB3G,KAAfgH,EAAKQ,OACLC,aAAWR,EAAKD,EAAKQ,OAElBP,GAEX,KAAK,GAAIjK,GAAK,EAAGiB,EAAKsI,EAAW9D,KAAMzF,EAAKiB,EAAGlB,OAAQC,IAAM,CACzD,GAAI2F,GAAM1E,EAAGjB,GACToC,GACAC,SAAUgC,WAAS,QAAUsB,EAAIE,UAAU,EAAG,GAAGC,cAAgBH,EAAIE,UAAU,GAAI0D,GACnFjK,KAAMqG,EAEV4D,GAAWpH,WAAWmC,KAAKlC,GAG/B,IAAK,GADDsI,GAAmBvL,OAAOwB,KAAK4I,GAC1BzG,EAAI,EAAGA,EAAI4H,EAAiB3K,OAAQ+C,IAAK,CAC9C,GAAI6H,GAAWtG,WAASqG,EAAiB5H,GAAIyG,EACrB,iBAAboB,IAAyBA,GAAYA,EAASrH,aAC7B,gBAAbqH,IAAyBA,GAAYA,EAASrH,aAAoD,IAAtCoH,EAAiB5H,GAAGmD,QAAQ,OAAuD,IAAxCyE,EAAiB5H,GAAGmD,QAAQ,QAC1I1D,WAASmI,EAAiB5H,GAAK,MAAO6H,EAAUpB,IAEhDA,EAAWvF,kBAAqBK,WAAS,oBAAqBsG,EAASrH,WAAWC,gBAAmBc,WAAS,WAAYsG,EAASrH,WAAWC,iBAC9IhB,WAAS,oBAAqBgH,EAAWvF,iBAAkB2G,EAASrH,WAAWC,eAC/EhB,WAAS,WAAYmI,EAAiB5H,GAAGH,QAAQ,MAAO,IAAKgI,EAASrH,WAAWC,iBAQ7F,IAAK,GAAI/B,GAAK,EAAGoJ,EAHjBF,GADAA,EAAmBvL,OAAOwB,KAAK4I,IACKzI,OAAO,SAAUC,GACjD,MAAO,QAAQC,KAAKD,IAAQ,MAAMC,KAAKD,KAEaS,EAAKoJ,EAAmB7K,OAAQyB,IAAM,CAC1F,GACIkC,GADWkH,EAAmBpJ,GACVmB,QAAQ,MAAO,IACnC5B,IACJwB,YAASmB,EAASf,QAAQ,IAAK,KAAM0B,WAASX,EAAU6F,GAAaxI,GACrEwI,EAAWlJ,cAAcU,GAAK,KAGtC0H,EAAcpJ,UAAUuK,eAAiB,SAAUK,GAI/C,IAAK,GADDY,GAFAJ,EAAaR,EAAIQ,WACjB1K,EAAS0K,EAAW1K,OAEf+C,EAAI,EAAGA,EAAI/C,EAAQ+C,IAEpB,cAAc9B,KAAKyJ,EAAW3H,GAAGxD,QACjCuL,EAAOJ,EAAW3H,GAAGxD,KAG7B,OAAOuL,IAIXpC,EAAcpJ,UAAUoI,gBAAkB,SAAU6B,GAEhD,GAAIwB,GAAoBxB,GAAapE,IACxB,0BAEFlE,KAAK8J,EAAkBC,MAAMxH,cAAcyH,aAClDF,EAAkBC,MAAMxH,cAAc0H,MAAMC,WAAa,SAkB7D,KAAK,GAJDnF,GAAqB5G,OAAOwB,KAAKmK,GAI5B9K,EAAK,EAAGkG,EAHjBH,EAAqBA,EAAmBjF,OAAO,SAAUC,GACrD,MAAO,QAAQC,KAAKD,KAEoCf,EAAKkG,EAAqBnG,OAAQC,IAAM,CAChG,GACI0D,GADWwC,EAAqBlG,GACZ2C,QAAQ,MAAO,GACvCJ,YAASmB,EAASf,QAAQ,IAAK,KAAM0B,WAASX,EAAW,MAAOoH,GAAoBA,GAIxF5B,WAAW,YAEe,mBAAXiC,SAA0BL,EAAkBjB,SAAWiB,EAAkBM,gBAAgBC,SAAS,UACzGP,EAAkBQ,SAASR,EAAkBjB,SAC7CiB,EAAkBC,MAAMxH,cAAc0H,MAAMC,WAAa,OAKrEzC,EAAcpJ,UAAUqI,YAAc,SAAU4B,GAE5C,GAAIiC,GAAoBjC,GAAapE,IAErCgE,YAAW,WACe,mBAAXiC,SAA2BI,EAAkB1B,QAAQ2B,UAAUC,SAAS,eAC/EF,EAAkBhK,UAClBgK,EAAkBjL,cAAc,MAEhCiL,EAAkB/B,mBAClB+B,EAAkBpJ,cAClBoJ,EAAkBR,MAAQ,SAKtCtC,EAAcpJ,UAAUiB,cAAgB,SAAUE,EAAeC,GAC7DH,EAAc4E,KAAM1E,EAAeC,IAIvCgI,EAAcpJ,UAAUiI,sBAAwB,SAAUgC,GAGtD,IAAK,GADDoC,GAAuBpC,GAAapE,KAC/BlF,EAAK,EAAGiB,EAAKyK,EAAqBvJ,WAAYnC,EAAKiB,EAAGlB,OAAQC,IAAM,CACzE,GAAIoC,GAAYnB,EAAGjB,EACnB,KAAK2L,cAAYvJ,EAAUC,YACtBD,EAAUC,SAASkE,eAAiBnE,EAAUC,SAASkD,YAAcnD,EAAUC,SAASmG,gBACzF,GAAIpG,EAAUC,SAASkE,cAAe,CAClC,GAAIqF,MAIAC,MAAkB,IAClBhE,EAAOxD,WAAS,gBAAiBjC,KACzByF,EAAK9H,SACb8L,EAAkBhE,EAAK,GAAGzB,kBAE9B,IAAI0F,IAAO,CAIX,IAHIJ,EAAqBN,eAA0D,UAAzCM,EAAqBN,kBAC3DU,GAAO,GAEPD,GAAmBC,IAAsE,IAA9DD,EAAgB5F,QAAQ7D,EAAUC,SAASuF,cAEtE,IAAK,GADDmE,GAAkB5M,OAAOwB,KAAKyB,EAAUC,SAASwF,KAAK,GAAG1H,gBACpD6L,EAAI,EAAGA,EAAI5J,EAAUC,SAASwF,KAAK9H,OAAQiM,IAAK,CACrD5J,EAAUC,SAASwF,KAAKmE,GAAG7L,eAAeiC,EAAUC,SAASuF,gBAE7D,KAAK,GADDhI,MACKyG,EAAI,EAAGA,EAAI0F,EAAgBhM,OAAQsG,IAExCzG,EADIqM,EAAkBF,EAAgB1F,IACfjE,EAAUC,SAASwF,KAAKmE,GAAG7L,eAAe8L,EAErE,KAAK,GAAInJ,GAAI,EAAGA,EAAIV,EAAUC,SAASwF,KAAKmE,GAAGvG,KAAK1F,OAAQ+C,IAAK,CAC7D,GAAI6C,GAAMvD,EAAUC,SAASwF,KAAKmE,GAAGvG,KAAK3C,GACtCoJ,EAAW7H,WAAS,QAAUsB,EAAIE,UAAU,EAAG,GAAGC,cAAgBH,EAAIE,UAAU,GAAIzD,EAAUC,SAASwF,KAAKmE,GAChH,IAAIE,EAAU,CACV,GAAIC,GAAgB/J,EAAUC,SAASwF,KAAKmE,GAAG,QAAUrG,EAAIE,UAAU,EAAG,GAAGC,cAAgBH,EAAIE,UAAU,GAC3G,IAAIsG,EACA,IAAK,GAAIC,GAAI,EAAGA,EAAID,EAActE,KAAK9H,OAAQqM,IAAK,CAChD,GAAIC,GAAWF,EAActE,KAAK,GAAGpC,KAAK,EAC1C,IAAI4G,EAAU,CACV,GAAIC,GAAgBjI,WAAS,QAAUgI,EAASxG,UAAU,EAAG,GAAGC,cAAgBuG,EAASxG,UAAU,GAAIsG,EAActE,KAAKuE,GACtHE,IACAH,EAActE,KAAKuE,GAAGjK,WAAWmC,MAAOjC,SAAUiK,EAAehN,KAAM+M,KAKvFjK,EAAUC,SAASwF,KAAKmE,GAAG7J,WAAWmC,MAAOjC,SAAU6J,EAAU5M,KAAMqG,KAG/EvD,EAAUC,SAASwF,KAAKmE,GAAG7L,eAAeiC,EAAUC,SAASuF,cAActD,KAAK1E,GAIxFgM,EAAQxJ,EAAU9C,MAAQ8C,EAAUC,SAASwE,gBAC7C6E,EAAqBrL,cAAcuL,EAASxJ,EAAUC,SAASkE,mBAE9D,EAEImF,EAAqBtJ,EAAU9C,MAAMS,SAAWqC,EAAUC,SAASwF,KAAK9H,QAAY,8BAA8BiB,KAAK0K,EAAqBN,oBAC7IM,EAAqBtJ,EAAU9C,MAAQ8C,EAAUC,SAASwF,KAE9D,KAAK,GAAIrG,GAAK,EAAGC,EAAKW,EAAUC,SAASwF,KAAMrG,EAAKC,EAAG1B,OAAQyB,IAAM,CACjE,GAAIqG,GAAOpG,EAAGD,GACV+K,EAAWnK,EAAUC,SAASwF,KAAK5B,QAAQ4B,GAC3C2E,EAAWnI,WAASjC,EAAU9C,KAAMoM,GAAsBa,GAC1D7B,EAAmBvL,OAAOwB,KAAK6L,EAInC,IAHA9B,EAAmBA,EAAiB5J,OAAO,SAAUC,GACjD,MAAO,QAAQC,KAAKD,KAEpByL,EAASC,YAA0D,IAA5CtN,OAAOwB,KAAK6L,EAASC,YAAY1M,OACxD,IAAK,GAAIkC,GAAK,EAAGyK,EAAqBhC,EAAkBzI,EAAKyK,EAAmB3M,OAAQkC,IAAM,CAC1F,GAAIgK,GAAkBS,EAAmBzK,EACzCgK,GAAkBA,EAAgBtJ,QAAQ,MAAO,IACjD6J,EAASC,WAAWR,GAAoBO,EAASC,WAAWR,GACbO,EAASC,WAAWR,GAA/DO,EAASrM,eAAe8L,GAG/BN,cAAYa,IAAcb,cAAYa,EAASnM,iBAC5C,0BAA0BW,KAAK0K,EAAqBN,iBACpDoB,EAASnM,cAAcwH,EAAKhB,iBAAiB,GAG7C2F,EAASnM,cAAcwH,EAAKhB,kBAGpCgB,EAAKjB,WAAY,MAMrC6B,EAAcpJ,UAAUK,eAAiB,SAAUC,GAC/CD,EAAeC,EAAWuF,OAE9BuD,EAAcpJ,UAAUsN,aAAe,SAAUC,EAAQ5C,GACrD,GAAI6C,GAASxI,WAAS2F,EAAM9E,KAAKuH,WAC7BI,KAAWD,IAGf1H,KAAKC,YAAY6E,EAAM4C,EAAQC,GAC/BtK,WAASyH,EAAOjI,oBAAkB6K,GAAU,KAAOA,EAAS1H,KAAKuH,YACjEpI,WAAS2F,EAAO,SAAU9E,MAAM4H,KAAKF,KAEzCnE,EAAcpJ,UAAU0N,UAAY,SAAU5G,GAa1C,IAAK,GAZD5F,GAAQ2E,KAWR8H,EAAS9H,KACJlF,EAAK,EAAGiN,EAAa9G,EAAUnG,EAAKiN,EAAWlN,OAAQC,KAXlD,SAAUgK,GACpB3F,WAAS2F,EAAMgD,GACf7N,OAAO8F,eAAe+H,EAAQhD,GAC1BnF,IAAK,WACD,MAAOR,YAAS2F,EAAMzJ,EAAMkM,aAEhC9H,IAAK,SAAUiI,GAAU,MAAOrM,GAAMoM,aAAaC,EAAQ5C,MAE/DzH,WAASyH,EAAO,SAAU,GAAI5J,gBAAgB4M,IAInCC,EAAWjN,KAI9ByI,EAAcpJ,UAAU6N,iBAAmB,SAAUC,EAAWC,GAC5D,GAAIC,GAAWhJ,WAAS8I,EAAWjI,KAC9ByG,eAAY0B,KACRnI,KAAKsE,gBAAgB2D,KACtBjI,KAAKsE,gBAAgB2D,GAAa,GAAIG,MAE1CpI,KAAKsE,gBAAgB2D,GAAWxI,IAAIyI,EAASC,EAASE,UAAUH,MAGxE3E,EAAcpJ,UAAUmO,oBAAsB,SAAUL,EAAWC,GAC/D,GAAIC,GAAWhJ,WAAS8I,EAAWjI,KAC9ByG,eAAY0B,IACbnI,KAAKsE,gBAAgB2D,GAAWtI,IAAIuI,GAASK,eAGrDhF,EAAcpJ,UAAUqO,QAAU,SAAUP,EAAWQ,EAAWC,GAC9D,GAAIP,GAAWhJ,WAAS8I,EAAWjI,MAC/B2I,EAAgB3I,KAAKwD,mBACzBxD,MAAKwD,qBAAsB,EACvBiF,IACAA,EAAUrO,KAAO6N,GAEhBxB,cAAY0B,IACbA,EAASS,KAAKH,EAElB,IAAII,GAAgB1J,WAAS,QAAU8I,EAAUa,OAAO,GAAGlI,cAAgBqH,EAAUc,MAAM,GAAI/I,KAC1FyG,eAAYoC,IACbA,EAAcG,KAAKhJ,KAAMyI,GAE7BzI,KAAKwD,oBAAsBmF,EAEvBD,IACA1I,KAAKiJ,cAAgBjJ,KAAKkJ,gBAC1BR,EAAQM,KAAKhJ,KAAMyI,IAEvBzI,KAAKkJ,iBAAkB,GAEpB3F,KC1UP4F,EAA0B,WAC1B,QAASA,MA2HT,MAzHAA,GAAShP,UAAUiP,gBAAkB,SAAUC,KAC/CF,EAAShP,UAAUmP,eAAiB,aACpCH,EAAShP,UAAUoP,YAAc,SAAUvN,GAEvC,GAAIuB,OAAuBO,KAAd9B,EAAEwN,QAAwBxN,EAAEuB,MAAQvB,EAAEwN,OAKnD,IAJAxJ,KAAKyJ,SAAWC,WAASnM,IACF,IAAnByC,KAAK0B,YACL1B,KAAK2J,aAAe3J,KAAK2D,WAEP,IAAlB3D,KAAKyJ,SACLzJ,KAAK4J,eAAiBxG,KAAKC,UAAU9F,GACrCyC,KAAK6J,sBAAwBzG,KAAKC,UAAUrD,KAAK2J,cAC7C3J,KAAK4J,iBAAmB5J,KAAK6J,2BAAkD/L,KAAzBkC,KAAKoJ,qBAA2CtL,KAAVP,IAE5FyC,KAAKoJ,gBAAgB7L,GACrByC,KAAK2J,aAAepM,OAIxB,IAAIA,IAAUyC,KAAK2J,kBAAyC7L,KAAzBkC,KAAKoJ,qBAA2CtL,KAAVP,EAErE,GAAc,KAAVA,GAA0B,OAAVA,EAEhByC,KAAKoJ,gBAAgB7L,GACrByC,KAAK2J,aAAepM,MAEnB,CAED,GAAIuM,GAAgBvM,CACpByC,MAAKoJ,gBAAgBU,GACrB9J,KAAK2J,aAAepM,IAKpC4L,EAAShP,UAAU4P,iBAAmB,SAAUC,GAC5ChK,KAAKoJ,gBAAkBY,GAE3Bb,EAAShP,UAAU8P,kBAAoB,SAAUD,GAC7ChK,KAAKsJ,eAAiBU,GAE1Bb,EAAShP,UAAUsN,aAAe,SAAUC,EAAQ5C,GAChD,GAAI6C,GAAS3H,KAAK2D,UAAYxE,WAAS2F,EAAM9E,KAAKuH,YAC9CxC,EAAM/E,KAAKkK,cAAgBlK,KAAK2E,UAChCI,GAAO4C,IAAWD,GAAU1H,KAAKzC,QAAUmK,OAC5B5J,KAAdiH,EAAIxH,OAAqC,KAAdwH,EAAIxH,SAGpCyC,KAAKC,YAAY6E,EAAM4C,EAAQC,GAC/BtK,WAASyH,EAAOjI,oBAAkB6K,GAAU,KAAOA,EAAS1H,KAAKuH,YACjEpI,WAAS2F,EAAO,SAAU9E,MAAM4H,KAAKF,KAGzCyB,EAAShP,UAAUoI,gBAAkB,SAAU6B,GAC3C,GAAI/I,GAAQ2E,KAERmK,EAAwB/F,GAAapE,IAIzCgE,YAAW,WAEP,GAAsB,mBAAXiC,QAAwB,CAC/BkE,EAAsB/D,SAAS+D,EAAsBxF,QACrD,IAAII,GAAMoF,EAAsBD,cAAgBC,EAAsBxF,OACtEI,GAAIiD,iBAAiB,QAASmC,EAAsBC,UAAUnG,KAAKkG,IACnEpF,EAAIiD,iBAAiB,OAAQmC,EAAsBE,SAASpG,KAAKkG,IAErE9O,EAAMoI,YAAa,KAG3B0F,EAAShP,UAAUmQ,iBAAmB,SAAUC,GAC5CvK,KAAKwK,SAAWD,EAChBvK,KAAKuK,SAAWA,GAEpBpB,EAAShP,UAAUsQ,WAAa,SAAUlN,GACtC,GAAImN,GAAS,uBAEQ5M,KAAjBkC,KAAKwJ,QACLxJ,KAAKzC,MAAQA,EAKTyC,KAAK6F,QACgB,iBAAVtI,GACHmN,EAAO5O,KAAKkE,KAAK6F,MAAMxH,cAAcyH,WACrC9F,KAAKwJ,QAAUjM,IAAUyC,KAAKzC,MAG9ByC,KAAKwJ,QAAUjM,EAInByC,KAAKwJ,QAAUjM,IAAUyC,KAAKzC,OAI1CyC,KAAK2J,aAAepM,EACpByC,KAAK0B,WAAY,EAGjB1B,KAAKiJ,eAAgBjJ,KAAKyD,YAK9B0F,EAAShP,UAAUiQ,UAAY,SAAUpO,IAEV,IAAvBgE,KAAK2K,eACL3K,KAAK4K,MAAMhD,KAAK5L,IAGxBmN,EAAShP,UAAUkQ,SAAW,SAAUrO,GACpCgE,KAAKsJ,kBAEsB,IAAvBtJ,KAAK2K,eACL3K,KAAK6K,KAAKjD,KAAK5L,IAGvBmN,EAAS7O,YAAa,EACf6O,KH9HPjL,EAAiB4M,4BAqErBC,sBAAoBhN,QAASA"}
|
package/dist/global/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* filename: index.d.ts
|
|
3
|
-
* version : 20.
|
|
3
|
+
* version : 20.3.50
|
|
4
4
|
* Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
|
|
5
5
|
* Use of this code is subject to the terms of our license.
|
|
6
6
|
* A copy of the current license can be obtained at any time by e-mailing
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { QueryList, SimpleChanges, SimpleChange, EmbeddedViewRef } from '@angular/core';
|
|
2
|
+
import { getValue, setValue, isNullOrUndefined } from '@syncfusion/ej2-base';
|
|
3
|
+
import { clearTemplate, registerEvents } from './util';
|
|
4
|
+
|
|
5
|
+
const refRegex: RegExp = /Ref$/;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Complex Array Base module
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export interface IChildChange {
|
|
12
|
+
dirIndex: number;
|
|
13
|
+
change: Object;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface Tag {
|
|
17
|
+
hasChanges: boolean;
|
|
18
|
+
getProperties: Function;
|
|
19
|
+
isInitChanges: boolean;
|
|
20
|
+
clearTemplate?: (args: string[]) => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export class ComplexBase<T> {
|
|
24
|
+
public isUpdated: boolean;
|
|
25
|
+
public hasChanges?: boolean = false;
|
|
26
|
+
public dirIndex?: number;
|
|
27
|
+
public propCollection?: { [key: string]: Object } = {};
|
|
28
|
+
public dataSource?: { [key: string]: Object } = {};
|
|
29
|
+
public property?: string;
|
|
30
|
+
public tags?: string[] = [];
|
|
31
|
+
public isInitChanges: boolean;
|
|
32
|
+
private tagObjects?: { name: string, instance: Tag }[] = [];
|
|
33
|
+
private registeredTemplate: { [key: string]: EmbeddedViewRef<Object>[] };
|
|
34
|
+
// tslint:disable-next-line:no-any
|
|
35
|
+
public directivePropList: any;
|
|
36
|
+
public ngOnInit(): void {
|
|
37
|
+
this.registeredTemplate = {};
|
|
38
|
+
for (let tag of this.tags) {
|
|
39
|
+
let objInstance: Tag = getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), this);
|
|
40
|
+
if (objInstance) {
|
|
41
|
+
this.tagObjects.push({ instance: objInstance, name: tag });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
let templateProperties: string[] = Object.keys(this);
|
|
45
|
+
for(let i = 0; i < templateProperties.length; i++) {
|
|
46
|
+
var tempProp = getValue(templateProperties[i], this);
|
|
47
|
+
if (typeof tempProp === 'object' && tempProp.elementRef && !getValue(templateProperties[i].indexOf('Ref') !== -1 ? templateProperties[i] : templateProperties[i] + 'Ref', this)){
|
|
48
|
+
setValue(templateProperties[i].indexOf('Ref') !== -1 ? templateProperties[i] : templateProperties[i] + 'Ref', tempProp, this);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
templateProperties = Object.keys(this)
|
|
52
|
+
templateProperties = templateProperties.filter((val: string): boolean => {
|
|
53
|
+
return /Ref$/i.test(val);
|
|
54
|
+
});
|
|
55
|
+
for (let tempName of templateProperties) {
|
|
56
|
+
let propName: string = tempName.replace('Ref', '');
|
|
57
|
+
setValue(propName.replace('_', '.'), getValue(propName, this), this.propCollection);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Angular 9 compatibility to overcome ngOnchange not get triggered issue
|
|
61
|
+
// To Update properties to "this.propCollection"
|
|
62
|
+
let propList: string[] = Object.keys(this);
|
|
63
|
+
/* istanbul ignore next */
|
|
64
|
+
if (this.directivePropList) {
|
|
65
|
+
for (let k: number = 0; k < this.directivePropList.length; k++) {
|
|
66
|
+
let dirPropName: string = this.directivePropList[k];
|
|
67
|
+
if (propList.indexOf(dirPropName) !== -1 && getValue(dirPropName, this)) {
|
|
68
|
+
setValue(dirPropName, getValue(dirPropName, this), this.propCollection);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
this.hasChanges = true;
|
|
72
|
+
}
|
|
73
|
+
this.isInitChanges = true;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
protected registerEvents(eventList: string[]): void {
|
|
77
|
+
registerEvents(eventList, this, true);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
public ngOnChanges(changes: SimpleChanges): void {
|
|
81
|
+
for (let propName of Object.keys(changes)) {
|
|
82
|
+
let changedVal: SimpleChange = changes[propName];
|
|
83
|
+
this.propCollection[propName] = changedVal.currentValue;
|
|
84
|
+
}
|
|
85
|
+
this.isUpdated = false;
|
|
86
|
+
this.hasChanges = true;
|
|
87
|
+
}
|
|
88
|
+
/* istanbul ignore next */
|
|
89
|
+
public clearTemplate(templateNames: string[]): void {
|
|
90
|
+
clearTemplate(this, templateNames);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
public getProperties(): { [key: string]: Object } {
|
|
94
|
+
/* istanbul ignore next */
|
|
95
|
+
for (let tagObject of this.tagObjects) {
|
|
96
|
+
this.propCollection[tagObject.name] = tagObject.instance.getProperties();
|
|
97
|
+
}
|
|
98
|
+
return this.propCollection;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public isChanged(): boolean {
|
|
102
|
+
let result: boolean = this.hasChanges;
|
|
103
|
+
if (!isNullOrUndefined(this.propCollection[this.property])) {
|
|
104
|
+
let tempProps: any = this.propCollection[this.property];
|
|
105
|
+
let props: string[]= Object.keys(tempProps[0]);
|
|
106
|
+
for (let d: number = 0; d < props.length; d++) {
|
|
107
|
+
if (!isNullOrUndefined(this.propCollection[props[d]])) {
|
|
108
|
+
let val: any = getValue(props[d], this);
|
|
109
|
+
let propVal: any = (this.propCollection[this.property] as any)[0][props[d]];
|
|
110
|
+
if (!isNullOrUndefined(val) && this.propCollection[props[d]] !== val
|
|
111
|
+
&& propVal !== val) {
|
|
112
|
+
setValue(props[d], val, (this.propCollection[this.property] as any)[0]);
|
|
113
|
+
setValue(props[d], val, this.propCollection);
|
|
114
|
+
this.hasChanges = true;
|
|
115
|
+
this.isUpdated = false;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/* istanbul ignore next */
|
|
122
|
+
for (let item of this.tagObjects) {
|
|
123
|
+
result = result || item.instance.hasChanges;
|
|
124
|
+
}
|
|
125
|
+
return result || this.hasChanges;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
public ngAfterContentChecked(): void {
|
|
129
|
+
this.hasChanges = this.isChanged();
|
|
130
|
+
if (this.isInitChanges || this.hasChanges){
|
|
131
|
+
let templateProperties: string[] = Object.keys(this);
|
|
132
|
+
templateProperties = templateProperties.filter((val: string) => {
|
|
133
|
+
return refRegex.test(val);
|
|
134
|
+
});
|
|
135
|
+
for (let tempName of templateProperties) {
|
|
136
|
+
let propName: string = tempName.replace('Ref', '');
|
|
137
|
+
setValue(propName.replace('_', '.'), getValue(propName, this), this.propCollection);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
public ngAfterViewChecked(): void {
|
|
143
|
+
/* istanbul ignore next */
|
|
144
|
+
if (this.isUpdated) {
|
|
145
|
+
this.hasChanges = false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
public ngAfterViewInit(): void {
|
|
150
|
+
/* istanbul ignore next */
|
|
151
|
+
this.isInitChanges = false;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
public ngOnDestroy(): void {
|
|
155
|
+
/* istanbul ignore next */
|
|
156
|
+
this.directivePropList = [];
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export class ArrayBase<T> {
|
|
162
|
+
public isInitChanges: boolean;
|
|
163
|
+
public list: T[] & ComplexBase<T>[] = [];
|
|
164
|
+
public children: QueryList<T>;
|
|
165
|
+
public hasChanges: boolean = false;
|
|
166
|
+
private propertyName: string;
|
|
167
|
+
public hasNewChildren: boolean;
|
|
168
|
+
|
|
169
|
+
constructor(propertyName: string) {
|
|
170
|
+
this.propertyName = propertyName;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
public ngOnInit(): void {
|
|
174
|
+
this.isInitChanges = true;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
public ngAfterContentInit(): void {
|
|
178
|
+
let index: number = 0;
|
|
179
|
+
/* istanbul ignore next */
|
|
180
|
+
this.list = this.children.map((child: T & ComplexBase<T>) => {
|
|
181
|
+
child.dirIndex = index++;
|
|
182
|
+
child.property = this.propertyName;
|
|
183
|
+
return child;
|
|
184
|
+
});
|
|
185
|
+
this.hasChanges = true;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
public getProperties(): Object[] {
|
|
189
|
+
let onlyProp: Object[] = [];
|
|
190
|
+
for (let item of this.list) {
|
|
191
|
+
onlyProp.push((<{ getProperties: Function }>item).getProperties());
|
|
192
|
+
}
|
|
193
|
+
return onlyProp;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
public isChanged(): boolean {
|
|
197
|
+
let result: boolean = false;
|
|
198
|
+
let index: number = 0;
|
|
199
|
+
let isSourceChanged: boolean = false;
|
|
200
|
+
// tslint:disable-next-line
|
|
201
|
+
let childrenDataSource: any = this.children.map(
|
|
202
|
+
(child: T & ComplexBase<T>) => {
|
|
203
|
+
return child;
|
|
204
|
+
}
|
|
205
|
+
);
|
|
206
|
+
/* istanbul ignore next */
|
|
207
|
+
if (this.list.length === this.children.length) {
|
|
208
|
+
for (let i: number = 0; i < this.list.length; i++) {
|
|
209
|
+
if (this.list[i].propCollection.dataSource) {
|
|
210
|
+
if (this.list[i].dataSource && this.list[i].propCollection.dataSource !== this.list[i].dataSource) {
|
|
211
|
+
this.list[i].propCollection.dataSource = this.list[i].dataSource;
|
|
212
|
+
this.list[i].hasChanges = true;
|
|
213
|
+
}
|
|
214
|
+
isSourceChanged = (JSON.stringify(this.list[i].propCollection.dataSource) !==
|
|
215
|
+
JSON.stringify(childrenDataSource[i].propCollection.dataSource));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
this.hasNewChildren = (this.list.length !== this.children.length || isSourceChanged) ? true : null;
|
|
221
|
+
if (this.hasNewChildren) {
|
|
222
|
+
this.list = this.children.map((child: T & ComplexBase<T>) => {
|
|
223
|
+
child.dirIndex = index++;
|
|
224
|
+
child.property = this.propertyName;
|
|
225
|
+
return child;
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
/* istanbul ignore end */
|
|
229
|
+
for (let item of this.list) {
|
|
230
|
+
result = result || (<{ hasChanges: boolean }>item).hasChanges;
|
|
231
|
+
}
|
|
232
|
+
return !!this.list.length && result;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
public clearTemplate(templateNames: string[]): void {
|
|
236
|
+
/* istanbul ignore next */
|
|
237
|
+
for (let item of this.list) {
|
|
238
|
+
(<{ clearTemplate: Function }>item).clearTemplate(templateNames && templateNames.map((val: string): string => {
|
|
239
|
+
return new RegExp(this.propertyName).test(val) ? val.replace(this.propertyName + '.', '') : val;
|
|
240
|
+
}));
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
public ngAfterContentChecked(): void {
|
|
245
|
+
this.hasChanges = this.isChanged();
|
|
246
|
+
for (let i: number = 0; i < this.list.length; i++) {
|
|
247
|
+
if (getValue('childColumns', this.list[i]) && getValue('property', this.list[i]) === 'columns') {
|
|
248
|
+
setValue('columns', getValue('childColumns', this.list[i]).getProperties(), this.list[i].propCollection);
|
|
249
|
+
}
|
|
250
|
+
this.list[i].isUpdated = true;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
public ngAfterViewInit(): void {
|
|
255
|
+
this.isInitChanges = false;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
public ngOnDestroy(): void {
|
|
259
|
+
this.list = [];
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
}
|