@syncfusion/ej2-lists 22.2.11 → 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.
- package/CHANGELOG.md +18 -54
- package/dist/ej2-lists.min.js +2 -2
- package/dist/ej2-lists.umd.min.js +2 -2
- package/dist/ej2-lists.umd.min.js.map +1 -1
- package/dist/es6/ej2-lists.es2015.js +100 -218
- package/dist/es6/ej2-lists.es2015.js.map +1 -1
- package/dist/es6/ej2-lists.es5.js +108 -237
- package/dist/es6/ej2-lists.es5.js.map +1 -1
- package/dist/global/ej2-lists.min.js +2 -2
- package/dist/global/ej2-lists.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +9 -9
- package/src/common/list-base.d.ts +0 -6
- package/src/common/list-base.js +1 -1
- package/src/list-view/list-view-model.d.ts +7 -7
- package/src/list-view/list-view.d.ts +6 -6
- package/src/list-view/list-view.js +6 -18
- package/src/list-view/virtualization.d.ts +3 -3
- package/src/list-view/virtualization.js +101 -218
- package/styles/list-view/bootstrap-dark.scss +1 -1
- package/styles/list-view/bootstrap.scss +1 -1
- package/styles/list-view/bootstrap4.scss +1 -1
- package/styles/list-view/bootstrap5-dark.scss +1 -1
- package/styles/list-view/bootstrap5.scss +1 -1
- package/styles/list-view/fabric-dark.scss +1 -1
- package/styles/list-view/fabric.scss +1 -1
- package/styles/list-view/fluent-dark.scss +1 -1
- package/styles/list-view/fluent.scss +1 -1
- package/styles/list-view/highcontrast-light.scss +1 -1
- package/styles/list-view/highcontrast.scss +1 -1
- package/styles/list-view/material-dark.css +0 -1
- package/styles/list-view/material-dark.scss +1 -1
- package/styles/list-view/material.css +0 -1
- package/styles/list-view/material.scss +1 -1
- package/styles/list-view/material3-dark.css +0 -1
- package/styles/list-view/material3-dark.scss +1 -1
- package/styles/list-view/material3.css +0 -1
- package/styles/list-view/material3.scss +1 -1
- package/styles/list-view/tailwind-dark.css +0 -1
- package/styles/list-view/tailwind-dark.scss +1 -1
- package/styles/list-view/tailwind.css +0 -1
- package/styles/list-view/tailwind.scss +1 -1
- package/styles/material-dark.css +0 -1
- package/styles/material.css +0 -1
- package/styles/material3-dark.css +0 -1
- package/styles/material3-dark.scss +1 -1
- package/styles/material3.css +0 -1
- package/styles/material3.scss +1 -1
- package/styles/sortable/bootstrap-dark.scss +1 -1
- package/styles/sortable/bootstrap.scss +1 -1
- package/styles/sortable/bootstrap4.scss +1 -1
- package/styles/sortable/bootstrap5-dark.scss +1 -1
- package/styles/sortable/bootstrap5.scss +1 -1
- package/styles/sortable/fabric-dark.scss +1 -1
- package/styles/sortable/fabric.scss +1 -1
- package/styles/sortable/fluent-dark.scss +1 -1
- package/styles/sortable/fluent.scss +1 -1
- package/styles/sortable/highcontrast-light.scss +1 -1
- package/styles/sortable/highcontrast.scss +1 -1
- package/styles/sortable/material-dark.css +0 -1
- package/styles/sortable/material-dark.scss +1 -1
- package/styles/sortable/material.css +0 -1
- package/styles/sortable/material.scss +1 -1
- package/styles/sortable/material3-dark.css +0 -1
- package/styles/sortable/material3-dark.scss +1 -1
- package/styles/sortable/material3.css +0 -1
- package/styles/sortable/material3.scss +1 -1
- package/styles/sortable/tailwind-dark.css +0 -1
- package/styles/sortable/tailwind-dark.scss +1 -1
- package/styles/sortable/tailwind.css +0 -1
- package/styles/sortable/tailwind.scss +1 -1
- package/styles/tailwind-dark.css +0 -2
- 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);
|
|
@@ -1381,7 +1381,7 @@ let ListView = class ListView extends Component {
|
|
|
1381
1381
|
this.element.style.overflow = 'hidden';
|
|
1382
1382
|
this.aniObj.animate(fromView, {
|
|
1383
1383
|
name: (reverse === true ? anim[0] : anim[1]),
|
|
1384
|
-
duration: duration,
|
|
1384
|
+
duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,
|
|
1385
1385
|
timingFunction: this.animation.easing,
|
|
1386
1386
|
// eslint-disable-next-line
|
|
1387
1387
|
end: (model) => {
|
|
@@ -1394,7 +1394,7 @@ let ListView = class ListView extends Component {
|
|
|
1394
1394
|
toView.style.display = '';
|
|
1395
1395
|
this.aniObj.animate(toView, {
|
|
1396
1396
|
name: (reverse === true ? anim[2] : anim[3]),
|
|
1397
|
-
duration: duration,
|
|
1397
|
+
duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,
|
|
1398
1398
|
timingFunction: this.animation.easing,
|
|
1399
1399
|
end: () => {
|
|
1400
1400
|
this.trigger('actionComplete');
|
|
@@ -1406,7 +1406,7 @@ let ListView = class ListView extends Component {
|
|
|
1406
1406
|
preRender() {
|
|
1407
1407
|
if (this.template) {
|
|
1408
1408
|
try {
|
|
1409
|
-
if (document.querySelectorAll(this.template).length) {
|
|
1409
|
+
if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {
|
|
1410
1410
|
this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);
|
|
1411
1411
|
}
|
|
1412
1412
|
}
|
|
@@ -1419,7 +1419,7 @@ let ListView = class ListView extends Component {
|
|
|
1419
1419
|
headerTemplate: this.headerTemplate,
|
|
1420
1420
|
groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',
|
|
1421
1421
|
ariaAttributes: {
|
|
1422
|
-
itemRole: 'listitem', listRole: '
|
|
1422
|
+
itemRole: 'listitem', listRole: 'list', itemText: '',
|
|
1423
1423
|
groupItemRole: 'presentation', wrapperRole: 'presentation'
|
|
1424
1424
|
},
|
|
1425
1425
|
// eslint-disable-next-line
|
|
@@ -2356,18 +2356,6 @@ let ListView = class ListView extends Component {
|
|
|
2356
2356
|
if (this.enableVirtualization) {
|
|
2357
2357
|
if (Object.keys(this.dataSource).length) {
|
|
2358
2358
|
if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {
|
|
2359
|
-
if (this.isReact || this.isVue) {
|
|
2360
|
-
if (typeof this.template == "string") {
|
|
2361
|
-
this.listBaseOption.template = null;
|
|
2362
|
-
}
|
|
2363
|
-
if (typeof this.groupTemplate == "string") {
|
|
2364
|
-
this.listBaseOption.groupTemplate = null;
|
|
2365
|
-
}
|
|
2366
|
-
}
|
|
2367
|
-
else {
|
|
2368
|
-
this.listBaseOption.template = null;
|
|
2369
|
-
this.listBaseOption.groupTemplate = null;
|
|
2370
|
-
}
|
|
2371
2359
|
this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);
|
|
2372
2360
|
}
|
|
2373
2361
|
}
|
|
@@ -2400,7 +2388,7 @@ let ListView = class ListView extends Component {
|
|
|
2400
2388
|
*/
|
|
2401
2389
|
render() {
|
|
2402
2390
|
this.element.classList.add(classNames.root);
|
|
2403
|
-
attributes(this.element, {
|
|
2391
|
+
attributes(this.element, { tabindex: '0' });
|
|
2404
2392
|
this.setCSSClass();
|
|
2405
2393
|
this.setEnableRTL();
|
|
2406
2394
|
this.setEnable();
|
|
@@ -3115,6 +3103,10 @@ class Virtualization {
|
|
|
3115
3103
|
* @private
|
|
3116
3104
|
*/
|
|
3117
3105
|
uiVirtualization() {
|
|
3106
|
+
this.commonTemplate = '<div class="e-text-content" role="presentation"> ' +
|
|
3107
|
+
'<span class="e-list-text"> ${' + this.listViewInstance.fields.text + '} </span></div>';
|
|
3108
|
+
this.templateFunction = compile(this.listViewInstance.template || this.commonTemplate, this.listViewInstance);
|
|
3109
|
+
this.groupTemplateFunction = compile(this.listViewInstance.groupTemplate || this.commonTemplate, this.listViewInstance);
|
|
3118
3110
|
this.wireScrollEvent(false);
|
|
3119
3111
|
const curViewDS = this.listViewInstance.curViewDS;
|
|
3120
3112
|
const firstDs = curViewDS.slice(0, 1);
|
|
@@ -3863,12 +3855,11 @@ class Virtualization {
|
|
|
3863
3855
|
this.refreshItemHeight();
|
|
3864
3856
|
}
|
|
3865
3857
|
createUIItem(args) {
|
|
3866
|
-
const
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
'<span class="e-list-text"> ${' + this.listViewInstance.fields.text + '} </span></div>';
|
|
3858
|
+
const template = document.createElement('div');
|
|
3859
|
+
this.templateData = args.curData.isHeader ? args.curData.items[0] :
|
|
3860
|
+
args.curData;
|
|
3870
3861
|
if (this.listViewInstance.isReact) {
|
|
3871
|
-
commonTemplate = null;
|
|
3862
|
+
this.commonTemplate = null;
|
|
3872
3863
|
}
|
|
3873
3864
|
if (this.listViewInstance.showCheckBox) {
|
|
3874
3865
|
// eslint-disable-next-line
|
|
@@ -3876,7 +3867,13 @@ class Virtualization {
|
|
|
3876
3867
|
if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&
|
|
3877
3868
|
(!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {
|
|
3878
3869
|
const div = document.createElement('div');
|
|
3879
|
-
|
|
3870
|
+
const nodes = this.templateFunction(this.templateData, this.listViewInstance);
|
|
3871
|
+
if (this.listViewInstance.template && this.listViewInstance.isReact) {
|
|
3872
|
+
this.listViewInstance.renderReactTemplates();
|
|
3873
|
+
}
|
|
3874
|
+
[].slice.call(nodes).forEach((ele) => {
|
|
3875
|
+
div.appendChild(ele);
|
|
3876
|
+
});
|
|
3880
3877
|
if (div.children && div.children[0]) {
|
|
3881
3878
|
div.children[0].classList.add('e-checkbox');
|
|
3882
3879
|
if (this.listViewInstance.checkBoxPosition === 'Left') {
|
|
@@ -3891,55 +3888,105 @@ class Virtualization {
|
|
|
3891
3888
|
else {
|
|
3892
3889
|
div.children[0].appendChild(this.listViewInstance.virtualCheckBox);
|
|
3893
3890
|
}
|
|
3894
|
-
|
|
3891
|
+
template.innerHTML = div.innerHTML;
|
|
3895
3892
|
}
|
|
3896
3893
|
}
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3894
|
+
else {
|
|
3895
|
+
let div = document.createElement('div');
|
|
3896
|
+
const nodes = this.templateFunction(this.templateData, this.listViewInstance);
|
|
3897
|
+
if (this.listViewInstance.template && this.listViewInstance.isReact) {
|
|
3898
|
+
this.listViewInstance.renderReactTemplates();
|
|
3899
|
+
}
|
|
3900
|
+
[].slice.call(nodes).forEach((ele) => {
|
|
3901
|
+
div.appendChild(ele);
|
|
3902
|
+
});
|
|
3903
|
+
template.innerHTML = div.innerHTML;
|
|
3904
|
+
}
|
|
3901
3905
|
}
|
|
3902
3906
|
else {
|
|
3903
|
-
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
3908
|
-
|
|
3909
|
-
|
|
3910
|
-
if (this.listViewInstance.fields.groupBy) {
|
|
3911
|
-
groupTemplate.innerHTML = this.listViewInstance.groupTemplate || commonTemplate;
|
|
3907
|
+
const nodes = this.templateFunction(this.templateData, this.listViewInstance);
|
|
3908
|
+
if (this.listViewInstance.template && this.listViewInstance.isReact) {
|
|
3909
|
+
this.listViewInstance.renderReactTemplates();
|
|
3910
|
+
}
|
|
3911
|
+
[].slice.call(nodes).forEach((ele) => {
|
|
3912
|
+
template.appendChild(ele);
|
|
3913
|
+
});
|
|
3912
3914
|
}
|
|
3913
|
-
// eslint-disable-next-line
|
|
3914
|
-
let groupTemplateElements = groupTemplate.getElementsByTagName('*');
|
|
3915
3915
|
if (args.curData.isHeader) {
|
|
3916
3916
|
this.headerData = args.curData;
|
|
3917
3917
|
}
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
(
|
|
3918
|
+
const groupTemplate = this.listViewInstance.createElement('div');
|
|
3919
|
+
if (this.listViewInstance.fields.groupBy) {
|
|
3920
|
+
const nodes = this.groupTemplateFunction(this.headerData, this.listViewInstance);
|
|
3921
|
+
if (this.listViewInstance.template && this.listViewInstance.isReact) {
|
|
3922
|
+
this.listViewInstance.renderReactTemplates();
|
|
3923
|
+
}
|
|
3924
|
+
[].slice.call(nodes).forEach((ele) => {
|
|
3925
|
+
groupTemplate.appendChild(ele);
|
|
3926
|
+
});
|
|
3927
|
+
}
|
|
3928
|
+
if ((!this.listViewInstance.isReact || (typeof this.listViewInstance.template == "string" && !args.item.classList.contains("e-list-group-item")) ||
|
|
3929
|
+
(typeof this.listViewInstance.groupTemplate == "string" && args.item.classList.contains("e-list-group-item"))) && !this.listViewInstance.isVue) {
|
|
3922
3930
|
args.item.innerHTML = '';
|
|
3923
3931
|
}
|
|
3924
3932
|
args.item.context = { data: args.curData, nodes: { flatTemplateNodes: [], groupTemplateNodes: [] } };
|
|
3925
|
-
for (let i = 0; i <
|
|
3926
|
-
this.compileTemplate(
|
|
3933
|
+
for (let i = 0; i < template.children.length; i++) {
|
|
3934
|
+
this.compileTemplate(template.children[i], args.item, false);
|
|
3927
3935
|
}
|
|
3928
|
-
for (let i = 0; i <
|
|
3929
|
-
this.compileTemplate(
|
|
3936
|
+
for (let i = 0; i < groupTemplate.children.length; i++) {
|
|
3937
|
+
this.compileTemplate(groupTemplate.children[i], args.item, true);
|
|
3930
3938
|
}
|
|
3931
3939
|
args.item.context.template = args.curData.isHeader ? template.firstElementChild :
|
|
3932
3940
|
groupTemplate.firstElementChild;
|
|
3933
3941
|
args.item.context.type = args.curData.isHeader ? 'flatList' : 'groupList';
|
|
3934
3942
|
const element = args.curData.isHeader ? groupTemplate : template;
|
|
3935
|
-
if (element.firstElementChild) {
|
|
3943
|
+
if (element.firstElementChild && !this.listViewInstance.isReact && !this.listViewInstance.isVue) {
|
|
3936
3944
|
args.item.insertBefore(element.firstElementChild, null);
|
|
3937
3945
|
}
|
|
3938
3946
|
}
|
|
3939
3947
|
compileTemplate(element, item, isHeader) {
|
|
3940
|
-
|
|
3941
|
-
|
|
3942
|
-
|
|
3948
|
+
const subNode = {};
|
|
3949
|
+
subNode.onChange = (value) => {
|
|
3950
|
+
let groupTemplateElements;
|
|
3951
|
+
let templateElements;
|
|
3952
|
+
if (this.listViewInstance.isVue) {
|
|
3953
|
+
groupTemplateElements = this.groupTemplateFunction(value);
|
|
3954
|
+
templateElements = this.templateFunction(value);
|
|
3955
|
+
}
|
|
3956
|
+
else {
|
|
3957
|
+
groupTemplateElements = this.groupTemplateFunction(value, this.listViewInstance);
|
|
3958
|
+
templateElements = this.templateFunction(value, this.listViewInstance);
|
|
3959
|
+
}
|
|
3960
|
+
if (this.listViewInstance.template && this.listViewInstance.isReact) {
|
|
3961
|
+
this.listViewInstance.renderReactTemplates();
|
|
3962
|
+
}
|
|
3963
|
+
let currentTemplate = templateElements;
|
|
3964
|
+
if (value.isHeader) {
|
|
3965
|
+
currentTemplate = groupTemplateElements;
|
|
3966
|
+
}
|
|
3967
|
+
[].slice.call(currentTemplate).forEach(function (currentElement) {
|
|
3968
|
+
let RemovableClass = element.classList.value.replace('e-checkbox', '');
|
|
3969
|
+
RemovableClass = RemovableClass.replace('e-checkbox-left', '');
|
|
3970
|
+
RemovableClass = RemovableClass.replace('e-checkbox-right', '');
|
|
3971
|
+
removeClass([element], RemovableClass.split(' ').filter(function (css) { return css; }));
|
|
3972
|
+
addClass([element], Array.from(currentElement.classList));
|
|
3973
|
+
for (let i = 0; i < element.attributes.length; i++) {
|
|
3974
|
+
if (element.attributes[i].name != 'class') {
|
|
3975
|
+
const newData = currentElement.getAttribute(element.attributes[i].name);
|
|
3976
|
+
element.setAttribute(element.attributes[i].name, newData);
|
|
3977
|
+
}
|
|
3978
|
+
}
|
|
3979
|
+
[].slice.call(element.children).forEach(function (ele) {
|
|
3980
|
+
if (!ele.classList.contains('e-listview-checkbox') && !(ele.classList.contains('e-checkbox-left') || ele.classList.contains('e-checkbox-right'))) {
|
|
3981
|
+
ele.remove();
|
|
3982
|
+
}
|
|
3983
|
+
});
|
|
3984
|
+
[].slice.call(currentElement.children).forEach(function (ele) {
|
|
3985
|
+
element.appendChild(ele);
|
|
3986
|
+
});
|
|
3987
|
+
});
|
|
3988
|
+
};
|
|
3989
|
+
this.updateContextData(item, subNode, isHeader);
|
|
3943
3990
|
}
|
|
3944
3991
|
onChange(newData, listElement) {
|
|
3945
3992
|
listElement.context.data = newData;
|
|
@@ -3993,171 +4040,6 @@ class Virtualization {
|
|
|
3993
4040
|
listElement.context.nodes.flatTemplateNodes.push(node);
|
|
3994
4041
|
}
|
|
3995
4042
|
}
|
|
3996
|
-
classProperty(element, listElement, isHeader) {
|
|
3997
|
-
const regex = new RegExp('\\${([^}]*)}', 'g');
|
|
3998
|
-
const resultantOutput = [];
|
|
3999
|
-
let regexMatch;
|
|
4000
|
-
while (regexMatch !== null) {
|
|
4001
|
-
const match = regex.exec(element.className);
|
|
4002
|
-
resultantOutput.push(match);
|
|
4003
|
-
regexMatch = match;
|
|
4004
|
-
if (regexMatch === null) {
|
|
4005
|
-
resultantOutput.pop();
|
|
4006
|
-
}
|
|
4007
|
-
}
|
|
4008
|
-
if (resultantOutput && resultantOutput.length) {
|
|
4009
|
-
for (let i = 0; i < resultantOutput.length; i++) {
|
|
4010
|
-
const classNameMatch = resultantOutput[i];
|
|
4011
|
-
// eslint-disable-next-line
|
|
4012
|
-
let classFunction;
|
|
4013
|
-
if (classNameMatch[1].indexOf('?') !== -1 && classNameMatch[1].indexOf(':') !== -1) {
|
|
4014
|
-
// tslint:disable-next-line:no-function-constructor-with-string-args
|
|
4015
|
-
classFunction = new Function('data', 'return ' + classNameMatch[1].replace(/\$/g, 'data.'));
|
|
4016
|
-
}
|
|
4017
|
-
else {
|
|
4018
|
-
// tslint:disable-next-line:no-function-constructor-with-string-args
|
|
4019
|
-
classFunction = new Function('data', 'return ' + 'data.' + classNameMatch[1]);
|
|
4020
|
-
}
|
|
4021
|
-
// eslint-disable-next-line
|
|
4022
|
-
const subNode = {};
|
|
4023
|
-
if (isHeader) {
|
|
4024
|
-
subNode.bindedvalue = classFunction(this.headerData);
|
|
4025
|
-
}
|
|
4026
|
-
else {
|
|
4027
|
-
subNode.bindedvalue = classFunction(this.templateData);
|
|
4028
|
-
}
|
|
4029
|
-
subNode.onChange = (value) => {
|
|
4030
|
-
if (subNode.bindedvalue) {
|
|
4031
|
-
removeClass([element], subNode.bindedvalue.split(' ').filter((css) => css));
|
|
4032
|
-
}
|
|
4033
|
-
const newCss = classFunction(value);
|
|
4034
|
-
if (newCss) {
|
|
4035
|
-
addClass([element], (newCss).split(' ').filter((css) => css));
|
|
4036
|
-
}
|
|
4037
|
-
subNode.bindedvalue = newCss;
|
|
4038
|
-
};
|
|
4039
|
-
const className = classNameMatch[0].split(' ');
|
|
4040
|
-
for (let i = 0; i < className.length; i++) {
|
|
4041
|
-
element.classList.remove(className[i]);
|
|
4042
|
-
}
|
|
4043
|
-
if (subNode.bindedvalue) {
|
|
4044
|
-
addClass([element], subNode.bindedvalue.split(' ').filter((css) => css));
|
|
4045
|
-
}
|
|
4046
|
-
this.updateContextData(listElement, subNode, isHeader);
|
|
4047
|
-
}
|
|
4048
|
-
}
|
|
4049
|
-
}
|
|
4050
|
-
attributeProperty(element, listElement, isHeader) {
|
|
4051
|
-
const attributeNames = [];
|
|
4052
|
-
for (let i = 0; i < element.attributes.length; i++) {
|
|
4053
|
-
attributeNames.push(element.attributes[i].nodeName);
|
|
4054
|
-
}
|
|
4055
|
-
if (attributeNames.indexOf('class') !== -1) {
|
|
4056
|
-
attributeNames.splice(attributeNames.indexOf('class'), 1);
|
|
4057
|
-
}
|
|
4058
|
-
for (let i = 0; i < attributeNames.length; i++) {
|
|
4059
|
-
const attributeName = attributeNames[i];
|
|
4060
|
-
const attrNameMatch = new RegExp('\\${([^}]*)}', 'g').exec(attributeName) || [];
|
|
4061
|
-
const attrValueMatch = new RegExp('\\${([^}]*)}', 'g').exec(element.getAttribute(attributeName))
|
|
4062
|
-
|| [];
|
|
4063
|
-
// eslint-disable-next-line
|
|
4064
|
-
let attributeNameFunction;
|
|
4065
|
-
// eslint-disable-next-line
|
|
4066
|
-
let attributeValueFunction;
|
|
4067
|
-
if (attrNameMatch.length || attrValueMatch.length) {
|
|
4068
|
-
if (attrNameMatch[1]) {
|
|
4069
|
-
// tslint:disable-next-line:no-function-constructor-with-string-args
|
|
4070
|
-
attributeNameFunction = new Function('data', 'return ' + 'data.' + attrNameMatch[1]);
|
|
4071
|
-
}
|
|
4072
|
-
if (attrValueMatch[1]) {
|
|
4073
|
-
if (attrValueMatch[1].indexOf('?') !== -1 && attrValueMatch[1].indexOf(':') !== -1) {
|
|
4074
|
-
// tslint:disable-next-line:no-function-constructor-with-string-args
|
|
4075
|
-
attributeValueFunction = new Function('data', 'return ' + attrValueMatch[1].replace(/\$/g, 'data.'));
|
|
4076
|
-
}
|
|
4077
|
-
else {
|
|
4078
|
-
// tslint:disable-next-line:no-function-constructor-with-string-args
|
|
4079
|
-
attributeValueFunction = new Function('data', 'return ' + 'data.' + attrValueMatch[1]);
|
|
4080
|
-
}
|
|
4081
|
-
}
|
|
4082
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
4083
|
-
const subNode = {};
|
|
4084
|
-
if (isHeader) {
|
|
4085
|
-
subNode.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this.headerData),
|
|
4086
|
-
attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this.headerData)];
|
|
4087
|
-
}
|
|
4088
|
-
else {
|
|
4089
|
-
subNode.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this.templateData),
|
|
4090
|
-
attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this.templateData)];
|
|
4091
|
-
}
|
|
4092
|
-
subNode.attrName = subNode.bindedvalue[0] === undefined ?
|
|
4093
|
-
attributeName : subNode.bindedvalue[0];
|
|
4094
|
-
subNode.onChange = (value) => {
|
|
4095
|
-
const bindedvalue = subNode.bindedvalue[1] === undefined ?
|
|
4096
|
-
element.getAttribute(subNode.attrName) : attributeValueFunction(value);
|
|
4097
|
-
element.removeAttribute(subNode.attrName);
|
|
4098
|
-
subNode.attrName = subNode.bindedvalue[0] === undefined ? subNode.attrName : attributeNameFunction(value);
|
|
4099
|
-
element.setAttribute(subNode.attrName, bindedvalue);
|
|
4100
|
-
subNode.bindedvalue = [subNode.bindedvalue[0] === undefined ? undefined : attributeNameFunction(value),
|
|
4101
|
-
subNode.bindedvalue[1] === undefined ? undefined : attributeValueFunction(value)];
|
|
4102
|
-
};
|
|
4103
|
-
const attributeValue = subNode.bindedvalue[1] === undefined ? element.getAttribute(attributeName) :
|
|
4104
|
-
subNode.bindedvalue[1];
|
|
4105
|
-
element.removeAttribute(attributeName);
|
|
4106
|
-
element.setAttribute(subNode.attrName, attributeValue);
|
|
4107
|
-
this.updateContextData(listElement, subNode, isHeader);
|
|
4108
|
-
}
|
|
4109
|
-
}
|
|
4110
|
-
}
|
|
4111
|
-
textProperty(element, listElement, isHeader) {
|
|
4112
|
-
const regex = new RegExp('\\${([^}]*)}', 'g');
|
|
4113
|
-
const resultantOutput = [];
|
|
4114
|
-
let regexMatch;
|
|
4115
|
-
while (regexMatch !== null) {
|
|
4116
|
-
const match = regex.exec(element.innerText);
|
|
4117
|
-
resultantOutput.push(match);
|
|
4118
|
-
regexMatch = match;
|
|
4119
|
-
if (regexMatch === null) {
|
|
4120
|
-
resultantOutput.pop();
|
|
4121
|
-
}
|
|
4122
|
-
}
|
|
4123
|
-
const isChildHasTextContent = Array.prototype.some.call(element.children, (element) => {
|
|
4124
|
-
if (new RegExp('\\${([^}]*)}', 'g').exec(element.innerText)) {
|
|
4125
|
-
return true;
|
|
4126
|
-
}
|
|
4127
|
-
else {
|
|
4128
|
-
return false;
|
|
4129
|
-
}
|
|
4130
|
-
});
|
|
4131
|
-
if (resultantOutput && resultantOutput.length && !isChildHasTextContent) {
|
|
4132
|
-
for (let i = 0; i < resultantOutput.length; i++) {
|
|
4133
|
-
const textPropertyMatch = resultantOutput[i];
|
|
4134
|
-
// eslint-disable-next-line
|
|
4135
|
-
const subNode = {};
|
|
4136
|
-
// eslint-disable-next-line
|
|
4137
|
-
let textFunction;
|
|
4138
|
-
if (textPropertyMatch[1].indexOf('?') !== -1 && textPropertyMatch[1].indexOf(':') !== -1) {
|
|
4139
|
-
// tslint:disable-next-line:no-function-constructor-with-string-args
|
|
4140
|
-
textFunction = new Function('data', 'return ' + textPropertyMatch[1].replace(/\$/g, 'data.'));
|
|
4141
|
-
}
|
|
4142
|
-
else {
|
|
4143
|
-
// tslint:disable-next-line:no-function-constructor-with-string-args
|
|
4144
|
-
textFunction = new Function('data', 'return ' + 'data.' + textPropertyMatch[1]);
|
|
4145
|
-
}
|
|
4146
|
-
if (isHeader) {
|
|
4147
|
-
subNode.bindedvalue = textFunction(this.headerData);
|
|
4148
|
-
}
|
|
4149
|
-
else {
|
|
4150
|
-
subNode.bindedvalue = textFunction(this.templateData);
|
|
4151
|
-
}
|
|
4152
|
-
subNode.onChange = (value) => {
|
|
4153
|
-
element.innerText = element.innerText.replace(subNode.bindedvalue, textFunction(value));
|
|
4154
|
-
subNode.bindedvalue = textFunction(value);
|
|
4155
|
-
};
|
|
4156
|
-
element.innerText = element.innerText.replace(textPropertyMatch[0], subNode.bindedvalue);
|
|
4157
|
-
this.updateContextData(listElement, subNode, isHeader);
|
|
4158
|
-
}
|
|
4159
|
-
}
|
|
4160
|
-
}
|
|
4161
4043
|
reRenderUiVirtualization() {
|
|
4162
4044
|
this.wireScrollEvent(true);
|
|
4163
4045
|
if (this.listViewInstance.contentContainer) {
|