@syncfusion/ej2-lists 23.2.4 → 24.1.46
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 +1 -9
- package/README.md +1 -1
- 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 +57 -58
- package/dist/es6/ej2-lists.es2015.js.map +1 -1
- package/dist/es6/ej2-lists.es5.js +53 -54
- 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 +19 -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.js +2 -5
- 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
|
@@ -280,18 +280,31 @@ 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
|
+
let tooltipText = fieldData[fields.tooltip];
|
|
290
|
+
if (options && options.enableHtmlSanitizer) {
|
|
291
|
+
tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
let tooltipTextElement = createElement('span', { innerHTML: tooltipText });
|
|
295
|
+
tooltipText = tooltipTextElement.innerText;
|
|
296
|
+
tooltipTextElement = null;
|
|
297
|
+
}
|
|
290
298
|
li.setAttribute('title', tooltipText);
|
|
291
299
|
}
|
|
292
300
|
// eslint-disable-next-line no-prototype-builtins
|
|
293
301
|
if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {
|
|
294
|
-
|
|
302
|
+
const htmlAttributes = fieldData[fields.htmlAttributes];
|
|
303
|
+
// Check if 'class' attribute is present and not an empty string
|
|
304
|
+
if (htmlAttributes.hasOwnProperty('class') && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {
|
|
305
|
+
delete htmlAttributes['class'];
|
|
306
|
+
}
|
|
307
|
+
setAttribute(li, htmlAttributes);
|
|
295
308
|
}
|
|
296
309
|
// eslint-disable-next-line no-prototype-builtins
|
|
297
310
|
if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {
|
|
@@ -507,7 +520,6 @@ var ListBase;
|
|
|
507
520
|
const curOpt = extend({}, defaultListBaseOptions, options);
|
|
508
521
|
const fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);
|
|
509
522
|
const curEle = element.cloneNode(true);
|
|
510
|
-
// eslint-disable-next-line
|
|
511
523
|
const jsonAr = [];
|
|
512
524
|
curEle.classList.add('json-parent');
|
|
513
525
|
const childs = curEle.querySelectorAll('.json-parent>li');
|
|
@@ -516,7 +528,6 @@ var ListBase;
|
|
|
516
528
|
const li = childs[i];
|
|
517
529
|
const anchor = li.querySelector('a');
|
|
518
530
|
const ul = li.querySelector('ul');
|
|
519
|
-
// eslint-disable-next-line
|
|
520
531
|
const json = {};
|
|
521
532
|
const childNodes = anchor ? anchor.childNodes : li.childNodes;
|
|
522
533
|
const keys = Object.keys(childNodes);
|
|
@@ -590,7 +601,6 @@ var ListBase;
|
|
|
590
601
|
const ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });
|
|
591
602
|
const curOpt = extend({}, defaultListBaseOptions, options);
|
|
592
603
|
const curFields = extend({}, ListBase.defaultMappedFields, fields);
|
|
593
|
-
// eslint-disable-next-line
|
|
594
604
|
const compiledString = compileTemplate(template);
|
|
595
605
|
const liCollection = [];
|
|
596
606
|
let value;
|
|
@@ -639,7 +649,7 @@ var ListBase;
|
|
|
639
649
|
else {
|
|
640
650
|
const currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;
|
|
641
651
|
if (isHeader) {
|
|
642
|
-
if (componentInstance && componentInstance.getModuleName()
|
|
652
|
+
if (componentInstance && componentInstance.getModuleName() !== 'listview') {
|
|
643
653
|
// eslint-disable-next-line
|
|
644
654
|
const compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);
|
|
645
655
|
if (compiledElement) {
|
|
@@ -697,7 +707,6 @@ var ListBase;
|
|
|
697
707
|
function renderGroupTemplate(groupTemplate, groupDataSource, fields,
|
|
698
708
|
// eslint-disable-next-line
|
|
699
709
|
headerItems, options, componentInstance) {
|
|
700
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
701
710
|
const compiledString = compileTemplate(groupTemplate);
|
|
702
711
|
const curFields = extend({}, ListBase.defaultMappedFields, fields);
|
|
703
712
|
const curOpt = extend({}, defaultListBaseOptions, options);
|
|
@@ -706,7 +715,7 @@ var ListBase;
|
|
|
706
715
|
const headerData = {};
|
|
707
716
|
headerData[`${category}`] = header.textContent;
|
|
708
717
|
header.innerHTML = '';
|
|
709
|
-
if (componentInstance && componentInstance.getModuleName() !==
|
|
718
|
+
if (componentInstance && componentInstance.getModuleName() !== 'listview') {
|
|
710
719
|
// eslint-disable-next-line
|
|
711
720
|
const compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);
|
|
712
721
|
if (compiledElement) {
|
|
@@ -742,7 +751,6 @@ var ListBase;
|
|
|
742
751
|
// Create expand and collapse node
|
|
743
752
|
if (!!options.expandCollapse && hasChildren && !options.template) {
|
|
744
753
|
element.firstElementChild.classList.add(cssClass.iconWrapper);
|
|
745
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
746
754
|
const expandElement = options.expandIconPosition === 'Left' ? prepend : append;
|
|
747
755
|
expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));
|
|
748
756
|
}
|
|
@@ -888,9 +896,8 @@ var ListBase;
|
|
|
888
896
|
li.setAttribute('data-uid', generateId());
|
|
889
897
|
}
|
|
890
898
|
if (grpLI && options && options.groupTemplate) {
|
|
891
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
892
899
|
const compiledString = compileTemplate(options.groupTemplate);
|
|
893
|
-
if (componentInstance && componentInstance.getModuleName() !==
|
|
900
|
+
if (componentInstance && componentInstance.getModuleName() !== 'listview') {
|
|
894
901
|
// eslint-disable-next-line
|
|
895
902
|
const compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);
|
|
896
903
|
if (compiledElement) {
|
|
@@ -902,7 +909,6 @@ var ListBase;
|
|
|
902
909
|
}
|
|
903
910
|
}
|
|
904
911
|
else if (!grpLI && options && options.template) {
|
|
905
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
906
912
|
const compiledString = compileTemplate(options.template);
|
|
907
913
|
if (componentInstance && componentInstance.getModuleName() !== 'listview') {
|
|
908
914
|
// eslint-disable-next-line
|
|
@@ -974,7 +980,6 @@ var ListBase;
|
|
|
974
980
|
function generateIcon(createElement, liElement, className, options) {
|
|
975
981
|
const curOpt = extend({}, defaultListBaseOptions, options);
|
|
976
982
|
cssClass = getModuleClass(curOpt.moduleName);
|
|
977
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
978
983
|
const expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;
|
|
979
984
|
expandElement([createElement('div', {
|
|
980
985
|
className: 'e-icons ' + curOpt.expandIconClass + ' ' +
|
|
@@ -1311,7 +1316,6 @@ let ListView = class ListView extends Component {
|
|
|
1311
1316
|
this.headerEle.appendChild(hedBackButton);
|
|
1312
1317
|
this.headerEle.appendChild(textEle);
|
|
1313
1318
|
if (this.headerTemplate) {
|
|
1314
|
-
// eslint-disable-next-line
|
|
1315
1319
|
const compiledString = compile(this.headerTemplate);
|
|
1316
1320
|
const headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });
|
|
1317
1321
|
// eslint-disable-next-line
|
|
@@ -1430,7 +1434,7 @@ let ListView = class ListView extends Component {
|
|
|
1430
1434
|
itemCreated: this.renderCheckbox.bind(this),
|
|
1431
1435
|
templateID: `${this.element.id}${LISTVIEW_TEMPLATE_PROPERTY}`,
|
|
1432
1436
|
groupTemplateID: `${this.element.id}${LISTVIEW_GROUPTEMPLATE_PROPERTY}`,
|
|
1433
|
-
enableHtmlSanitizer: this.enableHtmlSanitizer
|
|
1437
|
+
enableHtmlSanitizer: this.enableHtmlSanitizer
|
|
1434
1438
|
};
|
|
1435
1439
|
this.initialization();
|
|
1436
1440
|
}
|
|
@@ -1471,8 +1475,8 @@ let ListView = class ListView extends Component {
|
|
|
1471
1475
|
if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {
|
|
1472
1476
|
fieldData = getFieldValues(args.curData, this.listBaseOption.fields);
|
|
1473
1477
|
if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {
|
|
1474
|
-
|
|
1475
|
-
if (index
|
|
1478
|
+
const index = this.selectedId.findIndex(e => e === fieldData[this.listBaseOption.fields.id].toString());
|
|
1479
|
+
if (index !== -1) {
|
|
1476
1480
|
this.checkInternally(args, checkboxElement);
|
|
1477
1481
|
}
|
|
1478
1482
|
}
|
|
@@ -1485,7 +1489,7 @@ let ListView = class ListView extends Component {
|
|
|
1485
1489
|
this.checkInternally(args, checkboxElement);
|
|
1486
1490
|
}
|
|
1487
1491
|
checkboxElement.setAttribute('aria-checked', frameElement.classList.contains(classNames.checked) ? 'true' : 'false');
|
|
1488
|
-
checkboxElement.setAttribute('aria-label',
|
|
1492
|
+
checkboxElement.setAttribute('aria-label', args.text);
|
|
1489
1493
|
if (this.checkBoxPosition === 'Left') {
|
|
1490
1494
|
checkboxElement.classList.add(classNames.checkboxLeft);
|
|
1491
1495
|
args.item.firstElementChild.classList.add(classNames.checkboxLeft);
|
|
@@ -1682,7 +1686,7 @@ let ListView = class ListView extends Component {
|
|
|
1682
1686
|
}
|
|
1683
1687
|
else {
|
|
1684
1688
|
this.setCheckboxLI(li, e);
|
|
1685
|
-
if ((target.nodeName
|
|
1689
|
+
if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {
|
|
1686
1690
|
target.classList.add('e-focused');
|
|
1687
1691
|
this.targetElement = target;
|
|
1688
1692
|
}
|
|
@@ -1690,7 +1694,7 @@ let ListView = class ListView extends Component {
|
|
|
1690
1694
|
}
|
|
1691
1695
|
else {
|
|
1692
1696
|
this.setSelectLI(li, e);
|
|
1693
|
-
if ((target.nodeName
|
|
1697
|
+
if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {
|
|
1694
1698
|
target.classList.add('e-focused');
|
|
1695
1699
|
this.targetElement = target;
|
|
1696
1700
|
}
|
|
@@ -1951,6 +1955,9 @@ let ListView = class ListView extends Component {
|
|
|
1951
1955
|
EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);
|
|
1952
1956
|
EventHandler.add(this.element, 'focusout', this.focusout, this);
|
|
1953
1957
|
this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });
|
|
1958
|
+
if (!isNullOrUndefined(this.scroll)) {
|
|
1959
|
+
EventHandler.add(this.element, 'scroll', this.onListScroll, this);
|
|
1960
|
+
}
|
|
1954
1961
|
}
|
|
1955
1962
|
unWireEvents() {
|
|
1956
1963
|
EventHandler.remove(this.element, 'click', this.clickHandler);
|
|
@@ -1958,6 +1965,9 @@ let ListView = class ListView extends Component {
|
|
|
1958
1965
|
EventHandler.remove(this.element, 'mouseout', this.leaveHandler);
|
|
1959
1966
|
EventHandler.remove(this.element, 'mouseover', this.hoverHandler);
|
|
1960
1967
|
EventHandler.remove(this.element, 'mouseout', this.leaveHandler);
|
|
1968
|
+
if (!isNullOrUndefined(this.scroll)) {
|
|
1969
|
+
EventHandler.remove(this.element, 'scroll', this.onListScroll);
|
|
1970
|
+
}
|
|
1961
1971
|
this.touchModule.destroy();
|
|
1962
1972
|
this.touchModule = null;
|
|
1963
1973
|
}
|
|
@@ -1999,7 +2009,7 @@ let ListView = class ListView extends Component {
|
|
|
1999
2009
|
if (this.curUL.querySelector('.' + classNames.focused)) {
|
|
2000
2010
|
this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);
|
|
2001
2011
|
}
|
|
2002
|
-
|
|
2012
|
+
const textAreaFocus = li.querySelector('textarea') || li.querySelector('input');
|
|
2003
2013
|
li.classList.add(classNames.focused);
|
|
2004
2014
|
if (!isNullOrUndefined(e)) {
|
|
2005
2015
|
if (e.target === textAreaFocus) {
|
|
@@ -2039,7 +2049,6 @@ let ListView = class ListView extends Component {
|
|
|
2039
2049
|
}
|
|
2040
2050
|
else {
|
|
2041
2051
|
selectedItem =
|
|
2042
|
-
// eslint-disable-next-line
|
|
2043
2052
|
{
|
|
2044
2053
|
item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],
|
|
2045
2054
|
// eslint-disable-next-line
|
|
@@ -2197,7 +2206,7 @@ let ListView = class ListView extends Component {
|
|
|
2197
2206
|
setViewDataSource(dataSource = this.localData) {
|
|
2198
2207
|
// eslint-disable-next-line
|
|
2199
2208
|
let fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;
|
|
2200
|
-
|
|
2209
|
+
const query = ListBase.addSorting(this.sortOrder, fieldValue);
|
|
2201
2210
|
if (dataSource && this.fields.groupBy) {
|
|
2202
2211
|
if (this.sortOrder !== 'None') {
|
|
2203
2212
|
this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);
|
|
@@ -2275,7 +2284,6 @@ let ListView = class ListView extends Component {
|
|
|
2275
2284
|
this.removeElement(this.headerEle);
|
|
2276
2285
|
this.removeElement(this.ulElement);
|
|
2277
2286
|
this.removeElement(this.contentContainer);
|
|
2278
|
-
// eslint-disable-next-line
|
|
2279
2287
|
if (this.isReact) {
|
|
2280
2288
|
this.clearTemplate();
|
|
2281
2289
|
}
|
|
@@ -2314,7 +2322,6 @@ let ListView = class ListView extends Component {
|
|
|
2314
2322
|
UpdateCurrentUL() {
|
|
2315
2323
|
this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);
|
|
2316
2324
|
if (this.curUL) {
|
|
2317
|
-
// eslint-disable-next-line
|
|
2318
2325
|
this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);
|
|
2319
2326
|
}
|
|
2320
2327
|
}
|
|
@@ -2329,7 +2336,6 @@ let ListView = class ListView extends Component {
|
|
|
2329
2336
|
if (!ele) {
|
|
2330
2337
|
const data = this.curViewDS;
|
|
2331
2338
|
ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);
|
|
2332
|
-
// eslint-disable-next-line
|
|
2333
2339
|
if (this.isReact) {
|
|
2334
2340
|
this.renderReactTemplates();
|
|
2335
2341
|
}
|
|
@@ -2343,7 +2349,6 @@ let ListView = class ListView extends Component {
|
|
|
2343
2349
|
this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);
|
|
2344
2350
|
if (this.selectedItems) {
|
|
2345
2351
|
const fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);
|
|
2346
|
-
// eslint-disable-next-line
|
|
2347
2352
|
this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');
|
|
2348
2353
|
}
|
|
2349
2354
|
this.selectedLI = undefined;
|
|
@@ -2367,7 +2372,6 @@ let ListView = class ListView extends Component {
|
|
|
2367
2372
|
this.contentContainer = this.createElement('div', { className: classNames.container });
|
|
2368
2373
|
this.element.appendChild(this.contentContainer);
|
|
2369
2374
|
this.renderIntoDom(this.ulElement);
|
|
2370
|
-
// eslint-disable-next-line
|
|
2371
2375
|
if (this.isReact) {
|
|
2372
2376
|
this.renderReactTemplates();
|
|
2373
2377
|
}
|
|
@@ -2376,7 +2380,6 @@ let ListView = class ListView extends Component {
|
|
|
2376
2380
|
getElementUID(obj) {
|
|
2377
2381
|
let fields = {};
|
|
2378
2382
|
if (obj instanceof Element) {
|
|
2379
|
-
// eslint-disable-next-line
|
|
2380
2383
|
fields[this.fields.id] = obj.getAttribute('data-uid');
|
|
2381
2384
|
}
|
|
2382
2385
|
else {
|
|
@@ -2402,12 +2405,12 @@ let ListView = class ListView extends Component {
|
|
|
2402
2405
|
selector: '.' + classNames.listItem
|
|
2403
2406
|
});
|
|
2404
2407
|
this.renderComplete();
|
|
2408
|
+
this.previousScrollTop = this.element.scrollTop;
|
|
2405
2409
|
}
|
|
2406
2410
|
/**
|
|
2407
2411
|
* It is used to destroy the ListView component.
|
|
2408
2412
|
*/
|
|
2409
2413
|
destroy() {
|
|
2410
|
-
// eslint-disable-next-line
|
|
2411
2414
|
if (this.isReact) {
|
|
2412
2415
|
this.clearTemplate();
|
|
2413
2416
|
}
|
|
@@ -2449,7 +2452,6 @@ let ListView = class ListView extends Component {
|
|
|
2449
2452
|
toUL = toUL.parentElement;
|
|
2450
2453
|
}
|
|
2451
2454
|
const fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);
|
|
2452
|
-
// eslint-disable-next-line
|
|
2453
2455
|
const text = fieldData[this.fields.text];
|
|
2454
2456
|
this.switchView(fromUL, toUL, true);
|
|
2455
2457
|
this.removeFocus();
|
|
@@ -2522,7 +2524,6 @@ let ListView = class ListView extends Component {
|
|
|
2522
2524
|
if (!this.enableVirtualization && isNullOrUndefined(li)) {
|
|
2523
2525
|
const curLi = this.element.querySelectorAll('.' + classNames.listItem);
|
|
2524
2526
|
for (let i = 0; i < curLi.length; i++) {
|
|
2525
|
-
// eslint-disable-next-line
|
|
2526
2527
|
if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {
|
|
2527
2528
|
li = curLi[i];
|
|
2528
2529
|
}
|
|
@@ -2572,7 +2573,6 @@ let ListView = class ListView extends Component {
|
|
|
2572
2573
|
*
|
|
2573
2574
|
*/
|
|
2574
2575
|
getSelectedItems() {
|
|
2575
|
-
// eslint-disable-next-line
|
|
2576
2576
|
let finalValue;
|
|
2577
2577
|
let isCompleted = false;
|
|
2578
2578
|
this.selectedId = [];
|
|
@@ -2583,7 +2583,6 @@ let ListView = class ListView extends Component {
|
|
|
2583
2583
|
isCompleted = true;
|
|
2584
2584
|
}
|
|
2585
2585
|
else if (this.showCheckBox && !isCompleted) {
|
|
2586
|
-
// eslint-disable-next-line
|
|
2587
2586
|
const liCollection = this.curUL.getElementsByClassName(classNames.selected);
|
|
2588
2587
|
const liTextCollection = [];
|
|
2589
2588
|
const liDataCollection = [];
|
|
@@ -2603,9 +2602,7 @@ let ListView = class ListView extends Component {
|
|
|
2603
2602
|
liDataCollection.push(tempData);
|
|
2604
2603
|
}
|
|
2605
2604
|
if (fieldData) {
|
|
2606
|
-
// eslint-disable-next-line
|
|
2607
2605
|
liTextCollection.push(fieldData[this.listBaseOption.fields.text]);
|
|
2608
|
-
// eslint-disable-next-line
|
|
2609
2606
|
this.selectedId.push(fieldData[this.listBaseOption.fields.id]);
|
|
2610
2607
|
}
|
|
2611
2608
|
else {
|
|
@@ -2647,7 +2644,6 @@ let ListView = class ListView extends Component {
|
|
|
2647
2644
|
isCompleted = true;
|
|
2648
2645
|
}
|
|
2649
2646
|
else {
|
|
2650
|
-
// eslint-disable-next-line
|
|
2651
2647
|
this.selectedId.push(fieldData[this.listBaseOption.fields.id]);
|
|
2652
2648
|
finalValue = {
|
|
2653
2649
|
text: fieldData[this.listBaseOption.fields.text], item: liElement,
|
|
@@ -2705,7 +2701,6 @@ let ListView = class ListView extends Component {
|
|
|
2705
2701
|
if (li) {
|
|
2706
2702
|
li.classList.add(classNames.disable);
|
|
2707
2703
|
}
|
|
2708
|
-
// eslint-disable-next-line
|
|
2709
2704
|
resultJSON[this.fields.enabled] = false;
|
|
2710
2705
|
}
|
|
2711
2706
|
}
|
|
@@ -2741,7 +2736,6 @@ let ListView = class ListView extends Component {
|
|
|
2741
2736
|
li.style.display = display;
|
|
2742
2737
|
}
|
|
2743
2738
|
if (isHide) {
|
|
2744
|
-
// eslint-disable-next-line
|
|
2745
2739
|
resultJSON[this.fields.isVisible] = false;
|
|
2746
2740
|
}
|
|
2747
2741
|
else {
|
|
@@ -2824,7 +2818,6 @@ let ListView = class ListView extends Component {
|
|
|
2824
2818
|
return newDataSource;
|
|
2825
2819
|
}
|
|
2826
2820
|
addItemInNestedList(targetItemData, itemQueue) {
|
|
2827
|
-
// eslint-disable-next-line
|
|
2828
2821
|
const targetItemId = targetItemData[this.fields.id];
|
|
2829
2822
|
const targetChildDS = targetItemData[this.fields.child];
|
|
2830
2823
|
const isAlreadyRenderedUL = this.element.querySelector('[pid=\'' + targetItemId + '\']');
|
|
@@ -2865,7 +2858,6 @@ let ListView = class ListView extends Component {
|
|
|
2865
2858
|
this.getLiFromObjOrElement(curViewDS[index + 2]) || null;
|
|
2866
2859
|
const li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);
|
|
2867
2860
|
this.setAttributes(li);
|
|
2868
|
-
// eslint-disable-next-line
|
|
2869
2861
|
if (this.template && this.isReact) {
|
|
2870
2862
|
this.renderReactTemplates();
|
|
2871
2863
|
}
|
|
@@ -2897,11 +2889,9 @@ let ListView = class ListView extends Component {
|
|
|
2897
2889
|
const curViewDS = this.curViewDS;
|
|
2898
2890
|
const fields = obj instanceof Element ? this.getElementUID(obj) : obj;
|
|
2899
2891
|
let dataSource;
|
|
2900
|
-
// eslint-disable-next-line prefer-const
|
|
2901
2892
|
dataSource = this.findItemFromDS(listDataSource, fields, true);
|
|
2902
2893
|
if (dataSource) {
|
|
2903
2894
|
let data;
|
|
2904
|
-
// eslint-disable-next-line prefer-const
|
|
2905
2895
|
data = this.findItemFromDS(dataSource, fields);
|
|
2906
2896
|
const index = curViewDS.indexOf(data);
|
|
2907
2897
|
const li = this.getLiFromObjOrElement(obj);
|
|
@@ -2922,11 +2912,8 @@ let ListView = class ListView extends Component {
|
|
|
2922
2912
|
if (groupLi) {
|
|
2923
2913
|
detach(groupLi);
|
|
2924
2914
|
}
|
|
2925
|
-
// eslint-disable-next-line
|
|
2926
2915
|
const foundData = (dataSource.length - 1) <= 0
|
|
2927
|
-
? this.findParent(this.localData, this.fields.id,
|
|
2928
|
-
// eslint-disable-next-line
|
|
2929
|
-
(value) => value === data[this.fields.id], null) : null;
|
|
2916
|
+
? this.findParent(this.localData, this.fields.id, (value) => value === data[this.fields.id], null) : null;
|
|
2930
2917
|
const dsIndex = dataSource.indexOf(data);
|
|
2931
2918
|
dataSource.splice(dsIndex, 1);
|
|
2932
2919
|
this.setViewDataSource(listDataSource);
|
|
@@ -2969,16 +2956,13 @@ let ListView = class ListView extends Component {
|
|
|
2969
2956
|
}
|
|
2970
2957
|
}
|
|
2971
2958
|
}
|
|
2972
|
-
// eslint-disable-next-line
|
|
2973
2959
|
findParent(dataSource, id, callback, parent) {
|
|
2974
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
2975
2960
|
if (dataSource.hasOwnProperty(id) && callback(dataSource[id]) === true) {
|
|
2976
2961
|
return extend({}, dataSource);
|
|
2977
2962
|
}
|
|
2978
2963
|
for (let i = 0; i < Object.keys(dataSource).length; i++) {
|
|
2979
2964
|
if (dataSource[Object.keys(dataSource)[i]]
|
|
2980
2965
|
&& typeof dataSource[Object.keys(dataSource)[i]] === 'object') {
|
|
2981
|
-
// eslint-disable-next-line
|
|
2982
2966
|
const result = this.findParent(dataSource[Object.keys(dataSource)[i]], id, callback, dataSource);
|
|
2983
2967
|
if (result != null) {
|
|
2984
2968
|
if (!result.parent) {
|
|
@@ -3001,6 +2985,21 @@ let ListView = class ListView extends Component {
|
|
|
3001
2985
|
}
|
|
3002
2986
|
return modules;
|
|
3003
2987
|
}
|
|
2988
|
+
onListScroll(e) {
|
|
2989
|
+
let args = { originalEvent: e, scrollDirection: "Bottom", distanceY: this.element.scrollHeight - this.element.scrollTop };
|
|
2990
|
+
let currentScrollTop = this.element.scrollTop;
|
|
2991
|
+
if (currentScrollTop > this.previousScrollTop) {
|
|
2992
|
+
args.scrollDirection = "Bottom";
|
|
2993
|
+
args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;
|
|
2994
|
+
this.trigger('scroll', args);
|
|
2995
|
+
}
|
|
2996
|
+
else if (this.previousScrollTop > currentScrollTop) {
|
|
2997
|
+
args.scrollDirection = "Top";
|
|
2998
|
+
args.distanceY = this.element.scrollTop;
|
|
2999
|
+
this.trigger('scroll', args);
|
|
3000
|
+
}
|
|
3001
|
+
this.previousScrollTop = currentScrollTop;
|
|
3002
|
+
}
|
|
3004
3003
|
/**
|
|
3005
3004
|
* Get the properties to be maintained in the persisted state.
|
|
3006
3005
|
*/
|
|
@@ -3082,6 +3081,9 @@ __decorate([
|
|
|
3082
3081
|
__decorate([
|
|
3083
3082
|
Event()
|
|
3084
3083
|
], ListView.prototype, "actionFailure", void 0);
|
|
3084
|
+
__decorate([
|
|
3085
|
+
Event()
|
|
3086
|
+
], ListView.prototype, "scroll", void 0);
|
|
3085
3087
|
ListView = __decorate([
|
|
3086
3088
|
NotifyPropertyChanges
|
|
3087
3089
|
], ListView);
|
|
@@ -3247,7 +3249,7 @@ class Virtualization {
|
|
|
3247
3249
|
onVirtualUiScroll(e) {
|
|
3248
3250
|
let startingHeight;
|
|
3249
3251
|
const curViewDS = this.listViewInstance.curViewDS;
|
|
3250
|
-
this.listItemHeight = select(
|
|
3252
|
+
this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;
|
|
3251
3253
|
this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);
|
|
3252
3254
|
if (this.listViewInstance.isWindow) {
|
|
3253
3255
|
startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -
|
|
@@ -3608,7 +3610,6 @@ class Virtualization {
|
|
|
3608
3610
|
const curViewDS = this.listViewInstance.curViewDS;
|
|
3609
3611
|
// eslint-disable-next-line
|
|
3610
3612
|
const resutJSON = this.findDSAndIndexFromId(curViewDS, obj);
|
|
3611
|
-
// eslint-disable-next-line
|
|
3612
3613
|
if (Object.keys(resutJSON).length) {
|
|
3613
3614
|
dataSource = resutJSON.data;
|
|
3614
3615
|
if (curViewDS[resutJSON.index - 1] &&
|
|
@@ -3856,7 +3857,7 @@ class Virtualization {
|
|
|
3856
3857
|
this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);
|
|
3857
3858
|
}
|
|
3858
3859
|
if (this.listViewInstance.fields.groupBy && this.listViewInstance.curViewDS[index + 1] && this.listViewInstance.curViewDS[index + 1].isHeader) {
|
|
3859
|
-
|
|
3860
|
+
const targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);
|
|
3860
3861
|
if (targetEle) {
|
|
3861
3862
|
target = targetEle.nextElementSibling;
|
|
3862
3863
|
}
|
|
@@ -3872,7 +3873,7 @@ class Virtualization {
|
|
|
3872
3873
|
this.refreshItemHeight();
|
|
3873
3874
|
}
|
|
3874
3875
|
createUIItem(args) {
|
|
3875
|
-
if (!args.item.classList.contains(
|
|
3876
|
+
if (!args.item.classList.contains('e-list-group-item')) {
|
|
3876
3877
|
this.templateData = args.curData.isHeader ? args.curData.items[0] :
|
|
3877
3878
|
args.curData;
|
|
3878
3879
|
if (this.listViewInstance.showCheckBox) {
|
|
@@ -3929,7 +3930,6 @@ class Virtualization {
|
|
|
3929
3930
|
this.listViewInstance.setLocalData();
|
|
3930
3931
|
}
|
|
3931
3932
|
updateUI(element, index, targetElement) {
|
|
3932
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
3933
3933
|
const onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;
|
|
3934
3934
|
if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {
|
|
3935
3935
|
const curViewDS = this.listViewInstance.curViewDS[index];
|
|
@@ -3955,7 +3955,7 @@ class Virtualization {
|
|
|
3955
3955
|
* @param {Virtualization} virtualThis - The virtualization context for the list view.
|
|
3956
3956
|
*/
|
|
3957
3957
|
onChange(newData, listElement, virtualThis) {
|
|
3958
|
-
|
|
3958
|
+
const liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement,
|
|
3959
3959
|
// eslint-disable-next-line
|
|
3960
3960
|
[newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);
|
|
3961
3961
|
if (virtualThis.listViewInstance.isReact) {
|
|
@@ -3970,7 +3970,6 @@ class Virtualization {
|
|
|
3970
3970
|
}
|
|
3971
3971
|
onNgChange(newData, listElement, virtualThis) {
|
|
3972
3972
|
// compile given target element with template for new data
|
|
3973
|
-
// eslint-disable-next-line
|
|
3974
3973
|
const templateCompiler = compile(virtualThis.listViewInstance.template);
|
|
3975
3974
|
const resultElement = templateCompiler(newData);
|
|
3976
3975
|
while (listElement.lastChild) {
|