@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.
- package/esm2022/lib/components/gravity-table/gravity-table.component.mjs +50 -60
- package/esm2022/lib/components/gravity-tree-view/gravity-tree-view.component.mjs +11 -4
- package/esm2022/lib/components/gravity-tree-view/node/node.component.mjs +3 -3
- package/esm2022/lib/components/gravity-tree-view/service/tree-service.mjs +7 -140
- package/esm2022/lib/vendor/gravity-tooltip/gravity-tooltip.directive.mjs +1 -3
- package/fesm2022/progressio_resources-gravity-design-system.mjs +65 -204
- package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
- package/lib/components/gravity-table/gravity-table.component.d.ts +3 -4
- package/lib/components/gravity-tree-view/gravity-tree-view.component.d.ts +4 -2
- package/lib/components/gravity-tree-view/service/tree-service.d.ts +3 -18
- package/lib/vendor/gravity-tooltip/gravity-tooltip.directive.d.ts +0 -1
- package/package.json +1 -1
- package/src/lib/styles/components/_tables.scss +9 -9
- package/src/lib/styles/overwrite/pretty-checkbox/_core.scss +0 -1
- package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_general.scss +2 -2
- package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_mixin.scss +1 -1
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.directive.ts +0 -3
|
@@ -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
|
-
|
|
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
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
let
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
menuToggle.
|
|
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
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
|
|
2027
|
-
|
|
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-
|
|
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-
|
|
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
|
}] } });
|