@syncfusion/ej2-lists 22.2.9 → 23.1.36

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.
Files changed (73) hide show
  1. package/CHANGELOG.md +18 -46
  2. package/dist/ej2-lists.min.js +2 -2
  3. package/dist/ej2-lists.umd.min.js +2 -2
  4. package/dist/ej2-lists.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-lists.es2015.js +103 -218
  6. package/dist/es6/ej2-lists.es2015.js.map +1 -1
  7. package/dist/es6/ej2-lists.es5.js +111 -237
  8. package/dist/es6/ej2-lists.es5.js.map +1 -1
  9. package/dist/global/ej2-lists.min.js +2 -2
  10. package/dist/global/ej2-lists.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +9 -9
  13. package/src/common/list-base.d.ts +0 -6
  14. package/src/common/list-base.js +1 -1
  15. package/src/list-view/list-view-model.d.ts +7 -7
  16. package/src/list-view/list-view.d.ts +6 -6
  17. package/src/list-view/list-view.js +9 -18
  18. package/src/list-view/virtualization.d.ts +3 -3
  19. package/src/list-view/virtualization.js +101 -218
  20. package/styles/list-view/bootstrap-dark.scss +1 -1
  21. package/styles/list-view/bootstrap.scss +1 -1
  22. package/styles/list-view/bootstrap4.scss +1 -1
  23. package/styles/list-view/bootstrap5-dark.scss +1 -1
  24. package/styles/list-view/bootstrap5.scss +1 -1
  25. package/styles/list-view/fabric-dark.scss +1 -1
  26. package/styles/list-view/fabric.scss +1 -1
  27. package/styles/list-view/fluent-dark.scss +1 -1
  28. package/styles/list-view/fluent.scss +1 -1
  29. package/styles/list-view/highcontrast-light.scss +1 -1
  30. package/styles/list-view/highcontrast.scss +1 -1
  31. package/styles/list-view/material-dark.css +0 -1
  32. package/styles/list-view/material-dark.scss +1 -1
  33. package/styles/list-view/material.css +0 -1
  34. package/styles/list-view/material.scss +1 -1
  35. package/styles/list-view/material3-dark.css +0 -1
  36. package/styles/list-view/material3-dark.scss +1 -1
  37. package/styles/list-view/material3.css +0 -1
  38. package/styles/list-view/material3.scss +1 -1
  39. package/styles/list-view/tailwind-dark.css +0 -1
  40. package/styles/list-view/tailwind-dark.scss +1 -1
  41. package/styles/list-view/tailwind.css +0 -1
  42. package/styles/list-view/tailwind.scss +1 -1
  43. package/styles/material-dark.css +0 -1
  44. package/styles/material.css +0 -1
  45. package/styles/material3-dark.css +0 -1
  46. package/styles/material3-dark.scss +1 -1
  47. package/styles/material3.css +0 -1
  48. package/styles/material3.scss +1 -1
  49. package/styles/sortable/bootstrap-dark.scss +1 -1
  50. package/styles/sortable/bootstrap.scss +1 -1
  51. package/styles/sortable/bootstrap4.scss +1 -1
  52. package/styles/sortable/bootstrap5-dark.scss +1 -1
  53. package/styles/sortable/bootstrap5.scss +1 -1
  54. package/styles/sortable/fabric-dark.scss +1 -1
  55. package/styles/sortable/fabric.scss +1 -1
  56. package/styles/sortable/fluent-dark.scss +1 -1
  57. package/styles/sortable/fluent.scss +1 -1
  58. package/styles/sortable/highcontrast-light.scss +1 -1
  59. package/styles/sortable/highcontrast.scss +1 -1
  60. package/styles/sortable/material-dark.css +0 -1
  61. package/styles/sortable/material-dark.scss +1 -1
  62. package/styles/sortable/material.css +0 -1
  63. package/styles/sortable/material.scss +1 -1
  64. package/styles/sortable/material3-dark.css +0 -1
  65. package/styles/sortable/material3-dark.scss +1 -1
  66. package/styles/sortable/material3.css +0 -1
  67. package/styles/sortable/material3.scss +1 -1
  68. package/styles/sortable/tailwind-dark.css +0 -1
  69. package/styles/sortable/tailwind-dark.scss +1 -1
  70. package/styles/sortable/tailwind.css +0 -1
  71. package/styles/sortable/tailwind.scss +1 -1
  72. package/styles/tailwind-dark.css +0 -2
  73. package/styles/tailwind.css +0 -2
@@ -1,4 +1,4 @@
1
- import { Animation, Base, ChildProperty, Complex, Component, Draggable, Event, EventHandler, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, attributes, closest, compareElementParent, compile, detach, extend, formatUnit, getComponent, getUniqueID, getValue, isBlazor, isNullOrUndefined, isVisible, merge, prepend, remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';
1
+ import { Animation, Base, ChildProperty, Complex, Component, Draggable, Event, EventHandler, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, animationMode, append, attributes, closest, compareElementParent, compile, detach, extend, formatUnit, getComponent, getUniqueID, getValue, isBlazor, isNullOrUndefined, isVisible, merge, prepend, remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';
2
2
  import { DataManager, Query } from '@syncfusion/ej2-data';
3
3
  import { createCheckBox } from '@syncfusion/ej2-buttons';
4
4
 
@@ -280,7 +280,7 @@ var ListBase;
280
280
  li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);
281
281
  li.classList.add(cssClass.level + '-' + ariaAttributes.level);
282
282
  li.setAttribute('aria-level', ariaAttributes.level.toString());
283
- if (ariaAttributes.groupItemRole == 'presentation') {
283
+ if (ariaAttributes.groupItemRole == 'presentation' || ariaAttributes.itemRole == 'presentation') {
284
284
  li.removeAttribute('aria-level');
285
285
  }
286
286
  anchorElement = li.querySelector('.' + cssClass.anchorWrap);
@@ -1407,7 +1407,7 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
1407
1407
  this.element.style.overflow = 'hidden';
1408
1408
  this.aniObj.animate(fromView, {
1409
1409
  name: (reverse === true ? anim[0] : anim[1]),
1410
- duration: duration,
1410
+ duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,
1411
1411
  timingFunction: this.animation.easing,
1412
1412
  // eslint-disable-next-line
1413
1413
  end: function (model) {
@@ -1420,7 +1420,7 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
1420
1420
  toView.style.display = '';
1421
1421
  this.aniObj.animate(toView, {
1422
1422
  name: (reverse === true ? anim[2] : anim[3]),
1423
- duration: duration,
1423
+ duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,
1424
1424
  timingFunction: this.animation.easing,
1425
1425
  end: function () {
1426
1426
  _this.trigger('actionComplete');
@@ -1432,7 +1432,7 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
1432
1432
  ListView.prototype.preRender = function () {
1433
1433
  if (this.template) {
1434
1434
  try {
1435
- if (document.querySelectorAll(this.template).length) {
1435
+ if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {
1436
1436
  this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);
1437
1437
  }
1438
1438
  }
@@ -1445,7 +1445,7 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
1445
1445
  headerTemplate: this.headerTemplate,
1446
1446
  groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',
1447
1447
  ariaAttributes: {
1448
- itemRole: 'listitem', listRole: 'group', itemText: '',
1448
+ itemRole: 'listitem', listRole: 'list', itemText: '',
1449
1449
  groupItemRole: 'presentation', wrapperRole: 'presentation'
1450
1450
  },
1451
1451
  // eslint-disable-next-line
@@ -1656,6 +1656,9 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
1656
1656
  }
1657
1657
  };
1658
1658
  ListView.prototype.clickHandler = function (e) {
1659
+ if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {
1660
+ return;
1661
+ }
1659
1662
  var target = e.target;
1660
1663
  this.targetElement = target;
1661
1664
  var classList = target.classList;
@@ -2389,18 +2392,6 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
2389
2392
  if (this.enableVirtualization) {
2390
2393
  if (Object.keys(this.dataSource).length) {
2391
2394
  if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {
2392
- if (this.isReact || this.isVue) {
2393
- if (typeof this.template == "string") {
2394
- this.listBaseOption.template = null;
2395
- }
2396
- if (typeof this.groupTemplate == "string") {
2397
- this.listBaseOption.groupTemplate = null;
2398
- }
2399
- }
2400
- else {
2401
- this.listBaseOption.template = null;
2402
- this.listBaseOption.groupTemplate = null;
2403
- }
2404
2395
  this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);
2405
2396
  }
2406
2397
  }
@@ -2433,7 +2424,7 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
2433
2424
  */
2434
2425
  ListView.prototype.render = function () {
2435
2426
  this.element.classList.add(classNames.root);
2436
- attributes(this.element, { role: 'list', tabindex: '0' });
2427
+ attributes(this.element, { tabindex: '0' });
2437
2428
  this.setCSSClass();
2438
2429
  this.setEnableRTL();
2439
2430
  this.setEnable();
@@ -3151,6 +3142,10 @@ var Virtualization = /** @__PURE__ @class */ (function () {
3151
3142
  * @private
3152
3143
  */
3153
3144
  Virtualization.prototype.uiVirtualization = function () {
3145
+ this.commonTemplate = '<div class="e-text-content" role="presentation"> ' +
3146
+ '<span class="e-list-text"> ${' + this.listViewInstance.fields.text + '} </span></div>';
3147
+ this.templateFunction = compile(this.listViewInstance.template || this.commonTemplate, this.listViewInstance);
3148
+ this.groupTemplateFunction = compile(this.listViewInstance.groupTemplate || this.commonTemplate, this.listViewInstance);
3154
3149
  this.wireScrollEvent(false);
3155
3150
  var curViewDS = this.listViewInstance.curViewDS;
3156
3151
  var firstDs = curViewDS.slice(0, 1);
@@ -3906,83 +3901,139 @@ var Virtualization = /** @__PURE__ @class */ (function () {
3906
3901
  this.refreshItemHeight();
3907
3902
  };
3908
3903
  Virtualization.prototype.createUIItem = function (args) {
3909
- var virtualTemplate = this.listViewInstance.template;
3910
- var template = this.listViewInstance.createElement('div');
3911
- var commonTemplate = '<div class="e-text-content" role="presentation"> ' +
3912
- '<span class="e-list-text"> ${' + this.listViewInstance.fields.text + '} </span></div>';
3904
+ var template = document.createElement('div');
3905
+ this.templateData = args.curData.isHeader ? args.curData.items[0] :
3906
+ args.curData;
3913
3907
  if (this.listViewInstance.isReact) {
3914
- commonTemplate = null;
3908
+ this.commonTemplate = null;
3915
3909
  }
3916
3910
  if (this.listViewInstance.showCheckBox) {
3917
3911
  // eslint-disable-next-line
3918
3912
  this.listViewInstance.renderCheckbox(args);
3919
3913
  if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&
3920
3914
  (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {
3921
- var div = document.createElement('div');
3922
- div.innerHTML = this.listViewInstance.template || commonTemplate;
3923
- if (div.children && div.children[0]) {
3924
- div.children[0].classList.add('e-checkbox');
3915
+ var div_1 = document.createElement('div');
3916
+ var nodes = this.templateFunction(this.templateData, this.listViewInstance);
3917
+ if (this.listViewInstance.template && this.listViewInstance.isReact) {
3918
+ this.listViewInstance.renderReactTemplates();
3919
+ }
3920
+ [].slice.call(nodes).forEach(function (ele) {
3921
+ div_1.appendChild(ele);
3922
+ });
3923
+ if (div_1.children && div_1.children[0]) {
3924
+ div_1.children[0].classList.add('e-checkbox');
3925
3925
  if (this.listViewInstance.checkBoxPosition === 'Left') {
3926
- div.children[0].classList.add('e-checkbox-left');
3926
+ div_1.children[0].classList.add('e-checkbox-left');
3927
3927
  }
3928
3928
  else {
3929
- div.children[0].classList.add('e-checkbox-right');
3929
+ div_1.children[0].classList.add('e-checkbox-right');
3930
3930
  }
3931
3931
  if (this.listViewInstance.checkBoxPosition === 'Left') {
3932
- div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);
3932
+ div_1.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div_1.childNodes[0].children[0]);
3933
3933
  }
3934
3934
  else {
3935
- div.children[0].appendChild(this.listViewInstance.virtualCheckBox);
3935
+ div_1.children[0].appendChild(this.listViewInstance.virtualCheckBox);
3936
3936
  }
3937
- this.listViewInstance.template = div.innerHTML;
3937
+ template.innerHTML = div_1.innerHTML;
3938
3938
  }
3939
3939
  }
3940
- if (this.isVueFunctionTemplate())
3941
- return;
3942
- template.innerHTML = this.listViewInstance.template;
3943
- this.listViewInstance.template = virtualTemplate;
3940
+ else {
3941
+ var div_2 = document.createElement('div');
3942
+ var nodes = this.templateFunction(this.templateData, this.listViewInstance);
3943
+ if (this.listViewInstance.template && this.listViewInstance.isReact) {
3944
+ this.listViewInstance.renderReactTemplates();
3945
+ }
3946
+ [].slice.call(nodes).forEach(function (ele) {
3947
+ div_2.appendChild(ele);
3948
+ });
3949
+ template.innerHTML = div_2.innerHTML;
3950
+ }
3944
3951
  }
3945
3952
  else {
3946
- if (this.isVueFunctionTemplate())
3947
- return;
3948
- template.innerHTML = this.listViewInstance.template || commonTemplate;
3949
- }
3950
- // eslint-disable-next-line
3951
- var templateElements = template.getElementsByTagName('*');
3952
- var groupTemplate = this.listViewInstance.createElement('div');
3953
- if (this.listViewInstance.fields.groupBy) {
3954
- groupTemplate.innerHTML = this.listViewInstance.groupTemplate || commonTemplate;
3953
+ var nodes = this.templateFunction(this.templateData, this.listViewInstance);
3954
+ if (this.listViewInstance.template && this.listViewInstance.isReact) {
3955
+ this.listViewInstance.renderReactTemplates();
3956
+ }
3957
+ [].slice.call(nodes).forEach(function (ele) {
3958
+ template.appendChild(ele);
3959
+ });
3955
3960
  }
3956
- // eslint-disable-next-line
3957
- var groupTemplateElements = groupTemplate.getElementsByTagName('*');
3958
3961
  if (args.curData.isHeader) {
3959
3962
  this.headerData = args.curData;
3960
3963
  }
3961
- this.templateData = args.curData.isHeader ? args.curData.items[0] :
3962
- args.curData;
3963
- if (!this.listViewInstance.isReact || (typeof this.listViewInstance.template == "string" && !args.item.classList.contains("e-list-group-item")) ||
3964
- (typeof this.listViewInstance.groupTemplate == "string" && args.item.classList.contains("e-list-group-item"))) {
3964
+ var groupTemplate = this.listViewInstance.createElement('div');
3965
+ if (this.listViewInstance.fields.groupBy) {
3966
+ var nodes = this.groupTemplateFunction(this.headerData, this.listViewInstance);
3967
+ if (this.listViewInstance.template && this.listViewInstance.isReact) {
3968
+ this.listViewInstance.renderReactTemplates();
3969
+ }
3970
+ [].slice.call(nodes).forEach(function (ele) {
3971
+ groupTemplate.appendChild(ele);
3972
+ });
3973
+ }
3974
+ if ((!this.listViewInstance.isReact || (typeof this.listViewInstance.template == "string" && !args.item.classList.contains("e-list-group-item")) ||
3975
+ (typeof this.listViewInstance.groupTemplate == "string" && args.item.classList.contains("e-list-group-item"))) && !this.listViewInstance.isVue) {
3965
3976
  args.item.innerHTML = '';
3966
3977
  }
3967
3978
  args.item.context = { data: args.curData, nodes: { flatTemplateNodes: [], groupTemplateNodes: [] } };
3968
- for (var i = 0; i < templateElements.length; i++) {
3969
- this.compileTemplate(templateElements[i], args.item, false);
3979
+ for (var i = 0; i < template.children.length; i++) {
3980
+ this.compileTemplate(template.children[i], args.item, false);
3970
3981
  }
3971
- for (var i = 0; i < groupTemplateElements.length; i++) {
3972
- this.compileTemplate(groupTemplateElements[i], args.item, true);
3982
+ for (var i = 0; i < groupTemplate.children.length; i++) {
3983
+ this.compileTemplate(groupTemplate.children[i], args.item, true);
3973
3984
  }
3974
3985
  args.item.context.template = args.curData.isHeader ? template.firstElementChild :
3975
3986
  groupTemplate.firstElementChild;
3976
3987
  args.item.context.type = args.curData.isHeader ? 'flatList' : 'groupList';
3977
3988
  var element = args.curData.isHeader ? groupTemplate : template;
3978
- if (element.firstElementChild) {
3989
+ if (element.firstElementChild && !this.listViewInstance.isReact && !this.listViewInstance.isVue) {
3979
3990
  args.item.insertBefore(element.firstElementChild, null);
3980
3991
  }
3981
3992
  };
3982
3993
  Virtualization.prototype.compileTemplate = function (element, item, isHeader) {
3983
- this.textProperty(element, item, isHeader);
3984
- this.classProperty(element, item, isHeader);
3985
- this.attributeProperty(element, item, isHeader);
3994
+ var _this = this;
3995
+ var subNode = {};
3996
+ subNode.onChange = function (value) {
3997
+ var groupTemplateElements;
3998
+ var templateElements;
3999
+ if (_this.listViewInstance.isVue) {
4000
+ groupTemplateElements = _this.groupTemplateFunction(value);
4001
+ templateElements = _this.templateFunction(value);
4002
+ }
4003
+ else {
4004
+ groupTemplateElements = _this.groupTemplateFunction(value, _this.listViewInstance);
4005
+ templateElements = _this.templateFunction(value, _this.listViewInstance);
4006
+ }
4007
+ if (_this.listViewInstance.template && _this.listViewInstance.isReact) {
4008
+ _this.listViewInstance.renderReactTemplates();
4009
+ }
4010
+ var currentTemplate = templateElements;
4011
+ if (value.isHeader) {
4012
+ currentTemplate = groupTemplateElements;
4013
+ }
4014
+ [].slice.call(currentTemplate).forEach(function (currentElement) {
4015
+ var RemovableClass = element.classList.value.replace('e-checkbox', '');
4016
+ RemovableClass = RemovableClass.replace('e-checkbox-left', '');
4017
+ RemovableClass = RemovableClass.replace('e-checkbox-right', '');
4018
+ removeClass([element], RemovableClass.split(' ').filter(function (css) { return css; }));
4019
+ addClass([element], Array.from(currentElement.classList));
4020
+ for (var i = 0; i < element.attributes.length; i++) {
4021
+ if (element.attributes[i].name != 'class') {
4022
+ var newData = currentElement.getAttribute(element.attributes[i].name);
4023
+ element.setAttribute(element.attributes[i].name, newData);
4024
+ }
4025
+ }
4026
+ [].slice.call(element.children).forEach(function (ele) {
4027
+ if (!ele.classList.contains('e-listview-checkbox') && !(ele.classList.contains('e-checkbox-left') || ele.classList.contains('e-checkbox-right'))) {
4028
+ ele.remove();
4029
+ }
4030
+ });
4031
+ [].slice.call(currentElement.children).forEach(function (ele) {
4032
+ element.appendChild(ele);
4033
+ });
4034
+ });
4035
+ };
4036
+ this.updateContextData(item, subNode, isHeader);
3986
4037
  };
3987
4038
  Virtualization.prototype.onChange = function (newData, listElement) {
3988
4039
  listElement.context.data = newData;
@@ -4036,183 +4087,6 @@ var Virtualization = /** @__PURE__ @class */ (function () {
4036
4087
  listElement.context.nodes.flatTemplateNodes.push(node);
4037
4088
  }
4038
4089
  };
4039
- Virtualization.prototype.classProperty = function (element, listElement, isHeader) {
4040
- var regex = new RegExp('\\${([^}]*)}', 'g');
4041
- var resultantOutput = [];
4042
- var regexMatch;
4043
- while (regexMatch !== null) {
4044
- var match = regex.exec(element.className);
4045
- resultantOutput.push(match);
4046
- regexMatch = match;
4047
- if (regexMatch === null) {
4048
- resultantOutput.pop();
4049
- }
4050
- }
4051
- if (resultantOutput && resultantOutput.length) {
4052
- var _loop_1 = function (i) {
4053
- var classNameMatch = resultantOutput[i];
4054
- // eslint-disable-next-line
4055
- var classFunction;
4056
- if (classNameMatch[1].indexOf('?') !== -1 && classNameMatch[1].indexOf(':') !== -1) {
4057
- // tslint:disable-next-line:no-function-constructor-with-string-args
4058
- classFunction = new Function('data', 'return ' + classNameMatch[1].replace(/\$/g, 'data.'));
4059
- }
4060
- else {
4061
- // tslint:disable-next-line:no-function-constructor-with-string-args
4062
- classFunction = new Function('data', 'return ' + 'data.' + classNameMatch[1]);
4063
- }
4064
- // eslint-disable-next-line
4065
- var subNode = {};
4066
- if (isHeader) {
4067
- subNode.bindedvalue = classFunction(this_1.headerData);
4068
- }
4069
- else {
4070
- subNode.bindedvalue = classFunction(this_1.templateData);
4071
- }
4072
- subNode.onChange = function (value) {
4073
- if (subNode.bindedvalue) {
4074
- removeClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));
4075
- }
4076
- var newCss = classFunction(value);
4077
- if (newCss) {
4078
- addClass([element], (newCss).split(' ').filter(function (css) { return css; }));
4079
- }
4080
- subNode.bindedvalue = newCss;
4081
- };
4082
- var className = classNameMatch[0].split(' ');
4083
- for (var i_1 = 0; i_1 < className.length; i_1++) {
4084
- element.classList.remove(className[i_1]);
4085
- }
4086
- if (subNode.bindedvalue) {
4087
- addClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));
4088
- }
4089
- this_1.updateContextData(listElement, subNode, isHeader);
4090
- };
4091
- var this_1 = this;
4092
- for (var i = 0; i < resultantOutput.length; i++) {
4093
- _loop_1(i);
4094
- }
4095
- }
4096
- };
4097
- Virtualization.prototype.attributeProperty = function (element, listElement, isHeader) {
4098
- var attributeNames = [];
4099
- for (var i = 0; i < element.attributes.length; i++) {
4100
- attributeNames.push(element.attributes[i].nodeName);
4101
- }
4102
- if (attributeNames.indexOf('class') !== -1) {
4103
- attributeNames.splice(attributeNames.indexOf('class'), 1);
4104
- }
4105
- var _loop_2 = function (i) {
4106
- var attributeName = attributeNames[i];
4107
- var attrNameMatch = new RegExp('\\${([^}]*)}', 'g').exec(attributeName) || [];
4108
- var attrValueMatch = new RegExp('\\${([^}]*)}', 'g').exec(element.getAttribute(attributeName))
4109
- || [];
4110
- // eslint-disable-next-line
4111
- var attributeNameFunction;
4112
- // eslint-disable-next-line
4113
- var attributeValueFunction;
4114
- if (attrNameMatch.length || attrValueMatch.length) {
4115
- if (attrNameMatch[1]) {
4116
- // tslint:disable-next-line:no-function-constructor-with-string-args
4117
- attributeNameFunction = new Function('data', 'return ' + 'data.' + attrNameMatch[1]);
4118
- }
4119
- if (attrValueMatch[1]) {
4120
- if (attrValueMatch[1].indexOf('?') !== -1 && attrValueMatch[1].indexOf(':') !== -1) {
4121
- // tslint:disable-next-line:no-function-constructor-with-string-args
4122
- attributeValueFunction = new Function('data', 'return ' + attrValueMatch[1].replace(/\$/g, 'data.'));
4123
- }
4124
- else {
4125
- // tslint:disable-next-line:no-function-constructor-with-string-args
4126
- attributeValueFunction = new Function('data', 'return ' + 'data.' + attrValueMatch[1]);
4127
- }
4128
- }
4129
- // eslint-disable-next-line @typescript-eslint/ban-types
4130
- var subNode_1 = {};
4131
- if (isHeader) {
4132
- subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.headerData),
4133
- attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.headerData)];
4134
- }
4135
- else {
4136
- subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.templateData),
4137
- attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.templateData)];
4138
- }
4139
- subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ?
4140
- attributeName : subNode_1.bindedvalue[0];
4141
- subNode_1.onChange = function (value) {
4142
- var bindedvalue = subNode_1.bindedvalue[1] === undefined ?
4143
- element.getAttribute(subNode_1.attrName) : attributeValueFunction(value);
4144
- element.removeAttribute(subNode_1.attrName);
4145
- subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ? subNode_1.attrName : attributeNameFunction(value);
4146
- element.setAttribute(subNode_1.attrName, bindedvalue);
4147
- subNode_1.bindedvalue = [subNode_1.bindedvalue[0] === undefined ? undefined : attributeNameFunction(value),
4148
- subNode_1.bindedvalue[1] === undefined ? undefined : attributeValueFunction(value)];
4149
- };
4150
- var attributeValue = subNode_1.bindedvalue[1] === undefined ? element.getAttribute(attributeName) :
4151
- subNode_1.bindedvalue[1];
4152
- element.removeAttribute(attributeName);
4153
- element.setAttribute(subNode_1.attrName, attributeValue);
4154
- this_2.updateContextData(listElement, subNode_1, isHeader);
4155
- }
4156
- };
4157
- var this_2 = this;
4158
- for (var i = 0; i < attributeNames.length; i++) {
4159
- _loop_2(i);
4160
- }
4161
- };
4162
- Virtualization.prototype.textProperty = function (element, listElement, isHeader) {
4163
- var regex = new RegExp('\\${([^}]*)}', 'g');
4164
- var resultantOutput = [];
4165
- var regexMatch;
4166
- while (regexMatch !== null) {
4167
- var match = regex.exec(element.innerText);
4168
- resultantOutput.push(match);
4169
- regexMatch = match;
4170
- if (regexMatch === null) {
4171
- resultantOutput.pop();
4172
- }
4173
- }
4174
- var isChildHasTextContent = Array.prototype.some.call(element.children, function (element) {
4175
- if (new RegExp('\\${([^}]*)}', 'g').exec(element.innerText)) {
4176
- return true;
4177
- }
4178
- else {
4179
- return false;
4180
- }
4181
- });
4182
- if (resultantOutput && resultantOutput.length && !isChildHasTextContent) {
4183
- var _loop_3 = function (i) {
4184
- var textPropertyMatch = resultantOutput[i];
4185
- // eslint-disable-next-line
4186
- var subNode = {};
4187
- // eslint-disable-next-line
4188
- var textFunction;
4189
- if (textPropertyMatch[1].indexOf('?') !== -1 && textPropertyMatch[1].indexOf(':') !== -1) {
4190
- // tslint:disable-next-line:no-function-constructor-with-string-args
4191
- textFunction = new Function('data', 'return ' + textPropertyMatch[1].replace(/\$/g, 'data.'));
4192
- }
4193
- else {
4194
- // tslint:disable-next-line:no-function-constructor-with-string-args
4195
- textFunction = new Function('data', 'return ' + 'data.' + textPropertyMatch[1]);
4196
- }
4197
- if (isHeader) {
4198
- subNode.bindedvalue = textFunction(this_3.headerData);
4199
- }
4200
- else {
4201
- subNode.bindedvalue = textFunction(this_3.templateData);
4202
- }
4203
- subNode.onChange = function (value) {
4204
- element.innerText = element.innerText.replace(subNode.bindedvalue, textFunction(value));
4205
- subNode.bindedvalue = textFunction(value);
4206
- };
4207
- element.innerText = element.innerText.replace(textPropertyMatch[0], subNode.bindedvalue);
4208
- this_3.updateContextData(listElement, subNode, isHeader);
4209
- };
4210
- var this_3 = this;
4211
- for (var i = 0; i < resultantOutput.length; i++) {
4212
- _loop_3(i);
4213
- }
4214
- }
4215
- };
4216
4090
  Virtualization.prototype.reRenderUiVirtualization = function () {
4217
4091
  this.wireScrollEvent(true);
4218
4092
  if (this.listViewInstance.contentContainer) {