@syncfusion/ej2-navigations 27.2.2 → 27.2.3

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.
@@ -3208,6 +3208,10 @@ let MenuBase = class MenuBase extends Component {
3208
3208
  li = this.createItems(iitems).children[idx];
3209
3209
  const ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];
3210
3210
  ul.insertBefore(li, ul.children[idx]);
3211
+ if (i === items.length - 1 && !this.isMenu && ul.style.display === 'block') {
3212
+ this.setPosition(null, ul, parseFloat(ul.style.top), parseFloat(ul.style.left));
3213
+ ul.style.display = 'block';
3214
+ }
3211
3215
  }
3212
3216
  }
3213
3217
  }
@@ -9115,11 +9119,13 @@ let Tab = class Tab extends Component {
9115
9119
  else {
9116
9120
  this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';
9117
9121
  removeClass([this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN$1);
9122
+ this.droppedIndex = isNullOrUndefined(this.droppedIndex) ? this.getEleIndex(this.dragItem) : this.droppedIndex;
9118
9123
  this.selectTab(this.droppedIndex, null, true);
9119
9124
  }
9120
9125
  }
9121
9126
  });
9122
9127
  this.dragItem = null;
9128
+ this.droppedIndex = null;
9123
9129
  }
9124
9130
  /**
9125
9131
  * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.
@@ -10874,10 +10880,24 @@ let TreeView = TreeView_1 = class TreeView extends Component {
10874
10880
  const childElement = select('.' + PARENTITEM, element);
10875
10881
  let checkBoxes;
10876
10882
  if (!isNullOrUndefined(childElement)) {
10883
+ let childCheck = Array.from(childElement.querySelectorAll('li'));
10877
10884
  checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);
10885
+ if (this.isFilter) {
10886
+ checkBoxes = Array.from(checkBoxes).filter((checkbox) => {
10887
+ const dataUID = checkbox.closest('li').getAttribute('data-uid');
10888
+ return dataUID !== null && this.checkedNodes.indexOf(dataUID) !== -1;
10889
+ });
10890
+ childCheck = Array.from(childCheck).filter((li) => {
10891
+ const childIds = li.getAttribute('data-uid');
10892
+ return childIds !== null && this.checkedNodes.indexOf(childIds) !== -1;
10893
+ });
10894
+ if (checkBoxes.length === 0) {
10895
+ checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);
10896
+ childCheck = Array.from(childElement.querySelectorAll('li'));
10897
+ }
10898
+ }
10878
10899
  const isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);
10879
10900
  const parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);
10880
- const childCheck = childElement.querySelectorAll('li');
10881
10901
  let checkedState;
10882
10902
  for (let index = 0; index < checkBoxes.length; index++) {
10883
10903
  const childId = childCheck[parseInt(index.toString(), 10)].getAttribute('data-uid');
@@ -10940,7 +10960,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
10940
10960
  ? nodes[parseInt(len.toString(), 10)].toString()
10941
10961
  : null;
10942
10962
  if (node !== '' && doCheck && node) {
10943
- this.setValidCheckedNode(node);
10963
+ this.setValidCheckedNode(node, nodes);
10944
10964
  this.dynamicCheckState(node, doCheck);
10945
10965
  }
10946
10966
  else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {
@@ -12390,7 +12410,15 @@ let TreeView = TreeView_1 = class TreeView extends Component {
12390
12410
  const parentIndex = li.getAttribute('data-uid');
12391
12411
  const mapper = this.fields;
12392
12412
  if (this.dataType === 1 && this.autoCheck) {
12393
- const resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));
12413
+ let resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));
12414
+ const childMatchesCheckedNodes = resultData.filter((item) => {
12415
+ return this.checkedNodes.indexOf(item[mapper.id].toString()) !== -1;
12416
+ }, this);
12417
+ if (this.checkedNodes.indexOf(parentIndex) !== -1 && childMatchesCheckedNodes.length !== resultData.length && this.isFilter) {
12418
+ if (childMatchesCheckedNodes.length > 0) {
12419
+ resultData = childMatchesCheckedNodes;
12420
+ }
12421
+ }
12394
12422
  for (let i = 0; i < resultData.length; i++) {
12395
12423
  const resultId = resultData[parseInt(i.toString(), 10)][this.fields.id]
12396
12424
  ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString()
@@ -12453,8 +12481,15 @@ let TreeView = TreeView_1 = class TreeView extends Component {
12453
12481
  }
12454
12482
  }
12455
12483
  else {
12456
- const childItems = this.getChildNodes(this.treeData, parentIndex);
12484
+ let childItems = this.getChildNodes(this.treeData, parentIndex);
12457
12485
  if (childItems) {
12486
+ const filteredChildItems = childItems.filter((item) => {
12487
+ const itemValue = String(item[Object.keys(item)[0]]);
12488
+ return this.checkedNodes.indexOf(itemValue) !== -1;
12489
+ });
12490
+ if (filteredChildItems.length > 0 && childItems.length && this.isFilter) {
12491
+ childItems = filteredChildItems;
12492
+ }
12458
12493
  this.childStateChange(childItems, parentIndex, childElement, doCheck);
12459
12494
  }
12460
12495
  }
@@ -12648,6 +12683,12 @@ let TreeView = TreeView_1 = class TreeView extends Component {
12648
12683
  getFocusedNode() {
12649
12684
  let selectedItem;
12650
12685
  const fNode = select('.' + LISTITEM + '[tabindex="0"]', this.element);
12686
+ if (!isNullOrUndefined(fNode)) {
12687
+ const ariaChecked = fNode.getAttribute('aria-checked');
12688
+ if (ariaChecked === 'mixed' || ariaChecked === 'false') {
12689
+ this.isFilter = false;
12690
+ }
12691
+ }
12651
12692
  if (isNullOrUndefined(fNode)) {
12652
12693
  selectedItem = select('.' + LISTITEM, this.element);
12653
12694
  }
@@ -13514,7 +13555,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
13514
13555
  }
13515
13556
  }
13516
13557
  expandParent(dropLi) {
13517
- const dropIcon = select('div.' + ICON, dropLi);
13558
+ const dropIcon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);
13518
13559
  if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {
13519
13560
  this.expandAction(dropLi, dropIcon, null);
13520
13561
  }
@@ -14386,6 +14427,9 @@ let TreeView = TreeView_1 = class TreeView extends Component {
14386
14427
  }
14387
14428
  setCheckedNodes(nodes) {
14388
14429
  nodes = JSON.parse(JSON.stringify(nodes));
14430
+ if (nodes.length > 1 && typeof this.nodeChecked === 'function' && this.nodeChecked.length > 0) {
14431
+ this.isFilter = true;
14432
+ }
14389
14433
  this.uncheckAll(this.checkedNodes);
14390
14434
  this.setIndeterminate(nodes);
14391
14435
  if (nodes.length > 0) {
@@ -14396,15 +14440,16 @@ let TreeView = TreeView_1 = class TreeView extends Component {
14396
14440
  * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel
14397
14441
  *
14398
14442
  * @param {string} node - The unique identifier of the node.
14443
+ * @param {string[]} [nodes=[]] - The list of node IDs to check.
14399
14444
  * @returns {void}
14400
14445
  * @private
14401
14446
  */
14402
- setValidCheckedNode(node) {
14447
+ setValidCheckedNode(node, nodes = []) {
14403
14448
  if (this.dataType === 1) {
14404
14449
  const mapper = this.fields;
14405
14450
  const resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));
14406
14451
  if (resultData[0]) {
14407
- this.setChildCheckState(resultData, node, resultData[0]);
14452
+ this.setChildCheckState(resultData, node, resultData[0], nodes);
14408
14453
  if (this.autoCheck) {
14409
14454
  const parent = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;
14410
14455
  const childNodes = this.getChildNodes(this.treeData, parent);
@@ -14430,7 +14475,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
14430
14475
  }
14431
14476
  const childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(a.toString(), 10)]);
14432
14477
  if (childItems) {
14433
- this.setChildCheckState(childItems, node, this.treeData[parseInt(a.toString(), 10)]);
14478
+ this.setChildCheckState(childItems, node, this.treeData[parseInt(a.toString(), 10)], nodes);
14434
14479
  }
14435
14480
  }
14436
14481
  }
@@ -14444,7 +14489,17 @@ let TreeView = TreeView_1 = class TreeView extends Component {
14444
14489
  * @returns {void}
14445
14490
  * @private
14446
14491
  */
14447
- setChildCheckState(childItems, node, treeData) {
14492
+ /**
14493
+ * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)
14494
+ *
14495
+ * @param {Object[]} childItems - The child items to check.
14496
+ * @param {string} node - The node to set the check state for.
14497
+ * @param {Object} [treeData] - The optional tree data.
14498
+ * @param {string[]} [nodes=[]] - The list of node IDs to check.
14499
+ * @returns {void}
14500
+ * @private
14501
+ */
14502
+ setChildCheckState(childItems, node, treeData, nodes = []) {
14448
14503
  let checkedParent;
14449
14504
  let count = 0;
14450
14505
  if (this.dataType === 1) {
@@ -14464,7 +14519,8 @@ let TreeView = TreeView_1 = class TreeView extends Component {
14464
14519
  this.checkDisabledState(node);
14465
14520
  }
14466
14521
  const subChildItems = this.getChildNodes(this.treeData, checkNode);
14467
- if (subChildItems) {
14522
+ const isParentNodeCheck = (nodes.length === 1 && nodes[0] === checkNode);
14523
+ if (subChildItems.length === node.length || isParentNodeCheck) {
14468
14524
  this.setChildCheckState(subChildItems, node, treeData);
14469
14525
  }
14470
14526
  }
@@ -14475,8 +14531,10 @@ let TreeView = TreeView_1 = class TreeView extends Component {
14475
14531
  }
14476
14532
  for (let index = 0; index < childItems.length; index++) {
14477
14533
  const checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';
14534
+ const isParentNodeCheck = ([node].length === 1 && nodes.length === 0);
14478
14535
  if (treeData && checkedParent && this.autoCheck) {
14479
- if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {
14536
+ if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1
14537
+ && (checkedChild === node || isParentNodeCheck)) {
14480
14538
  this.checkDisabledState(checkedChild, childItems[index]);
14481
14539
  }
14482
14540
  }
@@ -14498,7 +14556,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
14498
14556
  }
14499
14557
  setIndeterminate(nodes) {
14500
14558
  for (let i = 0; i < nodes.length; i++) {
14501
- this.setValidCheckedNode(nodes[parseInt(i.toString(), 10)]);
14559
+ this.setValidCheckedNode(nodes[parseInt(i.toString(), 10)], nodes);
14502
14560
  }
14503
14561
  }
14504
14562
  updatePosition(id, newData, isRefreshChild, childValue) {