@po-ui/ng-components 21.9.0 → 21.10.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.
Files changed (44) hide show
  1. package/fesm2022/po-ui-ng-components.mjs +172 -21
  2. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  3. package/lib/components/po-avatar/po-avatar.component.d.ts +1 -0
  4. package/lib/components/po-badge/po-badge-base.component.d.ts +15 -0
  5. package/lib/components/po-container/po-container.component.d.ts +1 -0
  6. package/lib/components/po-field/po-combo/po-combo.component.d.ts +1 -0
  7. package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +1 -0
  8. package/lib/components/po-field/po-select/po-select.component.d.ts +1 -0
  9. package/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.d.ts +2 -0
  10. package/lib/components/po-menu/po-menu.component.d.ts +2 -0
  11. package/lib/components/po-page/po-page-default/po-page-default.component.d.ts +1 -0
  12. package/lib/components/po-popup/po-popup.component.d.ts +2 -0
  13. package/lib/components/po-progress/po-progress.component.d.ts +1 -0
  14. package/lib/components/po-search/po-search.component.d.ts +3 -0
  15. package/lib/components/po-stepper/po-stepper.component.d.ts +1 -0
  16. package/lib/components/po-table/interfaces/po-table-column.interface.d.ts +14 -4
  17. package/lib/components/po-table/po-table-base.component.d.ts +22 -0
  18. package/lib/components/po-table/po-table-column-icon/po-table-column-icon.interface.d.ts +10 -0
  19. package/lib/components/po-table/po-table-column-label/po-table-column-label.interface.d.ts +21 -0
  20. package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +1 -0
  21. package/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-column.interface.d.ts +10 -0
  22. package/lib/components/po-table/po-table.component.d.ts +1 -0
  23. package/lib/components/po-tag/po-tag-base.component.d.ts +20 -1
  24. package/lib/components/po-tag/po-tag.component.d.ts +7 -0
  25. package/lib/components/po-widget/po-widget.component.d.ts +2 -0
  26. package/lib/enums/po-caption-tag-color.enum.d.ts +43 -0
  27. package/package.json +4 -4
  28. package/po-ui-ng-components-21.10.0.tgz +0 -0
  29. package/schematics/ng-add/index.js +1 -1
  30. package/schematics/ng-update/v14/index.js +1 -1
  31. package/schematics/ng-update/v15/index.js +1 -1
  32. package/schematics/ng-update/v16/index.js +1 -1
  33. package/schematics/ng-update/v17/index.js +1 -1
  34. package/schematics/ng-update/v18/index.js +2 -2
  35. package/schematics/ng-update/v19/index.js +2 -2
  36. package/schematics/ng-update/v2/index.js +1 -1
  37. package/schematics/ng-update/v20/index.js +2 -2
  38. package/schematics/ng-update/v21/index.js +1 -1
  39. package/schematics/ng-update/v3/index.js +1 -1
  40. package/schematics/ng-update/v4/index.js +1 -1
  41. package/schematics/ng-update/v5/index.js +1 -1
  42. package/schematics/ng-update/v6/index.js +1 -1
  43. package/types/po-ui-ng-components.d.ts +142 -7
  44. package/po-ui-ng-components-21.9.0.tgz +0 -0
@@ -1587,6 +1587,51 @@ var PoTagIcon;
1587
1587
  PoTagIcon["Warning"] = "ICON_WARNING";
1588
1588
  })(PoTagIcon || (PoTagIcon = {}));
1589
1589
 
1590
+ /**
1591
+ * Enum que define as 35 Caption Tag Colors disponíveis para uso nos componentes.
1592
+ *
1593
+ * Estas cores são organizadas em 7 famílias (tag-01 a tag-07), cada uma com 5 variantes
1594
+ * (lighter, light, base, dark, darker), totalizando 35 cores.
1595
+ */
1596
+ var PoCaptionTagColorEnum;
1597
+ (function (PoCaptionTagColorEnum) {
1598
+ PoCaptionTagColorEnum["CaptionTag01"] = "caption-tag-01";
1599
+ PoCaptionTagColorEnum["CaptionTag02"] = "caption-tag-02";
1600
+ PoCaptionTagColorEnum["CaptionTag03"] = "caption-tag-03";
1601
+ PoCaptionTagColorEnum["CaptionTag04"] = "caption-tag-04";
1602
+ PoCaptionTagColorEnum["CaptionTag05"] = "caption-tag-05";
1603
+ PoCaptionTagColorEnum["CaptionTag06"] = "caption-tag-06";
1604
+ PoCaptionTagColorEnum["CaptionTag07"] = "caption-tag-07";
1605
+ PoCaptionTagColorEnum["CaptionTag08"] = "caption-tag-08";
1606
+ PoCaptionTagColorEnum["CaptionTag09"] = "caption-tag-09";
1607
+ PoCaptionTagColorEnum["CaptionTag10"] = "caption-tag-10";
1608
+ PoCaptionTagColorEnum["CaptionTag11"] = "caption-tag-11";
1609
+ PoCaptionTagColorEnum["CaptionTag12"] = "caption-tag-12";
1610
+ PoCaptionTagColorEnum["CaptionTag13"] = "caption-tag-13";
1611
+ PoCaptionTagColorEnum["CaptionTag14"] = "caption-tag-14";
1612
+ PoCaptionTagColorEnum["CaptionTag15"] = "caption-tag-15";
1613
+ PoCaptionTagColorEnum["CaptionTag16"] = "caption-tag-16";
1614
+ PoCaptionTagColorEnum["CaptionTag17"] = "caption-tag-17";
1615
+ PoCaptionTagColorEnum["CaptionTag18"] = "caption-tag-18";
1616
+ PoCaptionTagColorEnum["CaptionTag19"] = "caption-tag-19";
1617
+ PoCaptionTagColorEnum["CaptionTag20"] = "caption-tag-20";
1618
+ PoCaptionTagColorEnum["CaptionTag21"] = "caption-tag-21";
1619
+ PoCaptionTagColorEnum["CaptionTag22"] = "caption-tag-22";
1620
+ PoCaptionTagColorEnum["CaptionTag23"] = "caption-tag-23";
1621
+ PoCaptionTagColorEnum["CaptionTag24"] = "caption-tag-24";
1622
+ PoCaptionTagColorEnum["CaptionTag25"] = "caption-tag-25";
1623
+ PoCaptionTagColorEnum["CaptionTag26"] = "caption-tag-26";
1624
+ PoCaptionTagColorEnum["CaptionTag27"] = "caption-tag-27";
1625
+ PoCaptionTagColorEnum["CaptionTag28"] = "caption-tag-28";
1626
+ PoCaptionTagColorEnum["CaptionTag29"] = "caption-tag-29";
1627
+ PoCaptionTagColorEnum["CaptionTag30"] = "caption-tag-30";
1628
+ PoCaptionTagColorEnum["CaptionTag31"] = "caption-tag-31";
1629
+ PoCaptionTagColorEnum["CaptionTag32"] = "caption-tag-32";
1630
+ PoCaptionTagColorEnum["CaptionTag33"] = "caption-tag-33";
1631
+ PoCaptionTagColorEnum["CaptionTag34"] = "caption-tag-34";
1632
+ PoCaptionTagColorEnum["CaptionTag35"] = "caption-tag-35";
1633
+ })(PoCaptionTagColorEnum || (PoCaptionTagColorEnum = {}));
1634
+
1590
1635
  /**
1591
1636
  * @docsPrivate
1592
1637
  *
@@ -1622,7 +1667,8 @@ var PoColorPaletteEnum;
1622
1667
  PoColorPaletteEnum["Color12"] = "color-12";
1623
1668
  })(PoColorPaletteEnum || (PoColorPaletteEnum = {}));
1624
1669
 
1625
- const poTagColors = Object.values(PoColorPaletteEnum);
1670
+ const poTagColors = [...Object.values(PoColorPaletteEnum), ...Object.values(PoCaptionTagColorEnum)];
1671
+ const poTagTextColors = Object.values(PoColorPaletteEnum);
1626
1672
  const poTagOrientationDefault = PoTagOrientation.Vertical;
1627
1673
  const PoTagLiteralsDefault = {
1628
1674
  en: {
@@ -1779,8 +1825,24 @@ class PoTagBaseComponent {
1779
1825
  * - <span class="dot po-color-11"></span> `color-11`
1780
1826
  * - <span class="dot po-color-12"></span> `color-12`
1781
1827
  *
1828
+ * > Também é possível utilizar as 35 cores da paleta **Caption Tag Colors**:
1829
+ *
1830
+ * - <span class="dot po-caption-tag-01"></span> `caption-tag-01` <span class="dot po-caption-tag-02"></span> `caption-tag-02` <span class="dot po-caption-tag-03"></span> `caption-tag-03` <span class="dot po-caption-tag-04"></span> `caption-tag-04` <span class="dot po-caption-tag-05"></span> `caption-tag-05`
1831
+ * - <span class="dot po-caption-tag-06"></span> `caption-tag-06` <span class="dot po-caption-tag-07"></span> `caption-tag-07` <span class="dot po-caption-tag-08"></span> `caption-tag-08` <span class="dot po-caption-tag-09"></span> `caption-tag-09` <span class="dot po-caption-tag-10"></span> `caption-tag-10`
1832
+ * - <span class="dot po-caption-tag-11"></span> `caption-tag-11` <span class="dot po-caption-tag-12"></span> `caption-tag-12` <span class="dot po-caption-tag-13"></span> `caption-tag-13` <span class="dot po-caption-tag-14"></span> `caption-tag-14` <span class="dot po-caption-tag-15"></span> `caption-tag-15`
1833
+ * - <span class="dot po-caption-tag-16"></span> `caption-tag-16` <span class="dot po-caption-tag-17"></span> `caption-tag-17` <span class="dot po-caption-tag-18"></span> `caption-tag-18` <span class="dot po-caption-tag-19"></span> `caption-tag-19` <span class="dot po-caption-tag-20"></span> `caption-tag-20`
1834
+ * - <span class="dot po-caption-tag-21"></span> `caption-tag-21` <span class="dot po-caption-tag-22"></span> `caption-tag-22` <span class="dot po-caption-tag-23"></span> `caption-tag-23` <span class="dot po-caption-tag-24"></span> `caption-tag-24` <span class="dot po-caption-tag-25"></span> `caption-tag-25`
1835
+ * - <span class="dot po-caption-tag-26"></span> `caption-tag-26` <span class="dot po-caption-tag-27"></span> `caption-tag-27` <span class="dot po-caption-tag-28"></span> `caption-tag-28` <span class="dot po-caption-tag-29"></span> `caption-tag-29` <span class="dot po-caption-tag-30"></span> `caption-tag-30`
1836
+ * - <span class="dot po-caption-tag-31"></span> `caption-tag-31` <span class="dot po-caption-tag-32"></span> `caption-tag-32` <span class="dot po-caption-tag-33"></span> `caption-tag-33` <span class="dot po-caption-tag-34"></span> `caption-tag-34` <span class="dot po-caption-tag-35"></span> `caption-tag-35`
1837
+ *
1838
+ * Exemplo de uso:
1839
+ * ```
1840
+ * <po-tag p-color="caption-tag-15" p-value="Status"></po-tag>
1841
+ * ```
1842
+ *
1782
1843
  * - Para uma melhor acessibilidade no uso do componente é recomendável utilizar cores com um melhor contraste em relação ao background;
1783
- * - O componente ajusta automaticamente a cor do texto para garantir legibilidade, escolhendo dinamicamente entre texto claro ou escuro conforme o contraste necessário.
1844
+ * - Para as cores legacy (`color-01` a `color-12`) e cores customizadas, o componente ajusta automaticamente a cor do texto para garantir legibilidade.
1845
+ * - Para as cores **Caption Tag Colors** (`caption-tag-01` a `caption-tag-35`), a cor do texto é fixa e definida via token CSS, não sendo possível alterá-la via `p-text-color`.
1784
1846
  *
1785
1847
  * > **Atenção:** A propriedade `p-type` sobrepõe esta definição.
1786
1848
  */
@@ -1820,9 +1882,12 @@ class PoTagBaseComponent {
1820
1882
  * - Para uma melhor acessibilidade no uso do componente é recomendável utilizar cores com um melhor contraste em relação ao background.
1821
1883
  *
1822
1884
  * > **Atenção:** A propriedade `p-type` sobrepõe esta definição.
1885
+ *
1886
+ * > **Atenção:** As cores da paleta **Caption Tag Colors** (`caption-tag-01` a `caption-tag-35`) não são aceitas nesta propriedade,
1887
+ * pois possuem cor de texto fixa definida via token CSS.
1823
1888
  */
1824
1889
  set textColor(value) {
1825
- this._textColor = poTagColors.includes(value) ? value : undefined;
1890
+ this._textColor = poTagTextColors.includes(value) ? value : undefined;
1826
1891
  if (this._textColor === undefined) {
1827
1892
  CSS.supports('color', value) ? (this.customTextColor = value) : (this.customTextColor = undefined);
1828
1893
  }
@@ -2805,12 +2870,18 @@ const poTagTypeDefault = 'po-tag-' + PoTagType.Info;
2805
2870
  * <example name="po-tag-labs" title="PO Tag Labs">
2806
2871
  * <file name="sample-po-tag-labs/sample-po-tag-labs.component.html"> </file>
2807
2872
  * <file name="sample-po-tag-labs/sample-po-tag-labs.component.ts"> </file>
2873
+ * <file name="sample-po-tag-labs/sample-po-tag-labs.component.css"> </file>
2808
2874
  * </example>
2809
2875
  *
2810
2876
  * <example name="po-tag-bank-account" title="PO Tag - Bank Account">
2811
2877
  * <file name="sample-po-tag-bank-account/sample-po-tag-bank-account.component.html"> </file>
2812
2878
  * <file name="sample-po-tag-bank-account/sample-po-tag-bank-account.component.ts"> </file>
2813
2879
  * </example>
2880
+ *
2881
+ * <example name="po-tag-caption-tag-colors" title="PO Tag - Caption Tag Colors">
2882
+ * <file name="sample-po-tag-caption-tag-colors/sample-po-tag-caption-tag-colors.component.html"> </file>
2883
+ * <file name="sample-po-tag-caption-tag-colors/sample-po-tag-caption-tag-colors.component.ts"> </file>
2884
+ * </example>
2814
2885
  */
2815
2886
  class PoTagComponent extends PoTagBaseComponent {
2816
2887
  el = inject(ElementRef);
@@ -2837,6 +2908,9 @@ class PoTagComponent extends PoTagBaseComponent {
2837
2908
  return PoTagIcon.Warning;
2838
2909
  }
2839
2910
  }
2911
+ get isCaptionTag() {
2912
+ return this.tagColor?.startsWith('po-caption-tag-');
2913
+ }
2840
2914
  get tagColor() {
2841
2915
  if (this.type && !this.removable) {
2842
2916
  return `po-tag-${this.type}`;
@@ -2883,7 +2957,11 @@ class PoTagComponent extends PoTagBaseComponent {
2883
2957
  }
2884
2958
  applyTextColorByContrast = () => {
2885
2959
  const computedStyle = getComputedStyle(this.poTag.nativeElement);
2886
- if ((!this.tagColor || this.tagColor?.startsWith('po-color-')) &&
2960
+ if (this.tagColor?.startsWith('po-caption-tag-')) {
2961
+ const captionIndex = this.tagColor.replace('po-caption-tag-', '');
2962
+ this.poTag.nativeElement.style.color = `var(--color-caption-tag-text-${captionIndex})`;
2963
+ }
2964
+ else if ((!this.tagColor || this.tagColor?.startsWith('po-color-')) &&
2887
2965
  !this.removable &&
2888
2966
  !this.textColor &&
2889
2967
  computedStyle?.backgroundColor) {
@@ -2906,11 +2984,11 @@ class PoTagComponent extends PoTagBaseComponent {
2906
2984
  }
2907
2985
  }
2908
2986
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2909
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: PoTagComponent, isStandalone: false, selector: "po-tag", viewQueries: [{ propertyName: "tagContainer", first: true, predicate: ["tagContainer"], descendants: true, static: true }, { propertyName: "tagClose", first: true, predicate: ["tagClose"], descendants: true, static: true }, { propertyName: "poTag", first: true, predicate: ["poTag"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"po-tag-container\" [class.po-tag-container-horizontal]=\"tagOrientation\">\n @if (label) {\n <div class=\"po-tag-title po-text-nowrap\">\n <span class=\"po-tag-label\">{{ tagOrientation ? label + ':' : label }}</span>\n </div>\n }\n\n <div class=\"po-tag-sub-container\">\n <div\n #poTagWrapper\n class=\"po-tag-wrapper\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [attr.role]=\"isClickable && !disabled && !removable ? 'button' : ''\"\n (keydown.enter)=\"onKeyPressed($event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"onKeyPressed($event)\"\n (click)=\"onClick()\"\n [tabindex]=\"isClickable && !removable ? 0 : -1\"\n >\n <div\n #poTag\n class=\"po-tag\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [class.po-tag-removable]=\"removable\"\n [class.po-tag-disabled]=\"disabled && removable\"\n [ngClass]=\"tagColor\"\n [ngStyle]=\"styleTag()\"\n >\n @if (icon && !removable) {\n <po-icon\n class=\"po-tag-icon\"\n [p-icon]=\"!type || forceIcon ? icon : iconFromType\"\n [ngStyle]=\"!type && customTextColor ? { 'color': customTextColor } : ''\"\n >\n </po-icon>\n }\n\n <div\n #tagContainer\n class=\"po-tag-value\"\n [p-append-in-body]=\"appendInBody\"\n [p-tooltip]=\"getWidthTag() ? value : ''\"\n p-tooltip-position=\"top\"\n >\n <span [ngStyle]=\"!type && customTextColor && !removable ? { 'color': customTextColor } : ''\">{{\n value\n }}</span>\n </div>\n\n @if (removable) {\n <po-icon\n #tagClose\n p-icon=\"ICON_CLOSE\"\n p-tooltip-position=\"top\"\n [p-tooltip]=\"literals.remove\"\n [p-append-in-body]=\"appendInBody\"\n [attr.aria-label]=\"setAriaLabel()\"\n class=\"po-tag-remove\"\n [class.po-clickable]=\"!disabled\"\n [tabindex]=\"!disabled ? 0 : -1\"\n [attr.role]=\"!disabled ? 'button' : ''\"\n (click)=\"onClose()\"\n (keydown.enter)=\"onClose('enter')\"\n >\n </po-icon>\n }\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "directive", type: PoTooltipDirective, selector: "[p-tooltip]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2987
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: PoTagComponent, isStandalone: false, selector: "po-tag", viewQueries: [{ propertyName: "tagContainer", first: true, predicate: ["tagContainer"], descendants: true, static: true }, { propertyName: "tagClose", first: true, predicate: ["tagClose"], descendants: true, static: true }, { propertyName: "poTag", first: true, predicate: ["poTag"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"po-tag-container\" [class.po-tag-container-horizontal]=\"tagOrientation\">\n @if (label) {\n <div class=\"po-tag-title po-text-nowrap\">\n <span class=\"po-tag-label\">{{ tagOrientation ? label + ':' : label }}</span>\n </div>\n }\n\n <div class=\"po-tag-sub-container\">\n <div\n #poTagWrapper\n class=\"po-tag-wrapper\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [attr.role]=\"isClickable && !disabled && !removable ? 'button' : ''\"\n (keydown.enter)=\"onKeyPressed($event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"onKeyPressed($event)\"\n (click)=\"onClick()\"\n [tabindex]=\"isClickable && !removable ? 0 : -1\"\n >\n <div\n #poTag\n class=\"po-tag\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [class.po-tag-removable]=\"removable\"\n [class.po-tag-disabled]=\"disabled && removable\"\n [ngClass]=\"tagColor\"\n [ngStyle]=\"styleTag()\"\n >\n @if (icon && !removable) {\n <po-icon\n class=\"po-tag-icon\"\n [p-icon]=\"!type || forceIcon ? icon : iconFromType\"\n [ngStyle]=\"!type && customTextColor && !isCaptionTag ? { 'color': customTextColor } : ''\"\n >\n </po-icon>\n }\n\n <div\n #tagContainer\n class=\"po-tag-value\"\n [p-append-in-body]=\"appendInBody\"\n [p-tooltip]=\"getWidthTag() ? value : ''\"\n p-tooltip-position=\"top\"\n >\n <span\n [ngStyle]=\"!type && customTextColor && !removable && !isCaptionTag ? { 'color': customTextColor } : ''\"\n >{{ value }}</span\n >\n </div>\n\n @if (removable) {\n <po-icon\n #tagClose\n p-icon=\"ICON_CLOSE\"\n p-tooltip-position=\"top\"\n [p-tooltip]=\"literals.remove\"\n [p-append-in-body]=\"appendInBody\"\n [attr.aria-label]=\"setAriaLabel()\"\n class=\"po-tag-remove\"\n [class.po-clickable]=\"!disabled\"\n [tabindex]=\"!disabled ? 0 : -1\"\n [attr.role]=\"!disabled ? 'button' : ''\"\n (click)=\"onClose()\"\n (keydown.enter)=\"onClose('enter')\"\n >\n </po-icon>\n }\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "directive", type: PoTooltipDirective, selector: "[p-tooltip]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2910
2988
  }
2911
2989
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoTagComponent, decorators: [{
2912
2990
  type: Component,
2913
- args: [{ selector: 'po-tag', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"po-tag-container\" [class.po-tag-container-horizontal]=\"tagOrientation\">\n @if (label) {\n <div class=\"po-tag-title po-text-nowrap\">\n <span class=\"po-tag-label\">{{ tagOrientation ? label + ':' : label }}</span>\n </div>\n }\n\n <div class=\"po-tag-sub-container\">\n <div\n #poTagWrapper\n class=\"po-tag-wrapper\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [attr.role]=\"isClickable && !disabled && !removable ? 'button' : ''\"\n (keydown.enter)=\"onKeyPressed($event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"onKeyPressed($event)\"\n (click)=\"onClick()\"\n [tabindex]=\"isClickable && !removable ? 0 : -1\"\n >\n <div\n #poTag\n class=\"po-tag\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [class.po-tag-removable]=\"removable\"\n [class.po-tag-disabled]=\"disabled && removable\"\n [ngClass]=\"tagColor\"\n [ngStyle]=\"styleTag()\"\n >\n @if (icon && !removable) {\n <po-icon\n class=\"po-tag-icon\"\n [p-icon]=\"!type || forceIcon ? icon : iconFromType\"\n [ngStyle]=\"!type && customTextColor ? { 'color': customTextColor } : ''\"\n >\n </po-icon>\n }\n\n <div\n #tagContainer\n class=\"po-tag-value\"\n [p-append-in-body]=\"appendInBody\"\n [p-tooltip]=\"getWidthTag() ? value : ''\"\n p-tooltip-position=\"top\"\n >\n <span [ngStyle]=\"!type && customTextColor && !removable ? { 'color': customTextColor } : ''\">{{\n value\n }}</span>\n </div>\n\n @if (removable) {\n <po-icon\n #tagClose\n p-icon=\"ICON_CLOSE\"\n p-tooltip-position=\"top\"\n [p-tooltip]=\"literals.remove\"\n [p-append-in-body]=\"appendInBody\"\n [attr.aria-label]=\"setAriaLabel()\"\n class=\"po-tag-remove\"\n [class.po-clickable]=\"!disabled\"\n [tabindex]=\"!disabled ? 0 : -1\"\n [attr.role]=\"!disabled ? 'button' : ''\"\n (click)=\"onClose()\"\n (keydown.enter)=\"onClose('enter')\"\n >\n </po-icon>\n }\n </div>\n </div>\n </div>\n</div>\n" }]
2991
+ args: [{ selector: 'po-tag', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"po-tag-container\" [class.po-tag-container-horizontal]=\"tagOrientation\">\n @if (label) {\n <div class=\"po-tag-title po-text-nowrap\">\n <span class=\"po-tag-label\">{{ tagOrientation ? label + ':' : label }}</span>\n </div>\n }\n\n <div class=\"po-tag-sub-container\">\n <div\n #poTagWrapper\n class=\"po-tag-wrapper\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [attr.role]=\"isClickable && !disabled && !removable ? 'button' : ''\"\n (keydown.enter)=\"onKeyPressed($event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"onKeyPressed($event)\"\n (click)=\"onClick()\"\n [tabindex]=\"isClickable && !removable ? 0 : -1\"\n >\n <div\n #poTag\n class=\"po-tag\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [class.po-tag-removable]=\"removable\"\n [class.po-tag-disabled]=\"disabled && removable\"\n [ngClass]=\"tagColor\"\n [ngStyle]=\"styleTag()\"\n >\n @if (icon && !removable) {\n <po-icon\n class=\"po-tag-icon\"\n [p-icon]=\"!type || forceIcon ? icon : iconFromType\"\n [ngStyle]=\"!type && customTextColor && !isCaptionTag ? { 'color': customTextColor } : ''\"\n >\n </po-icon>\n }\n\n <div\n #tagContainer\n class=\"po-tag-value\"\n [p-append-in-body]=\"appendInBody\"\n [p-tooltip]=\"getWidthTag() ? value : ''\"\n p-tooltip-position=\"top\"\n >\n <span\n [ngStyle]=\"!type && customTextColor && !removable && !isCaptionTag ? { 'color': customTextColor } : ''\"\n >{{ value }}</span\n >\n </div>\n\n @if (removable) {\n <po-icon\n #tagClose\n p-icon=\"ICON_CLOSE\"\n p-tooltip-position=\"top\"\n [p-tooltip]=\"literals.remove\"\n [p-append-in-body]=\"appendInBody\"\n [attr.aria-label]=\"setAriaLabel()\"\n class=\"po-tag-remove\"\n [class.po-clickable]=\"!disabled\"\n [tabindex]=\"!disabled ? 0 : -1\"\n [attr.role]=\"!disabled ? 'button' : ''\"\n (click)=\"onClose()\"\n (keydown.enter)=\"onClose('enter')\"\n >\n </po-icon>\n }\n </div>\n </div>\n </div>\n</div>\n" }]
2914
2992
  }], ctorParameters: () => [], propDecorators: { tagContainer: [{
2915
2993
  type: ViewChild,
2916
2994
  args: ['tagContainer', { static: true }]
@@ -3813,6 +3891,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
3813
3891
  * <example name="po-avatar-business-card" title="PO Avatar - Business Card" >
3814
3892
  * <file name="sample-po-avatar-business-card/sample-po-avatar-business-card.component.html"> </file>
3815
3893
  * <file name="sample-po-avatar-business-card/sample-po-avatar-business-card.component.ts"> </file>
3894
+ * <file name="sample-po-avatar-business-card/sample-po-avatar-business-card.component.css"> </file>
3816
3895
  * </example>
3817
3896
  */
3818
3897
  class PoAvatarComponent extends PoAvatarBaseComponent {
@@ -3851,7 +3930,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
3851
3930
  }]
3852
3931
  }] });
3853
3932
 
3854
- const poBadgeColors = Object.values(PoColorPaletteEnum);
3933
+ const poBadgeColors = [...Object.values(PoColorPaletteEnum), ...Object.values(PoCaptionTagColorEnum)];
3855
3934
  const PO_BADGE_COLOR_DEFAULT = 'color-07';
3856
3935
  /**
3857
3936
  * @description
@@ -3903,10 +3982,25 @@ class PoBadgeBaseComponent {
3903
3982
  * - <span class="dot po-color-11"></span> `color-11`
3904
3983
  * - <span class="dot po-color-12"></span> `color-12`
3905
3984
  *
3985
+ * > Também é possível utilizar as 35 cores da paleta **Caption Tag Colors**:
3986
+ *
3987
+ * - <span class="dot po-caption-tag-01"></span> `caption-tag-01` <span class="dot po-caption-tag-02"></span> `caption-tag-02` <span class="dot po-caption-tag-03"></span> `caption-tag-03` <span class="dot po-caption-tag-04"></span> `caption-tag-04` <span class="dot po-caption-tag-05"></span> `caption-tag-05`
3988
+ * - <span class="dot po-caption-tag-06"></span> `caption-tag-06` <span class="dot po-caption-tag-07"></span> `caption-tag-07` <span class="dot po-caption-tag-08"></span> `caption-tag-08` <span class="dot po-caption-tag-09"></span> `caption-tag-09` <span class="dot po-caption-tag-10"></span> `caption-tag-10`
3989
+ * - <span class="dot po-caption-tag-11"></span> `caption-tag-11` <span class="dot po-caption-tag-12"></span> `caption-tag-12` <span class="dot po-caption-tag-13"></span> `caption-tag-13` <span class="dot po-caption-tag-14"></span> `caption-tag-14` <span class="dot po-caption-tag-15"></span> `caption-tag-15`
3990
+ * - <span class="dot po-caption-tag-16"></span> `caption-tag-16` <span class="dot po-caption-tag-17"></span> `caption-tag-17` <span class="dot po-caption-tag-18"></span> `caption-tag-18` <span class="dot po-caption-tag-19"></span> `caption-tag-19` <span class="dot po-caption-tag-20"></span> `caption-tag-20`
3991
+ * - <span class="dot po-caption-tag-21"></span> `caption-tag-21` <span class="dot po-caption-tag-22"></span> `caption-tag-22` <span class="dot po-caption-tag-23"></span> `caption-tag-23` <span class="dot po-caption-tag-24"></span> `caption-tag-24` <span class="dot po-caption-tag-25"></span> `caption-tag-25`
3992
+ * - <span class="dot po-caption-tag-26"></span> `caption-tag-26` <span class="dot po-caption-tag-27"></span> `caption-tag-27` <span class="dot po-caption-tag-28"></span> `caption-tag-28` <span class="dot po-caption-tag-29"></span> `caption-tag-29` <span class="dot po-caption-tag-30"></span> `caption-tag-30`
3993
+ * - <span class="dot po-caption-tag-31"></span> `caption-tag-31` <span class="dot po-caption-tag-32"></span> `caption-tag-32` <span class="dot po-caption-tag-33"></span> `caption-tag-33` <span class="dot po-caption-tag-34"></span> `caption-tag-34` <span class="dot po-caption-tag-35"></span> `caption-tag-35`
3994
+ *
3995
+ * Exemplo de uso:
3996
+ * ```
3997
+ * <po-badge p-color="caption-tag-13" p-value="5"></po-badge>
3998
+ * ```
3999
+ *
3906
4000
  * @default `color-07`
3907
4001
  */
3908
4002
  set color(value) {
3909
- if (value !== undefined && value.includes('color')) {
4003
+ if (value !== undefined && (value.includes('color') || value.startsWith('caption-tag-'))) {
3910
4004
  this._color = poBadgeColors.includes(value) ? value : PO_BADGE_COLOR_DEFAULT;
3911
4005
  }
3912
4006
  else {
@@ -4162,11 +4256,11 @@ class PoBadgeComponent extends PoBadgeBaseComponent {
4162
4256
  return value > PO_BADGE_MAX_NOTIFICATIONS ? '9+' : value.toString();
4163
4257
  }
4164
4258
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoBadgeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
4165
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: PoBadgeComponent, isStandalone: false, selector: "po-badge", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"{{ getChangeStyle() }} po-badge po-badge-{{ size ? size : 'medium' }}\"\n [class.po-badge-notification]=\"isNotification && !status\"\n [class.po-badge-border]=\"showBorder\"\n [attr.data-status]=\"status\"\n [ariaLabel]=\"notificationLabel\"\n [ngStyle]=\"customColor && !status ? { 'background-color': customColor } : {}\"\n>\n @if (!isNotification && size !== 'small' && badgeIcon && status !== 'disabled') {\n <po-icon [p-icon]=\"badgeIcon\"></po-icon>\n }\n @if (value > 1) {\n <span class=\"po-badge-value\" aria-hidden=\"true\">{{ badgeValue }}</span>\n }\n</div>\n", styles: [":host{display:inline-block;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }] });
4259
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: PoBadgeComponent, isStandalone: false, selector: "po-badge", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"{{ getChangeStyle() }} po-badge po-badge-{{ size ? size : 'medium' }}\"\n [class.po-badge-notification]=\"isNotification && !status\"\n [class.po-badge-border]=\"showBorder\"\n [attr.data-status]=\"status\"\n [ariaLabel]=\"notificationLabel\"\n [ngStyle]=\"customColor && !status ? { 'background-color': customColor } : {}\"\n>\n @if (!isNotification && size !== 'small' && badgeIcon && status !== 'disabled') {\n <po-icon [p-icon]=\"badgeIcon\"></po-icon>\n }\n @if (value > 1) {\n <span class=\"po-badge-value\" aria-hidden=\"true\">{{ badgeValue }}</span>\n }\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }] });
4166
4260
  }
4167
4261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoBadgeComponent, decorators: [{
4168
4262
  type: Component,
4169
- args: [{ selector: 'po-badge', standalone: false, template: "<div\n class=\"{{ getChangeStyle() }} po-badge po-badge-{{ size ? size : 'medium' }}\"\n [class.po-badge-notification]=\"isNotification && !status\"\n [class.po-badge-border]=\"showBorder\"\n [attr.data-status]=\"status\"\n [ariaLabel]=\"notificationLabel\"\n [ngStyle]=\"customColor && !status ? { 'background-color': customColor } : {}\"\n>\n @if (!isNotification && size !== 'small' && badgeIcon && status !== 'disabled') {\n <po-icon [p-icon]=\"badgeIcon\"></po-icon>\n }\n @if (value > 1) {\n <span class=\"po-badge-value\" aria-hidden=\"true\">{{ badgeValue }}</span>\n }\n</div>\n", styles: [":host{display:inline-block;vertical-align:middle}\n"] }]
4263
+ args: [{ selector: 'po-badge', standalone: false, template: "<div\n class=\"{{ getChangeStyle() }} po-badge po-badge-{{ size ? size : 'medium' }}\"\n [class.po-badge-notification]=\"isNotification && !status\"\n [class.po-badge-border]=\"showBorder\"\n [attr.data-status]=\"status\"\n [ariaLabel]=\"notificationLabel\"\n [ngStyle]=\"customColor && !status ? { 'background-color': customColor } : {}\"\n>\n @if (!isNotification && size !== 'small' && badgeIcon && status !== 'disabled') {\n <po-icon [p-icon]=\"badgeIcon\"></po-icon>\n }\n @if (value > 1) {\n <span class=\"po-badge-value\" aria-hidden=\"true\">{{ badgeValue }}</span>\n }\n</div>\n" }]
4170
4264
  }] });
4171
4265
 
4172
4266
  /**
@@ -5495,11 +5589,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
5495
5589
  * <example name="po-loading-overlay-basic" title="PO Loading Overlay Basic">
5496
5590
  * <file name="sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.html"> </file>
5497
5591
  * <file name="sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.ts"> </file>
5592
+ * <file name="sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.css"> </file>
5498
5593
  * </example>
5499
5594
  *
5500
5595
  * <example name="po-loading-overlay-labs" title="PO Loading Overlay Labs">
5501
5596
  * <file name="sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html"> </file>
5502
5597
  * <file name="sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.ts"> </file>
5598
+ * <file name="sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.css"> </file>
5503
5599
  * </example>
5504
5600
  *
5505
5601
  * <example name="po-loading-overlay-connection-test" title="PO Loading Overlay - Connection Test">
@@ -8743,11 +8839,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
8743
8839
  * <example name="po-popup-labs" title="PO Popup - Labs">
8744
8840
  * <file name="sample-po-popup-labs/sample-po-popup-labs.component.html"> </file>
8745
8841
  * <file name="sample-po-popup-labs/sample-po-popup-labs.component.ts"> </file>
8842
+ * <file name="sample-po-popup-labs/sample-po-popup-labs.component.css"> </file>
8746
8843
  * </example>
8747
8844
  *
8748
8845
  * <example name="po-popup-email" title="PO Popup Email">
8749
8846
  * <file name="sample-po-popup-email/sample-po-popup-email.component.html"> </file>
8750
8847
  * <file name="sample-po-popup-email/sample-po-popup-email.component.ts"> </file>
8848
+ * <file name="sample-po-popup-email/sample-po-popup-email.component.css"> </file>
8751
8849
  * </example>
8752
8850
  *
8753
8851
  */
@@ -11334,6 +11432,7 @@ const poComboContainerOffset = 8;
11334
11432
  * <example name="po-combo-scheduling" title="PO Combo - Scheduling">
11335
11433
  * <file name="sample-po-combo-scheduling/sample-po-combo-scheduling.component.html"> </file>
11336
11434
  * <file name="sample-po-combo-scheduling/sample-po-combo-scheduling.component.ts"> </file>
11435
+ * <file name="sample-po-combo-scheduling/sample-po-combo-scheduling.component.css"> </file>
11337
11436
  * <file name="sample-po-combo-scheduling/sample-po-combo-scheduling.service.ts"> </file>
11338
11437
  * </example>
11339
11438
  *
@@ -16417,8 +16516,8 @@ class PoChartComponent extends PoChartBaseComponent {
16417
16516
  .getPropertyValue(serie.color.replace(/^var\((--[^)]+)\)$/, '$1'))
16418
16517
  .trim();
16419
16518
  }
16420
- else if (serie.color?.includes('color')) {
16421
- colorVariable = this.getCSSVariable(`--${serie.color.replace('po-', '')}`);
16519
+ else if (serie.color?.includes('color') || serie.color?.startsWith('caption-tag-')) {
16520
+ colorVariable = this.getCSSVariable(`--color-${serie.color.replace('po-', '').replace('color-', '')}`);
16422
16521
  }
16423
16522
  else {
16424
16523
  colorVariable = serie.color;
@@ -16852,6 +16951,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
16852
16951
  * <example name="po-container-dashboard" title="PO Container - Dashboard">
16853
16952
  * <file name="sample-po-container-dashboard/sample-po-container-dashboard.component.html"> </file>
16854
16953
  * <file name="sample-po-container-dashboard/sample-po-container-dashboard.component.ts"> </file>
16954
+ * <file name="sample-po-container-dashboard/sample-po-container-dashboard.component.css"> </file>
16855
16955
  * <file name="sample-po-container-dashboard/sample-po-container-dashboard.service.ts"> </file>
16856
16956
  * </example>
16857
16957
  */
@@ -26277,6 +26377,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
26277
26377
  * <example name="po-progress-labs" title="PO Progress Labs">
26278
26378
  * <file name="sample-po-progress-labs/sample-po-progress-labs.component.html"> </file>
26279
26379
  * <file name="sample-po-progress-labs/sample-po-progress-labs.component.ts"> </file>
26380
+ * <file name="sample-po-progress-labs/sample-po-progress-labs.component.css"> </file>
26280
26381
  * </example>
26281
26382
  *
26282
26383
  * <example name="po-progress-publication" title="PO Progress - Publication">
@@ -26363,9 +26464,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
26363
26464
 
26364
26465
  class PoColorPaletteService {
26365
26466
  getColor(value) {
26366
- return Object.values(PoColorPaletteEnum).includes(value.color)
26367
- ? value.color
26368
- : this.getColorFromType(value.type || value.color);
26467
+ if (Object.values(PoColorPaletteEnum).includes(value.color) ||
26468
+ Object.values(PoCaptionTagColorEnum).includes(value.color)) {
26469
+ return value.color;
26470
+ }
26471
+ return this.getColorFromType(value.type || value.color);
26369
26472
  }
26370
26473
  getColorFromType(type) {
26371
26474
  switch (type) {
@@ -30327,6 +30430,9 @@ class PoTableColumnManagerComponent {
30327
30430
  // Evento disparado ao fechar o popover do gerenciador de colunas após alterar as colunas visíveis.
30328
30431
  // O po-table envia como parâmetro um array de string com as colunas visíveis atualizadas. Por exemplo: ["idCard", "name", "hireStatus", "age"].
30329
30432
  changeVisibleColumns = new EventEmitter();
30433
+ // Evento disparado ao alterar o estado de fixação de uma coluna no gerenciador de colunas.
30434
+ // O po-table envia como parâmetro um array de string com as propriedades das colunas fixas. Por exemplo: ["name", "age"].
30435
+ changeFixedColumns = output({ alias: 'p-change-fixed-columns' });
30330
30436
  initialColumns = new EventEmitter();
30331
30437
  hideActionFixedColumns = false;
30332
30438
  literals;
@@ -30406,6 +30512,9 @@ class PoTableColumnManagerComponent {
30406
30512
  const defaultColumns = this.getVisibleColumns(this.defaultColumns);
30407
30513
  this.initialColumns.emit(this.getVisibleColumns(this.colunsDefault));
30408
30514
  this.checkChanges(defaultColumns, this.restoreDefaultEvent);
30515
+ if (!this.hideActionFixedColumns) {
30516
+ this.changeFixedColumns.emit([]);
30517
+ }
30409
30518
  }
30410
30519
  changePosition({ option, direction }) {
30411
30520
  const indexColumn = this.columns.findIndex(el => el.property === option.value);
@@ -30434,6 +30543,10 @@ class PoTableColumnManagerComponent {
30434
30543
  this.columns = [...newColumn];
30435
30544
  }
30436
30545
  this.visibleColumnsChange.emit(newColumn);
30546
+ if (!this.hideActionFixedColumns) {
30547
+ const fixedColumns = newColumn.filter(col => col.fixed === true).map(col => col.property);
30548
+ this.changeFixedColumns.emit(fixedColumns);
30549
+ }
30437
30550
  }
30438
30551
  changePositionColumn(array, index, direction) {
30439
30552
  if (direction === 'up') {
@@ -30621,7 +30734,7 @@ class PoTableColumnManagerComponent {
30621
30734
  });
30622
30735
  }
30623
30736
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoTableColumnManagerComponent, deps: [{ token: i0.Renderer2 }, { token: PoLanguageService }], target: i0.ɵɵFactoryTarget.Component });
30624
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.0.9", type: PoTableColumnManagerComponent, isStandalone: false, selector: "po-table-column-manager", inputs: { columns: ["p-columns", "columns"], target: ["p-target", "target"], colunsDefault: ["p-columns-default", "colunsDefault"], lastVisibleColumnsSelected: ["p-last-visible-columns-selected", "lastVisibleColumnsSelected"], hideActionFixedColumns: ["p-hide-action-fixed-columns", "hideActionFixedColumns", convertToBoolean], componentsSize: ["p-components-size", "componentsSize"], maxColumns: ["p-max-columns", "maxColumns"] }, outputs: { visibleColumnsChange: "p-visible-columns-change", changeVisibleColumns: "p-change-visible-columns", initialColumns: "p-initial-columns" }, viewQueries: [{ propertyName: "popover", first: true, predicate: PoPopoverComponent, descendants: true }, { propertyName: "pageSlideColumnsManager", first: true, predicate: ["pageSlideColumnsManager"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<po-page-slide\n #pageSlideColumnsManager\n p-size=\"auto\"\n [p-title]=\"literals.columnsManager\"\n [p-click-out]=\"true\"\n [p-components-size]=\"componentsSize\"\n (p-close)=\"checkChanges([], true)\"\n>\n <div>\n <div class=\"po-table-column-manager-body\">\n <po-table-list-manager\n name=\"visibleColumns\"\n [(ngModel)]=\"visibleColumns\"\n p-columns=\"1\"\n [p-columns-manager]=\"columns\"\n [p-components-size]=\"componentsSize\"\n [p-options]=\"columnsOptions\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n (p-change)=\"checkChanges($event, false)\"\n (p-change-position)=\"changePosition($event)\"\n (p-change-fixed)=\"emitColumnFixed($event)\"\n >\n </po-table-list-manager>\n </div>\n\n <div class=\"po-table-column-manager-footer\">\n <po-button\n class=\"po-table-column-manager-footer-restore\"\n p-kind=\"tertiary\"\n [p-label]=\"literals.restoreDefault\"\n [p-size]=\"componentsSize\"\n (p-click)=\"restore()\"\n >\n </po-button>\n </div>\n </div>\n</po-page-slide>\n", dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoPageSlideComponent, selector: "po-page-slide" }, { kind: "component", type: PoTableListManagerComponent, selector: "po-table-list-manager", inputs: ["p-columns-manager", "p-components-size", "p-hide-action-fixed-columns"], outputs: ["p-change-position", "p-change-fixed"] }] });
30737
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.0.9", type: PoTableColumnManagerComponent, isStandalone: false, selector: "po-table-column-manager", inputs: { columns: ["p-columns", "columns"], target: ["p-target", "target"], colunsDefault: ["p-columns-default", "colunsDefault"], lastVisibleColumnsSelected: ["p-last-visible-columns-selected", "lastVisibleColumnsSelected"], hideActionFixedColumns: ["p-hide-action-fixed-columns", "hideActionFixedColumns", convertToBoolean], componentsSize: ["p-components-size", "componentsSize"], maxColumns: ["p-max-columns", "maxColumns"] }, outputs: { visibleColumnsChange: "p-visible-columns-change", changeVisibleColumns: "p-change-visible-columns", changeFixedColumns: "p-change-fixed-columns", initialColumns: "p-initial-columns" }, viewQueries: [{ propertyName: "popover", first: true, predicate: PoPopoverComponent, descendants: true }, { propertyName: "pageSlideColumnsManager", first: true, predicate: ["pageSlideColumnsManager"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<po-page-slide\n #pageSlideColumnsManager\n p-size=\"auto\"\n [p-title]=\"literals.columnsManager\"\n [p-click-out]=\"true\"\n [p-components-size]=\"componentsSize\"\n (p-close)=\"checkChanges([], true)\"\n>\n <div>\n <div class=\"po-table-column-manager-body\">\n <po-table-list-manager\n name=\"visibleColumns\"\n [(ngModel)]=\"visibleColumns\"\n p-columns=\"1\"\n [p-columns-manager]=\"columns\"\n [p-components-size]=\"componentsSize\"\n [p-options]=\"columnsOptions\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n (p-change)=\"checkChanges($event, false)\"\n (p-change-position)=\"changePosition($event)\"\n (p-change-fixed)=\"emitColumnFixed($event)\"\n >\n </po-table-list-manager>\n </div>\n\n <div class=\"po-table-column-manager-footer\">\n <po-button\n class=\"po-table-column-manager-footer-restore\"\n p-kind=\"tertiary\"\n [p-label]=\"literals.restoreDefault\"\n [p-size]=\"componentsSize\"\n (p-click)=\"restore()\"\n >\n </po-button>\n </div>\n </div>\n</po-page-slide>\n", dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoPageSlideComponent, selector: "po-page-slide" }, { kind: "component", type: PoTableListManagerComponent, selector: "po-table-list-manager", inputs: ["p-columns-manager", "p-components-size", "p-hide-action-fixed-columns"], outputs: ["p-change-position", "p-change-fixed"] }] });
30625
30738
  }
30626
30739
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoTableColumnManagerComponent, decorators: [{
30627
30740
  type: Component,
@@ -30650,7 +30763,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
30650
30763
  }], changeVisibleColumns: [{
30651
30764
  type: Output,
30652
30765
  args: ['p-change-visible-columns']
30653
- }], initialColumns: [{
30766
+ }], changeFixedColumns: [{ type: i0.Output, args: ["p-change-fixed-columns"] }], initialColumns: [{
30654
30767
  type: Output,
30655
30768
  args: ['p-initial-columns']
30656
30769
  }], hideActionFixedColumns: [{
@@ -31355,6 +31468,28 @@ class PoTableBaseComponent {
31355
31468
  * Por exemplo: ["idCard", "name", "hireStatus", "age"].
31356
31469
  */
31357
31470
  changeVisibleColumns = new EventEmitter();
31471
+ /**
31472
+ * @optional
31473
+ *
31474
+ * @description
31475
+ * Evento disparado ao alterar o estado de fixação de uma coluna no gerenciador de colunas.
31476
+ *
31477
+ * O componente envia como parâmetro um array de string com as propriedades das colunas fixas.
31478
+ * Por exemplo: ["name", "age"].
31479
+ *
31480
+ * > Incompatível com `p-hide-action-fixed-columns`. Quando esta propriedade estiver ativa, o evento não será disparado.
31481
+ *
31482
+ * @example
31483
+ *
31484
+ * ```html
31485
+ * <po-table
31486
+ * [p-columns]="columns"
31487
+ * [p-items]="items"
31488
+ * (p-change-fixed-columns)="onFixedColumnsChange($event)">
31489
+ * </po-table>
31490
+ * ```
31491
+ */
31492
+ changeFixedColumns = output({ alias: 'p-change-fixed-columns' });
31358
31493
  /**
31359
31494
  * @optional
31360
31495
  *
@@ -32177,7 +32312,7 @@ class PoTableBaseComponent {
32177
32312
  }
32178
32313
  }
32179
32314
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoTableBaseComponent, deps: [{ token: PoDateService }, { token: PoLanguageService }, { token: PoTableService }], target: i0.ɵɵFactoryTarget.Directive });
32180
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.0.9", type: PoTableBaseComponent, isStandalone: true, inputs: { hideColumnsManager: ["p-hide-columns-manager", "hideColumnsManager", convertToBoolean], hideBatchActions: ["p-hide-batch-actions", "hideBatchActions", convertToBoolean], textWrap: ["p-text-wrap", "textWrap", convertToBoolean], hideActionFixedColumns: ["p-hide-action-fixed-columns", "hideActionFixedColumns"], hideTableSearch: ["p-hide-table-search", "hideTableSearch", convertToBoolean], autoCollapse: ["p-auto-collapse", "autoCollapse", convertToBoolean], loadingShowMore: ["p-loading-show-more", "loadingShowMore", convertToBoolean], sort: ["p-sort", "sort", convertToBoolean], showMoreDisabled: ["p-show-more-disabled", "showMoreDisabled", convertToBoolean], striped: ["p-striped", "striped", convertToBoolean], hideSelectAll: ["p-hide-select-all", "hideSelectAll", convertToBoolean], singleSelect: ["p-single-select", "singleSelect", convertToBoolean], selectableEntireLine: ["p-selectable-entire-line", "selectableEntireLine", convertToBoolean], actionRight: ["p-actions-right", "actionRight", convertToBoolean], maxColumns: ["p-max-columns", "maxColumns"], filterType: ["p-filter-type", "filterType"], componentsSize: ["p-components-size", "componentsSize"], items: ["p-items", "items"], columns: ["p-columns", "columns"], container: ["p-container", "container"], paramDeleteApi: ["p-param-delete-api", "paramDeleteApi"], height: ["p-height", "height"], hideDetail: ["p-hide-detail", "hideDetail"], literals: ["p-literals", "literals"], loading: ["p-loading", "loading"], actions: ["p-actions", "actions"], selectable: ["p-selectable", "selectable"], infiniteScroll: ["p-infinite-scroll", "infiniteScroll"], infiniteScrollDistance: ["p-infinite-scroll-distance", "infiniteScrollDistance"], serviceApi: ["p-service-api", "serviceApi"], serviceDeleteApi: ["p-service-delete", "serviceDeleteApi"], spacing: ["p-spacing", "spacing"], filteredColumns: ["p-filtered-columns", "filteredColumns"], draggable: ["p-draggable", "draggable"], virtualScroll: ["p-virtual-scroll", "virtualScroll"] }, outputs: { allSelected: "p-all-selected", allUnselected: "p-all-unselected", collapsed: "p-collapsed", expanded: "p-expanded", eventDelete: "p-delete-items", selected: "p-selected", showMore: "p-show-more", sortBy: "p-sort-by", unselected: "p-unselected", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, host: { listeners: { "window:PoUiThemeChange": "onThemeChange()" }, properties: { "attr.p-components-size": "this.componentsSize", "attr.p-spacing": "this.spacing" } }, usesOnChanges: true, ngImport: i0 });
32315
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.0.9", type: PoTableBaseComponent, isStandalone: true, inputs: { hideColumnsManager: ["p-hide-columns-manager", "hideColumnsManager", convertToBoolean], hideBatchActions: ["p-hide-batch-actions", "hideBatchActions", convertToBoolean], textWrap: ["p-text-wrap", "textWrap", convertToBoolean], hideActionFixedColumns: ["p-hide-action-fixed-columns", "hideActionFixedColumns"], hideTableSearch: ["p-hide-table-search", "hideTableSearch", convertToBoolean], autoCollapse: ["p-auto-collapse", "autoCollapse", convertToBoolean], loadingShowMore: ["p-loading-show-more", "loadingShowMore", convertToBoolean], sort: ["p-sort", "sort", convertToBoolean], showMoreDisabled: ["p-show-more-disabled", "showMoreDisabled", convertToBoolean], striped: ["p-striped", "striped", convertToBoolean], hideSelectAll: ["p-hide-select-all", "hideSelectAll", convertToBoolean], singleSelect: ["p-single-select", "singleSelect", convertToBoolean], selectableEntireLine: ["p-selectable-entire-line", "selectableEntireLine", convertToBoolean], actionRight: ["p-actions-right", "actionRight", convertToBoolean], maxColumns: ["p-max-columns", "maxColumns"], filterType: ["p-filter-type", "filterType"], componentsSize: ["p-components-size", "componentsSize"], items: ["p-items", "items"], columns: ["p-columns", "columns"], container: ["p-container", "container"], paramDeleteApi: ["p-param-delete-api", "paramDeleteApi"], height: ["p-height", "height"], hideDetail: ["p-hide-detail", "hideDetail"], literals: ["p-literals", "literals"], loading: ["p-loading", "loading"], actions: ["p-actions", "actions"], selectable: ["p-selectable", "selectable"], infiniteScroll: ["p-infinite-scroll", "infiniteScroll"], infiniteScrollDistance: ["p-infinite-scroll-distance", "infiniteScrollDistance"], serviceApi: ["p-service-api", "serviceApi"], serviceDeleteApi: ["p-service-delete", "serviceDeleteApi"], spacing: ["p-spacing", "spacing"], filteredColumns: ["p-filtered-columns", "filteredColumns"], draggable: ["p-draggable", "draggable"], virtualScroll: ["p-virtual-scroll", "virtualScroll"] }, outputs: { allSelected: "p-all-selected", allUnselected: "p-all-unselected", collapsed: "p-collapsed", expanded: "p-expanded", eventDelete: "p-delete-items", selected: "p-selected", showMore: "p-show-more", sortBy: "p-sort-by", unselected: "p-unselected", changeVisibleColumns: "p-change-visible-columns", changeFixedColumns: "p-change-fixed-columns", columnRestoreManager: "p-restore-column-manager" }, host: { listeners: { "window:PoUiThemeChange": "onThemeChange()" }, properties: { "attr.p-components-size": "this.componentsSize", "attr.p-spacing": "this.spacing" } }, usesOnChanges: true, ngImport: i0 });
32181
32316
  }
32182
32317
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoTableBaseComponent, decorators: [{
32183
32318
  type: Directive
@@ -32259,7 +32394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
32259
32394
  }], changeVisibleColumns: [{
32260
32395
  type: Output,
32261
32396
  args: ['p-change-visible-columns']
32262
- }], columnRestoreManager: [{
32397
+ }], changeFixedColumns: [{ type: i0.Output, args: ["p-change-fixed-columns"] }], columnRestoreManager: [{
32263
32398
  type: Output,
32264
32399
  args: ['p-restore-column-manager']
32265
32400
  }], componentsSize: [{
@@ -33335,11 +33470,13 @@ const ID_SEARCH_BUTTON_CLEAN = 'search-button-clean';
33335
33470
  * <example name="po-search-labs" title="PO Search Labs">
33336
33471
  * <file name="sample-po-search-labs/sample-po-search-labs.component.html"> </file>
33337
33472
  * <file name="sample-po-search-labs/sample-po-search-labs.component.ts"> </file>
33473
+ * <file name="sample-po-search-labs/sample-po-search-labs.component.css"> </file>
33338
33474
  * </example>
33339
33475
  *
33340
33476
  * <example name="po-search-find-people" title="PO Search Find People">
33341
33477
  * <file name="sample-po-search-find-people/sample-po-search-find-people.component.html"> </file>
33342
33478
  * <file name="sample-po-search-find-people/sample-po-search-find-people.component.ts"> </file>
33479
+ * <file name="sample-po-search-find-people/sample-po-search-find-people.component.css"> </file>
33343
33480
  * <file name="sample-po-search-find-people/sample-po-search-find-people.service.ts"> </file>
33344
33481
  * </example>
33345
33482
  *
@@ -33357,6 +33494,7 @@ const ID_SEARCH_BUTTON_CLEAN = 'search-button-clean';
33357
33494
  * <example name="po-search-execute" title="PO Search Form Fields with Execute">
33358
33495
  * <file name="sample-po-search-execute/sample-po-search-execute.component.html"> </file>
33359
33496
  * <file name="sample-po-search-execute/sample-po-search-execute.component.ts"> </file>
33497
+ * <file name="sample-po-search-execute/sample-po-search-execute.component.css"> </file>
33360
33498
  * </example>
33361
33499
  *
33362
33500
  * <example name="po-search-fields-locate" title="PO Search Form Fields with Locate">
@@ -34709,6 +34847,11 @@ class PoTableComponent extends PoTableBaseComponent {
34709
34847
  onChangeVisibleColumns(columns) {
34710
34848
  this.changeVisibleColumns.emit(columns);
34711
34849
  }
34850
+ onChangeFixedColumns(columns) {
34851
+ if (!this.hideActionFixedColumns) {
34852
+ this.changeFixedColumns.emit(columns);
34853
+ }
34854
+ }
34712
34855
  onColumnRestoreManager(value) {
34713
34856
  this.columnRestoreManager.emit(value);
34714
34857
  }
@@ -35048,11 +35191,11 @@ class PoTableComponent extends PoTableBaseComponent {
35048
35191
  }
35049
35192
  }
35050
35193
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoTableComponent, deps: [{ token: PoDateService }, { token: i0.IterableDiffers }, { token: i0.Renderer2 }, { token: PoLanguageService }, { token: i0.ChangeDetectorRef }, { token: i1.DecimalPipe }, { token: PoTableService }], target: i0.ɵɵFactoryTarget.Component });
35051
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: PoTableComponent, isStandalone: false, selector: "po-table", providers: [PoDateService, PoTableService], queries: [{ propertyName: "tableRowTemplate", first: true, predicate: PoTableRowTemplateDirective, descendants: true, static: true }, { propertyName: "tableCellTemplate", first: true, predicate: PoTableCellTemplateDirective, descendants: true }, { propertyName: "tableColumnTemplates", predicate: PoTableColumnTemplateDirective }], viewQueries: [{ propertyName: "noColumnsHeader", first: true, predicate: ["noColumnsHeader"], descendants: true, read: ElementRef }, { propertyName: "poPopupComponent", first: true, predicate: ["popup"], descendants: true }, { propertyName: "modalDelete", first: true, predicate: PoModalComponent, descendants: true, static: true }, { propertyName: "tableFooterElement", first: true, predicate: ["tableFooter"], descendants: true, read: ElementRef }, { propertyName: "tableWrapperElement", first: true, predicate: ["tableWrapper"], descendants: true, read: ElementRef }, { propertyName: "tableTemplate", first: true, predicate: ["tableTemplate"], descendants: true, read: ElementRef }, { propertyName: "tableVirtualScroll", first: true, predicate: ["tableVirtualScroll"], descendants: true, read: ElementRef }, { propertyName: "tableScrollable", first: true, predicate: ["tableScrollable"], descendants: true, read: ElementRef }, { propertyName: "columnManager", first: true, predicate: ["columnManager"], descendants: true, read: ElementRef }, { propertyName: "columnBatchActions", first: true, predicate: ["columnBatchActions"], descendants: true, read: ElementRef }, { propertyName: "columnActionLeft", first: true, predicate: ["columnActionLeft"], descendants: true, read: ElementRef }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "poSearchInput", first: true, predicate: ["poSearchInput"], descendants: true, read: ElementRef, static: true }, { propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "columnManagerTarget", first: true, predicate: ["columnManagerTarget"], descendants: true }, { propertyName: "columnManagerTargetFixed", first: true, predicate: ["columnManagerTargetFixed"], descendants: true }, { propertyName: "actionsIconElement", predicate: ["actionsIconElement"], descendants: true, read: ElementRef }, { propertyName: "actionsElement", predicate: ["actionsElement"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"po-table-actions\">\n @if (hasValidColumns && itemsSelected.length > 0 && !hideBatchActions) {\n <div #columnBatchActions class=\"po-table-actions-batch-actions\">\n <div [ngPlural]=\"itemsSelected.length\" class=\"po-table-actions-batch-actions__label\">\n <strong>\n <ng-template ngPluralCase=\"=0\">{{ literals.noItem }}</ng-template>\n <ng-template ngPluralCase=\"=1\">{{ literals.oneItem }}</ng-template>\n <ng-template ngPluralCase=\"other\">{{ itemsSelected.length }} {{ literals.multipleItems }}</ng-template>\n </strong>\n </div>\n <div class=\"po-table-actions-batch-actions__buttons\">\n <po-button\n p-icon=\"ICON_DELETE\"\n [p-danger]=\"true\"\n [p-disabled]=\"itemsSelected.length > 1 && serviceDeleteApi !== undefined\"\n [p-label]=\"literals.delete\"\n [p-size]=\"componentsSize\"\n (p-click)=\"modalDelete.open()\"\n ></po-button>\n </div>\n </div>\n }\n\n @if (hasValidColumns && !hideColumnsManager) {\n <div #columnManager class=\"po-table-actions-column-manager\">\n <po-button\n #columnManagerTarget\n p-icon=\"ICON_SETTINGS\"\n p-kind=\"tertiary\"\n p-tooltip-position=\"left\"\n [p-aria-label]=\"literals.columnsManager\"\n [p-tooltip]=\"literals.columnsManager\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onOpenColumnManager()\"\n ></po-button>\n </div>\n }\n\n @if (!hideTableSearch && hasValidColumns) {\n <div class=\"po-table-search\">\n <po-search\n [p-items]=\"items\"\n [p-filter-keys]=\"filteredColumns\"\n [p-filter-type]=\"filterType\"\n [p-size]=\"componentsSize\"\n (p-filtered-items-change)=\"onFilteredItemsChange($event)\"\n >\n </po-search>\n </div>\n }\n</div>\n@if (container) {\n <po-container p-no-padding>\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n </po-container>\n} @else {\n <div [class.po-table-container-sticky]=\"loading\">\n @if (loading) {\n <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n }\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n @if (height) {\n <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n @if (virtualScroll) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n }\n @if (!virtualScroll) {\n <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n }\n @if (!height) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n @if (hasFooter) {\n <div class=\"po-table-footer\">\n @for (column of subtitleColumns; track trackBy($index)) {\n <po-table-subtitle-footer\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-subtitles]=\"column.subtitles\"\n >\n </po-table-subtitle-footer>\n }\n </div>\n }\n}\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-sticky]=\"loading\">\n @if (loading) {\n <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n }\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n @if (height) {\n <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n @if (virtualScroll) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n }\n @if (!virtualScroll) {\n <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n }\n\n @if (!height) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n\n @if (hasFooter) {\n <div class=\"po-table-footer\">\n @for (column of subtitleColumns; track trackBy($index)) {\n <po-table-subtitle-footer\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-subtitles]=\"column.subtitles\"\n >\n </po-table-subtitle-footer>\n }\n </div>\n }\n</ng-template>\n\n<!-- Show More Button -->\n@if (!infiniteScroll) {\n <div\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n >\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n </div>\n}\n\n<!-- Table default-->\n<ng-template #tableTemplate>\n <table\n #tableScrollable\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead\n [class.po-table-header-sticky]=\"height > 0 && !virtualScroll\"\n [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n >\n <tr\n [ngClass]=\"!height ? { 'no-hover': hideSelectAll, 'po-table-column-drag': this.isDraggable } : ''\"\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (hasSelectableColumn) {\n <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n @if (!hideSelectAll) {\n <po-checkbox\n name=\"selectAll\"\n [p-size]=\"componentsSize\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n }\n </div>\n </th>\n }\n\n @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n <th\n #columnActionLeft\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n }\n\n @if (!hasMainColumns) {\n <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n @if (height) {\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n } @else {\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n }\n </th>\n }\n\n @if (this.isDraggable || hasSomeFixed()) {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n @if (this.isDraggable && !column.fixed) {\n <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n }\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n }\n } @else {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n }\n }\n\n @if (hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager) && hasMainColumns) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n @if (\n hasVisibleActions &&\n actionRight &&\n hasItems &&\n hasMainColumns &&\n (visibleActions.length > 1 || isSingleAction)\n ) {\n <th\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n }\n </tr>\n </thead>\n\n @if (!hasItems || !hasMainColumns) {\n <tbody class=\"po-table-group-row\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n }\n\n @if (hasMainColumns) {\n @for (row of filteredItems; track trackBy(rowIndex); let rowIndex = $index) {\n <tbody class=\"po-table-group-row\">\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n @if (selectable) {\n <td class=\"po-table-column-selectable\">\n <ng-container\n *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n >\n </ng-container>\n </td>\n }\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table ou pela diretiva -->\n @if (\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n ) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n <td\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n @switch (column.type) {\n @case ('columnTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n }\n @case ('cellTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n }\n @case ('boolean') {\n <span>\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n }\n @case ('currency') {\n <span>\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n }\n @case ('date') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n }\n @case ('time') {\n <span>\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n }\n @case ('dateTime') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n }\n @case ('link') {\n <po-table-column-link\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n }\n @case ('icon') {\n <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n </po-table-column-icon>\n }\n @case ('subtitle') {\n <span>\n <po-table-subtitle-circle\n [p-subtitle]=\"getSubtitleColumn(row, column)\"\n ></po-table-subtitle-circle>\n </span>\n }\n @case ('label') {\n <span>\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n }\n @default {\n <span>{{ getCellData(row, column) }}</span>\n }\n }\n </div>\n </td>\n }\n @if (hasRowTemplateWithArrowDirectionRight) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna de a\u00E7oes na direita -->\n @if (actionRight) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n </tr>\n @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n <tr>\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n }\n @if (hasMainColumns && isShowMasterDetail(row)) {\n <tr>\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n [p-components-size]=\"componentsSize\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n }\n </tbody>\n }\n }\n </table>\n</ng-template>\n\n<!-- Table with virtual scroll -->\n<ng-template #tableVirtualScrollTemplate>\n <cdk-virtual-scroll-viewport\n #tableVirtualScroll\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableContainer\"\n [minBufferPx]=\"heightTableContainer < 100 ? 100 : heightTableContainer\"\n [maxBufferPx]=\"heightTableContainer < 200 ? 200 : heightTableContainer\"\n >\n <table\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead\n class=\"po-table-header-sticky\"\n [style.top]=\"inverseOfTranslation\"\n [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n >\n <tr\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (hasSelectableColumn) {\n <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n @if (!hideSelectAll) {\n <po-checkbox\n name=\"selectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n }\n </div>\n </th>\n }\n\n @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n <th\n #columnActionLeft\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n }\n\n @if (!hasMainColumns) {\n <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n @if (height) {\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n } @else {\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n }\n </th>\n }\n\n @if (this.isDraggable || hasSomeFixed()) {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n @if (this.isDraggable && !column.fixed) {\n <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n }\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n </ng-container>\n </div>\n </th>\n }\n } @else {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column example-box\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n </ng-container>\n </div>\n </th>\n }\n }\n\n @if (hasRowTemplateWithArrowDirectionRight && hasMainColumns && (hasVisibleActions || hideColumnsManager)) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n @if (\n hasVisibleActions &&\n actionRight &&\n hasItems &&\n hasMainColumns &&\n (visibleActions.length > 1 || isSingleAction)\n ) {\n <th\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n }\n </tr>\n </thead>\n\n @if (!hasItems || !hasMainColumns) {\n <tbody class=\"po-table-group-row\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n }\n\n @if (hasMainColumns) {\n <tbody\n class=\"po-table-group-row\"\n *cdkVirtualFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\"\n >\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n @if (selectable) {\n <td class=\"po-table-column-selectable\">\n <ng-container\n *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n >\n </ng-container>\n </td>\n }\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table pela diretiva -->\n @if (\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n ) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n <td\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n @switch (column.type) {\n @case ('columnTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n }\n @case ('cellTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n }\n @case ('boolean') {\n <span>\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n }\n @case ('currency') {\n <span>\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n }\n @case ('date') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n }\n @case ('time') {\n <span>\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n }\n @case ('dateTime') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n }\n @case ('link') {\n <po-table-column-link\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n }\n @case ('icon') {\n <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n </po-table-column-icon>\n }\n @case ('subtitle') {\n <span>\n <po-table-subtitle-circle\n [p-subtitle]=\"getSubtitleColumn(row, column)\"\n ></po-table-subtitle-circle>\n </span>\n }\n @case ('label') {\n <span>\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n }\n @default {\n <span>{{ getCellData(row, column) }}</span>\n }\n }\n </div>\n </td>\n }\n @if (hasRowTemplateWithArrowDirectionRight) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna de a\u00E7oes na direita -->\n @if (actionRight) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n </tr>\n @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n <tr>\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n }\n @if (hasMainColumns && isShowMasterDetail(row)) {\n <tr>\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n [p-components-size]=\"componentsSize\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n }\n </tbody>\n }\n </table>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-size]=\"componentsSize\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n @if ((containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)) {\n <po-icon [p-icon]=\"row.$showDetail ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\" class=\"po-clickable\"> </po-icon>\n }\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <po-radio\n [name]=\"idRadio\"\n [p-checked]=\"row.$selected\"\n [p-size]=\"componentsSize\"\n (p-change-selected)=\"selectRow(row)\"\n ></po-radio>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n [p-checkboxValue]=\"row.$selected === null ? 'mixed' : row.$selected\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n\n @if (sort && column.sortable !== false) {\n <span\n [class.po-table-header-icon-unselected]=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\"\n [class.po-table-header-icon-descending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\n \"\n [class.po-table-header-icon-ascending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\n \"\n >\n @if (JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)) {\n <po-icon p-icon=\"ICON_SORT\"></po-icon>\n }\n @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending) {\n <po-icon p-icon=\"ICON_SORT_ASC\"></po-icon>\n }\n @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending) {\n <po-icon cdkDragHandle p-icon=\"ICON_SORT_DESC\"></po-icon>\n }\n </span>\n }\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n @if (isSingleAction) {\n <td\n class=\"po-table-column po-table-column-single-action\"\n [style.width.px]=\"height && actionRight ? getWidthColumnManager() : ''\"\n [style.max-width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n [style.width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n >\n @if (firstAction.visible !== false) {\n <div\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n @if (firstAction.icon) {\n <po-icon class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n }\n @if (firstAction.label) {\n <span>{{ firstAction.label }}</span>\n }\n </div>\n }\n </td>\n }\n\n @if (visibleActions.length > 1) {\n <td class=\"po-table-column-actions\">\n <div #popupTarget class=\"po-clickable\" (click)=\"togglePopup(row, popupTarget)\">\n <po-icon class=\"po-field-icon\" p-icon=\"ICON_MORE\"></po-icon>\n </div>\n </td>\n }\n</ng-template>\n\n@if (!hideColumnsManager) {\n <po-table-column-manager\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n [p-components-size]=\"componentsSize\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n >\n </po-table-column-manager>\n}\n\n<po-modal\n #modalDelete\n [p-components-size]=\"componentsSize\"\n [p-title]=\"literals.delete\"\n [p-primary-action]=\"confirm\"\n [p-secondary-action]=\"close\"\n [p-click-out]=\"true\"\n>\n <p class=\"po-font-text-large\">{{ literals.bodyDelete }}</p>\n</po-modal>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i1.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "directive", type: i5.ɵɵCdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.ɵɵCdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.ɵɵCdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoContainerComponent, selector: "po-container" }, { kind: "component", type: PoLoadingOverlayComponent, selector: "po-loading-overlay" }, { kind: "component", type: PoModalComponent, selector: "po-modal" }, { kind: "component", type: PoPopupComponent, selector: "po-popup" }, { kind: "directive", type: PoTooltipDirective, selector: "[p-tooltip]" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "component", type: PoCheckboxComponent, selector: "po-checkbox" }, { kind: "component", type: PoRadioComponent, selector: "po-radio", inputs: ["p-value", "p-size", "p-required", "p-label-text-wrap", "p-checked"], outputs: ["p-blur", "p-change-selected"] }, { kind: "component", type: PoSearchComponent, selector: "po-search" }, { kind: "component", type: PoTableColumnIconComponent, selector: "po-table-column-icon", inputs: ["p-column", "p-row", "p-icons"] }, { kind: "component", type: PoTableColumnLabelComponent, selector: "po-table-column-label", inputs: ["p-value"] }, { kind: "component", type: PoTableColumnLinkComponent, selector: "po-table-column-link", inputs: ["p-action", "p-disabled", "p-link", "p-open-new-tab", "p-row", "p-value"] }, { kind: "component", type: PoTableColumnManagerComponent, selector: "po-table-column-manager", inputs: ["p-columns", "p-target", "p-columns-default", "p-last-visible-columns-selected", "p-hide-action-fixed-columns", "p-components-size", "p-max-columns"], outputs: ["p-visible-columns-change", "p-change-visible-columns", "p-initial-columns"] }, { kind: "component", type: PoTableDetailComponent, selector: "po-table-detail", inputs: ["p-components-size", "p-items", "p-parent-row", "p-selectable", "p-detail"], outputs: ["p-select-row"] }, { kind: "component", type: PoTableSubtitleCircleComponent, selector: "po-table-subtitle-circle", inputs: ["p-hide-title", "p-subtitle"] }, { kind: "component", type: PoTableSubtitleFooterComponent, selector: "po-table-subtitle-footer", inputs: ["p-components-size", "p-literals", "p-subtitles"] }, { kind: "directive", type: PoTableColumnFrozenDirective, selector: "[pFrozenColumn]", inputs: ["pFrozenColumn", "alignFrozen"] }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: PoTimePipe, name: "po_time" }] });
35194
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: PoTableComponent, isStandalone: false, selector: "po-table", providers: [PoDateService, PoTableService], queries: [{ propertyName: "tableRowTemplate", first: true, predicate: PoTableRowTemplateDirective, descendants: true, static: true }, { propertyName: "tableCellTemplate", first: true, predicate: PoTableCellTemplateDirective, descendants: true }, { propertyName: "tableColumnTemplates", predicate: PoTableColumnTemplateDirective }], viewQueries: [{ propertyName: "noColumnsHeader", first: true, predicate: ["noColumnsHeader"], descendants: true, read: ElementRef }, { propertyName: "poPopupComponent", first: true, predicate: ["popup"], descendants: true }, { propertyName: "modalDelete", first: true, predicate: PoModalComponent, descendants: true, static: true }, { propertyName: "tableFooterElement", first: true, predicate: ["tableFooter"], descendants: true, read: ElementRef }, { propertyName: "tableWrapperElement", first: true, predicate: ["tableWrapper"], descendants: true, read: ElementRef }, { propertyName: "tableTemplate", first: true, predicate: ["tableTemplate"], descendants: true, read: ElementRef }, { propertyName: "tableVirtualScroll", first: true, predicate: ["tableVirtualScroll"], descendants: true, read: ElementRef }, { propertyName: "tableScrollable", first: true, predicate: ["tableScrollable"], descendants: true, read: ElementRef }, { propertyName: "columnManager", first: true, predicate: ["columnManager"], descendants: true, read: ElementRef }, { propertyName: "columnBatchActions", first: true, predicate: ["columnBatchActions"], descendants: true, read: ElementRef }, { propertyName: "columnActionLeft", first: true, predicate: ["columnActionLeft"], descendants: true, read: ElementRef }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "poSearchInput", first: true, predicate: ["poSearchInput"], descendants: true, read: ElementRef, static: true }, { propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "columnManagerTarget", first: true, predicate: ["columnManagerTarget"], descendants: true }, { propertyName: "columnManagerTargetFixed", first: true, predicate: ["columnManagerTargetFixed"], descendants: true }, { propertyName: "actionsIconElement", predicate: ["actionsIconElement"], descendants: true, read: ElementRef }, { propertyName: "actionsElement", predicate: ["actionsElement"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"po-table-actions\">\n @if (hasValidColumns && itemsSelected.length > 0 && !hideBatchActions) {\n <div #columnBatchActions class=\"po-table-actions-batch-actions\">\n <div [ngPlural]=\"itemsSelected.length\" class=\"po-table-actions-batch-actions__label\">\n <strong>\n <ng-template ngPluralCase=\"=0\">{{ literals.noItem }}</ng-template>\n <ng-template ngPluralCase=\"=1\">{{ literals.oneItem }}</ng-template>\n <ng-template ngPluralCase=\"other\">{{ itemsSelected.length }} {{ literals.multipleItems }}</ng-template>\n </strong>\n </div>\n <div class=\"po-table-actions-batch-actions__buttons\">\n <po-button\n p-icon=\"ICON_DELETE\"\n [p-danger]=\"true\"\n [p-disabled]=\"itemsSelected.length > 1 && serviceDeleteApi !== undefined\"\n [p-label]=\"literals.delete\"\n [p-size]=\"componentsSize\"\n (p-click)=\"modalDelete.open()\"\n ></po-button>\n </div>\n </div>\n }\n\n @if (hasValidColumns && !hideColumnsManager) {\n <div #columnManager class=\"po-table-actions-column-manager\">\n <po-button\n #columnManagerTarget\n p-icon=\"ICON_SETTINGS\"\n p-kind=\"tertiary\"\n p-tooltip-position=\"left\"\n [p-aria-label]=\"literals.columnsManager\"\n [p-tooltip]=\"literals.columnsManager\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onOpenColumnManager()\"\n ></po-button>\n </div>\n }\n\n @if (!hideTableSearch && hasValidColumns) {\n <div class=\"po-table-search\">\n <po-search\n [p-items]=\"items\"\n [p-filter-keys]=\"filteredColumns\"\n [p-filter-type]=\"filterType\"\n [p-size]=\"componentsSize\"\n (p-filtered-items-change)=\"onFilteredItemsChange($event)\"\n >\n </po-search>\n </div>\n }\n</div>\n@if (container) {\n <po-container p-no-padding>\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n </po-container>\n} @else {\n <div [class.po-table-container-sticky]=\"loading\">\n @if (loading) {\n <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n }\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n @if (height) {\n <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n @if (virtualScroll) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n }\n @if (!virtualScroll) {\n <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n }\n @if (!height) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n @if (hasFooter) {\n <div class=\"po-table-footer\">\n @for (column of subtitleColumns; track trackBy($index)) {\n <po-table-subtitle-footer\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-subtitles]=\"column.subtitles\"\n >\n </po-table-subtitle-footer>\n }\n </div>\n }\n}\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-sticky]=\"loading\">\n @if (loading) {\n <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n }\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n @if (height) {\n <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n @if (virtualScroll) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n }\n @if (!virtualScroll) {\n <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n }\n\n @if (!height) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n\n @if (hasFooter) {\n <div class=\"po-table-footer\">\n @for (column of subtitleColumns; track trackBy($index)) {\n <po-table-subtitle-footer\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-subtitles]=\"column.subtitles\"\n >\n </po-table-subtitle-footer>\n }\n </div>\n }\n</ng-template>\n\n<!-- Show More Button -->\n@if (!infiniteScroll) {\n <div\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n >\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n </div>\n}\n\n<!-- Table default-->\n<ng-template #tableTemplate>\n <table\n #tableScrollable\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead\n [class.po-table-header-sticky]=\"height > 0 && !virtualScroll\"\n [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n >\n <tr\n [ngClass]=\"!height ? { 'no-hover': hideSelectAll, 'po-table-column-drag': this.isDraggable } : ''\"\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (hasSelectableColumn) {\n <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n @if (!hideSelectAll) {\n <po-checkbox\n name=\"selectAll\"\n [p-size]=\"componentsSize\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n }\n </div>\n </th>\n }\n\n @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n <th\n #columnActionLeft\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n }\n\n @if (!hasMainColumns) {\n <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n @if (height) {\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n } @else {\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n }\n </th>\n }\n\n @if (this.isDraggable || hasSomeFixed()) {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n @if (this.isDraggable && !column.fixed) {\n <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n }\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n }\n } @else {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n }\n }\n\n @if (hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager) && hasMainColumns) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n @if (\n hasVisibleActions &&\n actionRight &&\n hasItems &&\n hasMainColumns &&\n (visibleActions.length > 1 || isSingleAction)\n ) {\n <th\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n }\n </tr>\n </thead>\n\n @if (!hasItems || !hasMainColumns) {\n <tbody class=\"po-table-group-row\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n }\n\n @if (hasMainColumns) {\n @for (row of filteredItems; track trackBy(rowIndex); let rowIndex = $index) {\n <tbody class=\"po-table-group-row\">\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n @if (selectable) {\n <td class=\"po-table-column-selectable\">\n <ng-container\n *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n >\n </ng-container>\n </td>\n }\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table ou pela diretiva -->\n @if (\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n ) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n <td\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n @switch (column.type) {\n @case ('columnTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n }\n @case ('cellTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n }\n @case ('boolean') {\n <span>\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n }\n @case ('currency') {\n <span>\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n }\n @case ('date') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n }\n @case ('time') {\n <span>\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n }\n @case ('dateTime') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n }\n @case ('link') {\n <po-table-column-link\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n }\n @case ('icon') {\n <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n </po-table-column-icon>\n }\n @case ('subtitle') {\n <span>\n <po-table-subtitle-circle\n [p-subtitle]=\"getSubtitleColumn(row, column)\"\n ></po-table-subtitle-circle>\n </span>\n }\n @case ('label') {\n <span>\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n }\n @default {\n <span>{{ getCellData(row, column) }}</span>\n }\n }\n </div>\n </td>\n }\n @if (hasRowTemplateWithArrowDirectionRight) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna de a\u00E7oes na direita -->\n @if (actionRight) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n </tr>\n @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n <tr>\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n }\n @if (hasMainColumns && isShowMasterDetail(row)) {\n <tr>\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n [p-components-size]=\"componentsSize\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n }\n </tbody>\n }\n }\n </table>\n</ng-template>\n\n<!-- Table with virtual scroll -->\n<ng-template #tableVirtualScrollTemplate>\n <cdk-virtual-scroll-viewport\n #tableVirtualScroll\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableContainer\"\n [minBufferPx]=\"heightTableContainer < 100 ? 100 : heightTableContainer\"\n [maxBufferPx]=\"heightTableContainer < 200 ? 200 : heightTableContainer\"\n >\n <table\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead\n class=\"po-table-header-sticky\"\n [style.top]=\"inverseOfTranslation\"\n [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n >\n <tr\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (hasSelectableColumn) {\n <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n @if (!hideSelectAll) {\n <po-checkbox\n name=\"selectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n }\n </div>\n </th>\n }\n\n @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n <th\n #columnActionLeft\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n }\n\n @if (!hasMainColumns) {\n <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n @if (height) {\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n } @else {\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n }\n </th>\n }\n\n @if (this.isDraggable || hasSomeFixed()) {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n @if (this.isDraggable && !column.fixed) {\n <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n }\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n </ng-container>\n </div>\n </th>\n }\n } @else {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column example-box\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n </ng-container>\n </div>\n </th>\n }\n }\n\n @if (hasRowTemplateWithArrowDirectionRight && hasMainColumns && (hasVisibleActions || hideColumnsManager)) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n @if (\n hasVisibleActions &&\n actionRight &&\n hasItems &&\n hasMainColumns &&\n (visibleActions.length > 1 || isSingleAction)\n ) {\n <th\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n }\n </tr>\n </thead>\n\n @if (!hasItems || !hasMainColumns) {\n <tbody class=\"po-table-group-row\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n }\n\n @if (hasMainColumns) {\n <tbody\n class=\"po-table-group-row\"\n *cdkVirtualFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\"\n >\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n @if (selectable) {\n <td class=\"po-table-column-selectable\">\n <ng-container\n *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n >\n </ng-container>\n </td>\n }\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table pela diretiva -->\n @if (\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n ) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n <td\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n @switch (column.type) {\n @case ('columnTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n }\n @case ('cellTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n }\n @case ('boolean') {\n <span>\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n }\n @case ('currency') {\n <span>\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n }\n @case ('date') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n }\n @case ('time') {\n <span>\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n }\n @case ('dateTime') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n }\n @case ('link') {\n <po-table-column-link\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n }\n @case ('icon') {\n <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n </po-table-column-icon>\n }\n @case ('subtitle') {\n <span>\n <po-table-subtitle-circle\n [p-subtitle]=\"getSubtitleColumn(row, column)\"\n ></po-table-subtitle-circle>\n </span>\n }\n @case ('label') {\n <span>\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n }\n @default {\n <span>{{ getCellData(row, column) }}</span>\n }\n }\n </div>\n </td>\n }\n @if (hasRowTemplateWithArrowDirectionRight) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna de a\u00E7oes na direita -->\n @if (actionRight) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n </tr>\n @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n <tr>\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n }\n @if (hasMainColumns && isShowMasterDetail(row)) {\n <tr>\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n [p-components-size]=\"componentsSize\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n }\n </tbody>\n }\n </table>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-size]=\"componentsSize\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n @if ((containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)) {\n <po-icon [p-icon]=\"row.$showDetail ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\" class=\"po-clickable\"> </po-icon>\n }\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <po-radio\n [name]=\"idRadio\"\n [p-checked]=\"row.$selected\"\n [p-size]=\"componentsSize\"\n (p-change-selected)=\"selectRow(row)\"\n ></po-radio>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n [p-checkboxValue]=\"row.$selected === null ? 'mixed' : row.$selected\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n\n @if (sort && column.sortable !== false) {\n <span\n [class.po-table-header-icon-unselected]=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\"\n [class.po-table-header-icon-descending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\n \"\n [class.po-table-header-icon-ascending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\n \"\n >\n @if (JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)) {\n <po-icon p-icon=\"ICON_SORT\"></po-icon>\n }\n @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending) {\n <po-icon p-icon=\"ICON_SORT_ASC\"></po-icon>\n }\n @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending) {\n <po-icon cdkDragHandle p-icon=\"ICON_SORT_DESC\"></po-icon>\n }\n </span>\n }\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n @if (isSingleAction) {\n <td\n class=\"po-table-column po-table-column-single-action\"\n [style.width.px]=\"height && actionRight ? getWidthColumnManager() : ''\"\n [style.max-width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n [style.width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n >\n @if (firstAction.visible !== false) {\n <div\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n @if (firstAction.icon) {\n <po-icon class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n }\n @if (firstAction.label) {\n <span>{{ firstAction.label }}</span>\n }\n </div>\n }\n </td>\n }\n\n @if (visibleActions.length > 1) {\n <td class=\"po-table-column-actions\">\n <div #popupTarget class=\"po-clickable\" (click)=\"togglePopup(row, popupTarget)\">\n <po-icon class=\"po-field-icon\" p-icon=\"ICON_MORE\"></po-icon>\n </div>\n </td>\n }\n</ng-template>\n\n@if (!hideColumnsManager) {\n <po-table-column-manager\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n (p-change-fixed-columns)=\"onChangeFixedColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n [p-components-size]=\"componentsSize\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n >\n </po-table-column-manager>\n}\n\n<po-modal\n #modalDelete\n [p-components-size]=\"componentsSize\"\n [p-title]=\"literals.delete\"\n [p-primary-action]=\"confirm\"\n [p-secondary-action]=\"close\"\n [p-click-out]=\"true\"\n>\n <p class=\"po-font-text-large\">{{ literals.bodyDelete }}</p>\n</po-modal>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i1.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "directive", type: i5.ɵɵCdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.ɵɵCdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.ɵɵCdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoContainerComponent, selector: "po-container" }, { kind: "component", type: PoLoadingOverlayComponent, selector: "po-loading-overlay" }, { kind: "component", type: PoModalComponent, selector: "po-modal" }, { kind: "component", type: PoPopupComponent, selector: "po-popup" }, { kind: "directive", type: PoTooltipDirective, selector: "[p-tooltip]" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "component", type: PoCheckboxComponent, selector: "po-checkbox" }, { kind: "component", type: PoRadioComponent, selector: "po-radio", inputs: ["p-value", "p-size", "p-required", "p-label-text-wrap", "p-checked"], outputs: ["p-blur", "p-change-selected"] }, { kind: "component", type: PoSearchComponent, selector: "po-search" }, { kind: "component", type: PoTableColumnIconComponent, selector: "po-table-column-icon", inputs: ["p-column", "p-row", "p-icons"] }, { kind: "component", type: PoTableColumnLabelComponent, selector: "po-table-column-label", inputs: ["p-value"] }, { kind: "component", type: PoTableColumnLinkComponent, selector: "po-table-column-link", inputs: ["p-action", "p-disabled", "p-link", "p-open-new-tab", "p-row", "p-value"] }, { kind: "component", type: PoTableColumnManagerComponent, selector: "po-table-column-manager", inputs: ["p-columns", "p-target", "p-columns-default", "p-last-visible-columns-selected", "p-hide-action-fixed-columns", "p-components-size", "p-max-columns"], outputs: ["p-visible-columns-change", "p-change-visible-columns", "p-change-fixed-columns", "p-initial-columns"] }, { kind: "component", type: PoTableDetailComponent, selector: "po-table-detail", inputs: ["p-components-size", "p-items", "p-parent-row", "p-selectable", "p-detail"], outputs: ["p-select-row"] }, { kind: "component", type: PoTableSubtitleCircleComponent, selector: "po-table-subtitle-circle", inputs: ["p-hide-title", "p-subtitle"] }, { kind: "component", type: PoTableSubtitleFooterComponent, selector: "po-table-subtitle-footer", inputs: ["p-components-size", "p-literals", "p-subtitles"] }, { kind: "directive", type: PoTableColumnFrozenDirective, selector: "[pFrozenColumn]", inputs: ["pFrozenColumn", "alignFrozen"] }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: PoTimePipe, name: "po_time" }] });
35052
35195
  }
35053
35196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PoTableComponent, decorators: [{
35054
35197
  type: Component,
35055
- args: [{ selector: 'po-table', providers: [PoDateService, PoTableService], standalone: false, template: "<div class=\"po-table-actions\">\n @if (hasValidColumns && itemsSelected.length > 0 && !hideBatchActions) {\n <div #columnBatchActions class=\"po-table-actions-batch-actions\">\n <div [ngPlural]=\"itemsSelected.length\" class=\"po-table-actions-batch-actions__label\">\n <strong>\n <ng-template ngPluralCase=\"=0\">{{ literals.noItem }}</ng-template>\n <ng-template ngPluralCase=\"=1\">{{ literals.oneItem }}</ng-template>\n <ng-template ngPluralCase=\"other\">{{ itemsSelected.length }} {{ literals.multipleItems }}</ng-template>\n </strong>\n </div>\n <div class=\"po-table-actions-batch-actions__buttons\">\n <po-button\n p-icon=\"ICON_DELETE\"\n [p-danger]=\"true\"\n [p-disabled]=\"itemsSelected.length > 1 && serviceDeleteApi !== undefined\"\n [p-label]=\"literals.delete\"\n [p-size]=\"componentsSize\"\n (p-click)=\"modalDelete.open()\"\n ></po-button>\n </div>\n </div>\n }\n\n @if (hasValidColumns && !hideColumnsManager) {\n <div #columnManager class=\"po-table-actions-column-manager\">\n <po-button\n #columnManagerTarget\n p-icon=\"ICON_SETTINGS\"\n p-kind=\"tertiary\"\n p-tooltip-position=\"left\"\n [p-aria-label]=\"literals.columnsManager\"\n [p-tooltip]=\"literals.columnsManager\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onOpenColumnManager()\"\n ></po-button>\n </div>\n }\n\n @if (!hideTableSearch && hasValidColumns) {\n <div class=\"po-table-search\">\n <po-search\n [p-items]=\"items\"\n [p-filter-keys]=\"filteredColumns\"\n [p-filter-type]=\"filterType\"\n [p-size]=\"componentsSize\"\n (p-filtered-items-change)=\"onFilteredItemsChange($event)\"\n >\n </po-search>\n </div>\n }\n</div>\n@if (container) {\n <po-container p-no-padding>\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n </po-container>\n} @else {\n <div [class.po-table-container-sticky]=\"loading\">\n @if (loading) {\n <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n }\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n @if (height) {\n <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n @if (virtualScroll) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n }\n @if (!virtualScroll) {\n <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n }\n @if (!height) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n @if (hasFooter) {\n <div class=\"po-table-footer\">\n @for (column of subtitleColumns; track trackBy($index)) {\n <po-table-subtitle-footer\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-subtitles]=\"column.subtitles\"\n >\n </po-table-subtitle-footer>\n }\n </div>\n }\n}\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-sticky]=\"loading\">\n @if (loading) {\n <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n }\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n @if (height) {\n <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n @if (virtualScroll) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n }\n @if (!virtualScroll) {\n <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n }\n\n @if (!height) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n\n @if (hasFooter) {\n <div class=\"po-table-footer\">\n @for (column of subtitleColumns; track trackBy($index)) {\n <po-table-subtitle-footer\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-subtitles]=\"column.subtitles\"\n >\n </po-table-subtitle-footer>\n }\n </div>\n }\n</ng-template>\n\n<!-- Show More Button -->\n@if (!infiniteScroll) {\n <div\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n >\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n </div>\n}\n\n<!-- Table default-->\n<ng-template #tableTemplate>\n <table\n #tableScrollable\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead\n [class.po-table-header-sticky]=\"height > 0 && !virtualScroll\"\n [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n >\n <tr\n [ngClass]=\"!height ? { 'no-hover': hideSelectAll, 'po-table-column-drag': this.isDraggable } : ''\"\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (hasSelectableColumn) {\n <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n @if (!hideSelectAll) {\n <po-checkbox\n name=\"selectAll\"\n [p-size]=\"componentsSize\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n }\n </div>\n </th>\n }\n\n @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n <th\n #columnActionLeft\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n }\n\n @if (!hasMainColumns) {\n <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n @if (height) {\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n } @else {\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n }\n </th>\n }\n\n @if (this.isDraggable || hasSomeFixed()) {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n @if (this.isDraggable && !column.fixed) {\n <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n }\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n }\n } @else {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n }\n }\n\n @if (hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager) && hasMainColumns) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n @if (\n hasVisibleActions &&\n actionRight &&\n hasItems &&\n hasMainColumns &&\n (visibleActions.length > 1 || isSingleAction)\n ) {\n <th\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n }\n </tr>\n </thead>\n\n @if (!hasItems || !hasMainColumns) {\n <tbody class=\"po-table-group-row\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n }\n\n @if (hasMainColumns) {\n @for (row of filteredItems; track trackBy(rowIndex); let rowIndex = $index) {\n <tbody class=\"po-table-group-row\">\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n @if (selectable) {\n <td class=\"po-table-column-selectable\">\n <ng-container\n *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n >\n </ng-container>\n </td>\n }\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table ou pela diretiva -->\n @if (\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n ) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n <td\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n @switch (column.type) {\n @case ('columnTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n }\n @case ('cellTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n }\n @case ('boolean') {\n <span>\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n }\n @case ('currency') {\n <span>\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n }\n @case ('date') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n }\n @case ('time') {\n <span>\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n }\n @case ('dateTime') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n }\n @case ('link') {\n <po-table-column-link\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n }\n @case ('icon') {\n <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n </po-table-column-icon>\n }\n @case ('subtitle') {\n <span>\n <po-table-subtitle-circle\n [p-subtitle]=\"getSubtitleColumn(row, column)\"\n ></po-table-subtitle-circle>\n </span>\n }\n @case ('label') {\n <span>\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n }\n @default {\n <span>{{ getCellData(row, column) }}</span>\n }\n }\n </div>\n </td>\n }\n @if (hasRowTemplateWithArrowDirectionRight) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna de a\u00E7oes na direita -->\n @if (actionRight) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n </tr>\n @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n <tr>\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n }\n @if (hasMainColumns && isShowMasterDetail(row)) {\n <tr>\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n [p-components-size]=\"componentsSize\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n }\n </tbody>\n }\n }\n </table>\n</ng-template>\n\n<!-- Table with virtual scroll -->\n<ng-template #tableVirtualScrollTemplate>\n <cdk-virtual-scroll-viewport\n #tableVirtualScroll\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableContainer\"\n [minBufferPx]=\"heightTableContainer < 100 ? 100 : heightTableContainer\"\n [maxBufferPx]=\"heightTableContainer < 200 ? 200 : heightTableContainer\"\n >\n <table\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead\n class=\"po-table-header-sticky\"\n [style.top]=\"inverseOfTranslation\"\n [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n >\n <tr\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (hasSelectableColumn) {\n <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n @if (!hideSelectAll) {\n <po-checkbox\n name=\"selectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n }\n </div>\n </th>\n }\n\n @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n <th\n #columnActionLeft\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n }\n\n @if (!hasMainColumns) {\n <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n @if (height) {\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n } @else {\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n }\n </th>\n }\n\n @if (this.isDraggable || hasSomeFixed()) {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n @if (this.isDraggable && !column.fixed) {\n <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n }\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n </ng-container>\n </div>\n </th>\n }\n } @else {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column example-box\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n </ng-container>\n </div>\n </th>\n }\n }\n\n @if (hasRowTemplateWithArrowDirectionRight && hasMainColumns && (hasVisibleActions || hideColumnsManager)) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n @if (\n hasVisibleActions &&\n actionRight &&\n hasItems &&\n hasMainColumns &&\n (visibleActions.length > 1 || isSingleAction)\n ) {\n <th\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n }\n </tr>\n </thead>\n\n @if (!hasItems || !hasMainColumns) {\n <tbody class=\"po-table-group-row\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n }\n\n @if (hasMainColumns) {\n <tbody\n class=\"po-table-group-row\"\n *cdkVirtualFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\"\n >\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n @if (selectable) {\n <td class=\"po-table-column-selectable\">\n <ng-container\n *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n >\n </ng-container>\n </td>\n }\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table pela diretiva -->\n @if (\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n ) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n <td\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n @switch (column.type) {\n @case ('columnTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n }\n @case ('cellTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n }\n @case ('boolean') {\n <span>\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n }\n @case ('currency') {\n <span>\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n }\n @case ('date') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n }\n @case ('time') {\n <span>\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n }\n @case ('dateTime') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n }\n @case ('link') {\n <po-table-column-link\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n }\n @case ('icon') {\n <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n </po-table-column-icon>\n }\n @case ('subtitle') {\n <span>\n <po-table-subtitle-circle\n [p-subtitle]=\"getSubtitleColumn(row, column)\"\n ></po-table-subtitle-circle>\n </span>\n }\n @case ('label') {\n <span>\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n }\n @default {\n <span>{{ getCellData(row, column) }}</span>\n }\n }\n </div>\n </td>\n }\n @if (hasRowTemplateWithArrowDirectionRight) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna de a\u00E7oes na direita -->\n @if (actionRight) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n </tr>\n @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n <tr>\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n }\n @if (hasMainColumns && isShowMasterDetail(row)) {\n <tr>\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n [p-components-size]=\"componentsSize\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n }\n </tbody>\n }\n </table>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-size]=\"componentsSize\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n @if ((containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)) {\n <po-icon [p-icon]=\"row.$showDetail ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\" class=\"po-clickable\"> </po-icon>\n }\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <po-radio\n [name]=\"idRadio\"\n [p-checked]=\"row.$selected\"\n [p-size]=\"componentsSize\"\n (p-change-selected)=\"selectRow(row)\"\n ></po-radio>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n [p-checkboxValue]=\"row.$selected === null ? 'mixed' : row.$selected\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n\n @if (sort && column.sortable !== false) {\n <span\n [class.po-table-header-icon-unselected]=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\"\n [class.po-table-header-icon-descending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\n \"\n [class.po-table-header-icon-ascending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\n \"\n >\n @if (JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)) {\n <po-icon p-icon=\"ICON_SORT\"></po-icon>\n }\n @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending) {\n <po-icon p-icon=\"ICON_SORT_ASC\"></po-icon>\n }\n @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending) {\n <po-icon cdkDragHandle p-icon=\"ICON_SORT_DESC\"></po-icon>\n }\n </span>\n }\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n @if (isSingleAction) {\n <td\n class=\"po-table-column po-table-column-single-action\"\n [style.width.px]=\"height && actionRight ? getWidthColumnManager() : ''\"\n [style.max-width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n [style.width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n >\n @if (firstAction.visible !== false) {\n <div\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n @if (firstAction.icon) {\n <po-icon class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n }\n @if (firstAction.label) {\n <span>{{ firstAction.label }}</span>\n }\n </div>\n }\n </td>\n }\n\n @if (visibleActions.length > 1) {\n <td class=\"po-table-column-actions\">\n <div #popupTarget class=\"po-clickable\" (click)=\"togglePopup(row, popupTarget)\">\n <po-icon class=\"po-field-icon\" p-icon=\"ICON_MORE\"></po-icon>\n </div>\n </td>\n }\n</ng-template>\n\n@if (!hideColumnsManager) {\n <po-table-column-manager\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n [p-components-size]=\"componentsSize\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n >\n </po-table-column-manager>\n}\n\n<po-modal\n #modalDelete\n [p-components-size]=\"componentsSize\"\n [p-title]=\"literals.delete\"\n [p-primary-action]=\"confirm\"\n [p-secondary-action]=\"close\"\n [p-click-out]=\"true\"\n>\n <p class=\"po-font-text-large\">{{ literals.bodyDelete }}</p>\n</po-modal>\n" }]
35198
+ args: [{ selector: 'po-table', providers: [PoDateService, PoTableService], standalone: false, template: "<div class=\"po-table-actions\">\n @if (hasValidColumns && itemsSelected.length > 0 && !hideBatchActions) {\n <div #columnBatchActions class=\"po-table-actions-batch-actions\">\n <div [ngPlural]=\"itemsSelected.length\" class=\"po-table-actions-batch-actions__label\">\n <strong>\n <ng-template ngPluralCase=\"=0\">{{ literals.noItem }}</ng-template>\n <ng-template ngPluralCase=\"=1\">{{ literals.oneItem }}</ng-template>\n <ng-template ngPluralCase=\"other\">{{ itemsSelected.length }} {{ literals.multipleItems }}</ng-template>\n </strong>\n </div>\n <div class=\"po-table-actions-batch-actions__buttons\">\n <po-button\n p-icon=\"ICON_DELETE\"\n [p-danger]=\"true\"\n [p-disabled]=\"itemsSelected.length > 1 && serviceDeleteApi !== undefined\"\n [p-label]=\"literals.delete\"\n [p-size]=\"componentsSize\"\n (p-click)=\"modalDelete.open()\"\n ></po-button>\n </div>\n </div>\n }\n\n @if (hasValidColumns && !hideColumnsManager) {\n <div #columnManager class=\"po-table-actions-column-manager\">\n <po-button\n #columnManagerTarget\n p-icon=\"ICON_SETTINGS\"\n p-kind=\"tertiary\"\n p-tooltip-position=\"left\"\n [p-aria-label]=\"literals.columnsManager\"\n [p-tooltip]=\"literals.columnsManager\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onOpenColumnManager()\"\n ></po-button>\n </div>\n }\n\n @if (!hideTableSearch && hasValidColumns) {\n <div class=\"po-table-search\">\n <po-search\n [p-items]=\"items\"\n [p-filter-keys]=\"filteredColumns\"\n [p-filter-type]=\"filterType\"\n [p-size]=\"componentsSize\"\n (p-filtered-items-change)=\"onFilteredItemsChange($event)\"\n >\n </po-search>\n </div>\n }\n</div>\n@if (container) {\n <po-container p-no-padding>\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n </po-container>\n} @else {\n <div [class.po-table-container-sticky]=\"loading\">\n @if (loading) {\n <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n }\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n @if (height) {\n <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n @if (virtualScroll) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n }\n @if (!virtualScroll) {\n <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n }\n @if (!height) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n @if (hasFooter) {\n <div class=\"po-table-footer\">\n @for (column of subtitleColumns; track trackBy($index)) {\n <po-table-subtitle-footer\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-subtitles]=\"column.subtitles\"\n >\n </po-table-subtitle-footer>\n }\n </div>\n }\n}\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-sticky]=\"loading\">\n @if (loading) {\n <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n }\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n @if (height) {\n <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n @if (virtualScroll) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n }\n @if (!virtualScroll) {\n <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n }\n\n @if (!height) {\n <div>\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n\n @if (hasFooter) {\n <div class=\"po-table-footer\">\n @for (column of subtitleColumns; track trackBy($index)) {\n <po-table-subtitle-footer\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-subtitles]=\"column.subtitles\"\n >\n </po-table-subtitle-footer>\n }\n </div>\n }\n</ng-template>\n\n<!-- Show More Button -->\n@if (!infiniteScroll) {\n <div\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n >\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n </div>\n}\n\n<!-- Table default-->\n<ng-template #tableTemplate>\n <table\n #tableScrollable\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead\n [class.po-table-header-sticky]=\"height > 0 && !virtualScroll\"\n [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n >\n <tr\n [ngClass]=\"!height ? { 'no-hover': hideSelectAll, 'po-table-column-drag': this.isDraggable } : ''\"\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (hasSelectableColumn) {\n <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n @if (!hideSelectAll) {\n <po-checkbox\n name=\"selectAll\"\n [p-size]=\"componentsSize\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n }\n </div>\n </th>\n }\n\n @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n <th\n #columnActionLeft\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n }\n\n @if (!hasMainColumns) {\n <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n @if (height) {\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n } @else {\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n }\n </th>\n }\n\n @if (this.isDraggable || hasSomeFixed()) {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n @if (this.isDraggable && !column.fixed) {\n <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n }\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n }\n } @else {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n }\n }\n\n @if (hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager) && hasMainColumns) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n @if (\n hasVisibleActions &&\n actionRight &&\n hasItems &&\n hasMainColumns &&\n (visibleActions.length > 1 || isSingleAction)\n ) {\n <th\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n }\n </tr>\n </thead>\n\n @if (!hasItems || !hasMainColumns) {\n <tbody class=\"po-table-group-row\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n }\n\n @if (hasMainColumns) {\n @for (row of filteredItems; track trackBy(rowIndex); let rowIndex = $index) {\n <tbody class=\"po-table-group-row\">\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n @if (selectable) {\n <td class=\"po-table-column-selectable\">\n <ng-container\n *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n >\n </ng-container>\n </td>\n }\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table ou pela diretiva -->\n @if (\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n ) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n <td\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n @switch (column.type) {\n @case ('columnTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n }\n @case ('cellTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n }\n @case ('boolean') {\n <span>\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n }\n @case ('currency') {\n <span>\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n }\n @case ('date') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n }\n @case ('time') {\n <span>\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n }\n @case ('dateTime') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n }\n @case ('link') {\n <po-table-column-link\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n }\n @case ('icon') {\n <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n </po-table-column-icon>\n }\n @case ('subtitle') {\n <span>\n <po-table-subtitle-circle\n [p-subtitle]=\"getSubtitleColumn(row, column)\"\n ></po-table-subtitle-circle>\n </span>\n }\n @case ('label') {\n <span>\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n }\n @default {\n <span>{{ getCellData(row, column) }}</span>\n }\n }\n </div>\n </td>\n }\n @if (hasRowTemplateWithArrowDirectionRight) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna de a\u00E7oes na direita -->\n @if (actionRight) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n </tr>\n @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n <tr>\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n }\n @if (hasMainColumns && isShowMasterDetail(row)) {\n <tr>\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n [p-components-size]=\"componentsSize\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n }\n </tbody>\n }\n }\n </table>\n</ng-template>\n\n<!-- Table with virtual scroll -->\n<ng-template #tableVirtualScrollTemplate>\n <cdk-virtual-scroll-viewport\n #tableVirtualScroll\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableContainer\"\n [minBufferPx]=\"heightTableContainer < 100 ? 100 : heightTableContainer\"\n [maxBufferPx]=\"heightTableContainer < 200 ? 200 : heightTableContainer\"\n >\n <table\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead\n class=\"po-table-header-sticky\"\n [style.top]=\"inverseOfTranslation\"\n [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n >\n <tr\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (hasSelectableColumn) {\n <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n @if (!hideSelectAll) {\n <po-checkbox\n name=\"selectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n }\n </div>\n </th>\n }\n\n @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n <th\n #columnActionLeft\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n }\n\n @if (!hasMainColumns) {\n <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n @if (height) {\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n } @else {\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n }\n </th>\n }\n\n @if (this.isDraggable || hasSomeFixed()) {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n @if (this.isDraggable && !column.fixed) {\n <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n }\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n </ng-container>\n </div>\n </th>\n }\n } @else {\n @for (column of mainColumns; track trackBy(i); let i = $index) {\n <th\n class=\"po-table-header-ellipsis p-element po-frozen-column example-box\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n </ng-container>\n </div>\n </th>\n }\n }\n\n @if (hasRowTemplateWithArrowDirectionRight && hasMainColumns && (hasVisibleActions || hideColumnsManager)) {\n <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n }\n\n @if (\n hasVisibleActions &&\n actionRight &&\n hasItems &&\n hasMainColumns &&\n (visibleActions.length > 1 || isSingleAction)\n ) {\n <th\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n }\n </tr>\n </thead>\n\n @if (!hasItems || !hasMainColumns) {\n <tbody class=\"po-table-group-row\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n }\n\n @if (hasMainColumns) {\n <tbody\n class=\"po-table-group-row\"\n *cdkVirtualFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\"\n >\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n @if (selectable) {\n <td class=\"po-table-column-selectable\">\n <ng-container\n *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n >\n </ng-container>\n </td>\n }\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table pela diretiva -->\n @if (\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n ) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n <td\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n @switch (column.type) {\n @case ('columnTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n }\n @case ('cellTemplate') {\n <span>\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n }\n @case ('boolean') {\n <span>\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n }\n @case ('currency') {\n <span>\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n }\n @case ('date') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n }\n @case ('time') {\n <span>\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n }\n @case ('dateTime') {\n <span>\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n }\n @case ('link') {\n <po-table-column-link\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n }\n @case ('icon') {\n <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n </po-table-column-icon>\n }\n @case ('subtitle') {\n <span>\n <po-table-subtitle-circle\n [p-subtitle]=\"getSubtitleColumn(row, column)\"\n ></po-table-subtitle-circle>\n </span>\n }\n @case ('label') {\n <span>\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n }\n @default {\n <span>{{ getCellData(row, column) }}</span>\n }\n }\n </div>\n </td>\n }\n @if (hasRowTemplateWithArrowDirectionRight) {\n <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n }\n <!-- Coluna de a\u00E7oes na direita -->\n @if (actionRight) {\n <ng-template\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n }\n </tr>\n @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n <tr>\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n }\n @if (hasMainColumns && isShowMasterDetail(row)) {\n <tr>\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n [p-components-size]=\"componentsSize\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n }\n </tbody>\n }\n </table>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-size]=\"componentsSize\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n @if ((containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)) {\n <po-icon [p-icon]=\"row.$showDetail ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\" class=\"po-clickable\"> </po-icon>\n }\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <po-radio\n [name]=\"idRadio\"\n [p-checked]=\"row.$selected\"\n [p-size]=\"componentsSize\"\n (p-change-selected)=\"selectRow(row)\"\n ></po-radio>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n [p-checkboxValue]=\"row.$selected === null ? 'mixed' : row.$selected\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n\n @if (sort && column.sortable !== false) {\n <span\n [class.po-table-header-icon-unselected]=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\"\n [class.po-table-header-icon-descending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\n \"\n [class.po-table-header-icon-ascending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\n \"\n >\n @if (JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)) {\n <po-icon p-icon=\"ICON_SORT\"></po-icon>\n }\n @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending) {\n <po-icon p-icon=\"ICON_SORT_ASC\"></po-icon>\n }\n @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending) {\n <po-icon cdkDragHandle p-icon=\"ICON_SORT_DESC\"></po-icon>\n }\n </span>\n }\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n @if (isSingleAction) {\n <td\n class=\"po-table-column po-table-column-single-action\"\n [style.width.px]=\"height && actionRight ? getWidthColumnManager() : ''\"\n [style.max-width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n [style.width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n >\n @if (firstAction.visible !== false) {\n <div\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n @if (firstAction.icon) {\n <po-icon class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n }\n @if (firstAction.label) {\n <span>{{ firstAction.label }}</span>\n }\n </div>\n }\n </td>\n }\n\n @if (visibleActions.length > 1) {\n <td class=\"po-table-column-actions\">\n <div #popupTarget class=\"po-clickable\" (click)=\"togglePopup(row, popupTarget)\">\n <po-icon class=\"po-field-icon\" p-icon=\"ICON_MORE\"></po-icon>\n </div>\n </td>\n }\n</ng-template>\n\n@if (!hideColumnsManager) {\n <po-table-column-manager\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n (p-change-fixed-columns)=\"onChangeFixedColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n [p-components-size]=\"componentsSize\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n >\n </po-table-column-manager>\n}\n\n<po-modal\n #modalDelete\n [p-components-size]=\"componentsSize\"\n [p-title]=\"literals.delete\"\n [p-primary-action]=\"confirm\"\n [p-secondary-action]=\"close\"\n [p-click-out]=\"true\"\n>\n <p class=\"po-font-text-large\">{{ literals.bodyDelete }}</p>\n</po-modal>\n" }]
35056
35199
  }], ctorParameters: () => [{ type: PoDateService }, { type: i0.IterableDiffers }, { type: i0.Renderer2 }, { type: PoLanguageService }, { type: i0.ChangeDetectorRef }, { type: i1.DecimalPipe }, { type: PoTableService }], propDecorators: { tableRowTemplate: [{
35057
35200
  type: ContentChild,
35058
35201
  args: [PoTableRowTemplateDirective, { static: true }]
@@ -43412,6 +43555,7 @@ const providers$1 = [
43412
43555
  * <example name="po-multiselect-template" title="PO Multiselect - Template">
43413
43556
  * <file name="sample-po-multiselect-template/sample-po-multiselect-template.component.html"> </file>
43414
43557
  * <file name="sample-po-multiselect-template/sample-po-multiselect-template.component.ts"> </file>
43558
+ * <file name="sample-po-multiselect-template/sample-po-multiselect-template.component.css"> </file>
43415
43559
  * </example>
43416
43560
  *
43417
43561
  * <example name="po-multiselect-heroes" title="PO Multiselect - Heroes - using API">
@@ -48731,6 +48875,7 @@ const PO_SELECT_FIELD_VALUE_DEFAULT = 'value';
48731
48875
  * <example name="po-select-customer-registration" title="PO Select - Customer registration">
48732
48876
  * <file name="sample-po-select-customer-registration/sample-po-select-customer-registration.component.html"> </file>
48733
48877
  * <file name="sample-po-select-customer-registration/sample-po-select-customer-registration.component.ts"> </file>
48878
+ * <file name="sample-po-select-customer-registration/sample-po-select-customer-registration.component.css"> </file>
48734
48879
  * <file name="sample-po-select-customer-registration/sample-po-select-customer-registration.service.ts"> </file>
48735
48880
  * </example>
48736
48881
  *
@@ -55930,11 +56075,13 @@ const poMenuRootLevel = 1;
55930
56075
  * <example name="po-menu-labs" title="PO Menu Labs">
55931
56076
  * <file name="sample-po-menu-labs/sample-po-menu-labs.component.html"> </file>
55932
56077
  * <file name="sample-po-menu-labs/sample-po-menu-labs.component.ts"> </file>
56078
+ * <file name="sample-po-menu-labs/sample-po-menu-labs.component.css"> </file>
55933
56079
  * </example>
55934
56080
  *
55935
56081
  * <example name="po-menu-human-resources" title="PO Menu - Human Resources">
55936
56082
  * <file name="sample-po-menu-human-resources/sample-po-menu-human-resources.component.html"> </file>
55937
56083
  * <file name="sample-po-menu-human-resources/sample-po-menu-human-resources.component.ts"> </file>
56084
+ * <file name="sample-po-menu-human-resources/sample-po-menu-human-resources.component.css"> </file>
55938
56085
  * <file name="sample-po-menu-human-resources/sample-po-menu-human-resources.service.ts"> </file>
55939
56086
  * </example>
55940
56087
  */
@@ -57521,6 +57668,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
57521
57668
  * <example name="po-page-default-dashboard" title="PO Page Default - Dashboard">
57522
57669
  * <file name="sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.html"> </file>
57523
57670
  * <file name="sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.ts"> </file>
57671
+ * <file name="sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.css"> </file>
57524
57672
  * <file name="sample-po-page-default-dashboard/sample-po-page-default-dashboard.service.ts"> </file>
57525
57673
  * </example>
57526
57674
  */
@@ -60537,6 +60685,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
60537
60685
  * <example name="po-stepper-sales" title="PO Stepper - Sales">
60538
60686
  * <file name="sample-po-stepper-sales/sample-po-stepper-sales.component.html"> </file>
60539
60687
  * <file name="sample-po-stepper-sales/sample-po-stepper-sales.component.ts"> </file>
60688
+ * <file name="sample-po-stepper-sales/sample-po-stepper-sales.component.css"> </file>
60540
60689
  * </example>
60541
60690
  *
60542
60691
  * <example name="po-stepper-active" title="PO Stepper - Active">
@@ -63599,11 +63748,13 @@ const TARGET_SIZE_AA = 32;
63599
63748
  * <example name="po-widget-labs" title="PO Widget Labs">
63600
63749
  * <file name="sample-po-widget-labs/sample-po-widget-labs.component.html"> </file>
63601
63750
  * <file name="sample-po-widget-labs/sample-po-widget-labs.component.ts"> </file>
63751
+ * <file name="sample-po-widget-labs/sample-po-widget-labs.component.css"> </file>
63602
63752
  * </example>
63603
63753
  *
63604
63754
  * <example name="po-widget-finance-dashboard" title="PO Widget - Finance dashboard">
63605
63755
  * <file name="sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.html"> </file>
63606
63756
  * <file name="sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.ts"> </file>
63757
+ * <file name="sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.css"> </file>
63607
63758
  * </example>
63608
63759
  *
63609
63760
  * <example name="po-widget-card" title="PO Widget - Card">