@progressio_resources/gravity-design-system 2.0.13 → 2.1.0

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,188 @@ 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.type = "standard";
1506
+ this.firstTime = true;
1507
+ this.tableElement = null;
1508
+ this.tableSize = '';
1509
+ let milliseconds = new Date().getTime();
1510
+ let randomNumber = Math.random() * 10;
1511
+ this.tableId = '' + (milliseconds * randomNumber / 2);
1512
+ }
1513
+ ngAfterViewInit() {
1514
+ this.tableElement = this.tableContainer?.nativeElement?.childNodes[0];
1515
+ this.renderer.setAttribute(this.tableElement, 'table-id', this.tableId);
1516
+ let tableHeaders = this.getTableHeaders();
1517
+ this.initializeTable(tableHeaders);
1518
+ this.adjustTableType();
1519
+ this.adjustButtonsSize();
1520
+ this.onResize();
1521
+ }
1522
+ getTableHeaders() {
1523
+ let tableHeaderItems = document.querySelectorAll('thead tr th');
1524
+ let tableHeaders = [];
1525
+ tableHeaderItems.forEach((tableHeaderItem) => {
1526
+ tableHeaders.push(tableHeaderItem.childNodes[0].nodeValue);
1527
+ });
1528
+ return tableHeaders;
1529
+ }
1530
+ initializeTable(tableHeaders) {
1531
+ if (this.firstTime) {
1532
+ this.firstTime = false;
1533
+ //Set corresponding tableHeader as an attribute of each td
1534
+ let tableBody = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr td');
1535
+ tableBody.forEach((tableBodyRow, index) => {
1536
+ this.renderer.setAttribute(tableBodyRow, 'header-name', tableHeaders[index % tableHeaders.length]);
1537
+ });
1538
+ //Creates a copy of mobile-menu-trigger element for each tr
1539
+ let tableBodyRows = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr');
1540
+ let closeButtons = document.querySelectorAll('gravity-button[id-reference="close-button"]');
1541
+ tableBodyRows.forEach((tr, index) => {
1542
+ let mobileMenuTrigger = document.createElement('div');
1543
+ this.renderer.addClass(mobileMenuTrigger, 'mobile-menu-trigger');
1544
+ this.renderer.setAttribute(mobileMenuTrigger, 'cloned-node', 'true');
1545
+ let menuToggle = document.createElement('div');
1546
+ this.renderer.addClass(menuToggle, 'menu-toggle');
1547
+ menuToggle.appendChild(document.createElement('span'));
1548
+ menuToggle.appendChild(document.createElement('span'));
1549
+ menuToggle.appendChild(document.createElement('span'));
1550
+ menuToggle.addEventListener("click", () => {
1551
+ if (menuToggle.classList.contains('open')) {
1552
+ this.renderer.removeClass(menuToggle, 'open');
1553
+ this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
1554
+ }
1555
+ else {
1556
+ this.renderer.addClass(menuToggle, 'open');
1557
+ this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');
1558
+ }
1559
+ });
1560
+ mobileMenuTrigger.appendChild(menuToggle);
1561
+ let panel = document.createElement('div');
1562
+ this.renderer.addClass(panel, 'panel');
1563
+ let closeButtonFromNodeList = closeButtons.item(index);
1564
+ let closeButtonRemoved = closeButtonFromNodeList.parentNode.removeChild(closeButtonFromNodeList);
1565
+ this.renderer.setAttribute(closeButtonRemoved, 'cloned-button', 'true');
1566
+ closeButtonRemoved.addEventListener("click", () => {
1567
+ this.renderer.removeClass(menuToggle, 'open');
1568
+ this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
1569
+ });
1570
+ panel.append(closeButtonRemoved);
1571
+ mobileMenuTrigger.appendChild(panel);
1572
+ tr.insertBefore(mobileMenuTrigger, tr.firstChild);
1573
+ });
1574
+ }
1575
+ }
1576
+ adjustTableType() {
1577
+ this.renderer.removeClass(this.tableElement, 'standard-table');
1578
+ this.renderer.removeClass(this.tableElement, 'compressed-table');
1579
+ this.renderer.addClass(this.tableElement, this.type + '-table');
1580
+ }
1581
+ adjustButtonsSize() {
1582
+ let actionsColumns = document.querySelectorAll('table[table-id="' + this.tableId + '"] .actions-column');
1583
+ actionsColumns.forEach((actionsColumn) => {
1584
+ actionsColumn.childNodes.forEach((gravityButton) => {
1585
+ let button = gravityButton.childNodes[0];
1586
+ this.renderer.removeClass(button, 'gravity-size-lg');
1587
+ this.renderer.removeClass(button, 'gravity-size-md');
1588
+ this.renderer.removeClass(button, 'gravity-size-sm');
1589
+ this.renderer.removeClass(button, 'lg-bold');
1590
+ this.renderer.removeClass(button, 'md-bold');
1591
+ this.renderer.removeClass(button, 'sm-bold');
1592
+ this.renderer.addClass(button, 'gravity-size-sm');
1593
+ this.renderer.addClass(button, 'sm-bold');
1594
+ });
1595
+ });
1596
+ }
1597
+ onResize() {
1598
+ if (window.innerWidth <= 576) {
1599
+ this.tableSize = 'sm';
1600
+ }
1601
+ else if (window.innerWidth <= 992) {
1602
+ this.tableSize = 'md';
1603
+ }
1604
+ else if (window.innerWidth <= 1440) {
1605
+ this.tableSize = 'lg';
1606
+ }
1607
+ else {
1608
+ this.tableSize = 'xl';
1609
+ }
1610
+ this.adjustTableSize();
1611
+ }
1612
+ adjustTableSize() {
1613
+ this.renderer.removeClass(this.tableElement, 'sm-table');
1614
+ this.renderer.removeClass(this.tableElement, 'md-table');
1615
+ this.renderer.removeClass(this.tableElement, 'lg-table');
1616
+ this.renderer.removeClass(this.tableElement, 'xl-table');
1617
+ this.renderer.addClass(this.tableElement, this.tableSize + '-table');
1618
+ this.adjustTable();
1619
+ }
1620
+ adjustTable() {
1621
+ if (this.tableSize == 'md' || this.tableSize == 'sm') {
1622
+ let tableBodyRows = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr');
1623
+ let tableBodyRowsActions = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr td.actions-column');
1624
+ let tableBodyRowsMenuTrigger = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr .mobile-menu-trigger[cloned-node="true"]');
1625
+ tableBodyRows.forEach((tr, index) => {
1626
+ let mobileMenuTrigger = tableBodyRowsMenuTrigger.item(index);
1627
+ let mobileMenuTriggerPanel = mobileMenuTrigger.lastChild;
1628
+ if (tableBodyRowsActions.item(index) && mobileMenuTriggerPanel) {
1629
+ this.appendNodesList(mobileMenuTriggerPanel, tableBodyRowsActions.item(index).childNodes);
1630
+ }
1631
+ });
1632
+ }
1633
+ if (this.tableSize == 'lg' || this.tableSize == 'xl') {
1634
+ let tableBodyRows = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr');
1635
+ let tableBodyRowsActions = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr td.actions-column');
1636
+ let tableBodyRowsMenuTrigger = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr .mobile-menu-trigger[cloned-node="true"]');
1637
+ tableBodyRows.forEach((tr, index) => {
1638
+ if (tableBodyRowsActions.item(index)) {
1639
+ this.appendNodesList(tableBodyRowsActions.item(index), tableBodyRowsMenuTrigger.item(index).lastChild.childNodes);
1640
+ }
1641
+ });
1642
+ }
1643
+ }
1644
+ appendNodesList(elementToAppend, nodesList) {
1645
+ if (this.tableSize == 'md' || this.tableSize == 'sm') {
1646
+ let nodeListIndex = nodesList.length - 1;
1647
+ while (nodesList.length != 0) {
1648
+ let removedNode = nodesList.item(nodeListIndex).parentNode.removeChild(nodesList.item(nodeListIndex));
1649
+ elementToAppend.insertBefore(removedNode, elementToAppend.firstChild);
1650
+ nodeListIndex--;
1651
+ }
1652
+ return elementToAppend;
1653
+ }
1654
+ if (this.tableSize == 'lg' || this.tableSize == 'xl') {
1655
+ let nodeListIndex = nodesList.length - 1;
1656
+ while (nodesList.length != 1) {
1657
+ let item = nodesList.item(nodeListIndex);
1658
+ let closeButtonNode = item.parentNode.querySelectorAll('gravity-button[id-reference="close-button"]').item(0);
1659
+ if (item != closeButtonNode) {
1660
+ let removedNode = item.parentNode.removeChild(item);
1661
+ elementToAppend.insertBefore(removedNode, elementToAppend.firstChild);
1662
+ }
1663
+ nodeListIndex--;
1664
+ }
1665
+ return elementToAppend;
1666
+ }
1667
+ }
1668
+ 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 }); }
1669
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTableComponent, selector: "gravity-table", inputs: { type: "type" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: 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"] }] }); }
1670
+ }
1671
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, decorators: [{
1672
+ type: Component,
1673
+ 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"] }]
1674
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { type: [{
1675
+ type: Input
1676
+ }], tableContainer: [{
1677
+ type: ViewChild,
1678
+ args: ['tableContainer']
1679
+ }], onResize: [{
1680
+ type: HostListener,
1681
+ args: ['window:resize', ['$event']]
1682
+ }] } });
1683
+
1502
1684
  class GravityDesignSystemModule {
1503
1685
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1504
1686
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, declarations: [GravityAttachFileComponent,
@@ -1513,13 +1695,14 @@ class GravityDesignSystemModule {
1513
1695
  GravityNotificationInstantContainerComponent,
1514
1696
  GravityRadioButtonComponent,
1515
1697
  GravitySwitchComponent,
1698
+ GravityTableComponent,
1516
1699
  GravityTextFieldComponent], imports: [i1.AngularSvgIconModule, i2$2.AngularSvgIconPreloaderModule, CommonModule,
1517
1700
  FormsModule, GravityTooltipModule, NgbDatepickerModule,
1701
+ NgbProgressbarModule,
1518
1702
  NgbToastModule,
1519
1703
  NgSelectModule,
1520
1704
  NgxPrettyCheckboxModule,
1521
- ReactiveFormsModule,
1522
- NgbProgressbarModule], exports: [GravityAttachFileComponent,
1705
+ ReactiveFormsModule], exports: [GravityAttachFileComponent,
1523
1706
  GravityButtonComponent,
1524
1707
  GravityCalendarComponent,
1525
1708
  GravityCheckboxComponent,
@@ -1529,6 +1712,7 @@ class GravityDesignSystemModule {
1529
1712
  GravityNotificationInstantContainerComponent,
1530
1713
  GravityRadioButtonComponent,
1531
1714
  GravitySwitchComponent,
1715
+ GravityTableComponent,
1532
1716
  GravityTextFieldComponent,
1533
1717
  GravityTooltipModule] }); }
1534
1718
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, imports: [AngularSvgIconModule.forRoot(),
@@ -1539,11 +1723,11 @@ class GravityDesignSystemModule {
1539
1723
  FormsModule,
1540
1724
  GravityTooltipModule.forRoot({}),
1541
1725
  NgbDatepickerModule,
1726
+ NgbProgressbarModule,
1542
1727
  NgbToastModule,
1543
1728
  NgSelectModule,
1544
1729
  NgxPrettyCheckboxModule,
1545
- ReactiveFormsModule,
1546
- NgbProgressbarModule, GravityTooltipModule] }); }
1730
+ ReactiveFormsModule, GravityTooltipModule] }); }
1547
1731
  }
1548
1732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityDesignSystemModule, decorators: [{
1549
1733
  type: NgModule,
@@ -1561,6 +1745,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1561
1745
  GravityNotificationInstantContainerComponent,
1562
1746
  GravityRadioButtonComponent,
1563
1747
  GravitySwitchComponent,
1748
+ GravityTableComponent,
1564
1749
  GravityTextFieldComponent
1565
1750
  ],
1566
1751
  imports: [
@@ -1572,11 +1757,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1572
1757
  FormsModule,
1573
1758
  GravityTooltipModule.forRoot({}),
1574
1759
  NgbDatepickerModule,
1760
+ NgbProgressbarModule,
1575
1761
  NgbToastModule,
1576
1762
  NgSelectModule,
1577
1763
  NgxPrettyCheckboxModule,
1578
- ReactiveFormsModule,
1579
- NgbProgressbarModule
1764
+ ReactiveFormsModule
1580
1765
  ],
1581
1766
  exports: [
1582
1767
  GravityAttachFileComponent,
@@ -1589,6 +1774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1589
1774
  GravityNotificationInstantContainerComponent,
1590
1775
  GravityRadioButtonComponent,
1591
1776
  GravitySwitchComponent,
1777
+ GravityTableComponent,
1592
1778
  GravityTextFieldComponent,
1593
1779
  GravityTooltipModule
1594
1780
  ]
@@ -1638,5 +1824,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1638
1824
  * Generated bundle index. Do not edit.
1639
1825
  */
1640
1826
 
1641
- export { GravityAttachFileComponent, GravityButtonComponent, GravityCalendarComponent, GravityCheckboxComponent, GravityDesignSystemModule, GravityDialogComponent, GravityDialogManagerService, GravityDropdownListComponent, GravityIconComponent, GravityNotificationInstantContainerComponent, GravityRadioButtonComponent, GravitySwitchComponent, GravityTextFieldComponent, GravityTooltipComponent, GravityTooltipDirective, GravityTooltipModule };
1827
+ export { GravityAttachFileComponent, GravityButtonComponent, GravityCalendarComponent, GravityCheckboxComponent, GravityDesignSystemModule, GravityDialogComponent, GravityDialogManagerService, GravityDropdownListComponent, GravityIconComponent, GravityNotificationInstantContainerComponent, GravityRadioButtonComponent, GravitySwitchComponent, GravityTableComponent, GravityTextFieldComponent, GravityTooltipComponent, GravityTooltipDirective, GravityTooltipModule };
1642
1828
  //# sourceMappingURL=progressio_resources-gravity-design-system.mjs.map