@progressio_resources/gravity-design-system 2.1.9 → 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 +69 -0
- package/esm2022/lib/components/gravity-tree-view/models/node-item.mjs +2 -0
- package/esm2022/lib/components/gravity-tree-view/models/node-selected-state.mjs +7 -0
- package/esm2022/lib/components/gravity-tree-view/models/node-state.mjs +2 -0
- package/esm2022/lib/components/gravity-tree-view/models/tree-callbacks.mjs +2 -0
- package/esm2022/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.mjs +26 -0
- package/esm2022/lib/components/gravity-tree-view/node/node-name/node-name.component.mjs +13 -0
- package/esm2022/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.mjs +15 -0
- package/esm2022/lib/components/gravity-tree-view/node/node.component.mjs +17 -0
- package/esm2022/lib/components/gravity-tree-view/service/tree-service.mjs +217 -0
- package/esm2022/lib/gravity-design-system.module.mjs +22 -5
- package/esm2022/lib/vendor/gravity-tooltip/gravity-tooltip.directive.mjs +1 -3
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/progressio_resources-gravity-design-system.mjs +403 -66
- 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 +21 -0
- package/lib/components/gravity-tree-view/models/node-item.d.ts +9 -0
- package/lib/components/gravity-tree-view/models/node-selected-state.d.ts +5 -0
- package/lib/components/gravity-tree-view/models/node-state.d.ts +13 -0
- package/lib/components/gravity-tree-view/models/tree-callbacks.d.ts +9 -0
- package/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.d.ts +11 -0
- package/lib/components/gravity-tree-view/node/node-name/node-name.component.d.ts +7 -0
- package/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.d.ts +7 -0
- package/lib/components/gravity-tree-view/node/node.component.d.ts +7 -0
- package/lib/components/gravity-tree-view/service/tree-service.d.ts +42 -0
- package/lib/gravity-design-system.module.d.ts +14 -9
- package/lib/vendor/gravity-tooltip/gravity-tooltip.directive.d.ts +0 -1
- package/package.json +2 -3
- package/public-api.d.ts +1 -0
- 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
|
@@ -14,6 +14,8 @@ import * as i2$2 from 'angular-svg-icon-preloader';
|
|
|
14
14
|
import { AngularSvgIconPreloaderModule } from 'angular-svg-icon-preloader';
|
|
15
15
|
import * as i2$1 from 'ngx-pretty-checkbox';
|
|
16
16
|
import { NgxPrettyCheckboxModule } from 'ngx-pretty-checkbox';
|
|
17
|
+
import { BehaviorSubject, timer } from 'rxjs';
|
|
18
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
17
19
|
|
|
18
20
|
class GravityIconComponent {
|
|
19
21
|
constructor() {
|
|
@@ -667,8 +669,6 @@ class GravityTooltipDirective {
|
|
|
667
669
|
this.destroyTooltip();
|
|
668
670
|
}, this.options['hideDelayAfterClick']);
|
|
669
671
|
}
|
|
670
|
-
ngOnInit() {
|
|
671
|
-
}
|
|
672
672
|
ngOnChanges(changes) {
|
|
673
673
|
this.initOptions = this.renameProperties(this.initOptions);
|
|
674
674
|
let changedOptions = this.getProperties(changes);
|
|
@@ -1537,7 +1537,6 @@ class GravityTableComponent {
|
|
|
1537
1537
|
this.renderer = renderer;
|
|
1538
1538
|
this.tableDensity = "standard";
|
|
1539
1539
|
this.tableSizeInput = "auto";
|
|
1540
|
-
this.firstTime = true;
|
|
1541
1540
|
this.tableElement = null;
|
|
1542
1541
|
this.tableSize = 'xl';
|
|
1543
1542
|
let milliseconds = new Date().getTime();
|
|
@@ -1547,11 +1546,7 @@ class GravityTableComponent {
|
|
|
1547
1546
|
ngAfterViewInit() {
|
|
1548
1547
|
this.tableElement = this.tableContainer?.nativeElement?.childNodes[0];
|
|
1549
1548
|
this.renderer.setAttribute(this.tableElement, 'table-id', this.tableId);
|
|
1550
|
-
|
|
1551
|
-
this.initializeTable(tableHeaders);
|
|
1552
|
-
this.adjustTableDensity(this.tableDensity);
|
|
1553
|
-
this.adjustButtonsSize();
|
|
1554
|
-
this.onResize();
|
|
1549
|
+
this.initializeComponent();
|
|
1555
1550
|
}
|
|
1556
1551
|
ngOnChanges(changes) {
|
|
1557
1552
|
if (this.tableElement) {
|
|
@@ -1564,15 +1559,6 @@ class GravityTableComponent {
|
|
|
1564
1559
|
}
|
|
1565
1560
|
}
|
|
1566
1561
|
}
|
|
1567
|
-
ngAfterContentChecked() {
|
|
1568
|
-
if (this.tableElement) {
|
|
1569
|
-
let tableHeaders = this.getTableHeaders();
|
|
1570
|
-
this.initializeTable(tableHeaders);
|
|
1571
|
-
this.adjustTableDensity(this.tableDensity);
|
|
1572
|
-
this.adjustButtonsSize();
|
|
1573
|
-
this.onResize();
|
|
1574
|
-
}
|
|
1575
|
-
}
|
|
1576
1562
|
getTableHeaders() {
|
|
1577
1563
|
let tableHeaderItems = document.querySelectorAll('thead tr th');
|
|
1578
1564
|
let tableHeaders = [];
|
|
@@ -1581,51 +1567,55 @@ class GravityTableComponent {
|
|
|
1581
1567
|
});
|
|
1582
1568
|
return tableHeaders;
|
|
1583
1569
|
}
|
|
1570
|
+
initializeComponent() {
|
|
1571
|
+
let tableHeaders = this.getTableHeaders();
|
|
1572
|
+
this.initializeTable(tableHeaders);
|
|
1573
|
+
this.adjustTableDensity(this.tableDensity);
|
|
1574
|
+
this.adjustButtonsSize();
|
|
1575
|
+
this.onResize();
|
|
1576
|
+
}
|
|
1584
1577
|
initializeTable(tableHeaders) {
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
let
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
menuToggle.
|
|
1604
|
-
menuToggle.addEventListener("click", () => {
|
|
1605
|
-
if (menuToggle.classList.contains('open')) {
|
|
1606
|
-
this.renderer.removeClass(menuToggle, 'open');
|
|
1607
|
-
this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
|
|
1608
|
-
}
|
|
1609
|
-
else {
|
|
1610
|
-
this.renderer.addClass(menuToggle, 'open');
|
|
1611
|
-
this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');
|
|
1612
|
-
}
|
|
1613
|
-
});
|
|
1614
|
-
mobileMenuTrigger.appendChild(menuToggle);
|
|
1615
|
-
let panel = document.createElement('div');
|
|
1616
|
-
this.renderer.addClass(panel, 'panel');
|
|
1617
|
-
let closeButtonFromNodeList = closeButtons.item(index);
|
|
1618
|
-
let closeButtonRemoved = closeButtonFromNodeList.parentNode.removeChild(closeButtonFromNodeList);
|
|
1619
|
-
this.renderer.setAttribute(closeButtonRemoved, 'cloned-button', 'true');
|
|
1620
|
-
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')) {
|
|
1621
1597
|
this.renderer.removeClass(menuToggle, 'open');
|
|
1622
1598
|
this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
|
|
1623
|
-
}
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1599
|
+
}
|
|
1600
|
+
else {
|
|
1601
|
+
this.renderer.addClass(menuToggle, 'open');
|
|
1602
|
+
this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');
|
|
1603
|
+
}
|
|
1627
1604
|
});
|
|
1628
|
-
|
|
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
|
+
});
|
|
1629
1619
|
}
|
|
1630
1620
|
adjustTableDensity(densityValue) {
|
|
1631
1621
|
this.renderer.removeClass(this.tableElement, 'standard-table');
|
|
@@ -1710,7 +1700,7 @@ class GravityTableComponent {
|
|
|
1710
1700
|
}
|
|
1711
1701
|
if (this.tableSize == 'lg' || this.tableSize == 'xl') {
|
|
1712
1702
|
let nodeListIndex = nodesList.length - 1;
|
|
1713
|
-
while (nodesList.length
|
|
1703
|
+
while (nodesList.length > 1) {
|
|
1714
1704
|
let item = nodesList.item(nodeListIndex);
|
|
1715
1705
|
let closeButtonNode = item.parentNode.querySelectorAll('gravity-button[id-reference="close-button"]').item(0);
|
|
1716
1706
|
if (item != closeButtonNode) {
|
|
@@ -1723,11 +1713,11 @@ class GravityTableComponent {
|
|
|
1723
1713
|
}
|
|
1724
1714
|
}
|
|
1725
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 }); }
|
|
1726
|
-
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"] }] }); }
|
|
1727
1717
|
}
|
|
1728
1718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, decorators: [{
|
|
1729
1719
|
type: Component,
|
|
1730
|
-
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"] }]
|
|
1731
1721
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { tableDensity: [{
|
|
1732
1722
|
type: Input
|
|
1733
1723
|
}], tableSizeInput: [{
|
|
@@ -1740,6 +1730,341 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1740
1730
|
args: ['window:resize', ['$event']]
|
|
1741
1731
|
}] } });
|
|
1742
1732
|
|
|
1733
|
+
var NodeSelectedState;
|
|
1734
|
+
(function (NodeSelectedState) {
|
|
1735
|
+
NodeSelectedState[NodeSelectedState["checked"] = 0] = "checked";
|
|
1736
|
+
NodeSelectedState[NodeSelectedState["unChecked"] = 1] = "unChecked";
|
|
1737
|
+
NodeSelectedState[NodeSelectedState["indeterminate"] = 2] = "indeterminate";
|
|
1738
|
+
})(NodeSelectedState || (NodeSelectedState = {}));
|
|
1739
|
+
|
|
1740
|
+
class TreeService {
|
|
1741
|
+
constructor() {
|
|
1742
|
+
this.filterValue = '';
|
|
1743
|
+
this.selectedItems = [];
|
|
1744
|
+
this.filterChangeSubject = new BehaviorSubject(this.filterValue);
|
|
1745
|
+
this.selectedItemsSubject = new BehaviorSubject(this.selectedItems);
|
|
1746
|
+
this.selectedStates = [];
|
|
1747
|
+
this.filterChangeSubjectSubscription = this.filterChangeSubject.pipe(debounceTime(300), distinctUntilChanged()).subscribe(() => {
|
|
1748
|
+
this.filterTraverse(this.treeState, this.filterValue);
|
|
1749
|
+
});
|
|
1750
|
+
}
|
|
1751
|
+
ngOnDestroy() {
|
|
1752
|
+
this.filterChangeSubjectSubscription.unsubscribe();
|
|
1753
|
+
}
|
|
1754
|
+
connect() {
|
|
1755
|
+
return this.selectedItemsSubject.asObservable();
|
|
1756
|
+
}
|
|
1757
|
+
setInitialState() {
|
|
1758
|
+
this.setInitialSelectedState(this.treeState);
|
|
1759
|
+
}
|
|
1760
|
+
setInitialSelectedState(nodeStates) {
|
|
1761
|
+
for (const state of nodeStates) {
|
|
1762
|
+
if (state.nodeItem.selected && (!state.children || state.children.length === 0)) {
|
|
1763
|
+
this.toggleSelectedState(state, true);
|
|
1764
|
+
}
|
|
1765
|
+
this.setInitialSelectedState(state.children);
|
|
1766
|
+
}
|
|
1767
|
+
}
|
|
1768
|
+
clear() {
|
|
1769
|
+
for (let state of this.selectedStates) {
|
|
1770
|
+
state.selected = false;
|
|
1771
|
+
state.selectedState = NodeSelectedState.unChecked;
|
|
1772
|
+
}
|
|
1773
|
+
this.selectedItems.length = 0;
|
|
1774
|
+
this.selectedStates.length = 0;
|
|
1775
|
+
}
|
|
1776
|
+
filterTraverse(states, filter) {
|
|
1777
|
+
let results = [];
|
|
1778
|
+
for (let state of states) {
|
|
1779
|
+
if (state.children.length > 0) {
|
|
1780
|
+
state.hasFilteredChildren = false;
|
|
1781
|
+
state.hasFilteredChildren = this.filterTraverse(state.children, filter);
|
|
1782
|
+
if (this.applyFilter(state, filter)) {
|
|
1783
|
+
state.hasFilteredChildren = true;
|
|
1784
|
+
}
|
|
1785
|
+
results.push(state.hasFilteredChildren);
|
|
1786
|
+
}
|
|
1787
|
+
}
|
|
1788
|
+
return results.some((item) => item);
|
|
1789
|
+
}
|
|
1790
|
+
applyFilter(state, filter) {
|
|
1791
|
+
state.filteredChildren = this.filter(state.children, filter);
|
|
1792
|
+
return state.filteredChildren.length > 0;
|
|
1793
|
+
}
|
|
1794
|
+
filter(states, value) {
|
|
1795
|
+
return states.filter((nodeState) => nodeState.hasFilteredChildren || value === '' || nodeState.nodeItem.name.toLowerCase().indexOf(value) !== -1);
|
|
1796
|
+
}
|
|
1797
|
+
checkboxClick(state) {
|
|
1798
|
+
this.toggleSelectedState(state, false);
|
|
1799
|
+
if (this.callbacks?.toggle) {
|
|
1800
|
+
this.callbacks.toggle(state.nodeItem);
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
toggleSelectedState(state, ignoreDisabled) {
|
|
1804
|
+
if (state.disabled && !ignoreDisabled) {
|
|
1805
|
+
return;
|
|
1806
|
+
}
|
|
1807
|
+
if (state.selectedState === NodeSelectedState.unChecked) {
|
|
1808
|
+
this.setChecked(state, true, ignoreDisabled);
|
|
1809
|
+
}
|
|
1810
|
+
else if (state.selectedState === NodeSelectedState.checked) {
|
|
1811
|
+
this.setUnchecked(state, true, ignoreDisabled);
|
|
1812
|
+
}
|
|
1813
|
+
else {
|
|
1814
|
+
if (this.anyActiveSelected(state) && !state.selected) {
|
|
1815
|
+
this.setUnchecked(state, true, ignoreDisabled);
|
|
1816
|
+
}
|
|
1817
|
+
else {
|
|
1818
|
+
this.setChecked(state, true, ignoreDisabled);
|
|
1819
|
+
}
|
|
1820
|
+
}
|
|
1821
|
+
if (state.parent) {
|
|
1822
|
+
this.childStateChanged(state.parent);
|
|
1823
|
+
}
|
|
1824
|
+
}
|
|
1825
|
+
setChecked(state, propagate, ignoreDisabled) {
|
|
1826
|
+
if (state.disabled && !ignoreDisabled) {
|
|
1827
|
+
return;
|
|
1828
|
+
}
|
|
1829
|
+
state.selectedState = NodeSelectedState.checked;
|
|
1830
|
+
state.selected = true;
|
|
1831
|
+
if (TreeService.hasNoChildren(state)) {
|
|
1832
|
+
this.addSelected(state);
|
|
1833
|
+
}
|
|
1834
|
+
else if (propagate) {
|
|
1835
|
+
for (const child of state.children) {
|
|
1836
|
+
this.setChecked(child, propagate, ignoreDisabled);
|
|
1837
|
+
}
|
|
1838
|
+
}
|
|
1839
|
+
}
|
|
1840
|
+
setUnchecked(state, propagate, ignoreDisabled) {
|
|
1841
|
+
if (state.disabled && !ignoreDisabled) {
|
|
1842
|
+
return;
|
|
1843
|
+
}
|
|
1844
|
+
state.selectedState = NodeSelectedState.unChecked;
|
|
1845
|
+
state.selected = false;
|
|
1846
|
+
if (TreeService.hasNoChildren(state)) {
|
|
1847
|
+
this.removeSelected(state.nodeItem.item);
|
|
1848
|
+
if (this.callbacks?.unSelect) {
|
|
1849
|
+
this.callbacks.unSelect(state.nodeItem);
|
|
1850
|
+
}
|
|
1851
|
+
}
|
|
1852
|
+
else if (propagate) {
|
|
1853
|
+
for (const child of state.children) {
|
|
1854
|
+
this.setUnchecked(child, propagate, ignoreDisabled);
|
|
1855
|
+
}
|
|
1856
|
+
}
|
|
1857
|
+
if (!this.anyChildSelected(state)) {
|
|
1858
|
+
this.removeSelected(state.nodeItem.item);
|
|
1859
|
+
}
|
|
1860
|
+
}
|
|
1861
|
+
removeSelected(item) {
|
|
1862
|
+
let index = this.selectedItems.indexOf(item);
|
|
1863
|
+
if (index !== -1) {
|
|
1864
|
+
this.selectedItems.splice(index, 1);
|
|
1865
|
+
}
|
|
1866
|
+
}
|
|
1867
|
+
static hasNoChildren(state) {
|
|
1868
|
+
return !state.children || state.children.length === 0;
|
|
1869
|
+
}
|
|
1870
|
+
addSelected(state) {
|
|
1871
|
+
this.selectedItems.push(state.nodeItem.item);
|
|
1872
|
+
this.selectedStates.push(state);
|
|
1873
|
+
if (this.callbacks?.select) {
|
|
1874
|
+
this.callbacks.select(state.nodeItem);
|
|
1875
|
+
}
|
|
1876
|
+
}
|
|
1877
|
+
reEvaluateSelectedState(state) {
|
|
1878
|
+
if (!TreeService.hasNoChildren(state)) {
|
|
1879
|
+
this.childStateChanged(state);
|
|
1880
|
+
for (const child of state.children) {
|
|
1881
|
+
this.reEvaluateSelectedState(child);
|
|
1882
|
+
}
|
|
1883
|
+
}
|
|
1884
|
+
}
|
|
1885
|
+
childStateChanged(state) {
|
|
1886
|
+
if (this.anyChildSelected(state)) {
|
|
1887
|
+
if (state.nodeItem.id != '0') {
|
|
1888
|
+
let itemIndex = this.selectedItems.indexOf(state.nodeItem.item);
|
|
1889
|
+
if (itemIndex === -1) {
|
|
1890
|
+
this.selectedItems.push(state.nodeItem.item);
|
|
1891
|
+
}
|
|
1892
|
+
}
|
|
1893
|
+
if (this.allChildrenSelected(state)) {
|
|
1894
|
+
this.setChecked(state, false);
|
|
1895
|
+
}
|
|
1896
|
+
else {
|
|
1897
|
+
state.selectedState = NodeSelectedState.indeterminate;
|
|
1898
|
+
state.selected = false;
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1901
|
+
else {
|
|
1902
|
+
this.setUnchecked(state, false);
|
|
1903
|
+
}
|
|
1904
|
+
if (state.parent) {
|
|
1905
|
+
this.childStateChanged(state.parent);
|
|
1906
|
+
}
|
|
1907
|
+
}
|
|
1908
|
+
anyChildSelected(state) {
|
|
1909
|
+
return state.children.find((item) => item.selectedState === NodeSelectedState.checked || item.selectedState === NodeSelectedState.indeterminate) != null;
|
|
1910
|
+
}
|
|
1911
|
+
static initState(parent, nodeItem) {
|
|
1912
|
+
return {
|
|
1913
|
+
parent: parent,
|
|
1914
|
+
children: [],
|
|
1915
|
+
filteredChildren: [],
|
|
1916
|
+
hasFilteredChildren: false,
|
|
1917
|
+
nodeItem: nodeItem,
|
|
1918
|
+
expanded: nodeItem.expanded !== false,
|
|
1919
|
+
disabled: nodeItem.disabled === true,
|
|
1920
|
+
selectedState: NodeSelectedState.unChecked,
|
|
1921
|
+
selected: false
|
|
1922
|
+
};
|
|
1923
|
+
}
|
|
1924
|
+
allChildrenSelected(state) {
|
|
1925
|
+
if (state.nodeItem.children) {
|
|
1926
|
+
return state.children.every(it => it.selectedState === NodeSelectedState.checked) && state.children.length === state.nodeItem.children.length;
|
|
1927
|
+
}
|
|
1928
|
+
else {
|
|
1929
|
+
return state.children.every(it => it.selectedState === NodeSelectedState.checked);
|
|
1930
|
+
}
|
|
1931
|
+
}
|
|
1932
|
+
anyActiveSelected(state) {
|
|
1933
|
+
let result = state.children.filter(it => !it.disabled && it.selected).length > 0;
|
|
1934
|
+
for (const child of state.children) {
|
|
1935
|
+
if (!TreeService.hasNoChildren(child) && this.anyActiveSelected(child)) {
|
|
1936
|
+
result = true;
|
|
1937
|
+
}
|
|
1938
|
+
}
|
|
1939
|
+
return result;
|
|
1940
|
+
}
|
|
1941
|
+
filterChanged(value) {
|
|
1942
|
+
this.filterValue = value;
|
|
1943
|
+
this.filterChangeSubject.next(value);
|
|
1944
|
+
}
|
|
1945
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1946
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeService }); }
|
|
1947
|
+
}
|
|
1948
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeService, decorators: [{
|
|
1949
|
+
type: Injectable
|
|
1950
|
+
}], ctorParameters: function () { return []; } });
|
|
1951
|
+
|
|
1952
|
+
class NodeToggleComponent {
|
|
1953
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1954
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeToggleComponent, selector: "node-toggle", inputs: { state: "state" }, ngImport: i0, template: "<div class=\"node-toggle-wrapper\" [class.collapsable]=\"state.nodeItem?.children?.length > 0\"\n (click)=\"state.expanded = !state.expanded\">\n <gravity-icon [iconName]=\"(state.expanded ? 'arrow_down' : 'arrow_right')\" [size]=\"'sm'\"\n *ngIf=\"state.nodeItem?.children?.length > 0\"></gravity-icon>\n</div>\n", styles: [".node-toggle-wrapper{align-items:center;display:inline-flex;height:1.25rem;width:1.75rem}.collapsable{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "hoverIcon", "size"] }] }); }
|
|
1955
|
+
}
|
|
1956
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeToggleComponent, decorators: [{
|
|
1957
|
+
type: Component,
|
|
1958
|
+
args: [{ selector: 'node-toggle', template: "<div class=\"node-toggle-wrapper\" [class.collapsable]=\"state.nodeItem?.children?.length > 0\"\n (click)=\"state.expanded = !state.expanded\">\n <gravity-icon [iconName]=\"(state.expanded ? 'arrow_down' : 'arrow_right')\" [size]=\"'sm'\"\n *ngIf=\"state.nodeItem?.children?.length > 0\"></gravity-icon>\n</div>\n", styles: [".node-toggle-wrapper{align-items:center;display:inline-flex;height:1.25rem;width:1.75rem}.collapsable{cursor:pointer}\n"] }]
|
|
1959
|
+
}], propDecorators: { state: [{
|
|
1960
|
+
type: Input
|
|
1961
|
+
}] } });
|
|
1962
|
+
|
|
1963
|
+
class NodeCheckboxComponent {
|
|
1964
|
+
constructor(treeService) {
|
|
1965
|
+
this.treeService = treeService;
|
|
1966
|
+
}
|
|
1967
|
+
clickOnCheckbox() {
|
|
1968
|
+
if (!this.state.disabled) {
|
|
1969
|
+
this.treeService.checkboxClick(this.state);
|
|
1970
|
+
setTimeout(() => {
|
|
1971
|
+
this.treeService.reEvaluateSelectedState(this.state);
|
|
1972
|
+
}, 1);
|
|
1973
|
+
}
|
|
1974
|
+
}
|
|
1975
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeCheckboxComponent, deps: [{ token: TreeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1976
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeCheckboxComponent, selector: "node-checkbox", inputs: { state: "state" }, ngImport: i0, template: "<gravity-icon class=\"border-radius-sm checkbox-icon\"\n [class]=\"state.selectedState == 1 ? 'unselect' : 'select'\"\n [class.disabled]=\"state.disabled\"\n\n (click)=\"clickOnCheckbox()\"\n\n [iconName]=\"state.selectedState == 2 ? 'uncheck' : 'success'\"></gravity-icon>\n", styles: [".checkbox-icon{background-color:var(--cta-primary);cursor:pointer;height:1.5rem;--icon-color: var(--surface-secondary);padding:.35rem;width:1.5rem}.checkbox-icon.unselect{opacity:.5}.checkbox-icon.disabled{cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "hoverIcon", "size"] }] }); }
|
|
1977
|
+
}
|
|
1978
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeCheckboxComponent, decorators: [{
|
|
1979
|
+
type: Component,
|
|
1980
|
+
args: [{ selector: 'node-checkbox', template: "<gravity-icon class=\"border-radius-sm checkbox-icon\"\n [class]=\"state.selectedState == 1 ? 'unselect' : 'select'\"\n [class.disabled]=\"state.disabled\"\n\n (click)=\"clickOnCheckbox()\"\n\n [iconName]=\"state.selectedState == 2 ? 'uncheck' : 'success'\"></gravity-icon>\n", styles: [".checkbox-icon{background-color:var(--cta-primary);cursor:pointer;height:1.5rem;--icon-color: var(--surface-secondary);padding:.35rem;width:1.5rem}.checkbox-icon.unselect{opacity:.5}.checkbox-icon.disabled{cursor:not-allowed}\n"] }]
|
|
1981
|
+
}], ctorParameters: function () { return [{ type: TreeService }]; }, propDecorators: { state: [{
|
|
1982
|
+
type: Input
|
|
1983
|
+
}] } });
|
|
1984
|
+
|
|
1985
|
+
class NodeNameComponent {
|
|
1986
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeNameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1987
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeNameComponent, selector: "node-name", inputs: { state: "state" }, ngImport: i0, template: "<div [class.disabled]=\"state.disabled\" class=\"node-name\">\n <span class=\"hr-label md-regular\">{{state.nodeItem.name}}</span>\n</div>\n", styles: [".node-name{display:inline-block;padding:.1325rem 0 .1325rem .4375rem}.node-name.disabled{opacity:.6}\n"] }); }
|
|
1988
|
+
}
|
|
1989
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeNameComponent, decorators: [{
|
|
1990
|
+
type: Component,
|
|
1991
|
+
args: [{ selector: 'node-name', template: "<div [class.disabled]=\"state.disabled\" class=\"node-name\">\n <span class=\"hr-label md-regular\">{{state.nodeItem.name}}</span>\n</div>\n", styles: [".node-name{display:inline-block;padding:.1325rem 0 .1325rem .4375rem}.node-name.disabled{opacity:.6}\n"] }]
|
|
1992
|
+
}], propDecorators: { state: [{
|
|
1993
|
+
type: Input
|
|
1994
|
+
}] } });
|
|
1995
|
+
|
|
1996
|
+
class NodeComponent {
|
|
1997
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
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"] }] }); }
|
|
1999
|
+
}
|
|
2000
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeComponent, decorators: [{
|
|
2001
|
+
type: Component,
|
|
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"] }]
|
|
2003
|
+
}], propDecorators: { nodeState: [{
|
|
2004
|
+
type: Input
|
|
2005
|
+
}] } });
|
|
2006
|
+
|
|
2007
|
+
class GravityTreeViewComponent {
|
|
2008
|
+
constructor(treeService) {
|
|
2009
|
+
this.treeService = treeService;
|
|
2010
|
+
this.showFilterInput = false;
|
|
2011
|
+
this.selectedItems = new EventEmitter();
|
|
2012
|
+
this.treeServiceSubscription = treeService.connect().subscribe((items) => {
|
|
2013
|
+
const subscription = timer(0).subscribe(() => {
|
|
2014
|
+
this.selectedItems.emit(items);
|
|
2015
|
+
subscription.unsubscribe();
|
|
2016
|
+
});
|
|
2017
|
+
});
|
|
2018
|
+
}
|
|
2019
|
+
ngOnDestroy() {
|
|
2020
|
+
this.treeServiceSubscription.unsubscribe();
|
|
2021
|
+
}
|
|
2022
|
+
ngOnChanges(changes) {
|
|
2023
|
+
if (changes.callbacks) {
|
|
2024
|
+
this.treeService.callbacks = this.callbacks;
|
|
2025
|
+
}
|
|
2026
|
+
if (changes.nodeItems) {
|
|
2027
|
+
this.initialize();
|
|
2028
|
+
}
|
|
2029
|
+
}
|
|
2030
|
+
initialize() {
|
|
2031
|
+
this.treeService.callbacks = this.callbacks;
|
|
2032
|
+
this.treeService.nodeItems = this.nodeItems;
|
|
2033
|
+
this.treeService.treeState = this.initTreeStructure(null, this.treeService.nodeItems);
|
|
2034
|
+
this.treeService.clear();
|
|
2035
|
+
this.treeService.setInitialState();
|
|
2036
|
+
}
|
|
2037
|
+
initTreeStructure(parent, nodeItems) {
|
|
2038
|
+
const treeStructure = [];
|
|
2039
|
+
nodeItems.forEach((nodeItem) => {
|
|
2040
|
+
const nodeState = TreeService.initState(parent, nodeItem);
|
|
2041
|
+
if (nodeItem.children) {
|
|
2042
|
+
nodeState.children = this.initTreeStructure(nodeState, nodeItem.children);
|
|
2043
|
+
nodeState.filteredChildren = nodeState.children;
|
|
2044
|
+
}
|
|
2045
|
+
treeStructure.push(nodeState);
|
|
2046
|
+
});
|
|
2047
|
+
return treeStructure;
|
|
2048
|
+
}
|
|
2049
|
+
changeFilter(newValue) {
|
|
2050
|
+
this.treeService.filterChanged(newValue.toLowerCase());
|
|
2051
|
+
}
|
|
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 }); }
|
|
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"] }] }); }
|
|
2054
|
+
}
|
|
2055
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTreeViewComponent, decorators: [{
|
|
2056
|
+
type: Component,
|
|
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" }]
|
|
2058
|
+
}], ctorParameters: function () { return [{ type: TreeService }]; }, propDecorators: { callbacks: [{
|
|
2059
|
+
type: Input
|
|
2060
|
+
}], nodeItems: [{
|
|
2061
|
+
type: Input
|
|
2062
|
+
}], showFilterInput: [{
|
|
2063
|
+
type: Input
|
|
2064
|
+
}], selectedItems: [{
|
|
2065
|
+
type: Output
|
|
2066
|
+
}] } });
|
|
2067
|
+
|
|
1743
2068
|
class GravityDesignSystemModule {
|
|
1744
2069
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1745
2070
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, declarations: [GravityAttachFileComponent,
|
|
@@ -1755,7 +2080,12 @@ class GravityDesignSystemModule {
|
|
|
1755
2080
|
GravityRadioButtonComponent,
|
|
1756
2081
|
GravitySwitchComponent,
|
|
1757
2082
|
GravityTableComponent,
|
|
1758
|
-
GravityTextFieldComponent
|
|
2083
|
+
GravityTextFieldComponent,
|
|
2084
|
+
GravityTreeViewComponent,
|
|
2085
|
+
NodeComponent,
|
|
2086
|
+
NodeToggleComponent,
|
|
2087
|
+
NodeCheckboxComponent,
|
|
2088
|
+
NodeNameComponent], imports: [i1.AngularSvgIconModule, i2$2.AngularSvgIconPreloaderModule, CommonModule,
|
|
1759
2089
|
FormsModule, GravityTooltipModule, NgbDatepickerModule,
|
|
1760
2090
|
NgbProgressbarModule,
|
|
1761
2091
|
NgbToastModule,
|
|
@@ -1773,7 +2103,8 @@ class GravityDesignSystemModule {
|
|
|
1773
2103
|
GravitySwitchComponent,
|
|
1774
2104
|
GravityTableComponent,
|
|
1775
2105
|
GravityTextFieldComponent,
|
|
1776
|
-
GravityTooltipModule
|
|
2106
|
+
GravityTooltipModule,
|
|
2107
|
+
GravityTreeViewComponent] }); }
|
|
1777
2108
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, imports: [AngularSvgIconModule.forRoot(),
|
|
1778
2109
|
AngularSvgIconPreloaderModule.forRoot({
|
|
1779
2110
|
configUrl: './assets/gravity/json/icons.json',
|
|
@@ -1805,7 +2136,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1805
2136
|
GravityRadioButtonComponent,
|
|
1806
2137
|
GravitySwitchComponent,
|
|
1807
2138
|
GravityTableComponent,
|
|
1808
|
-
GravityTextFieldComponent
|
|
2139
|
+
GravityTextFieldComponent,
|
|
2140
|
+
GravityTreeViewComponent,
|
|
2141
|
+
NodeComponent,
|
|
2142
|
+
NodeToggleComponent,
|
|
2143
|
+
NodeCheckboxComponent,
|
|
2144
|
+
NodeNameComponent
|
|
1809
2145
|
],
|
|
1810
2146
|
imports: [
|
|
1811
2147
|
AngularSvgIconModule.forRoot(),
|
|
@@ -1835,7 +2171,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1835
2171
|
GravitySwitchComponent,
|
|
1836
2172
|
GravityTableComponent,
|
|
1837
2173
|
GravityTextFieldComponent,
|
|
1838
|
-
GravityTooltipModule
|
|
2174
|
+
GravityTooltipModule,
|
|
2175
|
+
GravityTreeViewComponent
|
|
1839
2176
|
]
|
|
1840
2177
|
}]
|
|
1841
2178
|
}] });
|
|
@@ -1889,5 +2226,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1889
2226
|
* Generated bundle index. Do not edit.
|
|
1890
2227
|
*/
|
|
1891
2228
|
|
|
1892
|
-
export { GravityAttachFileComponent, GravityButtonComponent, GravityCalendarComponent, GravityCheckboxComponent, GravityDesignSystemModule, GravityDialogComponent, GravityDialogManagerService, GravityDropdownListComponent, GravityIconComponent, GravityNotificationInstantContainerComponent, GravityRadioButtonComponent, GravitySwitchComponent, GravityTableComponent, GravityTextFieldComponent, GravityTooltipComponent, GravityTooltipDirective, GravityTooltipModule };
|
|
2229
|
+
export { GravityAttachFileComponent, GravityButtonComponent, GravityCalendarComponent, GravityCheckboxComponent, GravityDesignSystemModule, GravityDialogComponent, GravityDialogManagerService, GravityDropdownListComponent, GravityIconComponent, GravityNotificationInstantContainerComponent, GravityRadioButtonComponent, GravitySwitchComponent, GravityTableComponent, GravityTextFieldComponent, GravityTooltipComponent, GravityTooltipDirective, GravityTooltipModule, GravityTreeViewComponent };
|
|
1893
2230
|
//# sourceMappingURL=progressio_resources-gravity-design-system.mjs.map
|