@progressio_resources/gravity-design-system 2.0.13 → 2.1.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.
@@ -5,7 +5,7 @@ import { CommonModule } from '@angular/common';
5
5
  import * as i2 from '@angular/forms';
6
6
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
7
7
  import * as i1$2 from '@ng-bootstrap/ng-bootstrap';
8
- import { NgbDatepickerModule, NgbToastModule, NgbProgressbarModule } from '@ng-bootstrap/ng-bootstrap';
8
+ import { NgbDatepickerModule, NgbProgressbarModule, NgbToastModule } from '@ng-bootstrap/ng-bootstrap';
9
9
  import * as i1 from 'angular-svg-icon';
10
10
  import { AngularSvgIconModule } from 'angular-svg-icon';
11
11
  import * as i3 from '@ng-select/ng-select';
@@ -1499,6 +1499,214 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1499
1499
  type: Input
1500
1500
  }] } });
1501
1501
 
1502
+ class GravityTableComponent {
1503
+ constructor(renderer) {
1504
+ this.renderer = renderer;
1505
+ this.tableDensity = "standard";
1506
+ this.tableSizeInput = "auto";
1507
+ this.firstTime = true;
1508
+ this.tableElement = null;
1509
+ this.tableSize = 'xl';
1510
+ let milliseconds = new Date().getTime();
1511
+ let randomNumber = Math.random() * 10;
1512
+ this.tableId = '' + (milliseconds * randomNumber / 2);
1513
+ }
1514
+ ngAfterViewInit() {
1515
+ this.tableElement = this.tableContainer?.nativeElement?.childNodes[0];
1516
+ this.renderer.setAttribute(this.tableElement, 'table-id', this.tableId);
1517
+ let tableHeaders = this.getTableHeaders();
1518
+ this.initializeTable(tableHeaders);
1519
+ this.adjustTableDensity(this.tableDensity);
1520
+ this.adjustButtonsSize();
1521
+ this.onResize();
1522
+ }
1523
+ ngOnChanges(changes) {
1524
+ if (this.tableElement) {
1525
+ if (changes['tableDensity']) {
1526
+ this.adjustTableDensity(changes['tableDensity'].currentValue);
1527
+ }
1528
+ if (changes['tableSizeInput']) {
1529
+ this.tableSizeInput = changes['tableSizeInput'].currentValue;
1530
+ this.onResize();
1531
+ }
1532
+ }
1533
+ }
1534
+ ngAfterContentChecked() {
1535
+ if (this.tableElement) {
1536
+ let tableHeaders = this.getTableHeaders();
1537
+ this.initializeTable(tableHeaders);
1538
+ this.adjustTableDensity(this.tableDensity);
1539
+ this.adjustButtonsSize();
1540
+ this.onResize();
1541
+ }
1542
+ }
1543
+ getTableHeaders() {
1544
+ let tableHeaderItems = document.querySelectorAll('thead tr th');
1545
+ let tableHeaders = [];
1546
+ tableHeaderItems.forEach((tableHeaderItem) => {
1547
+ tableHeaders.push(tableHeaderItem.childNodes[0].nodeValue);
1548
+ });
1549
+ return tableHeaders;
1550
+ }
1551
+ initializeTable(tableHeaders) {
1552
+ if (this.firstTime) {
1553
+ this.firstTime = false;
1554
+ //Set corresponding tableHeader as an attribute of each td
1555
+ let tableBody = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr td');
1556
+ tableBody.forEach((tableBodyRow, index) => {
1557
+ this.renderer.setAttribute(tableBodyRow, 'header-name', tableHeaders[index % tableHeaders.length]);
1558
+ });
1559
+ //Creates a copy of mobile-menu-trigger element for each tr
1560
+ let tableBodyRows = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr');
1561
+ let closeButtons = document.querySelectorAll('gravity-button[id-reference="close-button"]');
1562
+ tableBodyRows.forEach((tr, index) => {
1563
+ let mobileMenuTrigger = document.createElement('div');
1564
+ this.renderer.addClass(mobileMenuTrigger, 'mobile-menu-trigger');
1565
+ this.renderer.setAttribute(mobileMenuTrigger, 'cloned-node', 'true');
1566
+ let menuToggle = document.createElement('div');
1567
+ this.renderer.addClass(menuToggle, 'menu-toggle');
1568
+ menuToggle.appendChild(document.createElement('span'));
1569
+ menuToggle.appendChild(document.createElement('span'));
1570
+ menuToggle.appendChild(document.createElement('span'));
1571
+ menuToggle.addEventListener("click", () => {
1572
+ if (menuToggle.classList.contains('open')) {
1573
+ this.renderer.removeClass(menuToggle, 'open');
1574
+ this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
1575
+ }
1576
+ else {
1577
+ this.renderer.addClass(menuToggle, 'open');
1578
+ this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');
1579
+ }
1580
+ });
1581
+ mobileMenuTrigger.appendChild(menuToggle);
1582
+ let panel = document.createElement('div');
1583
+ this.renderer.addClass(panel, 'panel');
1584
+ let closeButtonFromNodeList = closeButtons.item(index);
1585
+ let closeButtonRemoved = closeButtonFromNodeList.parentNode.removeChild(closeButtonFromNodeList);
1586
+ this.renderer.setAttribute(closeButtonRemoved, 'cloned-button', 'true');
1587
+ closeButtonRemoved.addEventListener("click", () => {
1588
+ this.renderer.removeClass(menuToggle, 'open');
1589
+ this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
1590
+ });
1591
+ panel.append(closeButtonRemoved);
1592
+ mobileMenuTrigger.appendChild(panel);
1593
+ tr.insertBefore(mobileMenuTrigger, tr.firstChild);
1594
+ });
1595
+ }
1596
+ }
1597
+ adjustTableDensity(densityValue) {
1598
+ this.renderer.removeClass(this.tableElement, 'standard-table');
1599
+ this.renderer.removeClass(this.tableElement, 'compressed-table');
1600
+ this.renderer.addClass(this.tableElement, densityValue + '-table');
1601
+ }
1602
+ adjustButtonsSize() {
1603
+ let actionsColumns = document.querySelectorAll('table[table-id="' + this.tableId + '"] .actions-column');
1604
+ actionsColumns.forEach((actionsColumn) => {
1605
+ actionsColumn.childNodes.forEach((gravityButton) => {
1606
+ let button = gravityButton.childNodes[0];
1607
+ this.renderer.removeClass(button, 'gravity-size-lg');
1608
+ this.renderer.removeClass(button, 'gravity-size-md');
1609
+ this.renderer.removeClass(button, 'gravity-size-sm');
1610
+ this.renderer.removeClass(button, 'lg-bold');
1611
+ this.renderer.removeClass(button, 'md-bold');
1612
+ this.renderer.removeClass(button, 'sm-bold');
1613
+ this.renderer.addClass(button, 'gravity-size-sm');
1614
+ this.renderer.addClass(button, 'sm-bold');
1615
+ });
1616
+ });
1617
+ }
1618
+ onResize() {
1619
+ if (window.innerWidth <= 576) {
1620
+ this.tableSize = 'sm';
1621
+ }
1622
+ else if (window.innerWidth <= 992) {
1623
+ this.tableSize = 'md';
1624
+ }
1625
+ else if (window.innerWidth <= 1440) {
1626
+ this.tableSize = 'lg';
1627
+ }
1628
+ else {
1629
+ this.tableSize = 'xl';
1630
+ }
1631
+ this.adjustTableSize();
1632
+ }
1633
+ adjustTableSize() {
1634
+ this.renderer.removeClass(this.tableElement, 'sm-table');
1635
+ this.renderer.removeClass(this.tableElement, 'md-table');
1636
+ this.renderer.removeClass(this.tableElement, 'lg-table');
1637
+ this.renderer.removeClass(this.tableElement, 'xl-table');
1638
+ if (this.tableSizeInput != 'auto') {
1639
+ this.tableSize = this.tableSizeInput;
1640
+ }
1641
+ this.renderer.addClass(this.tableElement, this.tableSize + '-table');
1642
+ this.adjustTable();
1643
+ }
1644
+ adjustTable() {
1645
+ if (this.tableSize == 'md' || this.tableSize == 'sm') {
1646
+ let tableBodyRows = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr');
1647
+ let tableBodyRowsActions = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr td.actions-column');
1648
+ let tableBodyRowsMenuTrigger = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr .mobile-menu-trigger[cloned-node="true"]');
1649
+ tableBodyRows.forEach((tr, index) => {
1650
+ let mobileMenuTrigger = tableBodyRowsMenuTrigger.item(index);
1651
+ let mobileMenuTriggerPanel = mobileMenuTrigger.lastChild;
1652
+ if (tableBodyRowsActions.item(index) && mobileMenuTriggerPanel) {
1653
+ this.appendNodesList(mobileMenuTriggerPanel, tableBodyRowsActions.item(index).childNodes);
1654
+ }
1655
+ });
1656
+ }
1657
+ if (this.tableSize == 'lg' || this.tableSize == 'xl') {
1658
+ let tableBodyRows = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr');
1659
+ let tableBodyRowsActions = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr td.actions-column');
1660
+ let tableBodyRowsMenuTrigger = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr .mobile-menu-trigger[cloned-node="true"]');
1661
+ tableBodyRows.forEach((tr, index) => {
1662
+ if (tableBodyRowsActions.item(index)) {
1663
+ this.appendNodesList(tableBodyRowsActions.item(index), tableBodyRowsMenuTrigger.item(index).lastChild.childNodes);
1664
+ }
1665
+ });
1666
+ }
1667
+ }
1668
+ appendNodesList(elementToAppend, nodesList) {
1669
+ if (this.tableSize == 'md' || this.tableSize == 'sm') {
1670
+ let nodeListIndex = nodesList.length - 1;
1671
+ while (nodesList.length != 0) {
1672
+ let removedNode = nodesList.item(nodeListIndex).parentNode.removeChild(nodesList.item(nodeListIndex));
1673
+ elementToAppend.insertBefore(removedNode, elementToAppend.firstChild);
1674
+ nodeListIndex--;
1675
+ }
1676
+ return elementToAppend;
1677
+ }
1678
+ if (this.tableSize == 'lg' || this.tableSize == 'xl') {
1679
+ let nodeListIndex = nodesList.length - 1;
1680
+ while (nodesList.length != 1) {
1681
+ let item = nodesList.item(nodeListIndex);
1682
+ let closeButtonNode = item.parentNode.querySelectorAll('gravity-button[id-reference="close-button"]').item(0);
1683
+ if (item != closeButtonNode) {
1684
+ let removedNode = item.parentNode.removeChild(item);
1685
+ elementToAppend.insertBefore(removedNode, elementToAppend.firstChild);
1686
+ }
1687
+ nodeListIndex--;
1688
+ }
1689
+ return elementToAppend;
1690
+ }
1691
+ }
1692
+ 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 }); }
1693
+ 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", styles: [".table-container{overflow-x:auto}\n"], dependencies: [{ kind: "component", type: GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
1694
+ }
1695
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, decorators: [{
1696
+ type: Component,
1697
+ 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", styles: [".table-container{overflow-x:auto}\n"] }]
1698
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { tableDensity: [{
1699
+ type: Input
1700
+ }], tableSizeInput: [{
1701
+ type: Input
1702
+ }], tableContainer: [{
1703
+ type: ViewChild,
1704
+ args: ['tableContainer']
1705
+ }], onResize: [{
1706
+ type: HostListener,
1707
+ args: ['window:resize', ['$event']]
1708
+ }] } });
1709
+
1502
1710
  class GravityDesignSystemModule {
1503
1711
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1504
1712
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, declarations: [GravityAttachFileComponent,
@@ -1513,13 +1721,14 @@ class GravityDesignSystemModule {
1513
1721
  GravityNotificationInstantContainerComponent,
1514
1722
  GravityRadioButtonComponent,
1515
1723
  GravitySwitchComponent,
1724
+ GravityTableComponent,
1516
1725
  GravityTextFieldComponent], imports: [i1.AngularSvgIconModule, i2$2.AngularSvgIconPreloaderModule, CommonModule,
1517
1726
  FormsModule, GravityTooltipModule, NgbDatepickerModule,
1727
+ NgbProgressbarModule,
1518
1728
  NgbToastModule,
1519
1729
  NgSelectModule,
1520
1730
  NgxPrettyCheckboxModule,
1521
- ReactiveFormsModule,
1522
- NgbProgressbarModule], exports: [GravityAttachFileComponent,
1731
+ ReactiveFormsModule], exports: [GravityAttachFileComponent,
1523
1732
  GravityButtonComponent,
1524
1733
  GravityCalendarComponent,
1525
1734
  GravityCheckboxComponent,
@@ -1529,6 +1738,7 @@ class GravityDesignSystemModule {
1529
1738
  GravityNotificationInstantContainerComponent,
1530
1739
  GravityRadioButtonComponent,
1531
1740
  GravitySwitchComponent,
1741
+ GravityTableComponent,
1532
1742
  GravityTextFieldComponent,
1533
1743
  GravityTooltipModule] }); }
1534
1744
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, imports: [AngularSvgIconModule.forRoot(),
@@ -1539,11 +1749,11 @@ class GravityDesignSystemModule {
1539
1749
  FormsModule,
1540
1750
  GravityTooltipModule.forRoot({}),
1541
1751
  NgbDatepickerModule,
1752
+ NgbProgressbarModule,
1542
1753
  NgbToastModule,
1543
1754
  NgSelectModule,
1544
1755
  NgxPrettyCheckboxModule,
1545
- ReactiveFormsModule,
1546
- NgbProgressbarModule, GravityTooltipModule] }); }
1756
+ ReactiveFormsModule, GravityTooltipModule] }); }
1547
1757
  }
1548
1758
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, decorators: [{
1549
1759
  type: NgModule,
@@ -1561,6 +1771,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1561
1771
  GravityNotificationInstantContainerComponent,
1562
1772
  GravityRadioButtonComponent,
1563
1773
  GravitySwitchComponent,
1774
+ GravityTableComponent,
1564
1775
  GravityTextFieldComponent
1565
1776
  ],
1566
1777
  imports: [
@@ -1572,11 +1783,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1572
1783
  FormsModule,
1573
1784
  GravityTooltipModule.forRoot({}),
1574
1785
  NgbDatepickerModule,
1786
+ NgbProgressbarModule,
1575
1787
  NgbToastModule,
1576
1788
  NgSelectModule,
1577
1789
  NgxPrettyCheckboxModule,
1578
- ReactiveFormsModule,
1579
- NgbProgressbarModule
1790
+ ReactiveFormsModule
1580
1791
  ],
1581
1792
  exports: [
1582
1793
  GravityAttachFileComponent,
@@ -1589,6 +1800,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1589
1800
  GravityNotificationInstantContainerComponent,
1590
1801
  GravityRadioButtonComponent,
1591
1802
  GravitySwitchComponent,
1803
+ GravityTableComponent,
1592
1804
  GravityTextFieldComponent,
1593
1805
  GravityTooltipModule
1594
1806
  ]
@@ -1638,5 +1850,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1638
1850
  * Generated bundle index. Do not edit.
1639
1851
  */
1640
1852
 
1641
- export { GravityAttachFileComponent, GravityButtonComponent, GravityCalendarComponent, GravityCheckboxComponent, GravityDesignSystemModule, GravityDialogComponent, GravityDialogManagerService, GravityDropdownListComponent, GravityIconComponent, GravityNotificationInstantContainerComponent, GravityRadioButtonComponent, GravitySwitchComponent, GravityTextFieldComponent, GravityTooltipComponent, GravityTooltipDirective, GravityTooltipModule };
1853
+ export { GravityAttachFileComponent, GravityButtonComponent, GravityCalendarComponent, GravityCheckboxComponent, GravityDesignSystemModule, GravityDialogComponent, GravityDialogManagerService, GravityDropdownListComponent, GravityIconComponent, GravityNotificationInstantContainerComponent, GravityRadioButtonComponent, GravitySwitchComponent, GravityTableComponent, GravityTextFieldComponent, GravityTooltipComponent, GravityTooltipDirective, GravityTooltipModule };
1642
1854
  //# sourceMappingURL=progressio_resources-gravity-design-system.mjs.map