@progressio_resources/gravity-design-system 2.2.0 → 2.2.1

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.
@@ -669,8 +669,6 @@ class GravityTooltipDirective {
669
669
  this.destroyTooltip();
670
670
  }, this.options['hideDelayAfterClick']);
671
671
  }
672
- ngOnInit() {
673
- }
674
672
  ngOnChanges(changes) {
675
673
  this.initOptions = this.renameProperties(this.initOptions);
676
674
  let changedOptions = this.getProperties(changes);
@@ -1539,7 +1537,6 @@ class GravityTableComponent {
1539
1537
  this.renderer = renderer;
1540
1538
  this.tableDensity = "standard";
1541
1539
  this.tableSizeInput = "auto";
1542
- this.firstTime = true;
1543
1540
  this.tableElement = null;
1544
1541
  this.tableSize = 'xl';
1545
1542
  let milliseconds = new Date().getTime();
@@ -1549,11 +1546,7 @@ class GravityTableComponent {
1549
1546
  ngAfterViewInit() {
1550
1547
  this.tableElement = this.tableContainer?.nativeElement?.childNodes[0];
1551
1548
  this.renderer.setAttribute(this.tableElement, 'table-id', this.tableId);
1552
- let tableHeaders = this.getTableHeaders();
1553
- this.initializeTable(tableHeaders);
1554
- this.adjustTableDensity(this.tableDensity);
1555
- this.adjustButtonsSize();
1556
- this.onResize();
1549
+ this.initializeComponent();
1557
1550
  }
1558
1551
  ngOnChanges(changes) {
1559
1552
  if (this.tableElement) {
@@ -1566,15 +1559,6 @@ class GravityTableComponent {
1566
1559
  }
1567
1560
  }
1568
1561
  }
1569
- ngAfterContentChecked() {
1570
- if (this.tableElement) {
1571
- let tableHeaders = this.getTableHeaders();
1572
- this.initializeTable(tableHeaders);
1573
- this.adjustTableDensity(this.tableDensity);
1574
- this.adjustButtonsSize();
1575
- this.onResize();
1576
- }
1577
- }
1578
1562
  getTableHeaders() {
1579
1563
  let tableHeaderItems = document.querySelectorAll('thead tr th');
1580
1564
  let tableHeaders = [];
@@ -1583,51 +1567,55 @@ class GravityTableComponent {
1583
1567
  });
1584
1568
  return tableHeaders;
1585
1569
  }
1570
+ initializeComponent() {
1571
+ let tableHeaders = this.getTableHeaders();
1572
+ this.initializeTable(tableHeaders);
1573
+ this.adjustTableDensity(this.tableDensity);
1574
+ this.adjustButtonsSize();
1575
+ this.onResize();
1576
+ }
1586
1577
  initializeTable(tableHeaders) {
1587
- if (this.firstTime) {
1588
- this.firstTime = false;
1589
- //Set corresponding tableHeader as an attribute of each td
1590
- let tableBody = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr td');
1591
- tableBody.forEach((tableBodyRow, index) => {
1592
- this.renderer.setAttribute(tableBodyRow, 'header-name', tableHeaders[index % tableHeaders.length]);
1593
- });
1594
- //Creates a copy of mobile-menu-trigger element for each tr
1595
- let tableBodyRows = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr');
1596
- let closeButtons = document.querySelectorAll('gravity-button[id-reference="close-button"]');
1597
- tableBodyRows.forEach((tr, index) => {
1598
- let mobileMenuTrigger = document.createElement('div');
1599
- this.renderer.addClass(mobileMenuTrigger, 'mobile-menu-trigger');
1600
- this.renderer.setAttribute(mobileMenuTrigger, 'cloned-node', 'true');
1601
- let menuToggle = document.createElement('div');
1602
- this.renderer.addClass(menuToggle, 'menu-toggle');
1603
- menuToggle.appendChild(document.createElement('span'));
1604
- menuToggle.appendChild(document.createElement('span'));
1605
- menuToggle.appendChild(document.createElement('span'));
1606
- menuToggle.addEventListener("click", () => {
1607
- if (menuToggle.classList.contains('open')) {
1608
- this.renderer.removeClass(menuToggle, 'open');
1609
- this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
1610
- }
1611
- else {
1612
- this.renderer.addClass(menuToggle, 'open');
1613
- this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');
1614
- }
1615
- });
1616
- mobileMenuTrigger.appendChild(menuToggle);
1617
- let panel = document.createElement('div');
1618
- this.renderer.addClass(panel, 'panel');
1619
- let closeButtonFromNodeList = closeButtons.item(index);
1620
- let closeButtonRemoved = closeButtonFromNodeList.parentNode.removeChild(closeButtonFromNodeList);
1621
- this.renderer.setAttribute(closeButtonRemoved, 'cloned-button', 'true');
1622
- closeButtonRemoved.addEventListener("click", () => {
1578
+ //Set corresponding tableHeader as an attribute of each td
1579
+ let tableBody = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr td');
1580
+ tableBody.forEach((tableBodyRow, index) => {
1581
+ this.renderer.setAttribute(tableBodyRow, 'header-name', tableHeaders[index % tableHeaders.length]);
1582
+ });
1583
+ //Creates a copy of mobile-menu-trigger element for each tr
1584
+ let tableBodyRows = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr');
1585
+ let closeButtons = document.querySelectorAll('gravity-button[id-reference="close-button"]');
1586
+ tableBodyRows.forEach((tr, index) => {
1587
+ let mobileMenuTrigger = document.createElement('div');
1588
+ this.renderer.addClass(mobileMenuTrigger, 'mobile-menu-trigger');
1589
+ this.renderer.setAttribute(mobileMenuTrigger, 'cloned-node', 'true');
1590
+ let menuToggle = document.createElement('div');
1591
+ this.renderer.addClass(menuToggle, 'menu-toggle');
1592
+ menuToggle.appendChild(document.createElement('span'));
1593
+ menuToggle.appendChild(document.createElement('span'));
1594
+ menuToggle.appendChild(document.createElement('span'));
1595
+ menuToggle.addEventListener("click", () => {
1596
+ if (menuToggle.classList.contains('open')) {
1623
1597
  this.renderer.removeClass(menuToggle, 'open');
1624
1598
  this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
1625
- });
1626
- panel.append(closeButtonRemoved);
1627
- mobileMenuTrigger.appendChild(panel);
1628
- tr.insertBefore(mobileMenuTrigger, tr.firstChild);
1599
+ }
1600
+ else {
1601
+ this.renderer.addClass(menuToggle, 'open');
1602
+ this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');
1603
+ }
1629
1604
  });
1630
- }
1605
+ mobileMenuTrigger.appendChild(menuToggle);
1606
+ let panel = document.createElement('div');
1607
+ this.renderer.addClass(panel, 'panel');
1608
+ let closeButtonFromNodeList = closeButtons.item(index);
1609
+ let closeButtonRemoved = closeButtonFromNodeList.parentNode.removeChild(closeButtonFromNodeList);
1610
+ this.renderer.setAttribute(closeButtonRemoved, 'cloned-button', 'true');
1611
+ closeButtonRemoved.addEventListener("click", () => {
1612
+ this.renderer.removeClass(menuToggle, 'open');
1613
+ this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
1614
+ });
1615
+ panel.append(closeButtonRemoved);
1616
+ mobileMenuTrigger.appendChild(panel);
1617
+ tr.insertBefore(mobileMenuTrigger, tr.firstChild);
1618
+ });
1631
1619
  }
1632
1620
  adjustTableDensity(densityValue) {
1633
1621
  this.renderer.removeClass(this.tableElement, 'standard-table');
@@ -1712,7 +1700,7 @@ class GravityTableComponent {
1712
1700
  }
1713
1701
  if (this.tableSize == 'lg' || this.tableSize == 'xl') {
1714
1702
  let nodeListIndex = nodesList.length - 1;
1715
- while (nodesList.length != 1) {
1703
+ while (nodesList.length > 1) {
1716
1704
  let item = nodesList.item(nodeListIndex);
1717
1705
  let closeButtonNode = item.parentNode.querySelectorAll('gravity-button[id-reference="close-button"]').item(0);
1718
1706
  if (item != closeButtonNode) {
@@ -1725,11 +1713,11 @@ class GravityTableComponent {
1725
1713
  }
1726
1714
  }
1727
1715
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
1728
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTableComponent, selector: "gravity-table", inputs: { tableDensity: "tableDensity", tableSizeInput: "tableSizeInput" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [":host{display:block;margin-block:1rem}.table-container{overflow-x:auto}\n"], dependencies: [{ kind: "component", type: GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
1716
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTableComponent, selector: "gravity-table", inputs: { tableDensity: "tableDensity", tableSizeInput: "tableSizeInput" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [":host{display:block;margin-block:1rem}.table-container{overflow-x:auto}\n"], dependencies: [{ kind: "component", type: GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
1729
1717
  }
1730
1718
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, decorators: [{
1731
1719
  type: Component,
1732
- args: [{ selector: 'gravity-table', template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [":host{display:block;margin-block:1rem}.table-container{overflow-x:auto}\n"] }]
1720
+ args: [{ selector: 'gravity-table', template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [":host{display:block;margin-block:1rem}.table-container{overflow-x:auto}\n"] }]
1733
1721
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { tableDensity: [{
1734
1722
  type: Input
1735
1723
  }], tableSizeInput: [{
@@ -1751,12 +1739,13 @@ var NodeSelectedState;
1751
1739
 
1752
1740
  class TreeService {
1753
1741
  constructor() {
1754
- this.filterChangeSubject = new BehaviorSubject('');
1742
+ this.filterValue = '';
1755
1743
  this.selectedItems = [];
1744
+ this.filterChangeSubject = new BehaviorSubject(this.filterValue);
1756
1745
  this.selectedItemsSubject = new BehaviorSubject(this.selectedItems);
1757
1746
  this.selectedStates = [];
1758
1747
  this.filterChangeSubjectSubscription = this.filterChangeSubject.pipe(debounceTime(300), distinctUntilChanged()).subscribe(() => {
1759
- this.filterTraverse(this.treeState, '');
1748
+ this.filterTraverse(this.treeState, this.filterValue);
1760
1749
  });
1761
1750
  }
1762
1751
  ngOnDestroy() {
@@ -1932,74 +1921,6 @@ class TreeService {
1932
1921
  selected: false
1933
1922
  };
1934
1923
  }
1935
- deleteById(id) {
1936
- let result = this.getNodeState(this.treeState, id, TreeService.findById);
1937
- if (result) {
1938
- this.deleteByState(result);
1939
- }
1940
- }
1941
- deleteByState(state) {
1942
- this.delete(state);
1943
- this.childStateChanged(state);
1944
- this.filterTraverse(this.treeState, '');
1945
- }
1946
- delete(state) {
1947
- while (state.children.length > 0) {
1948
- let result = state.children.pop();
1949
- if (result) {
1950
- this.delete(result);
1951
- }
1952
- }
1953
- this.removeSelected(state.nodeItem.item);
1954
- TreeService.remove(state);
1955
- if (!state.parent) {
1956
- TreeService.deleteRoot(state, this.treeState, this.nodeItems);
1957
- }
1958
- }
1959
- toggleExpandedTraverse(nodeStates, value) {
1960
- for (let state of nodeStates) {
1961
- state.expanded = value;
1962
- this.toggleExpandedTraverse(state.children, value);
1963
- }
1964
- }
1965
- static deleteRoot(state, nodeStates, nodeItems) {
1966
- let itemIndex = nodeItems.indexOf(state.nodeItem);
1967
- if (itemIndex !== -1) {
1968
- nodeItems.splice(itemIndex, 1);
1969
- }
1970
- let index = nodeStates.indexOf(state);
1971
- if (index !== -1) {
1972
- nodeStates.splice(index, 1);
1973
- }
1974
- }
1975
- addNewNode(nodeState, parent) {
1976
- nodeState.parent = parent;
1977
- parent.children.push(nodeState);
1978
- if (parent.nodeItem.children) {
1979
- parent.nodeItem.children.push(nodeState.nodeItem);
1980
- }
1981
- this.childStateChanged(parent);
1982
- this.filterTraverse(this.treeState, '');
1983
- }
1984
- static remove(state) {
1985
- if (state.parent) {
1986
- state.parent.hasFilteredChildren = false;
1987
- if (state.parent.nodeItem.children) {
1988
- let itemIndex = state.parent.nodeItem.children.indexOf(state.nodeItem);
1989
- if (itemIndex !== -1) {
1990
- state.parent.nodeItem.children.splice(itemIndex, 1);
1991
- }
1992
- }
1993
- let index = state.parent.children.indexOf(state);
1994
- if (index !== -1) {
1995
- state.parent.children.splice(index, 1);
1996
- }
1997
- let filteredIndex = state.parent.filteredChildren.indexOf(state);
1998
- if (filteredIndex !== -1) {
1999
- state.parent.filteredChildren.splice(filteredIndex, 1);
2000
- }
2001
- }
2002
- }
2003
1924
  allChildrenSelected(state) {
2004
1925
  if (state.nodeItem.children) {
2005
1926
  return state.children.every(it => it.selectedState === NodeSelectedState.checked) && state.children.length === state.nodeItem.children.length;
@@ -2008,12 +1929,6 @@ class TreeService {
2008
1929
  return state.children.every(it => it.selectedState === NodeSelectedState.checked);
2009
1930
  }
2010
1931
  }
2011
- toggleExpandedTraverseAsc(nodeState, value) {
2012
- nodeState.expanded = value;
2013
- if (nodeState.parent) {
2014
- this.toggleExpandedTraverseAsc(nodeState.parent, value);
2015
- }
2016
- }
2017
1932
  anyActiveSelected(state) {
2018
1933
  let result = state.children.filter(it => !it.disabled && it.selected).length > 0;
2019
1934
  for (const child of state.children) {
@@ -2023,69 +1938,9 @@ class TreeService {
2023
1938
  }
2024
1939
  return result;
2025
1940
  }
2026
- static findById(state, arg) {
2027
- return state.nodeItem.id === arg;
2028
- }
2029
- getNodeState(nodeStates, arg, compare) {
2030
- let nodeState = nodeStates.find((it) => compare(it, arg));
2031
- if (nodeState) {
2032
- return nodeState;
2033
- }
2034
- else {
2035
- for (let state of nodeStates) {
2036
- let children = this.getNodeState(state.children, arg, compare);
2037
- if (children) {
2038
- return children;
2039
- }
2040
- }
2041
- }
2042
- }
2043
- toggleExpanded(value) {
2044
- this.toggleExpandedTraverse(this.treeState, value);
2045
- }
2046
- addNodeById(nodeState, id) {
2047
- let result = this.getNodeState(this.treeState, id, TreeService.findById);
2048
- if (result) {
2049
- if (!result.children) {
2050
- result.children = [];
2051
- }
2052
- this.addNewNode(nodeState, result);
2053
- if (result.nodeItem.item) {
2054
- this.removeSelected(result.nodeItem.item);
2055
- }
2056
- }
2057
- }
2058
- editItemById(id, item) {
2059
- const nodeState = this.getNodeState(this.treeState, id, TreeService.findById);
2060
- if (nodeState && nodeState.nodeItem) {
2061
- if (this.selectedItems.includes(nodeState.nodeItem.item)) {
2062
- this.removeSelected(nodeState.nodeItem.item);
2063
- this.selectedItems.push(item);
2064
- this.selectedItemsSubject.next(this.selectedItems);
2065
- }
2066
- nodeState.nodeItem.item = item;
2067
- }
2068
- }
2069
- expandById(id) {
2070
- const result = this.getNodeState(this.treeState, id, TreeService.findById);
2071
- if (result) {
2072
- this.toggleExpandedTraverseAsc(result, true);
2073
- }
2074
- }
2075
- collapseById(id) {
2076
- const result = this.getNodeState(this.treeState, id, TreeService.findById);
2077
- if (result) {
2078
- result.expanded = false;
2079
- }
2080
- }
2081
- getParentById(id) {
2082
- const result = this.getNodeState(this.treeState, id, TreeService.findById);
2083
- if (result) {
2084
- return result.parent.nodeItem;
2085
- }
2086
- }
2087
- forceFilterTraverse() {
2088
- this.filterTraverse(this.treeState, '');
1941
+ filterChanged(value) {
1942
+ this.filterValue = value;
1943
+ this.filterChangeSubject.next(value);
2089
1944
  }
2090
1945
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2091
1946
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeService }); }
@@ -2140,11 +1995,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2140
1995
 
2141
1996
  class NodeComponent {
2142
1997
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2143
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeComponent, selector: "tree-node", inputs: { nodeState: "nodeState" }, ngImport: i0, template: "<div class=\"node-container\">\n <div class=\"node-content\">\n <node-toggle [state]=\"nodeState\"></node-toggle>\n <node-checkbox [state]=\"nodeState\"></node-checkbox>\n <node-name [state]=\"nodeState\"></node-name>\n </div>\n <div class=\"collapsible-wrapper\" *ngIf=\"nodeState.nodeItem.children\"\n [class.collapsed]=\"!nodeState.expanded && nodeState.nodeItem.children.length > 0 && nodeState.filteredChildren.length > 0\">\n <div class=\"collapsible\">\n <tree-node class=\"node-offset\" [nodeState]=\"child\"\n *ngFor=\"let child of nodeState.filteredChildren\"></tree-node>\n </div>\n </div>\n</div>\n", styles: [".node-container{display:flex;flex:1 1 auto;flex-direction:column}.node-container .node-content{display:inline-flex;padding-bottom:.1rem}.node-container node-toggle,.node-container node-checkbox{display:inline-flex;align-items:center}.node-container .collapsible-wrapper{display:flex;overflow:hidden}.node-container .collapsible-wrapper .collapsible{transition:margin-bottom .3s cubic-bezier(0,0,0,1);margin-bottom:0;max-height:1000000px}.node-container .collapsible-wrapper .collapsible tree-node.node-offset{display:flex;margin-left:1.25rem}.node-container .collapsible-wrapper.collapsed>.collapsible{margin-bottom:-20000px;transition:margin-bottom .3s cubic-bezier(1,0,1,1),visibility 0s .3s,max-height 0s .3s;visibility:hidden;max-height:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NodeComponent, selector: "tree-node", inputs: ["nodeState"] }, { kind: "component", type: NodeToggleComponent, selector: "node-toggle", inputs: ["state"] }, { kind: "component", type: NodeCheckboxComponent, selector: "node-checkbox", inputs: ["state"] }, { kind: "component", type: NodeNameComponent, selector: "node-name", inputs: ["state"] }] }); }
1998
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeComponent, selector: "tree-node", inputs: { nodeState: "nodeState" }, ngImport: i0, template: "<div class=\"node-container\">\n <div class=\"node-content\">\n <node-toggle [state]=\"nodeState\"></node-toggle>\n <node-checkbox [state]=\"nodeState\"></node-checkbox>\n <node-name [state]=\"nodeState\"></node-name>\n </div>\n <div class=\"collapsible-wrapper\" *ngIf=\"nodeState.nodeItem.children\"\n [class.collapsed]=\"!nodeState.expanded && nodeState.nodeItem.children.length > 0 && nodeState.filteredChildren.length > 0\">\n <div class=\"collapsible\">\n <tree-node class=\"node-offset\" [nodeState]=\"child\"\n *ngFor=\"let child of nodeState.filteredChildren\"></tree-node>\n </div>\n </div>\n</div>\n", styles: [".node-container{display:flex;flex:1 1 auto;flex-direction:column}.node-container .node-content{display:inline-flex;padding-block:.3rem}.node-container node-toggle,.node-container node-checkbox{display:inline-flex;align-items:center}.node-container .collapsible-wrapper{display:flex;overflow:hidden}.node-container .collapsible-wrapper .collapsible{margin-bottom:0;max-height:1000000px}.node-container .collapsible-wrapper .collapsible tree-node.node-offset{display:flex;margin-left:1.25rem}.node-container .collapsible-wrapper.collapsed>.collapsible{margin-bottom:-20000px;visibility:hidden;max-height:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NodeComponent, selector: "tree-node", inputs: ["nodeState"] }, { kind: "component", type: NodeToggleComponent, selector: "node-toggle", inputs: ["state"] }, { kind: "component", type: NodeCheckboxComponent, selector: "node-checkbox", inputs: ["state"] }, { kind: "component", type: NodeNameComponent, selector: "node-name", inputs: ["state"] }] }); }
2144
1999
  }
2145
2000
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeComponent, decorators: [{
2146
2001
  type: Component,
2147
- args: [{ selector: 'tree-node', template: "<div class=\"node-container\">\n <div class=\"node-content\">\n <node-toggle [state]=\"nodeState\"></node-toggle>\n <node-checkbox [state]=\"nodeState\"></node-checkbox>\n <node-name [state]=\"nodeState\"></node-name>\n </div>\n <div class=\"collapsible-wrapper\" *ngIf=\"nodeState.nodeItem.children\"\n [class.collapsed]=\"!nodeState.expanded && nodeState.nodeItem.children.length > 0 && nodeState.filteredChildren.length > 0\">\n <div class=\"collapsible\">\n <tree-node class=\"node-offset\" [nodeState]=\"child\"\n *ngFor=\"let child of nodeState.filteredChildren\"></tree-node>\n </div>\n </div>\n</div>\n", styles: [".node-container{display:flex;flex:1 1 auto;flex-direction:column}.node-container .node-content{display:inline-flex;padding-bottom:.1rem}.node-container node-toggle,.node-container node-checkbox{display:inline-flex;align-items:center}.node-container .collapsible-wrapper{display:flex;overflow:hidden}.node-container .collapsible-wrapper .collapsible{transition:margin-bottom .3s cubic-bezier(0,0,0,1);margin-bottom:0;max-height:1000000px}.node-container .collapsible-wrapper .collapsible tree-node.node-offset{display:flex;margin-left:1.25rem}.node-container .collapsible-wrapper.collapsed>.collapsible{margin-bottom:-20000px;transition:margin-bottom .3s cubic-bezier(1,0,1,1),visibility 0s .3s,max-height 0s .3s;visibility:hidden;max-height:0}\n"] }]
2002
+ args: [{ selector: 'tree-node', template: "<div class=\"node-container\">\n <div class=\"node-content\">\n <node-toggle [state]=\"nodeState\"></node-toggle>\n <node-checkbox [state]=\"nodeState\"></node-checkbox>\n <node-name [state]=\"nodeState\"></node-name>\n </div>\n <div class=\"collapsible-wrapper\" *ngIf=\"nodeState.nodeItem.children\"\n [class.collapsed]=\"!nodeState.expanded && nodeState.nodeItem.children.length > 0 && nodeState.filteredChildren.length > 0\">\n <div class=\"collapsible\">\n <tree-node class=\"node-offset\" [nodeState]=\"child\"\n *ngFor=\"let child of nodeState.filteredChildren\"></tree-node>\n </div>\n </div>\n</div>\n", styles: [".node-container{display:flex;flex:1 1 auto;flex-direction:column}.node-container .node-content{display:inline-flex;padding-block:.3rem}.node-container node-toggle,.node-container node-checkbox{display:inline-flex;align-items:center}.node-container .collapsible-wrapper{display:flex;overflow:hidden}.node-container .collapsible-wrapper .collapsible{margin-bottom:0;max-height:1000000px}.node-container .collapsible-wrapper .collapsible tree-node.node-offset{display:flex;margin-left:1.25rem}.node-container .collapsible-wrapper.collapsed>.collapsible{margin-bottom:-20000px;visibility:hidden;max-height:0}\n"] }]
2148
2003
  }], propDecorators: { nodeState: [{
2149
2004
  type: Input
2150
2005
  }] } });
@@ -2152,6 +2007,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2152
2007
  class GravityTreeViewComponent {
2153
2008
  constructor(treeService) {
2154
2009
  this.treeService = treeService;
2010
+ this.showFilterInput = false;
2155
2011
  this.selectedItems = new EventEmitter();
2156
2012
  this.treeServiceSubscription = treeService.connect().subscribe((items) => {
2157
2013
  const subscription = timer(0).subscribe(() => {
@@ -2190,16 +2046,21 @@ class GravityTreeViewComponent {
2190
2046
  });
2191
2047
  return treeStructure;
2192
2048
  }
2049
+ changeFilter(newValue) {
2050
+ this.treeService.filterChanged(newValue.toLowerCase());
2051
+ }
2193
2052
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTreeViewComponent, deps: [{ token: TreeService }], target: i0.ɵɵFactoryTarget.Component }); }
2194
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTreeViewComponent, selector: "gravity-tree-view", inputs: { callbacks: "callbacks", nodeItems: "nodeItems" }, outputs: { selectedItems: "selectedItems" }, providers: [TreeService], usesOnChanges: true, ngImport: i0, template: "<tree-node [nodeState]=\"state\" *ngFor=\"let state of treeService.treeState\"></tree-node>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NodeComponent, selector: "tree-node", inputs: ["nodeState"] }] }); }
2053
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTreeViewComponent, selector: "gravity-tree-view", inputs: { callbacks: "callbacks", nodeItems: "nodeItems", showFilterInput: "showFilterInput" }, outputs: { selectedItems: "selectedItems" }, providers: [TreeService], usesOnChanges: true, ngImport: i0, template: "<gravity-text-field [label]=\"'Change filter'\" *ngIf=\"showFilterInput\"\n (response)=\"changeFilter($event)\"></gravity-text-field>\n<tree-node [nodeState]=\"state\" *ngFor=\"let state of treeService.treeState\"></tree-node>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GravityTextFieldComponent, selector: "gravity-text-field", inputs: ["autocomplete", "clickOnIconName", "currentLang", "customPlaceholder", "customInputValue", "cypressTag", "iconColor", "iconNames", "iconsSizes", "iconPlacement", "inputContentType", "label", "placeholderType", "prefix", "required", "state", "supportTextContent", "supportTextType", "textFieldType", "validations"], outputs: ["clickIcon", "response"] }, { kind: "component", type: NodeComponent, selector: "tree-node", inputs: ["nodeState"] }] }); }
2195
2054
  }
2196
2055
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTreeViewComponent, decorators: [{
2197
2056
  type: Component,
2198
- args: [{ selector: 'gravity-tree-view', providers: [TreeService], template: "<tree-node [nodeState]=\"state\" *ngFor=\"let state of treeService.treeState\"></tree-node>\n" }]
2057
+ args: [{ selector: 'gravity-tree-view', providers: [TreeService], template: "<gravity-text-field [label]=\"'Change filter'\" *ngIf=\"showFilterInput\"\n (response)=\"changeFilter($event)\"></gravity-text-field>\n<tree-node [nodeState]=\"state\" *ngFor=\"let state of treeService.treeState\"></tree-node>\n" }]
2199
2058
  }], ctorParameters: function () { return [{ type: TreeService }]; }, propDecorators: { callbacks: [{
2200
2059
  type: Input
2201
2060
  }], nodeItems: [{
2202
2061
  type: Input
2062
+ }], showFilterInput: [{
2063
+ type: Input
2203
2064
  }], selectedItems: [{
2204
2065
  type: Output
2205
2066
  }] } });