@syncfusion/ej2-lists 23.1.43 → 24.1.41
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 +0 -8
- 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 +105 -244
- package/dist/es6/ej2-lists.es2015.js.map +1 -1
- package/dist/es6/ej2-lists.es5.js +101 -241
- 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 +10 -9
- package/src/common/list-base.js +12 -14
- package/src/list-view/list-view-model.d.ts +8 -1
- package/src/list-view/list-view.d.ts +34 -0
- package/src/list-view/list-view.js +32 -35
- package/src/list-view/virtualization.d.ts +1 -8
- package/src/list-view/virtualization.js +57 -192
- package/styles/bootstrap4.css +2 -2
- package/styles/bootstrap5-dark.css +1 -1
- package/styles/bootstrap5.css +1 -1
- package/styles/list-view/_bootstrap4-definition.scss +2 -2
- package/styles/list-view/_bootstrap5-definition.scss +1 -1
- package/styles/list-view/_material-definition.scss +1 -1
- package/styles/list-view/_material3-definition.scss +1 -1
- package/styles/list-view/_tailwind-definition.scss +2 -2
- package/styles/list-view/bootstrap4.css +2 -2
- package/styles/list-view/bootstrap5-dark.css +1 -1
- package/styles/list-view/bootstrap5.css +1 -1
- package/styles/list-view/material.css +1 -1
- package/styles/list-view/material3-dark.css +1 -1
- package/styles/list-view/material3.css +1 -1
- package/styles/list-view/tailwind-dark.css +4 -4
- package/styles/list-view/tailwind.css +4 -4
- package/styles/material.css +1 -1
- package/styles/material3-dark.css +1 -1
- package/styles/material3.css +1 -1
- package/styles/tailwind-dark.css +4 -4
- package/styles/tailwind.css +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
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';
|
|
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, select } from '@syncfusion/ej2-base';
|
|
2
2
|
import { DataManager, Query } from '@syncfusion/ej2-data';
|
|
3
3
|
import { createCheckBox } from '@syncfusion/ej2-buttons';
|
|
4
4
|
|
|
@@ -280,17 +280,23 @@ 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
|
|
283
|
+
if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {
|
|
284
284
|
li.removeAttribute('aria-level');
|
|
285
285
|
}
|
|
286
286
|
anchorElement = li.querySelector('.' + cssClass.anchorWrap);
|
|
287
287
|
// eslint-disable-next-line no-prototype-builtins
|
|
288
288
|
if (fieldData.hasOwnProperty(fields.tooltip)) {
|
|
289
|
-
|
|
289
|
+
const tooltipText = SanitizeHtmlHelper.sanitize(fieldData[fields.tooltip]);
|
|
290
|
+
li.setAttribute('title', tooltipText);
|
|
290
291
|
}
|
|
291
292
|
// eslint-disable-next-line no-prototype-builtins
|
|
292
293
|
if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {
|
|
293
|
-
|
|
294
|
+
const htmlAttributes = fieldData[fields.htmlAttributes];
|
|
295
|
+
// Check if 'class' attribute is present and not an empty string
|
|
296
|
+
if (htmlAttributes.hasOwnProperty('class') && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {
|
|
297
|
+
delete htmlAttributes['class'];
|
|
298
|
+
}
|
|
299
|
+
setAttribute(li, htmlAttributes);
|
|
294
300
|
}
|
|
295
301
|
// eslint-disable-next-line no-prototype-builtins
|
|
296
302
|
if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {
|
|
@@ -506,7 +512,6 @@ var ListBase;
|
|
|
506
512
|
const curOpt = extend({}, defaultListBaseOptions, options);
|
|
507
513
|
const fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);
|
|
508
514
|
const curEle = element.cloneNode(true);
|
|
509
|
-
// eslint-disable-next-line
|
|
510
515
|
const jsonAr = [];
|
|
511
516
|
curEle.classList.add('json-parent');
|
|
512
517
|
const childs = curEle.querySelectorAll('.json-parent>li');
|
|
@@ -515,7 +520,6 @@ var ListBase;
|
|
|
515
520
|
const li = childs[i];
|
|
516
521
|
const anchor = li.querySelector('a');
|
|
517
522
|
const ul = li.querySelector('ul');
|
|
518
|
-
// eslint-disable-next-line
|
|
519
523
|
const json = {};
|
|
520
524
|
const childNodes = anchor ? anchor.childNodes : li.childNodes;
|
|
521
525
|
const keys = Object.keys(childNodes);
|
|
@@ -589,7 +593,6 @@ var ListBase;
|
|
|
589
593
|
const ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });
|
|
590
594
|
const curOpt = extend({}, defaultListBaseOptions, options);
|
|
591
595
|
const curFields = extend({}, ListBase.defaultMappedFields, fields);
|
|
592
|
-
// eslint-disable-next-line
|
|
593
596
|
const compiledString = compileTemplate(template);
|
|
594
597
|
const liCollection = [];
|
|
595
598
|
let value;
|
|
@@ -638,7 +641,7 @@ var ListBase;
|
|
|
638
641
|
else {
|
|
639
642
|
const currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;
|
|
640
643
|
if (isHeader) {
|
|
641
|
-
if (componentInstance && componentInstance.getModuleName()
|
|
644
|
+
if (componentInstance && componentInstance.getModuleName() !== 'listview') {
|
|
642
645
|
// eslint-disable-next-line
|
|
643
646
|
const compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);
|
|
644
647
|
if (compiledElement) {
|
|
@@ -696,7 +699,6 @@ var ListBase;
|
|
|
696
699
|
function renderGroupTemplate(groupTemplate, groupDataSource, fields,
|
|
697
700
|
// eslint-disable-next-line
|
|
698
701
|
headerItems, options, componentInstance) {
|
|
699
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
700
702
|
const compiledString = compileTemplate(groupTemplate);
|
|
701
703
|
const curFields = extend({}, ListBase.defaultMappedFields, fields);
|
|
702
704
|
const curOpt = extend({}, defaultListBaseOptions, options);
|
|
@@ -705,7 +707,7 @@ var ListBase;
|
|
|
705
707
|
const headerData = {};
|
|
706
708
|
headerData[`${category}`] = header.textContent;
|
|
707
709
|
header.innerHTML = '';
|
|
708
|
-
if (componentInstance && componentInstance.getModuleName() !==
|
|
710
|
+
if (componentInstance && componentInstance.getModuleName() !== 'listview') {
|
|
709
711
|
// eslint-disable-next-line
|
|
710
712
|
const compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);
|
|
711
713
|
if (compiledElement) {
|
|
@@ -741,7 +743,6 @@ var ListBase;
|
|
|
741
743
|
// Create expand and collapse node
|
|
742
744
|
if (!!options.expandCollapse && hasChildren && !options.template) {
|
|
743
745
|
element.firstElementChild.classList.add(cssClass.iconWrapper);
|
|
744
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
745
746
|
const expandElement = options.expandIconPosition === 'Left' ? prepend : append;
|
|
746
747
|
expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));
|
|
747
748
|
}
|
|
@@ -887,9 +888,8 @@ var ListBase;
|
|
|
887
888
|
li.setAttribute('data-uid', generateId());
|
|
888
889
|
}
|
|
889
890
|
if (grpLI && options && options.groupTemplate) {
|
|
890
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
891
891
|
const compiledString = compileTemplate(options.groupTemplate);
|
|
892
|
-
if (componentInstance && componentInstance.getModuleName() !==
|
|
892
|
+
if (componentInstance && componentInstance.getModuleName() !== 'listview') {
|
|
893
893
|
// eslint-disable-next-line
|
|
894
894
|
const compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);
|
|
895
895
|
if (compiledElement) {
|
|
@@ -901,7 +901,6 @@ var ListBase;
|
|
|
901
901
|
}
|
|
902
902
|
}
|
|
903
903
|
else if (!grpLI && options && options.template) {
|
|
904
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
905
904
|
const compiledString = compileTemplate(options.template);
|
|
906
905
|
if (componentInstance && componentInstance.getModuleName() !== 'listview') {
|
|
907
906
|
// eslint-disable-next-line
|
|
@@ -973,7 +972,6 @@ var ListBase;
|
|
|
973
972
|
function generateIcon(createElement, liElement, className, options) {
|
|
974
973
|
const curOpt = extend({}, defaultListBaseOptions, options);
|
|
975
974
|
cssClass = getModuleClass(curOpt.moduleName);
|
|
976
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
977
975
|
const expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;
|
|
978
976
|
expandElement([createElement('div', {
|
|
979
977
|
className: 'e-icons ' + curOpt.expandIconClass + ' ' +
|
|
@@ -1310,7 +1308,6 @@ let ListView = class ListView extends Component {
|
|
|
1310
1308
|
this.headerEle.appendChild(hedBackButton);
|
|
1311
1309
|
this.headerEle.appendChild(textEle);
|
|
1312
1310
|
if (this.headerTemplate) {
|
|
1313
|
-
// eslint-disable-next-line
|
|
1314
1311
|
const compiledString = compile(this.headerTemplate);
|
|
1315
1312
|
const headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });
|
|
1316
1313
|
// eslint-disable-next-line
|
|
@@ -1429,7 +1426,7 @@ let ListView = class ListView extends Component {
|
|
|
1429
1426
|
itemCreated: this.renderCheckbox.bind(this),
|
|
1430
1427
|
templateID: `${this.element.id}${LISTVIEW_TEMPLATE_PROPERTY}`,
|
|
1431
1428
|
groupTemplateID: `${this.element.id}${LISTVIEW_GROUPTEMPLATE_PROPERTY}`,
|
|
1432
|
-
enableHtmlSanitizer: this.enableHtmlSanitizer
|
|
1429
|
+
enableHtmlSanitizer: this.enableHtmlSanitizer
|
|
1433
1430
|
};
|
|
1434
1431
|
this.initialization();
|
|
1435
1432
|
}
|
|
@@ -1470,8 +1467,8 @@ let ListView = class ListView extends Component {
|
|
|
1470
1467
|
if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {
|
|
1471
1468
|
fieldData = getFieldValues(args.curData, this.listBaseOption.fields);
|
|
1472
1469
|
if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {
|
|
1473
|
-
|
|
1474
|
-
if (index
|
|
1470
|
+
const index = this.selectedId.findIndex(e => e === fieldData[this.listBaseOption.fields.id].toString());
|
|
1471
|
+
if (index !== -1) {
|
|
1475
1472
|
this.checkInternally(args, checkboxElement);
|
|
1476
1473
|
}
|
|
1477
1474
|
}
|
|
@@ -1484,7 +1481,7 @@ let ListView = class ListView extends Component {
|
|
|
1484
1481
|
this.checkInternally(args, checkboxElement);
|
|
1485
1482
|
}
|
|
1486
1483
|
checkboxElement.setAttribute('aria-checked', frameElement.classList.contains(classNames.checked) ? 'true' : 'false');
|
|
1487
|
-
checkboxElement.setAttribute('aria-label',
|
|
1484
|
+
checkboxElement.setAttribute('aria-label', args.text);
|
|
1488
1485
|
if (this.checkBoxPosition === 'Left') {
|
|
1489
1486
|
checkboxElement.classList.add(classNames.checkboxLeft);
|
|
1490
1487
|
args.item.firstElementChild.classList.add(classNames.checkboxLeft);
|
|
@@ -1681,7 +1678,7 @@ let ListView = class ListView extends Component {
|
|
|
1681
1678
|
}
|
|
1682
1679
|
else {
|
|
1683
1680
|
this.setCheckboxLI(li, e);
|
|
1684
|
-
if ((target.nodeName
|
|
1681
|
+
if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {
|
|
1685
1682
|
target.classList.add('e-focused');
|
|
1686
1683
|
this.targetElement = target;
|
|
1687
1684
|
}
|
|
@@ -1689,7 +1686,7 @@ let ListView = class ListView extends Component {
|
|
|
1689
1686
|
}
|
|
1690
1687
|
else {
|
|
1691
1688
|
this.setSelectLI(li, e);
|
|
1692
|
-
if ((target.nodeName
|
|
1689
|
+
if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {
|
|
1693
1690
|
target.classList.add('e-focused');
|
|
1694
1691
|
this.targetElement = target;
|
|
1695
1692
|
}
|
|
@@ -1950,6 +1947,9 @@ let ListView = class ListView extends Component {
|
|
|
1950
1947
|
EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);
|
|
1951
1948
|
EventHandler.add(this.element, 'focusout', this.focusout, this);
|
|
1952
1949
|
this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });
|
|
1950
|
+
if (!isNullOrUndefined(this.scroll)) {
|
|
1951
|
+
EventHandler.add(this.element, 'scroll', this.onListScroll, this);
|
|
1952
|
+
}
|
|
1953
1953
|
}
|
|
1954
1954
|
unWireEvents() {
|
|
1955
1955
|
EventHandler.remove(this.element, 'click', this.clickHandler);
|
|
@@ -1957,6 +1957,9 @@ let ListView = class ListView extends Component {
|
|
|
1957
1957
|
EventHandler.remove(this.element, 'mouseout', this.leaveHandler);
|
|
1958
1958
|
EventHandler.remove(this.element, 'mouseover', this.hoverHandler);
|
|
1959
1959
|
EventHandler.remove(this.element, 'mouseout', this.leaveHandler);
|
|
1960
|
+
if (!isNullOrUndefined(this.scroll)) {
|
|
1961
|
+
EventHandler.remove(this.element, 'scroll', this.onListScroll);
|
|
1962
|
+
}
|
|
1960
1963
|
this.touchModule.destroy();
|
|
1961
1964
|
this.touchModule = null;
|
|
1962
1965
|
}
|
|
@@ -1998,7 +2001,7 @@ let ListView = class ListView extends Component {
|
|
|
1998
2001
|
if (this.curUL.querySelector('.' + classNames.focused)) {
|
|
1999
2002
|
this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);
|
|
2000
2003
|
}
|
|
2001
|
-
|
|
2004
|
+
const textAreaFocus = li.querySelector('textarea') || li.querySelector('input');
|
|
2002
2005
|
li.classList.add(classNames.focused);
|
|
2003
2006
|
if (!isNullOrUndefined(e)) {
|
|
2004
2007
|
if (e.target === textAreaFocus) {
|
|
@@ -2038,7 +2041,6 @@ let ListView = class ListView extends Component {
|
|
|
2038
2041
|
}
|
|
2039
2042
|
else {
|
|
2040
2043
|
selectedItem =
|
|
2041
|
-
// eslint-disable-next-line
|
|
2042
2044
|
{
|
|
2043
2045
|
item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],
|
|
2044
2046
|
// eslint-disable-next-line
|
|
@@ -2196,7 +2198,7 @@ let ListView = class ListView extends Component {
|
|
|
2196
2198
|
setViewDataSource(dataSource = this.localData) {
|
|
2197
2199
|
// eslint-disable-next-line
|
|
2198
2200
|
let fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;
|
|
2199
|
-
|
|
2201
|
+
const query = ListBase.addSorting(this.sortOrder, fieldValue);
|
|
2200
2202
|
if (dataSource && this.fields.groupBy) {
|
|
2201
2203
|
if (this.sortOrder !== 'None') {
|
|
2202
2204
|
this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);
|
|
@@ -2274,7 +2276,6 @@ let ListView = class ListView extends Component {
|
|
|
2274
2276
|
this.removeElement(this.headerEle);
|
|
2275
2277
|
this.removeElement(this.ulElement);
|
|
2276
2278
|
this.removeElement(this.contentContainer);
|
|
2277
|
-
// eslint-disable-next-line
|
|
2278
2279
|
if (this.isReact) {
|
|
2279
2280
|
this.clearTemplate();
|
|
2280
2281
|
}
|
|
@@ -2313,7 +2314,6 @@ let ListView = class ListView extends Component {
|
|
|
2313
2314
|
UpdateCurrentUL() {
|
|
2314
2315
|
this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);
|
|
2315
2316
|
if (this.curUL) {
|
|
2316
|
-
// eslint-disable-next-line
|
|
2317
2317
|
this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);
|
|
2318
2318
|
}
|
|
2319
2319
|
}
|
|
@@ -2328,7 +2328,6 @@ let ListView = class ListView extends Component {
|
|
|
2328
2328
|
if (!ele) {
|
|
2329
2329
|
const data = this.curViewDS;
|
|
2330
2330
|
ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);
|
|
2331
|
-
// eslint-disable-next-line
|
|
2332
2331
|
if (this.isReact) {
|
|
2333
2332
|
this.renderReactTemplates();
|
|
2334
2333
|
}
|
|
@@ -2342,7 +2341,6 @@ let ListView = class ListView extends Component {
|
|
|
2342
2341
|
this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);
|
|
2343
2342
|
if (this.selectedItems) {
|
|
2344
2343
|
const fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);
|
|
2345
|
-
// eslint-disable-next-line
|
|
2346
2344
|
this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');
|
|
2347
2345
|
}
|
|
2348
2346
|
this.selectedLI = undefined;
|
|
@@ -2366,7 +2364,6 @@ let ListView = class ListView extends Component {
|
|
|
2366
2364
|
this.contentContainer = this.createElement('div', { className: classNames.container });
|
|
2367
2365
|
this.element.appendChild(this.contentContainer);
|
|
2368
2366
|
this.renderIntoDom(this.ulElement);
|
|
2369
|
-
// eslint-disable-next-line
|
|
2370
2367
|
if (this.isReact) {
|
|
2371
2368
|
this.renderReactTemplates();
|
|
2372
2369
|
}
|
|
@@ -2375,7 +2372,6 @@ let ListView = class ListView extends Component {
|
|
|
2375
2372
|
getElementUID(obj) {
|
|
2376
2373
|
let fields = {};
|
|
2377
2374
|
if (obj instanceof Element) {
|
|
2378
|
-
// eslint-disable-next-line
|
|
2379
2375
|
fields[this.fields.id] = obj.getAttribute('data-uid');
|
|
2380
2376
|
}
|
|
2381
2377
|
else {
|
|
@@ -2401,12 +2397,12 @@ let ListView = class ListView extends Component {
|
|
|
2401
2397
|
selector: '.' + classNames.listItem
|
|
2402
2398
|
});
|
|
2403
2399
|
this.renderComplete();
|
|
2400
|
+
this.previousScrollTop = this.element.scrollTop;
|
|
2404
2401
|
}
|
|
2405
2402
|
/**
|
|
2406
2403
|
* It is used to destroy the ListView component.
|
|
2407
2404
|
*/
|
|
2408
2405
|
destroy() {
|
|
2409
|
-
// eslint-disable-next-line
|
|
2410
2406
|
if (this.isReact) {
|
|
2411
2407
|
this.clearTemplate();
|
|
2412
2408
|
}
|
|
@@ -2448,7 +2444,6 @@ let ListView = class ListView extends Component {
|
|
|
2448
2444
|
toUL = toUL.parentElement;
|
|
2449
2445
|
}
|
|
2450
2446
|
const fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);
|
|
2451
|
-
// eslint-disable-next-line
|
|
2452
2447
|
const text = fieldData[this.fields.text];
|
|
2453
2448
|
this.switchView(fromUL, toUL, true);
|
|
2454
2449
|
this.removeFocus();
|
|
@@ -2521,7 +2516,6 @@ let ListView = class ListView extends Component {
|
|
|
2521
2516
|
if (!this.enableVirtualization && isNullOrUndefined(li)) {
|
|
2522
2517
|
const curLi = this.element.querySelectorAll('.' + classNames.listItem);
|
|
2523
2518
|
for (let i = 0; i < curLi.length; i++) {
|
|
2524
|
-
// eslint-disable-next-line
|
|
2525
2519
|
if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {
|
|
2526
2520
|
li = curLi[i];
|
|
2527
2521
|
}
|
|
@@ -2571,7 +2565,6 @@ let ListView = class ListView extends Component {
|
|
|
2571
2565
|
*
|
|
2572
2566
|
*/
|
|
2573
2567
|
getSelectedItems() {
|
|
2574
|
-
// eslint-disable-next-line
|
|
2575
2568
|
let finalValue;
|
|
2576
2569
|
let isCompleted = false;
|
|
2577
2570
|
this.selectedId = [];
|
|
@@ -2582,7 +2575,6 @@ let ListView = class ListView extends Component {
|
|
|
2582
2575
|
isCompleted = true;
|
|
2583
2576
|
}
|
|
2584
2577
|
else if (this.showCheckBox && !isCompleted) {
|
|
2585
|
-
// eslint-disable-next-line
|
|
2586
2578
|
const liCollection = this.curUL.getElementsByClassName(classNames.selected);
|
|
2587
2579
|
const liTextCollection = [];
|
|
2588
2580
|
const liDataCollection = [];
|
|
@@ -2602,9 +2594,7 @@ let ListView = class ListView extends Component {
|
|
|
2602
2594
|
liDataCollection.push(tempData);
|
|
2603
2595
|
}
|
|
2604
2596
|
if (fieldData) {
|
|
2605
|
-
// eslint-disable-next-line
|
|
2606
2597
|
liTextCollection.push(fieldData[this.listBaseOption.fields.text]);
|
|
2607
|
-
// eslint-disable-next-line
|
|
2608
2598
|
this.selectedId.push(fieldData[this.listBaseOption.fields.id]);
|
|
2609
2599
|
}
|
|
2610
2600
|
else {
|
|
@@ -2646,7 +2636,6 @@ let ListView = class ListView extends Component {
|
|
|
2646
2636
|
isCompleted = true;
|
|
2647
2637
|
}
|
|
2648
2638
|
else {
|
|
2649
|
-
// eslint-disable-next-line
|
|
2650
2639
|
this.selectedId.push(fieldData[this.listBaseOption.fields.id]);
|
|
2651
2640
|
finalValue = {
|
|
2652
2641
|
text: fieldData[this.listBaseOption.fields.text], item: liElement,
|
|
@@ -2704,7 +2693,6 @@ let ListView = class ListView extends Component {
|
|
|
2704
2693
|
if (li) {
|
|
2705
2694
|
li.classList.add(classNames.disable);
|
|
2706
2695
|
}
|
|
2707
|
-
// eslint-disable-next-line
|
|
2708
2696
|
resultJSON[this.fields.enabled] = false;
|
|
2709
2697
|
}
|
|
2710
2698
|
}
|
|
@@ -2740,7 +2728,6 @@ let ListView = class ListView extends Component {
|
|
|
2740
2728
|
li.style.display = display;
|
|
2741
2729
|
}
|
|
2742
2730
|
if (isHide) {
|
|
2743
|
-
// eslint-disable-next-line
|
|
2744
2731
|
resultJSON[this.fields.isVisible] = false;
|
|
2745
2732
|
}
|
|
2746
2733
|
else {
|
|
@@ -2823,7 +2810,6 @@ let ListView = class ListView extends Component {
|
|
|
2823
2810
|
return newDataSource;
|
|
2824
2811
|
}
|
|
2825
2812
|
addItemInNestedList(targetItemData, itemQueue) {
|
|
2826
|
-
// eslint-disable-next-line
|
|
2827
2813
|
const targetItemId = targetItemData[this.fields.id];
|
|
2828
2814
|
const targetChildDS = targetItemData[this.fields.child];
|
|
2829
2815
|
const isAlreadyRenderedUL = this.element.querySelector('[pid=\'' + targetItemId + '\']');
|
|
@@ -2864,7 +2850,6 @@ let ListView = class ListView extends Component {
|
|
|
2864
2850
|
this.getLiFromObjOrElement(curViewDS[index + 2]) || null;
|
|
2865
2851
|
const li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);
|
|
2866
2852
|
this.setAttributes(li);
|
|
2867
|
-
// eslint-disable-next-line
|
|
2868
2853
|
if (this.template && this.isReact) {
|
|
2869
2854
|
this.renderReactTemplates();
|
|
2870
2855
|
}
|
|
@@ -2896,11 +2881,9 @@ let ListView = class ListView extends Component {
|
|
|
2896
2881
|
const curViewDS = this.curViewDS;
|
|
2897
2882
|
const fields = obj instanceof Element ? this.getElementUID(obj) : obj;
|
|
2898
2883
|
let dataSource;
|
|
2899
|
-
// eslint-disable-next-line prefer-const
|
|
2900
2884
|
dataSource = this.findItemFromDS(listDataSource, fields, true);
|
|
2901
2885
|
if (dataSource) {
|
|
2902
2886
|
let data;
|
|
2903
|
-
// eslint-disable-next-line prefer-const
|
|
2904
2887
|
data = this.findItemFromDS(dataSource, fields);
|
|
2905
2888
|
const index = curViewDS.indexOf(data);
|
|
2906
2889
|
const li = this.getLiFromObjOrElement(obj);
|
|
@@ -2921,11 +2904,8 @@ let ListView = class ListView extends Component {
|
|
|
2921
2904
|
if (groupLi) {
|
|
2922
2905
|
detach(groupLi);
|
|
2923
2906
|
}
|
|
2924
|
-
// eslint-disable-next-line
|
|
2925
2907
|
const foundData = (dataSource.length - 1) <= 0
|
|
2926
|
-
? this.findParent(this.localData, this.fields.id,
|
|
2927
|
-
// eslint-disable-next-line
|
|
2928
|
-
(value) => value === data[this.fields.id], null) : null;
|
|
2908
|
+
? this.findParent(this.localData, this.fields.id, (value) => value === data[this.fields.id], null) : null;
|
|
2929
2909
|
const dsIndex = dataSource.indexOf(data);
|
|
2930
2910
|
dataSource.splice(dsIndex, 1);
|
|
2931
2911
|
this.setViewDataSource(listDataSource);
|
|
@@ -2968,16 +2948,13 @@ let ListView = class ListView extends Component {
|
|
|
2968
2948
|
}
|
|
2969
2949
|
}
|
|
2970
2950
|
}
|
|
2971
|
-
// eslint-disable-next-line
|
|
2972
2951
|
findParent(dataSource, id, callback, parent) {
|
|
2973
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
2974
2952
|
if (dataSource.hasOwnProperty(id) && callback(dataSource[id]) === true) {
|
|
2975
2953
|
return extend({}, dataSource);
|
|
2976
2954
|
}
|
|
2977
2955
|
for (let i = 0; i < Object.keys(dataSource).length; i++) {
|
|
2978
2956
|
if (dataSource[Object.keys(dataSource)[i]]
|
|
2979
2957
|
&& typeof dataSource[Object.keys(dataSource)[i]] === 'object') {
|
|
2980
|
-
// eslint-disable-next-line
|
|
2981
2958
|
const result = this.findParent(dataSource[Object.keys(dataSource)[i]], id, callback, dataSource);
|
|
2982
2959
|
if (result != null) {
|
|
2983
2960
|
if (!result.parent) {
|
|
@@ -3000,6 +2977,21 @@ let ListView = class ListView extends Component {
|
|
|
3000
2977
|
}
|
|
3001
2978
|
return modules;
|
|
3002
2979
|
}
|
|
2980
|
+
onListScroll(e) {
|
|
2981
|
+
let args = { originalEvent: e, scrollDirection: "Bottom", distanceY: this.element.scrollHeight - this.element.scrollTop };
|
|
2982
|
+
let currentScrollTop = this.element.scrollTop;
|
|
2983
|
+
if (currentScrollTop > this.previousScrollTop) {
|
|
2984
|
+
args.scrollDirection = "Bottom";
|
|
2985
|
+
args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;
|
|
2986
|
+
this.trigger('scroll', args);
|
|
2987
|
+
}
|
|
2988
|
+
else if (this.previousScrollTop > currentScrollTop) {
|
|
2989
|
+
args.scrollDirection = "Top";
|
|
2990
|
+
args.distanceY = this.element.scrollTop;
|
|
2991
|
+
this.trigger('scroll', args);
|
|
2992
|
+
}
|
|
2993
|
+
this.previousScrollTop = currentScrollTop;
|
|
2994
|
+
}
|
|
3003
2995
|
/**
|
|
3004
2996
|
* Get the properties to be maintained in the persisted state.
|
|
3005
2997
|
*/
|
|
@@ -3081,6 +3073,9 @@ __decorate([
|
|
|
3081
3073
|
__decorate([
|
|
3082
3074
|
Event()
|
|
3083
3075
|
], ListView.prototype, "actionFailure", void 0);
|
|
3076
|
+
__decorate([
|
|
3077
|
+
Event()
|
|
3078
|
+
], ListView.prototype, "scroll", void 0);
|
|
3084
3079
|
ListView = __decorate([
|
|
3085
3080
|
NotifyPropertyChanges
|
|
3086
3081
|
], ListView);
|
|
@@ -3114,10 +3109,6 @@ class Virtualization {
|
|
|
3114
3109
|
* @private
|
|
3115
3110
|
*/
|
|
3116
3111
|
uiVirtualization() {
|
|
3117
|
-
this.commonTemplate = '<div class="e-text-content" role="presentation"> ' +
|
|
3118
|
-
'<span class="e-list-text"> ${' + this.listViewInstance.fields.text + '} </span></div>';
|
|
3119
|
-
this.templateFunction = compile(this.listViewInstance.template || this.commonTemplate, this.listViewInstance);
|
|
3120
|
-
this.groupTemplateFunction = compile(this.listViewInstance.groupTemplate || this.commonTemplate, this.listViewInstance);
|
|
3121
3112
|
this.wireScrollEvent(false);
|
|
3122
3113
|
const curViewDS = this.listViewInstance.curViewDS;
|
|
3123
3114
|
const firstDs = curViewDS.slice(0, 1);
|
|
@@ -3249,6 +3240,9 @@ class Virtualization {
|
|
|
3249
3240
|
}
|
|
3250
3241
|
onVirtualUiScroll(e) {
|
|
3251
3242
|
let startingHeight;
|
|
3243
|
+
const curViewDS = this.listViewInstance.curViewDS;
|
|
3244
|
+
this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;
|
|
3245
|
+
this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);
|
|
3252
3246
|
if (this.listViewInstance.isWindow) {
|
|
3253
3247
|
startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -
|
|
3254
3248
|
document.documentElement.getBoundingClientRect().top;
|
|
@@ -3364,7 +3358,13 @@ class Virtualization {
|
|
|
3364
3358
|
if (!element.querySelector('.' + classNames.checkboxWrapper)) {
|
|
3365
3359
|
element.classList.add(classNames.checklist);
|
|
3366
3360
|
textContent.classList.add(classNames.checkbox);
|
|
3367
|
-
|
|
3361
|
+
if (this.listViewInstance.checkBoxPosition === 'Left') {
|
|
3362
|
+
textContent.classList.add('e-checkbox-left');
|
|
3363
|
+
}
|
|
3364
|
+
else {
|
|
3365
|
+
textContent.classList.add('e-checkbox-right');
|
|
3366
|
+
}
|
|
3367
|
+
textContent.append(this.checkListWrapper.cloneNode(true));
|
|
3368
3368
|
}
|
|
3369
3369
|
}
|
|
3370
3370
|
}
|
|
@@ -3602,7 +3602,6 @@ class Virtualization {
|
|
|
3602
3602
|
const curViewDS = this.listViewInstance.curViewDS;
|
|
3603
3603
|
// eslint-disable-next-line
|
|
3604
3604
|
const resutJSON = this.findDSAndIndexFromId(curViewDS, obj);
|
|
3605
|
-
// eslint-disable-next-line
|
|
3606
3605
|
if (Object.keys(resutJSON).length) {
|
|
3607
3606
|
dataSource = resutJSON.data;
|
|
3608
3607
|
if (curViewDS[resutJSON.index - 1] &&
|
|
@@ -3850,7 +3849,7 @@ class Virtualization {
|
|
|
3850
3849
|
this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);
|
|
3851
3850
|
}
|
|
3852
3851
|
if (this.listViewInstance.fields.groupBy && this.listViewInstance.curViewDS[index + 1] && this.listViewInstance.curViewDS[index + 1].isHeader) {
|
|
3853
|
-
|
|
3852
|
+
const targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);
|
|
3854
3853
|
if (targetEle) {
|
|
3855
3854
|
target = targetEle.nextElementSibling;
|
|
3856
3855
|
}
|
|
@@ -3866,190 +3865,49 @@ class Virtualization {
|
|
|
3866
3865
|
this.refreshItemHeight();
|
|
3867
3866
|
}
|
|
3868
3867
|
createUIItem(args) {
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
}
|
|
3885
|
-
[].slice.call(nodes).forEach((ele) => {
|
|
3886
|
-
div.appendChild(ele);
|
|
3887
|
-
});
|
|
3888
|
-
if (div.children && div.children[0]) {
|
|
3889
|
-
div.children[0].classList.add('e-checkbox');
|
|
3890
|
-
if (this.listViewInstance.checkBoxPosition === 'Left') {
|
|
3891
|
-
div.children[0].classList.add('e-checkbox-left');
|
|
3892
|
-
}
|
|
3893
|
-
else {
|
|
3894
|
-
div.children[0].classList.add('e-checkbox-right');
|
|
3895
|
-
}
|
|
3896
|
-
if (this.listViewInstance.checkBoxPosition === 'Left') {
|
|
3897
|
-
div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);
|
|
3898
|
-
}
|
|
3899
|
-
else {
|
|
3900
|
-
div.children[0].appendChild(this.listViewInstance.virtualCheckBox);
|
|
3868
|
+
if (!args.item.classList.contains('e-list-group-item')) {
|
|
3869
|
+
this.templateData = args.curData.isHeader ? args.curData.items[0] :
|
|
3870
|
+
args.curData;
|
|
3871
|
+
if (this.listViewInstance.showCheckBox) {
|
|
3872
|
+
// eslint-disable-next-line
|
|
3873
|
+
this.listViewInstance.renderCheckbox(args);
|
|
3874
|
+
if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&
|
|
3875
|
+
(!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {
|
|
3876
|
+
const div = document.createElement('div');
|
|
3877
|
+
const commonTemplate = '<div class="e-text-content" role="presentation"> ' +
|
|
3878
|
+
'<span class="e-list-text"> ${' + this.listViewInstance.fields.text + '} </span></div>';
|
|
3879
|
+
const templateFunction = compile(this.listViewInstance.template || commonTemplate, this.listViewInstance);
|
|
3880
|
+
const nodes = templateFunction(this.templateData, this.listViewInstance);
|
|
3881
|
+
if (this.listViewInstance.template && this.listViewInstance.isReact) {
|
|
3882
|
+
this.listViewInstance.renderReactTemplates();
|
|
3901
3883
|
}
|
|
3902
|
-
|
|
3903
|
-
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
3908
|
-
|
|
3909
|
-
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
|
|
3917
|
-
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
3923
|
-
|
|
3924
|
-
|
|
3925
|
-
}
|
|
3926
|
-
if (args.curData.isHeader) {
|
|
3927
|
-
this.headerData = args.curData;
|
|
3928
|
-
}
|
|
3929
|
-
const groupTemplate = this.listViewInstance.createElement('div');
|
|
3930
|
-
if (this.listViewInstance.fields.groupBy) {
|
|
3931
|
-
const nodes = this.groupTemplateFunction(this.headerData, this.listViewInstance);
|
|
3932
|
-
if (this.listViewInstance.template && this.listViewInstance.isReact) {
|
|
3933
|
-
this.listViewInstance.renderReactTemplates();
|
|
3934
|
-
}
|
|
3935
|
-
[].slice.call(nodes).forEach((ele) => {
|
|
3936
|
-
groupTemplate.appendChild(ele);
|
|
3937
|
-
});
|
|
3938
|
-
}
|
|
3939
|
-
if ((!this.listViewInstance.isReact || (typeof this.listViewInstance.template == "string" && !args.item.classList.contains("e-list-group-item")) ||
|
|
3940
|
-
(typeof this.listViewInstance.groupTemplate == "string" && args.item.classList.contains("e-list-group-item"))) && !this.listViewInstance.isVue) {
|
|
3941
|
-
args.item.innerHTML = '';
|
|
3942
|
-
}
|
|
3943
|
-
args.item.context = { data: args.curData, nodes: { flatTemplateNodes: [], groupTemplateNodes: [] } };
|
|
3944
|
-
for (let i = 0; i < template.children.length; i++) {
|
|
3945
|
-
this.compileTemplate(template.children[i], args.item, false);
|
|
3946
|
-
}
|
|
3947
|
-
for (let i = 0; i < groupTemplate.children.length; i++) {
|
|
3948
|
-
this.compileTemplate(groupTemplate.children[i], args.item, true);
|
|
3949
|
-
}
|
|
3950
|
-
args.item.context.template = args.curData.isHeader ? template.firstElementChild :
|
|
3951
|
-
groupTemplate.firstElementChild;
|
|
3952
|
-
args.item.context.type = args.curData.isHeader ? 'flatList' : 'groupList';
|
|
3953
|
-
const element = args.curData.isHeader ? groupTemplate : template;
|
|
3954
|
-
if (element.firstElementChild && !this.listViewInstance.isReact && !this.listViewInstance.isVue) {
|
|
3955
|
-
args.item.insertBefore(element.firstElementChild, null);
|
|
3956
|
-
}
|
|
3957
|
-
}
|
|
3958
|
-
compileTemplate(element, item, isHeader) {
|
|
3959
|
-
const subNode = {};
|
|
3960
|
-
subNode.onChange = (value) => {
|
|
3961
|
-
let groupTemplateElements;
|
|
3962
|
-
let templateElements;
|
|
3963
|
-
if (this.listViewInstance.isVue) {
|
|
3964
|
-
groupTemplateElements = this.groupTemplateFunction(value);
|
|
3965
|
-
templateElements = this.templateFunction(value);
|
|
3966
|
-
}
|
|
3967
|
-
else {
|
|
3968
|
-
groupTemplateElements = this.groupTemplateFunction(value, this.listViewInstance);
|
|
3969
|
-
templateElements = this.templateFunction(value, this.listViewInstance);
|
|
3970
|
-
}
|
|
3971
|
-
if (this.listViewInstance.template && this.listViewInstance.isReact) {
|
|
3972
|
-
this.listViewInstance.renderReactTemplates();
|
|
3973
|
-
}
|
|
3974
|
-
let currentTemplate = templateElements;
|
|
3975
|
-
if (value.isHeader) {
|
|
3976
|
-
currentTemplate = groupTemplateElements;
|
|
3977
|
-
}
|
|
3978
|
-
[].slice.call(currentTemplate).forEach(function (currentElement) {
|
|
3979
|
-
let RemovableClass = element.classList.value.replace('e-checkbox', '');
|
|
3980
|
-
RemovableClass = RemovableClass.replace('e-checkbox-left', '');
|
|
3981
|
-
RemovableClass = RemovableClass.replace('e-checkbox-right', '');
|
|
3982
|
-
removeClass([element], RemovableClass.split(' ').filter(function (css) { return css; }));
|
|
3983
|
-
addClass([element], Array.from(currentElement.classList));
|
|
3984
|
-
for (let i = 0; i < element.attributes.length; i++) {
|
|
3985
|
-
if (element.attributes[i].name != 'class') {
|
|
3986
|
-
const newData = currentElement.getAttribute(element.attributes[i].name);
|
|
3987
|
-
element.setAttribute(element.attributes[i].name, newData);
|
|
3884
|
+
[].slice.call(nodes).forEach((ele) => {
|
|
3885
|
+
div.appendChild(ele);
|
|
3886
|
+
});
|
|
3887
|
+
if (div.children && div.children[0]) {
|
|
3888
|
+
div.children[0].classList.add('e-checkbox');
|
|
3889
|
+
if (this.listViewInstance.checkBoxPosition === 'Left') {
|
|
3890
|
+
div.children[0].classList.add('e-checkbox-left');
|
|
3891
|
+
}
|
|
3892
|
+
else {
|
|
3893
|
+
div.children[0].classList.add('e-checkbox-right');
|
|
3894
|
+
}
|
|
3895
|
+
if (this.listViewInstance.checkBoxPosition === 'Left') {
|
|
3896
|
+
div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);
|
|
3897
|
+
}
|
|
3898
|
+
else {
|
|
3899
|
+
div.children[0].appendChild(this.listViewInstance.virtualCheckBox);
|
|
3900
|
+
}
|
|
3901
|
+
while (args.item.lastChild) {
|
|
3902
|
+
args.item.removeChild(args.item.lastChild);
|
|
3903
|
+
}
|
|
3904
|
+
[].slice.call(div.children).forEach(function (ele) {
|
|
3905
|
+
args.item.appendChild(ele);
|
|
3906
|
+
});
|
|
3988
3907
|
}
|
|
3989
3908
|
}
|
|
3990
|
-
[].slice.call(element.children).forEach(function (ele) {
|
|
3991
|
-
if (!ele.classList.contains('e-listview-checkbox') && !(ele.classList.contains('e-checkbox-left') || ele.classList.contains('e-checkbox-right'))) {
|
|
3992
|
-
ele.remove();
|
|
3993
|
-
}
|
|
3994
|
-
});
|
|
3995
|
-
[].slice.call(currentElement.children).forEach(function (ele) {
|
|
3996
|
-
element.appendChild(ele);
|
|
3997
|
-
});
|
|
3998
|
-
});
|
|
3999
|
-
};
|
|
4000
|
-
this.updateContextData(item, subNode, isHeader);
|
|
4001
|
-
}
|
|
4002
|
-
onChange(newData, listElement) {
|
|
4003
|
-
listElement.context.data = newData;
|
|
4004
|
-
// eslint-disable-next-line max-len
|
|
4005
|
-
const groupTemplateNodes = listElement.context.nodes.groupTemplateNodes;
|
|
4006
|
-
// eslint-disable-next-line max-len
|
|
4007
|
-
const flatTemplateNodes = listElement.context.nodes.flatTemplateNodes;
|
|
4008
|
-
// eslint-disable-next-line
|
|
4009
|
-
if (!isNullOrUndefined(newData.isHeader) && newData.isHeader && listElement.context.type === 'groupList') {
|
|
4010
|
-
// eslint-disable-next-line
|
|
4011
|
-
const element = listElement.firstElementChild;
|
|
4012
|
-
detach(listElement.firstElementChild);
|
|
4013
|
-
listElement.insertBefore(listElement.context.template, null);
|
|
4014
|
-
listElement.context.template = element;
|
|
4015
|
-
listElement.context.type = 'flatList';
|
|
4016
|
-
for (let i = 0; i < groupTemplateNodes.length; i++) {
|
|
4017
|
-
// eslint-disable-next-line
|
|
4018
|
-
groupTemplateNodes[i].onChange(newData);
|
|
4019
3909
|
}
|
|
4020
3910
|
}
|
|
4021
|
-
else if (!newData.isHeader && listElement.context.type === 'flatList') {
|
|
4022
|
-
const element = listElement.firstElementChild;
|
|
4023
|
-
detach(listElement.firstElementChild);
|
|
4024
|
-
listElement.insertBefore(listElement.context.template, null);
|
|
4025
|
-
listElement.context.template = element;
|
|
4026
|
-
listElement.context.type = 'groupList';
|
|
4027
|
-
for (let i = 0; i < flatTemplateNodes.length; i++) {
|
|
4028
|
-
// eslint-disable-next-line
|
|
4029
|
-
flatTemplateNodes[i].onChange(newData);
|
|
4030
|
-
}
|
|
4031
|
-
}
|
|
4032
|
-
else if (!newData.isHeader) {
|
|
4033
|
-
for (let i = 0; i < flatTemplateNodes.length; i++) {
|
|
4034
|
-
// eslint-disable-next-line
|
|
4035
|
-
flatTemplateNodes[i].onChange(newData);
|
|
4036
|
-
}
|
|
4037
|
-
}
|
|
4038
|
-
else {
|
|
4039
|
-
for (let i = 0; i < groupTemplateNodes.length; i++) {
|
|
4040
|
-
// eslint-disable-next-line
|
|
4041
|
-
groupTemplateNodes[i].onChange(newData);
|
|
4042
|
-
}
|
|
4043
|
-
}
|
|
4044
|
-
}
|
|
4045
|
-
// eslint-disable-next-line
|
|
4046
|
-
updateContextData(listElement, node, isHeader) {
|
|
4047
|
-
if (isHeader) {
|
|
4048
|
-
listElement.context.nodes.groupTemplateNodes.push(node);
|
|
4049
|
-
}
|
|
4050
|
-
else {
|
|
4051
|
-
listElement.context.nodes.flatTemplateNodes.push(node);
|
|
4052
|
-
}
|
|
4053
3911
|
}
|
|
4054
3912
|
reRenderUiVirtualization() {
|
|
4055
3913
|
this.wireScrollEvent(true);
|
|
@@ -4064,8 +3922,7 @@ class Virtualization {
|
|
|
4064
3922
|
this.listViewInstance.setLocalData();
|
|
4065
3923
|
}
|
|
4066
3924
|
updateUI(element, index, targetElement) {
|
|
4067
|
-
|
|
4068
|
-
const onChange = this.isNgTemplate() ? this.onNgChange : (this.isVueFunctionTemplate()) ? this.onVueChange : this.onChange;
|
|
3925
|
+
const onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;
|
|
4069
3926
|
if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {
|
|
4070
3927
|
const curViewDS = this.listViewInstance.curViewDS[index];
|
|
4071
3928
|
// eslint-disable-next-line
|
|
@@ -4089,18 +3946,22 @@ class Virtualization {
|
|
|
4089
3946
|
* @param {ElementContext} listElement - The HTML element context for the list view.
|
|
4090
3947
|
* @param {Virtualization} virtualThis - The virtualization context for the list view.
|
|
4091
3948
|
*/
|
|
4092
|
-
|
|
4093
|
-
|
|
3949
|
+
onChange(newData, listElement, virtualThis) {
|
|
3950
|
+
const liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement,
|
|
4094
3951
|
// eslint-disable-next-line
|
|
4095
3952
|
[newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);
|
|
3953
|
+
if (virtualThis.listViewInstance.isReact) {
|
|
3954
|
+
virtualThis.listViewInstance.renderReactTemplates();
|
|
3955
|
+
}
|
|
4096
3956
|
while (listElement.lastChild) {
|
|
4097
3957
|
listElement.removeChild(listElement.lastChild);
|
|
4098
3958
|
}
|
|
4099
|
-
|
|
3959
|
+
[].slice.call(liItem[0].children).forEach(function (ele) {
|
|
3960
|
+
listElement.appendChild(ele);
|
|
3961
|
+
});
|
|
4100
3962
|
}
|
|
4101
3963
|
onNgChange(newData, listElement, virtualThis) {
|
|
4102
3964
|
// compile given target element with template for new data
|
|
4103
|
-
// eslint-disable-next-line
|
|
4104
3965
|
const templateCompiler = compile(virtualThis.listViewInstance.template);
|
|
4105
3966
|
const resultElement = templateCompiler(newData);
|
|
4106
3967
|
while (listElement.lastChild) {
|