@tacdaed/fragments 1.0.0-beta.6 → 1.0.0-beta.8

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.
@@ -1,4 +1,5 @@
1
1
  @use './variables';
2
2
  @use './functions';
3
+ @use './utilities';
3
4
  @use './directives/badge';
4
5
  @use './directives/tooltip';
@@ -0,0 +1,122 @@
1
+ /* ==========================================================================
2
+ FONT DEFINITIONS
3
+ Path: assets/resources/fonts/
4
+ ========================================================================== */
5
+
6
+ /* =======================
7
+ OPEN SANS
8
+ ======================= */
9
+ @font-face {
10
+ font-family: 'Open Sans';
11
+ font-style: normal;
12
+ font-weight: 100 900;
13
+ font-display: swap;
14
+ src: url('/assets/resources/fonts/OpenSans/OpenSans-VariableFont_wdth_wght.ttf') format('truetype');
15
+ }
16
+
17
+ @font-face {
18
+ font-family: 'Open Sans';
19
+ font-style: italic;
20
+ font-weight: 100 900;
21
+ font-display: swap;
22
+ src: url('/assets/resources/fonts/OpenSans/OpenSans-Italic-VariableFont_wdth_wght.ttf') format('truetype');
23
+ }
24
+
25
+ /* =======================
26
+ ROBOTO
27
+ ======================= */
28
+ @font-face {
29
+ font-family: 'Roboto';
30
+ src: url('/assets/resources/fonts/Roboto/Roboto-Thin.ttf') format('truetype');
31
+ font-weight: 100;
32
+ font-style: normal;
33
+ font-display: swap;
34
+ }
35
+
36
+ @font-face {
37
+ font-family: 'Roboto';
38
+ src: url('/assets/resources/fonts/Roboto/Roboto-ThinItalic.ttf') format('truetype');
39
+ font-weight: 100;
40
+ font-style: italic;
41
+ font-display: swap;
42
+ }
43
+
44
+ @font-face {
45
+ font-family: 'Roboto';
46
+ src: url('/assets/resources/fonts/Roboto/Roboto-Light.ttf') format('truetype');
47
+ font-weight: 300;
48
+ font-style: normal;
49
+ font-display: swap;
50
+ }
51
+
52
+ @font-face {
53
+ font-family: 'Roboto';
54
+ src: url('/assets/resources/fonts/Roboto/Roboto-LightItalic.ttf') format('truetype');
55
+ font-weight: 300;
56
+ font-style: italic;
57
+ font-display: swap;
58
+ }
59
+
60
+ @font-face {
61
+ font-family: 'Roboto';
62
+ src: url('/assets/resources/fonts/Roboto/Roboto-Regular.ttf') format('truetype');
63
+ font-weight: 400;
64
+ font-style: normal;
65
+ font-display: swap;
66
+ }
67
+
68
+ @font-face {
69
+ font-family: 'Roboto';
70
+ src: url('/assets/resources/fonts/Roboto/Roboto-Italic.ttf') format('truetype');
71
+ font-weight: 400;
72
+ font-style: italic;
73
+ font-display: swap;
74
+ }
75
+
76
+ @font-face {
77
+ font-family: 'Roboto';
78
+ src: url('/assets/resources/fonts/Roboto/Roboto-Medium.ttf') format('truetype');
79
+ font-weight: 500;
80
+ font-style: normal;
81
+ font-display: swap;
82
+ }
83
+
84
+ @font-face {
85
+ font-family: 'Roboto';
86
+ src: url('/assets/resources/fonts/Roboto/Roboto-MediumItalic.ttf') format('truetype');
87
+ font-weight: 500;
88
+ font-style: italic;
89
+ font-display: swap;
90
+ }
91
+
92
+ @font-face {
93
+ font-family: 'Roboto';
94
+ src: url('/assets/resources/fonts/Roboto/Roboto-Bold.ttf') format('truetype');
95
+ font-weight: 700;
96
+ font-style: normal;
97
+ font-display: swap;
98
+ }
99
+
100
+ @font-face {
101
+ font-family: 'Roboto';
102
+ src: url('/assets/resources/fonts/Roboto/Roboto-BoldItalic.ttf') format('truetype');
103
+ font-weight: 700;
104
+ font-style: italic;
105
+ font-display: swap;
106
+ }
107
+
108
+ @font-face {
109
+ font-family: 'Roboto';
110
+ src: url('/assets/resources/fonts/Roboto/Roboto-Black.ttf') format('truetype');
111
+ font-weight: 900;
112
+ font-style: normal;
113
+ font-display: swap;
114
+ }
115
+
116
+ @font-face {
117
+ font-family: 'Roboto';
118
+ src: url('/assets/resources/fonts/Roboto/Roboto-BlackItalic.ttf') format('truetype');
119
+ font-weight: 900;
120
+ font-style: italic;
121
+ font-display: swap;
122
+ }
@@ -0,0 +1,12 @@
1
+ .frg-visually-hidden {
2
+ position: absolute !important;
3
+ width: 1px !important;
4
+ height: 1px !important;
5
+ padding: 0 !important;
6
+ margin: -1px !important;
7
+ overflow: hidden !important;
8
+ clip: rect(0, 0, 0, 0) !important;
9
+ clip-path: inset(50%) !important;
10
+ border: 0 !important;
11
+ white-space: nowrap !important;
12
+ }
@@ -1,5 +1,5 @@
1
1
  import * as i1 from '@angular/common';
2
- import { NgTemplateOutlet, NgClass, CommonModule, NgFor, formatDate, AsyncPipe } from '@angular/common';
2
+ import { NgTemplateOutlet, NgClass, CommonModule, formatDate, AsyncPipe } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { EventEmitter, TemplateRef, ViewChildren, ContentChild, Output, Input, Component, HostListener, inject, ChangeDetectorRef, ViewChild, ChangeDetectionStrategy, HostBinding, ElementRef, Renderer2, Directive, Pipe, Injector, LOCALE_ID } from '@angular/core';
5
5
  import { RouterLink, RouterLinkActive, Router, ActivatedRoute, NavigationEnd } from '@angular/router';
@@ -1556,11 +1556,11 @@ class BlobMorphComponent extends MorphBase {
1556
1556
  this.loadEvent.emit();
1557
1557
  }
1558
1558
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: BlobMorphComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1559
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: BlobMorphComponent, isStandalone: true, selector: "app-blob-morph", inputs: { imageUrl: "imageUrl", fillColor: "fillColor", pathStart: "pathStart", pathEnd: "pathEnd", duration: "duration" }, outputs: { loadEvent: "loadEvent" }, viewQueries: [{ propertyName: "morphPathRef", first: true, predicate: ["morphPath"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"blob-container\">\r\n <svg\r\n viewBox=\"0 0 200 200\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"blob-svg\"\r\n [class.hidden]=\"!isLoaded\"\r\n >\r\n <defs>\r\n <clipPath [attr.id]=\"clipId\" transform=\"translate(100 100)\">\r\n <path #morphPath [attr.d]=\"pathStart\" />\r\n </clipPath>\r\n <path [attr.id]=\"'morph-path-end-' + clipId\" [attr.d]=\"pathEnd\" />\r\n </defs>\r\n\r\n @if (imageUrl) {\r\n <image\r\n [attr.href]=\"imageUrl\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n preserveAspectRatio=\"xMidYMid slice\"\r\n [attr.clip-path]=\"'url(#' + clipId + ')'\"\r\n (load)=\"onLoadEvent()\"\r\n />\r\n } @else {\r\n <g [attr.clip-path]=\"'url(#' + clipId + ')'\">\r\n <rect width=\"100%\" height=\"100%\" [attr.fill]=\"fillColor || '#ccc'\" />\r\n </g>\r\n }\r\n </svg>\r\n\r\n @if (!isLoaded) {\r\n <frg-spinner [isOverlayItem]=\"true\"></frg-spinner>\r\n }\r\n</div>\r\n", styles: [":host{display:block}:host .blob-container{position:relative}\n"], dependencies: [{ kind: "component", type: SpinnerComponent, selector: "frg-spinner", inputs: ["size", "isCentered", "isOverlay", "isOverlayItem", "label", "styleType"] }] }); }
1559
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: BlobMorphComponent, isStandalone: true, selector: "frg-blob-morph", inputs: { imageUrl: "imageUrl", fillColor: "fillColor", pathStart: "pathStart", pathEnd: "pathEnd", duration: "duration" }, outputs: { loadEvent: "loadEvent" }, viewQueries: [{ propertyName: "morphPathRef", first: true, predicate: ["morphPath"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"blob-container\">\r\n <svg\r\n viewBox=\"0 0 200 200\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"blob-svg\"\r\n [class.hidden]=\"!isLoaded\"\r\n >\r\n <defs>\r\n <clipPath [attr.id]=\"clipId\" transform=\"translate(100 100)\">\r\n <path #morphPath [attr.d]=\"pathStart\" />\r\n </clipPath>\r\n <path [attr.id]=\"'morph-path-end-' + clipId\" [attr.d]=\"pathEnd\" />\r\n </defs>\r\n\r\n @if (imageUrl) {\r\n <image\r\n [attr.href]=\"imageUrl\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n preserveAspectRatio=\"xMidYMid slice\"\r\n [attr.clip-path]=\"'url(#' + clipId + ')'\"\r\n (load)=\"onLoadEvent()\"\r\n />\r\n } @else {\r\n <g [attr.clip-path]=\"'url(#' + clipId + ')'\">\r\n <rect width=\"100%\" height=\"100%\" [attr.fill]=\"fillColor || '#ccc'\" />\r\n </g>\r\n }\r\n </svg>\r\n\r\n @if (!isLoaded) {\r\n <frg-spinner [isOverlayItem]=\"true\"></frg-spinner>\r\n }\r\n</div>\r\n", styles: [":host{display:block}:host .blob-container{position:relative}\n"], dependencies: [{ kind: "component", type: SpinnerComponent, selector: "frg-spinner", inputs: ["size", "isCentered", "isOverlay", "isOverlayItem", "label", "styleType"] }] }); }
1560
1560
  }
1561
1561
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: BlobMorphComponent, decorators: [{
1562
1562
  type: Component,
1563
- args: [{ selector: 'app-blob-morph', imports: [SpinnerComponent], template: "<div class=\"blob-container\">\r\n <svg\r\n viewBox=\"0 0 200 200\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"blob-svg\"\r\n [class.hidden]=\"!isLoaded\"\r\n >\r\n <defs>\r\n <clipPath [attr.id]=\"clipId\" transform=\"translate(100 100)\">\r\n <path #morphPath [attr.d]=\"pathStart\" />\r\n </clipPath>\r\n <path [attr.id]=\"'morph-path-end-' + clipId\" [attr.d]=\"pathEnd\" />\r\n </defs>\r\n\r\n @if (imageUrl) {\r\n <image\r\n [attr.href]=\"imageUrl\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n preserveAspectRatio=\"xMidYMid slice\"\r\n [attr.clip-path]=\"'url(#' + clipId + ')'\"\r\n (load)=\"onLoadEvent()\"\r\n />\r\n } @else {\r\n <g [attr.clip-path]=\"'url(#' + clipId + ')'\">\r\n <rect width=\"100%\" height=\"100%\" [attr.fill]=\"fillColor || '#ccc'\" />\r\n </g>\r\n }\r\n </svg>\r\n\r\n @if (!isLoaded) {\r\n <frg-spinner [isOverlayItem]=\"true\"></frg-spinner>\r\n }\r\n</div>\r\n", styles: [":host{display:block}:host .blob-container{position:relative}\n"] }]
1563
+ args: [{ selector: 'frg-blob-morph', imports: [SpinnerComponent], template: "<div class=\"blob-container\">\r\n <svg\r\n viewBox=\"0 0 200 200\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"blob-svg\"\r\n [class.hidden]=\"!isLoaded\"\r\n >\r\n <defs>\r\n <clipPath [attr.id]=\"clipId\" transform=\"translate(100 100)\">\r\n <path #morphPath [attr.d]=\"pathStart\" />\r\n </clipPath>\r\n <path [attr.id]=\"'morph-path-end-' + clipId\" [attr.d]=\"pathEnd\" />\r\n </defs>\r\n\r\n @if (imageUrl) {\r\n <image\r\n [attr.href]=\"imageUrl\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n preserveAspectRatio=\"xMidYMid slice\"\r\n [attr.clip-path]=\"'url(#' + clipId + ')'\"\r\n (load)=\"onLoadEvent()\"\r\n />\r\n } @else {\r\n <g [attr.clip-path]=\"'url(#' + clipId + ')'\">\r\n <rect width=\"100%\" height=\"100%\" [attr.fill]=\"fillColor || '#ccc'\" />\r\n </g>\r\n }\r\n </svg>\r\n\r\n @if (!isLoaded) {\r\n <frg-spinner [isOverlayItem]=\"true\"></frg-spinner>\r\n }\r\n</div>\r\n", styles: [":host{display:block}:host .blob-container{position:relative}\n"] }]
1564
1564
  }], propDecorators: { imageUrl: [{
1565
1565
  type: Input
1566
1566
  }], fillColor: [{
@@ -1580,8 +1580,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
1580
1580
 
1581
1581
  class SparkleFieldComponent {
1582
1582
  constructor() {
1583
- this.width = 260;
1584
- this.height = 160;
1583
+ this.width = null;
1584
+ this.height = null;
1585
1585
  this.count = 12;
1586
1586
  this.minSize = 2;
1587
1587
  this.maxSize = 6;
@@ -1591,22 +1591,29 @@ class SparkleFieldComponent {
1591
1591
  this.loop = true;
1592
1592
  this.color = null;
1593
1593
  this.sparkles = [];
1594
- this.sparkleAnimations = [];
1595
- this.sparkleChangesSub = null;
1594
+ this.animations = [];
1595
+ this.changesSub = null;
1596
1596
  this.fallbackWidth = 260;
1597
1597
  this.fallbackHeight = 160;
1598
1598
  }
1599
1599
  get hostWidth() {
1600
- return this.widthStyle;
1600
+ return this.width == null ? null : this.formatSize(this.width);
1601
1601
  }
1602
1602
  get hostHeight() {
1603
- return this.heightStyle;
1603
+ return this.height === null ? null : this.formatSize(this.height);
1604
1604
  }
1605
1605
  get hostMinWidth() {
1606
- return this.needsMinSize(this.width) ? `${this.fallbackWidth}px` : null;
1606
+ return this.needsMinSize(this.width)
1607
+ ? `${this.fallbackWidth}px`
1608
+ : null;
1607
1609
  }
1608
1610
  get hostMinHeight() {
1609
- return this.needsMinSize(this.height) ? `${this.fallbackHeight}px` : null;
1611
+ return this.needsMinSize(this.height)
1612
+ ? `${this.fallbackHeight}px`
1613
+ : null;
1614
+ }
1615
+ get hostColor() {
1616
+ return this.color;
1610
1617
  }
1611
1618
  ngOnInit() {
1612
1619
  this.buildSparkles();
@@ -1617,91 +1624,77 @@ class SparkleFieldComponent {
1617
1624
  changes['maxSize'] ||
1618
1625
  changes['drift'] ||
1619
1626
  changes['minDuration'] ||
1620
- changes['maxDuration'] ||
1621
- changes['loop']) {
1627
+ changes['maxDuration']) {
1622
1628
  this.buildSparkles();
1623
1629
  this.restartAnimation();
1624
1630
  }
1625
1631
  }
1626
1632
  ngAfterViewInit() {
1627
- this.sparkleChangesSub = this.sparkleRefs.changes.subscribe(() => this.restartAnimation());
1633
+ this.changesSub = this.sparkleRefs.changes.subscribe(() => this.restartAnimation());
1628
1634
  this.restartAnimation();
1629
1635
  }
1630
1636
  ngOnDestroy() {
1631
- this.sparkleAnimations.forEach((animation) => animation.pause());
1632
- this.sparkleChangesSub?.unsubscribe();
1637
+ this.animations.forEach(a => a.pause());
1638
+ this.changesSub?.unsubscribe();
1633
1639
  }
1634
1640
  buildSparkles() {
1635
1641
  const count = Math.max(0, Math.floor(this.count));
1636
1642
  const minSize = Math.min(this.minSize, this.maxSize);
1637
1643
  const maxSize = Math.max(this.minSize, this.maxSize);
1638
- const minDuration = Math.min(this.minDuration, this.maxDuration);
1639
- const maxDuration = Math.max(this.minDuration, this.maxDuration);
1644
+ const minDur = Math.min(this.minDuration, this.maxDuration);
1645
+ const maxDur = Math.max(this.minDuration, this.maxDuration);
1640
1646
  this.sparkles = Array.from({ length: count }, () => ({
1641
- x: this.randomInRange(0, 100),
1642
- y: this.randomInRange(0, 100),
1643
- size: this.randomInRange(minSize, maxSize),
1644
- delay: this.randomInRange(0, 900),
1645
- duration: this.randomInRange(minDuration, maxDuration),
1646
- driftX: this.randomInRange(-this.drift, this.drift),
1647
- driftY: this.randomInRange(-this.drift, this.drift),
1647
+ x: this.rand(0, 100),
1648
+ y: this.rand(0, 100),
1649
+ size: this.rand(minSize, maxSize),
1650
+ delay: this.rand(0, 900),
1651
+ duration: this.rand(minDur, maxDur),
1652
+ driftX: this.rand(-this.drift, this.drift),
1653
+ driftY: this.rand(-this.drift, this.drift),
1648
1654
  }));
1649
1655
  }
1650
1656
  restartAnimation() {
1651
- if (!this.sparkleRefs || this.sparkleRefs.length === 0) {
1657
+ if (!this.sparkleRefs?.length)
1652
1658
  return;
1653
- }
1654
- this.sparkleAnimations.forEach((animation) => animation.pause());
1655
- this.sparkleAnimations = [];
1656
- const targets = this.sparkleRefs.toArray();
1657
- targets.forEach((ref, i) => {
1659
+ this.animations.forEach(a => a.pause());
1660
+ this.animations = [];
1661
+ this.sparkleRefs.forEach((ref, i) => {
1658
1662
  const sparkle = this.sparkles[i];
1659
- if (!sparkle) {
1663
+ if (!sparkle)
1660
1664
  return;
1661
- }
1662
- const animation = animate(ref.nativeElement, {
1665
+ const anim = animate(ref.nativeElement, {
1663
1666
  translateX: [-sparkle.driftX, sparkle.driftX],
1664
1667
  translateY: [-sparkle.driftY, sparkle.driftY],
1665
1668
  scale: [0.7, 1.2],
1666
1669
  opacity: [0.35, 1],
1667
- duration: sparkle.duration ?? 3000,
1670
+ duration: sparkle.duration,
1668
1671
  alternate: true,
1669
1672
  loop: this.loop,
1670
- ease: 'inOut',
1673
+ easing: 'easeInOutSine',
1671
1674
  });
1672
1675
  if (sparkle.delay > 0) {
1673
- animation.seek(sparkle.delay % (sparkle.duration || 3000));
1676
+ anim.seek(sparkle.delay % sparkle.duration);
1674
1677
  }
1675
- this.sparkleAnimations.push(animation);
1678
+ this.animations.push(anim);
1676
1679
  });
1677
1680
  }
1678
- randomInRange(min, max) {
1679
- if (min === max) {
1680
- return min;
1681
- }
1681
+ rand(min, max) {
1682
1682
  return min + Math.random() * (max - min);
1683
1683
  }
1684
- get widthStyle() {
1685
- return this.formatSize(this.width);
1686
- }
1687
- get heightStyle() {
1688
- return this.formatSize(this.height);
1689
- }
1690
1684
  formatSize(value) {
1691
- if (typeof value === 'number') {
1692
- return `${value}px`;
1693
- }
1694
- return value;
1685
+ if (value == null)
1686
+ return '';
1687
+ return typeof value === 'number' ? `${value}px` : value;
1695
1688
  }
1696
1689
  needsMinSize(value) {
1697
1690
  return typeof value === 'string' && value.trim().endsWith('%');
1698
1691
  }
1699
1692
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: SparkleFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1700
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", type: SparkleFieldComponent, isStandalone: true, selector: "frg-sparkle-field", inputs: { width: "width", height: "height", count: "count", minSize: "minSize", maxSize: "maxSize", drift: "drift", minDuration: "minDuration", maxDuration: "maxDuration", loop: "loop", color: "color" }, host: { properties: { "style.width": "this.hostWidth", "style.height": "this.hostHeight", "style.minWidth": "this.hostMinWidth", "style.minHeight": "this.hostMinHeight" } }, viewQueries: [{ propertyName: "sparkleRefs", predicate: ["sparkle"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"frg-sparkle-field\"\r\n [style.--frg-sparkle-color]=\"color || null\"\r\n>\r\n <span\r\n #sparkle\r\n *ngFor=\"let sparkle of sparkles\"\r\n class=\"frg-sparkle\"\r\n [style.left.%]=\"sparkle.x\"\r\n [style.top.%]=\"sparkle.y\"\r\n [style.width.px]=\"sparkle.size\"\r\n [style.height.px]=\"sparkle.size\"\r\n ></span>\r\n</div>\r\n", styles: [":host{display:inline-block}.frg-sparkle-field{position:relative;overflow:hidden;width:100%;height:100%}.frg-sparkle{position:absolute;border-radius:999px;background:var(--frg-sparkle-color, currentColor);opacity:.6;filter:blur(.2px);transform:translateZ(0);will-change:transform,opacity}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
1693
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: SparkleFieldComponent, isStandalone: true, selector: "frg-sparkle-field", inputs: { width: "width", height: "height", count: "count", minSize: "minSize", maxSize: "maxSize", drift: "drift", minDuration: "minDuration", maxDuration: "maxDuration", loop: "loop", color: "color" }, host: { properties: { "style.width": "this.hostWidth", "style.height": "this.hostHeight", "style.minWidth": "this.hostMinWidth", "style.minHeight": "this.hostMinHeight", "style.color": "this.hostColor" } }, viewQueries: [{ propertyName: "sparkleRefs", predicate: ["sparkle"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"frg-sparkle-layer\">\r\n @for (sparkle of sparkles; track $index) {\r\n <span\r\n #sparkle\r\n class=\"frg-sparkle\"\r\n [style.left.%]=\"sparkle.x\"\r\n [style.top.%]=\"sparkle.y\"\r\n [style.width.px]=\"sparkle.size\"\r\n [style.height.px]=\"sparkle.size\">\r\n </span>\r\n }\r\n</div>\r\n", styles: [":host{display:block;position:relative;overflow:hidden;pointer-events:none}.frg-sparkle-layer{position:absolute;inset:0}.frg-sparkle{position:absolute;border-radius:50%;background:radial-gradient(circle,currentColor 0%,rgba(255,255,255,.85) 35%,rgba(255,255,255,0) 70%);opacity:.6;will-change:transform,opacity;transform:translateZ(0)}\n"] }); }
1701
1694
  }
1702
1695
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: SparkleFieldComponent, decorators: [{
1703
1696
  type: Component,
1704
- args: [{ selector: 'frg-sparkle-field', imports: [NgFor], template: "<div\r\n class=\"frg-sparkle-field\"\r\n [style.--frg-sparkle-color]=\"color || null\"\r\n>\r\n <span\r\n #sparkle\r\n *ngFor=\"let sparkle of sparkles\"\r\n class=\"frg-sparkle\"\r\n [style.left.%]=\"sparkle.x\"\r\n [style.top.%]=\"sparkle.y\"\r\n [style.width.px]=\"sparkle.size\"\r\n [style.height.px]=\"sparkle.size\"\r\n ></span>\r\n</div>\r\n", styles: [":host{display:inline-block}.frg-sparkle-field{position:relative;overflow:hidden;width:100%;height:100%}.frg-sparkle{position:absolute;border-radius:999px;background:var(--frg-sparkle-color, currentColor);opacity:.6;filter:blur(.2px);transform:translateZ(0);will-change:transform,opacity}\n"] }]
1697
+ args: [{ selector: 'frg-sparkle-field', standalone: true, template: "<div class=\"frg-sparkle-layer\">\r\n @for (sparkle of sparkles; track $index) {\r\n <span\r\n #sparkle\r\n class=\"frg-sparkle\"\r\n [style.left.%]=\"sparkle.x\"\r\n [style.top.%]=\"sparkle.y\"\r\n [style.width.px]=\"sparkle.size\"\r\n [style.height.px]=\"sparkle.size\">\r\n </span>\r\n }\r\n</div>\r\n", styles: [":host{display:block;position:relative;overflow:hidden;pointer-events:none}.frg-sparkle-layer{position:absolute;inset:0}.frg-sparkle{position:absolute;border-radius:50%;background:radial-gradient(circle,currentColor 0%,rgba(255,255,255,.85) 35%,rgba(255,255,255,0) 70%);opacity:.6;will-change:transform,opacity;transform:translateZ(0)}\n"] }]
1705
1698
  }], propDecorators: { width: [{
1706
1699
  type: Input
1707
1700
  }], height: [{
@@ -1737,6 +1730,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
1737
1730
  }], hostMinHeight: [{
1738
1731
  type: HostBinding,
1739
1732
  args: ['style.minHeight']
1733
+ }], hostColor: [{
1734
+ type: HostBinding,
1735
+ args: ['style.color']
1740
1736
  }] } });
1741
1737
 
1742
1738
  class SmallPaginationComponent {
@@ -1861,11 +1857,11 @@ class SmallPaginationComponent {
1861
1857
  return result;
1862
1858
  }
1863
1859
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: SmallPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1864
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: SmallPaginationComponent, isStandalone: true, selector: "frg-small-pagination", inputs: { totalItems: "totalItems", fullData: "fullData", page: "page", pageSize: "pageSize", hasElipsisPages: "hasElipsisPages", styleType: "styleType" }, outputs: { pageChange: "pageChange" }, usesOnChanges: true, ngImport: i0, template: "@if (totalItems > pageSize) {\r\n <nav\r\n class=\"frg-pagination-small\"\r\n aria-label=\"Paginazione nome lista\"\r\n [ngClass]=\"{\r\n 'frg-pagination-small__primary': styleType === 'primary',\r\n 'frg-pagination-small__secondary': styleType === 'secondary',\r\n 'frg-pagination-small__tertiary': styleType === 'tertiary',\r\n 'frg-pagination-small__dark': styleType === 'dark',\r\n 'frg-pagination-small__light': styleType === 'light'\r\n }\"\r\n >\r\n <ul class=\"frg-pagination-small__list\">\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__prev\">\r\n <a\r\n href=\"javascript:void(0);\"\r\n [class.disabled]=\"page === 1\"\r\n (click)=\"changePage(page - 1)\"\r\n >\r\n <span class=\"visually-hidden\">Pagina precedente</span>\r\n <span class=\"fas fa-angle-left\" aria-hidden=\"true\"></span>\r\n </a>\r\n </li>\r\n @for (pageNum of pagesArray; track pageNum; let i = $index) {\r\n @if (showStartEllipsis && i === 1) {\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__ellipsis\">\r\n <span class=\"ellipsis\">...</span>\r\n </li>\r\n }\r\n <li\r\n class=\"frg-pagination-small__paging frg-pagination-small__page-number\"\r\n >\r\n <a\r\n href=\"javascript:void(0);\"\r\n [attr.aria-current]=\"page === pageNum ? 'page' : null\"\r\n (click)=\"changePage(pageNum)\"\r\n >\r\n <span class=\"visually-hidden\">Pagina</span>\r\n {{ pageNum }}\r\n </a>\r\n </li>\r\n @if (showEndEllipsis && i === pagesArray.length - 2) {\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__ellipsis\">\r\n <span class=\"ellipsis\">...</span>\r\n </li>\r\n }\r\n }\r\n\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__next\">\r\n <a\r\n href=\"javascript:void(0);\"\r\n [class.disabled]=\"page === totalPages\"\r\n (click)=\"changePage(page + 1)\"\r\n >\r\n <span class=\"visually-hidden\">Pagina successiva</span>\r\n <span class=\"fas fa-angle-right\" aria-hidden=\"true\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n}\r\n", styles: [".frg-pagination-small{display:flex;justify-content:center;align-items:center;margin:12px 0;gap:.2rem}.frg-pagination-small__list{list-style:none;padding:0;margin:0;display:flex;justify-content:center;align-items:center}.frg-pagination-small__list li:first-child{margin-right:.5rem}.frg-pagination-small__list li:last-child{margin-left:.5rem}.frg-pagination-small a{display:flex;justify-content:center;align-items:center;border-radius:999px;min-width:1.9rem;height:1.9rem;font-weight:500;border:1px solid transparent;text-decoration:none;text-align:center;transition:background-color .15s ease,border-color .15s ease,color .15s ease;cursor:pointer;background-color:transparent;color:#737579}.frg-pagination-small a.disabled{cursor:default;color:#bfbfbf;background-color:transparent}.frg-pagination-small a:focus-visible{outline:2px solid rgb(160.75,198.45,230.3);outline-offset:2px}.frg-pagination-small__primary a{margin:0 2px}.frg-pagination-small__primary a[aria-current=page]{background-color:#6ea8d9;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__primary a:hover:not([aria-current=page]){background-color:#a8cbe8;color:#fdfdfd}.frg-pagination-small__primary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__secondary a{margin:0 2px}.frg-pagination-small__secondary a[aria-current=page]{background-color:#e6c57a;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__secondary a:hover:not([aria-current=page]){background-color:#f0dcaf;color:#fdfdfd}.frg-pagination-small__secondary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__tertiary a{margin:0 2px}.frg-pagination-small__tertiary a[aria-current=page]{background-color:#d97ebd;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__tertiary a:hover:not([aria-current=page]){background-color:#e8b2d7;color:#fdfdfd}.frg-pagination-small__tertiary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__dark a{margin:0 2px;background-color:#fdfdfd;border:1px solid rgba(253,253,253,.12);color:#737579}.frg-pagination-small__dark a[aria-current=page]{background-color:#3d3d3de6;border-color:#3d3d3dd9;color:#e6e6e6;pointer-events:none}.frg-pagination-small__dark a:hover:not([aria-current=page]){background-color:#a6a7a9;color:#fdfdfd}.frg-pagination-small__dark a.disabled{border-color:#fdfdfd14;color:#bfbfbf}.frg-pagination-small__dark a.disabled:hover{background-color:#5e5f62}.frg-pagination-small__light a{margin:0 2px;color:#cfcece}.frg-pagination-small__light a[aria-current=page]{background-color:#fdfdfd;color:#5e5f62;pointer-events:none}.frg-pagination-small__light a:hover:not([aria-current=page]){background-color:#e6e6e6;color:#5e5f62}.frg-pagination-small__light a.disabled{color:#737579}.frg-pagination-small__light a.disabled:hover{background-color:transparent;color:#737579;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
1860
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: SmallPaginationComponent, isStandalone: true, selector: "frg-small-pagination", inputs: { totalItems: "totalItems", fullData: "fullData", page: "page", pageSize: "pageSize", hasElipsisPages: "hasElipsisPages", styleType: "styleType" }, outputs: { pageChange: "pageChange" }, usesOnChanges: true, ngImport: i0, template: "@if (totalItems > pageSize) {\r\n <nav\r\n class=\"frg-pagination-small\"\r\n aria-label=\"Paginazione nome lista\"\r\n [ngClass]=\"{\r\n 'frg-pagination-small__primary': styleType === 'primary',\r\n 'frg-pagination-small__secondary': styleType === 'secondary',\r\n 'frg-pagination-small__tertiary': styleType === 'tertiary',\r\n 'frg-pagination-small__dark': styleType === 'dark',\r\n 'frg-pagination-small__light': styleType === 'light'\r\n }\"\r\n >\r\n <ul class=\"frg-pagination-small__list\">\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__prev\">\r\n <a\r\n href=\"javascript:void(0);\"\r\n [class.disabled]=\"page === 1\"\r\n (click)=\"changePage(page - 1)\"\r\n >\r\n <span class=\"frg-visually-hidden\">Pagina precedente</span>\r\n <span class=\"fas fa-angle-left\" aria-hidden=\"true\"></span>\r\n </a>\r\n </li>\r\n @for (pageNum of pagesArray; track pageNum; let i = $index) {\r\n @if (showStartEllipsis && i === 1) {\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__ellipsis\">\r\n <span class=\"ellipsis\">...</span>\r\n </li>\r\n }\r\n <li\r\n class=\"frg-pagination-small__paging frg-pagination-small__page-number\"\r\n >\r\n <a\r\n href=\"javascript:void(0);\"\r\n [attr.aria-current]=\"page === pageNum ? 'page' : null\"\r\n (click)=\"changePage(pageNum)\"\r\n >\r\n <span class=\"frg-visually-hidden\">Pagina</span>\r\n {{ pageNum }}\r\n </a>\r\n </li>\r\n @if (showEndEllipsis && i === pagesArray.length - 2) {\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__ellipsis\">\r\n <span class=\"ellipsis\">...</span>\r\n </li>\r\n }\r\n }\r\n\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__next\">\r\n <a\r\n href=\"javascript:void(0);\"\r\n [class.disabled]=\"page === totalPages\"\r\n (click)=\"changePage(page + 1)\"\r\n >\r\n <span class=\"frg-visually-hidden\">Pagina successiva</span>\r\n <span class=\"fas fa-angle-right\" aria-hidden=\"true\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n}\r\n", styles: [".frg-pagination-small{display:flex;justify-content:center;align-items:center;margin:12px 0;gap:.2rem}.frg-pagination-small__list{list-style:none;padding:0;margin:0;display:flex;justify-content:center;align-items:center}.frg-pagination-small__list li:first-child{margin-right:.5rem}.frg-pagination-small__list li:last-child{margin-left:.5rem}.frg-pagination-small a{display:flex;justify-content:center;align-items:center;border-radius:999px;min-width:1.9rem;height:1.9rem;font-weight:500;border:1px solid transparent;text-decoration:none;text-align:center;transition:background-color .15s ease,border-color .15s ease,color .15s ease;cursor:pointer;background-color:transparent;color:#737579}.frg-pagination-small a.disabled{cursor:default;color:#bfbfbf;background-color:transparent}.frg-pagination-small a:focus-visible{outline:2px solid rgb(160.75,198.45,230.3);outline-offset:2px}.frg-pagination-small__primary a{margin:0 2px}.frg-pagination-small__primary a[aria-current=page]{background-color:#6ea8d9;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__primary a:hover:not([aria-current=page]){background-color:#a8cbe8;color:#fdfdfd}.frg-pagination-small__primary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__secondary a{margin:0 2px}.frg-pagination-small__secondary a[aria-current=page]{background-color:#e6c57a;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__secondary a:hover:not([aria-current=page]){background-color:#f0dcaf;color:#fdfdfd}.frg-pagination-small__secondary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__tertiary a{margin:0 2px}.frg-pagination-small__tertiary a[aria-current=page]{background-color:#d97ebd;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__tertiary a:hover:not([aria-current=page]){background-color:#e8b2d7;color:#fdfdfd}.frg-pagination-small__tertiary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__dark a{margin:0 2px;background-color:#fdfdfd;border:1px solid rgba(253,253,253,.12);color:#737579}.frg-pagination-small__dark a[aria-current=page]{background-color:#3d3d3de6;border-color:#3d3d3dd9;color:#e6e6e6;pointer-events:none}.frg-pagination-small__dark a:hover:not([aria-current=page]){background-color:#a6a7a9;color:#fdfdfd}.frg-pagination-small__dark a.disabled{border-color:#fdfdfd14;color:#bfbfbf}.frg-pagination-small__dark a.disabled:hover{background-color:#5e5f62}.frg-pagination-small__light a{margin:0 2px;color:#cfcece}.frg-pagination-small__light a[aria-current=page]{background-color:#fdfdfd;color:#5e5f62;pointer-events:none}.frg-pagination-small__light a:hover:not([aria-current=page]){background-color:#e6e6e6;color:#5e5f62}.frg-pagination-small__light a.disabled{color:#737579}.frg-pagination-small__light a.disabled:hover{background-color:transparent;color:#737579;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
1865
1861
  }
1866
1862
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: SmallPaginationComponent, decorators: [{
1867
1863
  type: Component,
1868
- args: [{ selector: 'frg-small-pagination', imports: [CommonModule], template: "@if (totalItems > pageSize) {\r\n <nav\r\n class=\"frg-pagination-small\"\r\n aria-label=\"Paginazione nome lista\"\r\n [ngClass]=\"{\r\n 'frg-pagination-small__primary': styleType === 'primary',\r\n 'frg-pagination-small__secondary': styleType === 'secondary',\r\n 'frg-pagination-small__tertiary': styleType === 'tertiary',\r\n 'frg-pagination-small__dark': styleType === 'dark',\r\n 'frg-pagination-small__light': styleType === 'light'\r\n }\"\r\n >\r\n <ul class=\"frg-pagination-small__list\">\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__prev\">\r\n <a\r\n href=\"javascript:void(0);\"\r\n [class.disabled]=\"page === 1\"\r\n (click)=\"changePage(page - 1)\"\r\n >\r\n <span class=\"visually-hidden\">Pagina precedente</span>\r\n <span class=\"fas fa-angle-left\" aria-hidden=\"true\"></span>\r\n </a>\r\n </li>\r\n @for (pageNum of pagesArray; track pageNum; let i = $index) {\r\n @if (showStartEllipsis && i === 1) {\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__ellipsis\">\r\n <span class=\"ellipsis\">...</span>\r\n </li>\r\n }\r\n <li\r\n class=\"frg-pagination-small__paging frg-pagination-small__page-number\"\r\n >\r\n <a\r\n href=\"javascript:void(0);\"\r\n [attr.aria-current]=\"page === pageNum ? 'page' : null\"\r\n (click)=\"changePage(pageNum)\"\r\n >\r\n <span class=\"visually-hidden\">Pagina</span>\r\n {{ pageNum }}\r\n </a>\r\n </li>\r\n @if (showEndEllipsis && i === pagesArray.length - 2) {\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__ellipsis\">\r\n <span class=\"ellipsis\">...</span>\r\n </li>\r\n }\r\n }\r\n\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__next\">\r\n <a\r\n href=\"javascript:void(0);\"\r\n [class.disabled]=\"page === totalPages\"\r\n (click)=\"changePage(page + 1)\"\r\n >\r\n <span class=\"visually-hidden\">Pagina successiva</span>\r\n <span class=\"fas fa-angle-right\" aria-hidden=\"true\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n}\r\n", styles: [".frg-pagination-small{display:flex;justify-content:center;align-items:center;margin:12px 0;gap:.2rem}.frg-pagination-small__list{list-style:none;padding:0;margin:0;display:flex;justify-content:center;align-items:center}.frg-pagination-small__list li:first-child{margin-right:.5rem}.frg-pagination-small__list li:last-child{margin-left:.5rem}.frg-pagination-small a{display:flex;justify-content:center;align-items:center;border-radius:999px;min-width:1.9rem;height:1.9rem;font-weight:500;border:1px solid transparent;text-decoration:none;text-align:center;transition:background-color .15s ease,border-color .15s ease,color .15s ease;cursor:pointer;background-color:transparent;color:#737579}.frg-pagination-small a.disabled{cursor:default;color:#bfbfbf;background-color:transparent}.frg-pagination-small a:focus-visible{outline:2px solid rgb(160.75,198.45,230.3);outline-offset:2px}.frg-pagination-small__primary a{margin:0 2px}.frg-pagination-small__primary a[aria-current=page]{background-color:#6ea8d9;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__primary a:hover:not([aria-current=page]){background-color:#a8cbe8;color:#fdfdfd}.frg-pagination-small__primary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__secondary a{margin:0 2px}.frg-pagination-small__secondary a[aria-current=page]{background-color:#e6c57a;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__secondary a:hover:not([aria-current=page]){background-color:#f0dcaf;color:#fdfdfd}.frg-pagination-small__secondary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__tertiary a{margin:0 2px}.frg-pagination-small__tertiary a[aria-current=page]{background-color:#d97ebd;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__tertiary a:hover:not([aria-current=page]){background-color:#e8b2d7;color:#fdfdfd}.frg-pagination-small__tertiary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__dark a{margin:0 2px;background-color:#fdfdfd;border:1px solid rgba(253,253,253,.12);color:#737579}.frg-pagination-small__dark a[aria-current=page]{background-color:#3d3d3de6;border-color:#3d3d3dd9;color:#e6e6e6;pointer-events:none}.frg-pagination-small__dark a:hover:not([aria-current=page]){background-color:#a6a7a9;color:#fdfdfd}.frg-pagination-small__dark a.disabled{border-color:#fdfdfd14;color:#bfbfbf}.frg-pagination-small__dark a.disabled:hover{background-color:#5e5f62}.frg-pagination-small__light a{margin:0 2px;color:#cfcece}.frg-pagination-small__light a[aria-current=page]{background-color:#fdfdfd;color:#5e5f62;pointer-events:none}.frg-pagination-small__light a:hover:not([aria-current=page]){background-color:#e6e6e6;color:#5e5f62}.frg-pagination-small__light a.disabled{color:#737579}.frg-pagination-small__light a.disabled:hover{background-color:transparent;color:#737579;pointer-events:none}\n"] }]
1864
+ args: [{ selector: 'frg-small-pagination', imports: [CommonModule], template: "@if (totalItems > pageSize) {\r\n <nav\r\n class=\"frg-pagination-small\"\r\n aria-label=\"Paginazione nome lista\"\r\n [ngClass]=\"{\r\n 'frg-pagination-small__primary': styleType === 'primary',\r\n 'frg-pagination-small__secondary': styleType === 'secondary',\r\n 'frg-pagination-small__tertiary': styleType === 'tertiary',\r\n 'frg-pagination-small__dark': styleType === 'dark',\r\n 'frg-pagination-small__light': styleType === 'light'\r\n }\"\r\n >\r\n <ul class=\"frg-pagination-small__list\">\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__prev\">\r\n <a\r\n href=\"javascript:void(0);\"\r\n [class.disabled]=\"page === 1\"\r\n (click)=\"changePage(page - 1)\"\r\n >\r\n <span class=\"frg-visually-hidden\">Pagina precedente</span>\r\n <span class=\"fas fa-angle-left\" aria-hidden=\"true\"></span>\r\n </a>\r\n </li>\r\n @for (pageNum of pagesArray; track pageNum; let i = $index) {\r\n @if (showStartEllipsis && i === 1) {\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__ellipsis\">\r\n <span class=\"ellipsis\">...</span>\r\n </li>\r\n }\r\n <li\r\n class=\"frg-pagination-small__paging frg-pagination-small__page-number\"\r\n >\r\n <a\r\n href=\"javascript:void(0);\"\r\n [attr.aria-current]=\"page === pageNum ? 'page' : null\"\r\n (click)=\"changePage(pageNum)\"\r\n >\r\n <span class=\"frg-visually-hidden\">Pagina</span>\r\n {{ pageNum }}\r\n </a>\r\n </li>\r\n @if (showEndEllipsis && i === pagesArray.length - 2) {\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__ellipsis\">\r\n <span class=\"ellipsis\">...</span>\r\n </li>\r\n }\r\n }\r\n\r\n <li class=\"frg-pagination-small__paging frg-pagination-small__next\">\r\n <a\r\n href=\"javascript:void(0);\"\r\n [class.disabled]=\"page === totalPages\"\r\n (click)=\"changePage(page + 1)\"\r\n >\r\n <span class=\"frg-visually-hidden\">Pagina successiva</span>\r\n <span class=\"fas fa-angle-right\" aria-hidden=\"true\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n}\r\n", styles: [".frg-pagination-small{display:flex;justify-content:center;align-items:center;margin:12px 0;gap:.2rem}.frg-pagination-small__list{list-style:none;padding:0;margin:0;display:flex;justify-content:center;align-items:center}.frg-pagination-small__list li:first-child{margin-right:.5rem}.frg-pagination-small__list li:last-child{margin-left:.5rem}.frg-pagination-small a{display:flex;justify-content:center;align-items:center;border-radius:999px;min-width:1.9rem;height:1.9rem;font-weight:500;border:1px solid transparent;text-decoration:none;text-align:center;transition:background-color .15s ease,border-color .15s ease,color .15s ease;cursor:pointer;background-color:transparent;color:#737579}.frg-pagination-small a.disabled{cursor:default;color:#bfbfbf;background-color:transparent}.frg-pagination-small a:focus-visible{outline:2px solid rgb(160.75,198.45,230.3);outline-offset:2px}.frg-pagination-small__primary a{margin:0 2px}.frg-pagination-small__primary a[aria-current=page]{background-color:#6ea8d9;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__primary a:hover:not([aria-current=page]){background-color:#a8cbe8;color:#fdfdfd}.frg-pagination-small__primary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__secondary a{margin:0 2px}.frg-pagination-small__secondary a[aria-current=page]{background-color:#e6c57a;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__secondary a:hover:not([aria-current=page]){background-color:#f0dcaf;color:#fdfdfd}.frg-pagination-small__secondary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__tertiary a{margin:0 2px}.frg-pagination-small__tertiary a[aria-current=page]{background-color:#d97ebd;color:#fdfdfd;border-color:transparent;pointer-events:none}.frg-pagination-small__tertiary a:hover:not([aria-current=page]){background-color:#e8b2d7;color:#fdfdfd}.frg-pagination-small__tertiary a.disabled:hover{background-color:#f1f2f5;color:#bfbfbf}.frg-pagination-small__dark a{margin:0 2px;background-color:#fdfdfd;border:1px solid rgba(253,253,253,.12);color:#737579}.frg-pagination-small__dark a[aria-current=page]{background-color:#3d3d3de6;border-color:#3d3d3dd9;color:#e6e6e6;pointer-events:none}.frg-pagination-small__dark a:hover:not([aria-current=page]){background-color:#a6a7a9;color:#fdfdfd}.frg-pagination-small__dark a.disabled{border-color:#fdfdfd14;color:#bfbfbf}.frg-pagination-small__dark a.disabled:hover{background-color:#5e5f62}.frg-pagination-small__light a{margin:0 2px;color:#cfcece}.frg-pagination-small__light a[aria-current=page]{background-color:#fdfdfd;color:#5e5f62;pointer-events:none}.frg-pagination-small__light a:hover:not([aria-current=page]){background-color:#e6e6e6;color:#5e5f62}.frg-pagination-small__light a.disabled{color:#737579}.frg-pagination-small__light a.disabled:hover{background-color:transparent;color:#737579;pointer-events:none}\n"] }]
1869
1865
  }], propDecorators: { totalItems: [{
1870
1866
  type: Input
1871
1867
  }], fullData: [{
@@ -2351,7 +2347,7 @@ class TableComponent {
2351
2347
  }
2352
2348
  }
2353
2349
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2354
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: TableComponent, isStandalone: true, selector: "frg-table", inputs: { configTable: "configTable", styleType: "styleType", rowSize: "rowSize" }, outputs: { reloadTableEvent: "reloadTableEvent" }, viewQueries: [{ propertyName: "tableHead", first: true, predicate: ["tableHead"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (configTable.tTitleBar?.title) {\r\n <frg-title-bar\r\n [title]=\"configTable.tTitleBar?.title ?? ''\"\r\n [styleType]=\"styleType\"\r\n ></frg-title-bar>\r\n}\r\n@if (configTable.tBody.data && configTable.tBody.data.length > 0) {\r\n <div class=\"frg-table-responsive\">\r\n <table\r\n class=\"frg-table\"\r\n id=\"table1\"\r\n [ngClass]=\"{\r\n 'frg-table__primary': styleType === 'primary',\r\n 'frg-table__secondary': styleType === 'secondary',\r\n 'frg-table__tertiary': styleType === 'tertiary',\r\n 'frg-table__dark': styleType === 'dark',\r\n 'frg-table__light': styleType === 'light',\r\n 'frg-table--row-small': rowSize === 'small',\r\n 'frg-table--row-medium': rowSize === 'medium',\r\n 'frg-table--row-large': rowSize === 'large'\r\n }\"\r\n >\r\n @if (configTable.tCaption && configTable.tCaption.srOnly) {\r\n <caption class=\"visually-hidden\">\r\n {{ configTable.tCaption.srOnly }}\r\n </caption>\r\n }\r\n @if (configTable.tHead.columns.length > 0) {\r\n <thead #tableHead>\r\n <tr>\r\n <!--Sort-->\r\n @if (configTable.tHead) {\r\n @for (hColumn of configTable.tHead.columns; track $index) {\r\n @if (hColumn.fieldOrder) {\r\n <th\r\n scope=\"col\"\r\n [tabindex]=\"hColumn.fieldOrder ? 0 : null\"\r\n [attr.aria-sort]=\"\r\n !(hColumn.fieldOrder === configTable.tPagination.order)\r\n ? null\r\n : configTable.tPagination.direction ===\r\n EnumDirectionSortTable.asc\r\n ? 'ascending'\r\n : 'descending'\r\n \"\r\n [ngClass]=\"{\r\n 'frg-sorting': hColumn.fieldOrder,\r\n 'frg-sorting-asc':\r\n configTable.tPagination.direction ===\r\n EnumDirectionSortTable.asc &&\r\n hColumn.fieldOrder === configTable.tPagination.order,\r\n 'frg-sorting-desc':\r\n configTable.tPagination.direction ===\r\n EnumDirectionSortTable.desc &&\r\n hColumn.fieldOrder === configTable.tPagination.order\r\n }\"\r\n (click)=\"\r\n hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null\r\n \"\r\n (keydown.enter)=\"\r\n hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null\r\n \"\r\n >\r\n <span>\r\n {{ hColumn.fieldLabel }}\r\n </span>\r\n </th>\r\n } @else {\r\n <th scope=\"col\">\r\n <span>\r\n {{ hColumn.fieldLabel }}\r\n </span>\r\n </th>\r\n }\r\n }\r\n }\r\n <!--End Sort-->\r\n @if (configTable.tHead.action) {\r\n <th\r\n scope=\"col\"\r\n [ngClass]=\"configTable.tHead.action.customClass ?? ''\"\r\n >\r\n {{ configTable.tHead.action.label }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n <tbody>\r\n @for (item of configTable.tBody.data; let i = $index; track $index) {\r\n <tr\r\n [attr.id]=\"i === 0 ? idFirstTr : null\"\r\n [ngClass]=\"\r\n configTable.tBody.rowClick?.behaviourAction?.clickEvent\r\n ? 'cursor-pointer'\r\n : ''\r\n \"\r\n [routerLink]=\"\r\n configTable.tBody.rowClick?.disabled &&\r\n configTable.tBody.rowClick?.disabled(item)\r\n ? null\r\n : configTable.tBody.rowClick?.behaviourAction?.link\r\n ? [\r\n configTable.tBody.rowClick?.behaviourAction?.link\r\n ? configTable.tBody.rowClick?.behaviourAction?.link\r\n : './',\r\n configTable.tBody.rowClick?.behaviourAction\r\n ?.customParamsLink ||\r\n (item | fieldArrayPosition: configTable.tBody.uniqueField)\r\n ]\r\n : null\r\n \"\r\n (click)=\"handleRowClick($event, item)\"\r\n (keyup.enter)=\"handleRowClick($event, item)\"\r\n (keydown)=\"handleRowClick($event, item)\"\r\n >\r\n @for (column of configTable.tBody.columns; let i = $index; track $index) {\r\n <td>\r\n <div [ngClass]=\"column.customClass\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n (column.cells | typeOfArray) ? cellForTpl : cellTpl\r\n \"\r\n [ngTemplateOutletContext]=\"{\r\n cells: column.cells,\r\n item: item\r\n }\"\r\n ></ng-container>\r\n </div>\r\n </td>\r\n }\r\n @if (configTable.tBody.action ?? false) {\r\n <td\r\n class=\"table-action\"\r\n [ngClass]=\"configTable.tBody.action?.customClasses ?? ''\"\r\n >\r\n @for (act of configTable.tBody.action?.buttons ?? []; track $index) {\r\n @if (act.visible && act.visible(item) ? true : null) {\r\n <frg-button\r\n [ariaLabel]=\"act.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"act.iconClass ? act.iconClass(item) : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n act.tooltip &&\r\n act.tooltip.apply &&\r\n act.visible &&\r\n act.visible(item)\r\n ? act.tooltip.apply\r\n : true,\r\n text:\r\n act.tooltip && act.tooltip.text\r\n ? act.tooltip.text(item)\r\n : '',\r\n textContent:\r\n act.tooltip && act.tooltip.textContent\r\n ? act.tooltip.textContent(item)\r\n : '',\r\n position:\r\n act.tooltip && act.tooltip.position\r\n ? act.tooltip.position\r\n : 'top',\r\n gap: act.tooltip && act.tooltip.gap ? act.tooltip.gap : 0\r\n }\"\r\n [disabled]=\"act.disabled ? act.disabled(item) : null\"\r\n [buttonRouterLink]=\"\r\n act.disabled && act.disabled(item)\r\n ? null\r\n : act.behaviourAction.link\r\n ? [\r\n act.behaviourAction.link\r\n ? act.behaviourAction.link\r\n : './',\r\n act.behaviourAction.customParamsLink ||\r\n (item\r\n | fieldArrayPosition\r\n : configTable.tBody.uniqueField)\r\n ]\r\n : null\r\n \"\r\n (clickEvent)=\"\r\n act.behaviourAction.clickEvent\r\n ? act.behaviourAction.clickEvent(item)\r\n : null\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n @if (configTable.tPagination) {\r\n <frg-small-pagination\r\n [hasElipsisPages]=\"configTable.tPagination.hasElipsisPages ?? false\"\r\n [pageSize]=\"configTable.tPagination.pageSize ?? 10\"\r\n [page]=\"configTable.tPagination.page ?? 0\"\r\n [totalItems]=\"configTable.tPagination.fullData?.length ?? 0\"\r\n [fullData]=\"configTable.tPagination.fullData ?? []\"\r\n [styleType]=\"styleType\"\r\n (pageChange)=\"updateCurrentPage($event)\"\r\n ></frg-small-pagination>\r\n }\r\n} @else {\r\n <div class=\"d-flex justify-content-center my-4\">\r\n <div class=\"text-center\">No Elements</div>\r\n </div>\r\n}\r\n\r\n<ng-template #cellForTpl let-cells=\"cells\" let-item=\"item\">\r\n @for (cell of $any(cells); track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"cellTpl\"\r\n [ngTemplateOutletContext]=\"{\r\n cell: cell,\r\n item: item\r\n }\"\r\n ></ng-container>\r\n <br />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-cell=\"cells\" let-item=\"item\">\r\n @if (!cell.fieldPipe) {\r\n @if (\r\n cell.icon &&\r\n cell.icon.position !== 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n <span [ngClass]=\"cell.customClass ? cell.customClass(item) : ''\">\r\n {{ item | fieldArrayPosition: cell.fieldArrayPosition }}\r\n </span>\r\n @if (\r\n cell.icon &&\r\n cell.icon.position === 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n } @else {\r\n @if (\r\n cell.icon &&\r\n cell.icon.position !== 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n <span\r\n [innerHtml]=\"\r\n item\r\n | fieldArrayPosition: cell.fieldArrayPosition\r\n | dynamicPipe: cell.fieldPipe.type : cell.fieldPipe.args\r\n | safeHtml\r\n \"\r\n [ngClass]=\"cell.customClass ? cell.customClass(item) : ''\"\r\n ></span>\r\n @if (\r\n cell.icon &&\r\n cell.icon.position === 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n }\r\n</ng-template>\r\n", styles: [".frg-title-bar{color:#3d3d3d;font-weight:400;font-size:1.25rem;box-shadow:0 2px 4px #0000001a;font-family:Open Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.frg-title-bar__primary{background-color:#4c7aae;color:#fdfdfd}.frg-title-bar__primary .frg-title-bar-title button{color:#4c7aae}.frg-title-bar__primary .frg-title-bar-filter,.frg-title-bar__primary .frg-title-bar-search{background-color:#6ea8d9}.frg-title-bar__secondary{background-color:#c9a24e;color:#fdfdfd}.frg-title-bar__secondary .frg-title-bar-title button{color:#c9a24e}.frg-title-bar__secondary .frg-title-bar-filter,.frg-title-bar__secondary .frg-title-bar-search{background-color:#e6c57a}.frg-title-bar__tertiary{background-color:#b05a99;color:#fdfdfd}.frg-title-bar__tertiary .frg-title-bar-title button{color:#b05a99}.frg-title-bar__tertiary .frg-title-bar-filter,.frg-title-bar__tertiary .frg-title-bar-search{background-color:#d97ebd}.frg-title-bar__dark{background-color:#3d3d3d;color:#fff}.frg-title-bar__light{background-color:#fdfdfd}.frg-title-bar .frg-title-bar-title{padding:15px 25px}.frg-title-bar .frg-title-bar-title button{outline:none;border:none;border-radius:50%;width:25px;height:25px;padding:15px;font-size:1rem}.frg-title-bar .frg-title-bar-title button:focus{color:#3d3d3d;background-color:#fdfdfd;border-color:#6ea8d9;outline:0;outline:3px solid #6ea8d9;box-shadow:none}.frg-title-bar .frg-title-bar-title button:focus-visible{outline-offset:5px}.frg-title-bar .frg-title-bar-filter__container{padding:25px}.frg-title-bar .frg-title-bar-filter label{display:block;font-size:.8rem;font-weight:lighter}.frg-title-bar .frg-title-bar-search__container{padding:25px}.frg-title-bar .frg-title-bar-search label{display:block;font-size:.8rem;font-weight:lighter}.frg-filter label,.frg-search label{display:block;font-size:.875rem;font-weight:400;margin-bottom:.5rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";text-transform:uppercase;letter-spacing:.05rem}.frg-filter input,.frg-search input{display:block;width:100%;padding:10px;font-size:1rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";line-height:1.5;color:#3d3d3d;background-color:#fdfdfd;background-clip:padding-box;border:1px solid rgb(184.7584745763,185.9194915254,188.2415254237);border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.frg-filter input::placeholder,.frg-search input::placeholder{color:#737579;opacity:1}.frg-filter input:focus,.frg-search input:focus{color:#3d3d3d;background-color:#fdfdfd;border-color:#6ea8d9;outline:0;box-shadow:0 0 0 .2rem #2e6ea640}.frg-filter input.is-invalid,.frg-search input.is-invalid{border-color:#d66a6a;padding-right:calc(10px + 2rem);background-image:url(data:image/svg+xml,\\ ...);background-repeat:no-repeat;background-position:center right 5px;background-size:6.6666666667px 6.6666666667px}.frg-filter input.is-invalid:focus,.frg-search input.is-invalid:focus{border-color:#d66a6a;box-shadow:0 0 0 .2rem #da1e2840}.frg-filter input:disabled,.frg-search input:disabled{background-color:#bfbfbf;border-color:#737579}.frg-table-responsive{border:1px solid #e6e9ef;border-radius:.25rem;overflow:hidden;background-color:#fdfdfd}frg-title-bar+.frg-table-responsive{border-top:none;border-radius:0 0 .25rem .25rem}.frg-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.95rem;background-color:#fdfdfd}.frg-table-responsive{border-radius:0 0 .25rem .25rem;border:1px solid #e6e9ef;overflow:hidden;background-color:#fdfdfd}.frg-table td,.frg-table th{text-align:left;padding:.75rem .9rem;border-bottom:1px solid #e6e9ef;vertical-align:middle}.frg-table--row-small td,.frg-table--row-small th{padding:.35rem .6rem}.frg-table--row-medium td,.frg-table--row-medium th{padding:.75rem .9rem}.frg-table--row-large td,.frg-table--row-large th{padding:1rem 1.2rem}.frg-table thead th{background-color:#edf0f6;font-weight:600;color:#1f252e;letter-spacing:.01em;border-bottom:1px solid #e6e9ef}.frg-table tbody tr{transition:background-color .18s ease}.frg-table tbody tr:hover{background-color:#f1f4f9}.frg-table .frg-sorting{position:relative;cursor:pointer;padding-right:1.4rem}.frg-table .frg-sorting:before,.frg-table .frg-sorting:after{content:\"\";position:absolute;right:.65rem;border-left:4px solid transparent;border-right:4px solid transparent;opacity:.5}.frg-table .frg-sorting:before{top:calc(50% - 6px);border-bottom:5px solid currentColor}.frg-table .frg-sorting:after{top:calc(50% + 2px);border-top:5px solid currentColor}.frg-table .frg-sorting-asc:after{opacity:.5}.frg-table .frg-sorting-asc:before{opacity:1}.frg-table .frg-sorting-desc:before{opacity:.5}.frg-table .frg-sorting-desc:after{opacity:1}.frg-table__primary{overflow:hidden}.frg-table__primary thead th,.frg-table__primary.frg-table thead th{background-color:#83b5de;color:#fdfdfd;border-bottom-color:#a1c6e6}.frg-table__primary tbody tr:hover{background-color:#e8f0f8}.frg-table__secondary{overflow:hidden}.frg-table__secondary thead th,.frg-table__secondary.frg-table thead th{background-color:#e9cd8e;color:#fdfdfd;border-bottom-color:#efd9a9}.frg-table__secondary tbody tr:hover{background-color:#faf5e9}.frg-table__tertiary{overflow:hidden}.frg-table__tertiary thead th,.frg-table__tertiary.frg-table thead th{background-color:#de91c7;color:#fdfdfd;border-bottom-color:#e6abd4}.frg-table__tertiary tbody tr:hover{background-color:#f8eaf3}.frg-table__dark{background-color:#3d3d3d;color:#fdfdfd}.frg-table__dark td,.frg-table__dark th{border-bottom-color:#fdfdfd1f}.frg-table__dark thead th{background-color:#505050;color:#fdfdfd;border-bottom-color:#fdfdfd29}.frg-table__dark tbody tr:hover{background-color:#4d4d4d}.frg-table__light,.frg-table__light thead th{background-color:#fdfdfd;color:#3d3d3d}.frg-table__light tbody tr:hover{background-color:#f1f4f9}@media screen and (max-width: 768px){.frg-table-responsive{overflow:auto}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: TitleBarComponent, selector: "frg-title-bar", inputs: ["title", "styleType"] }, { kind: "component", type: SmallPaginationComponent, selector: "frg-small-pagination", inputs: ["totalItems", "fullData", "page", "pageSize", "hasElipsisPages", "styleType"], outputs: ["pageChange"] }, { kind: "directive", type: FragmentsTooltipDirective, selector: "[frgTooltip]", inputs: ["tooltipConfig"] }, { kind: "component", type: ButtonComponent, selector: "frg-button", inputs: ["id", "class", "textClass", "iconClass", "iconStyleType", "iconPosition", "type", "size", "buttonRouterLink", "buttonRouterLinkActive", "disabled", "styleType", "shape", "text", "ariaLabel"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: FieldArrayPositionPipe, name: "fieldArrayPosition" }, { kind: "pipe", type: TypeOfArrayPipe, name: "typeOfArray" }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }, { kind: "pipe", type: DynamicPipe, name: "dynamicPipe" }] }); }
2350
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: TableComponent, isStandalone: true, selector: "frg-table", inputs: { configTable: "configTable", styleType: "styleType", rowSize: "rowSize" }, outputs: { reloadTableEvent: "reloadTableEvent" }, viewQueries: [{ propertyName: "tableHead", first: true, predicate: ["tableHead"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (configTable.tTitleBar?.title) {\r\n <frg-title-bar\r\n [title]=\"configTable.tTitleBar?.title ?? ''\"\r\n [styleType]=\"styleType\"\r\n ></frg-title-bar>\r\n}\r\n@if (configTable.tBody.data && configTable.tBody.data.length > 0) {\r\n <div class=\"frg-table-responsive\">\r\n <table\r\n class=\"frg-table\"\r\n id=\"table1\"\r\n [ngClass]=\"{\r\n 'frg-table__primary': styleType === 'primary',\r\n 'frg-table__secondary': styleType === 'secondary',\r\n 'frg-table__tertiary': styleType === 'tertiary',\r\n 'frg-table__dark': styleType === 'dark',\r\n 'frg-table__light': styleType === 'light',\r\n 'frg-table--row-small': rowSize === 'small',\r\n 'frg-table--row-medium': rowSize === 'medium',\r\n 'frg-table--row-large': rowSize === 'large'\r\n }\"\r\n >\r\n @if (configTable.tCaption && configTable.tCaption.srOnly) {\r\n <caption class=\"frg-visually-hidden\">\r\n {{ configTable.tCaption.srOnly }}\r\n </caption>\r\n }\r\n @if (configTable.tHead.columns.length > 0) {\r\n <thead #tableHead>\r\n <tr>\r\n <!--Sort-->\r\n @if (configTable.tHead) {\r\n @for (hColumn of configTable.tHead.columns; track $index) {\r\n @if (hColumn.fieldOrder) {\r\n <th\r\n scope=\"col\"\r\n [tabindex]=\"hColumn.fieldOrder ? 0 : null\"\r\n [attr.aria-sort]=\"\r\n !(hColumn.fieldOrder === configTable.tPagination.order)\r\n ? null\r\n : configTable.tPagination.direction ===\r\n EnumDirectionSortTable.asc\r\n ? 'ascending'\r\n : 'descending'\r\n \"\r\n [ngClass]=\"{\r\n 'frg-sorting': hColumn.fieldOrder,\r\n 'frg-sorting-asc':\r\n configTable.tPagination.direction ===\r\n EnumDirectionSortTable.asc &&\r\n hColumn.fieldOrder === configTable.tPagination.order,\r\n 'frg-sorting-desc':\r\n configTable.tPagination.direction ===\r\n EnumDirectionSortTable.desc &&\r\n hColumn.fieldOrder === configTable.tPagination.order\r\n }\"\r\n (click)=\"\r\n hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null\r\n \"\r\n (keydown.enter)=\"\r\n hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null\r\n \"\r\n >\r\n <span>\r\n {{ hColumn.fieldLabel }}\r\n </span>\r\n </th>\r\n } @else {\r\n <th scope=\"col\">\r\n <span>\r\n {{ hColumn.fieldLabel }}\r\n </span>\r\n </th>\r\n }\r\n }\r\n }\r\n <!--End Sort-->\r\n @if (configTable.tHead.action) {\r\n <th\r\n scope=\"col\"\r\n [ngClass]=\"configTable.tHead.action.customClass ?? ''\"\r\n >\r\n {{ configTable.tHead.action.label }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n <tbody>\r\n @for (item of configTable.tBody.data; let i = $index; track $index) {\r\n <tr\r\n [attr.id]=\"i === 0 ? idFirstTr : null\"\r\n [ngClass]=\"\r\n configTable.tBody.rowClick?.behaviourAction?.clickEvent\r\n ? 'cursor-pointer'\r\n : ''\r\n \"\r\n [routerLink]=\"\r\n configTable.tBody.rowClick?.disabled &&\r\n configTable.tBody.rowClick?.disabled(item)\r\n ? null\r\n : configTable.tBody.rowClick?.behaviourAction?.link\r\n ? [\r\n configTable.tBody.rowClick?.behaviourAction?.link\r\n ? configTable.tBody.rowClick?.behaviourAction?.link\r\n : './',\r\n configTable.tBody.rowClick?.behaviourAction\r\n ?.customParamsLink ||\r\n (item | fieldArrayPosition: configTable.tBody.uniqueField)\r\n ]\r\n : null\r\n \"\r\n (click)=\"handleRowClick($event, item)\"\r\n (keyup.enter)=\"handleRowClick($event, item)\"\r\n (keydown)=\"handleRowClick($event, item)\"\r\n >\r\n @for (column of configTable.tBody.columns; let i = $index; track $index) {\r\n <td>\r\n <div [ngClass]=\"column.customClass\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n (column.cells | typeOfArray) ? cellForTpl : cellTpl\r\n \"\r\n [ngTemplateOutletContext]=\"{\r\n cells: column.cells,\r\n item: item\r\n }\"\r\n ></ng-container>\r\n </div>\r\n </td>\r\n }\r\n @if (configTable.tBody.action ?? false) {\r\n <td\r\n class=\"table-action\"\r\n [ngClass]=\"configTable.tBody.action?.customClasses ?? ''\"\r\n >\r\n @for (act of configTable.tBody.action?.buttons ?? []; track $index) {\r\n @if (act.visible && act.visible(item) ? true : null) {\r\n <frg-button\r\n [ariaLabel]=\"act.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"act.iconClass ? act.iconClass(item) : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n act.tooltip &&\r\n act.tooltip.apply &&\r\n act.visible &&\r\n act.visible(item)\r\n ? act.tooltip.apply\r\n : true,\r\n text:\r\n act.tooltip && act.tooltip.text\r\n ? act.tooltip.text(item)\r\n : '',\r\n textContent:\r\n act.tooltip && act.tooltip.textContent\r\n ? act.tooltip.textContent(item)\r\n : '',\r\n position:\r\n act.tooltip && act.tooltip.position\r\n ? act.tooltip.position\r\n : 'top',\r\n gap: act.tooltip && act.tooltip.gap ? act.tooltip.gap : 0\r\n }\"\r\n [disabled]=\"act.disabled ? act.disabled(item) : null\"\r\n [buttonRouterLink]=\"\r\n act.disabled && act.disabled(item)\r\n ? null\r\n : act.behaviourAction.link\r\n ? [\r\n act.behaviourAction.link\r\n ? act.behaviourAction.link\r\n : './',\r\n act.behaviourAction.customParamsLink ||\r\n (item\r\n | fieldArrayPosition\r\n : configTable.tBody.uniqueField)\r\n ]\r\n : null\r\n \"\r\n (clickEvent)=\"\r\n act.behaviourAction.clickEvent\r\n ? act.behaviourAction.clickEvent(item)\r\n : null\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n @if (configTable.tPagination) {\r\n <frg-small-pagination\r\n [hasElipsisPages]=\"configTable.tPagination.hasElipsisPages ?? false\"\r\n [pageSize]=\"configTable.tPagination.pageSize ?? 10\"\r\n [page]=\"configTable.tPagination.page ?? 0\"\r\n [totalItems]=\"configTable.tPagination.fullData?.length ?? 0\"\r\n [fullData]=\"configTable.tPagination.fullData ?? []\"\r\n [styleType]=\"styleType\"\r\n (pageChange)=\"updateCurrentPage($event)\"\r\n ></frg-small-pagination>\r\n }\r\n} @else {\r\n <div class=\"d-flex justify-content-center my-4\">\r\n <div class=\"text-center\">No Elements</div>\r\n </div>\r\n}\r\n\r\n<ng-template #cellForTpl let-cells=\"cells\" let-item=\"item\">\r\n @for (cell of $any(cells); track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"cellTpl\"\r\n [ngTemplateOutletContext]=\"{\r\n cell: cell,\r\n item: item\r\n }\"\r\n ></ng-container>\r\n <br />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-cell=\"cells\" let-item=\"item\">\r\n @if (!cell.fieldPipe) {\r\n @if (\r\n cell.icon &&\r\n cell.icon.position !== 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n <span [ngClass]=\"cell.customClass ? cell.customClass(item) : ''\">\r\n {{ item | fieldArrayPosition: cell.fieldArrayPosition }}\r\n </span>\r\n @if (\r\n cell.icon &&\r\n cell.icon.position === 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n } @else {\r\n @if (\r\n cell.icon &&\r\n cell.icon.position !== 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n <span\r\n [innerHtml]=\"\r\n item\r\n | fieldArrayPosition: cell.fieldArrayPosition\r\n | dynamicPipe: cell.fieldPipe.type : cell.fieldPipe.args\r\n | safeHtml\r\n \"\r\n [ngClass]=\"cell.customClass ? cell.customClass(item) : ''\"\r\n ></span>\r\n @if (\r\n cell.icon &&\r\n cell.icon.position === 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n }\r\n</ng-template>\r\n", styles: [".frg-title-bar{color:#3d3d3d;font-weight:400;font-size:1.25rem;box-shadow:0 2px 4px #0000001a;font-family:Open Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.frg-title-bar__primary{background-color:#4c7aae;color:#fdfdfd}.frg-title-bar__primary .frg-title-bar-title button{color:#4c7aae}.frg-title-bar__primary .frg-title-bar-filter,.frg-title-bar__primary .frg-title-bar-search{background-color:#6ea8d9}.frg-title-bar__secondary{background-color:#c9a24e;color:#fdfdfd}.frg-title-bar__secondary .frg-title-bar-title button{color:#c9a24e}.frg-title-bar__secondary .frg-title-bar-filter,.frg-title-bar__secondary .frg-title-bar-search{background-color:#e6c57a}.frg-title-bar__tertiary{background-color:#b05a99;color:#fdfdfd}.frg-title-bar__tertiary .frg-title-bar-title button{color:#b05a99}.frg-title-bar__tertiary .frg-title-bar-filter,.frg-title-bar__tertiary .frg-title-bar-search{background-color:#d97ebd}.frg-title-bar__dark{background-color:#3d3d3d;color:#fff}.frg-title-bar__light{background-color:#fdfdfd}.frg-title-bar .frg-title-bar-title{padding:15px 25px}.frg-title-bar .frg-title-bar-title button{outline:none;border:none;border-radius:50%;width:25px;height:25px;padding:15px;font-size:1rem}.frg-title-bar .frg-title-bar-title button:focus{color:#3d3d3d;background-color:#fdfdfd;border-color:#6ea8d9;outline:0;outline:3px solid #6ea8d9;box-shadow:none}.frg-title-bar .frg-title-bar-title button:focus-visible{outline-offset:5px}.frg-title-bar .frg-title-bar-filter__container{padding:25px}.frg-title-bar .frg-title-bar-filter label{display:block;font-size:.8rem;font-weight:lighter}.frg-title-bar .frg-title-bar-search__container{padding:25px}.frg-title-bar .frg-title-bar-search label{display:block;font-size:.8rem;font-weight:lighter}.frg-filter label,.frg-search label{display:block;font-size:.875rem;font-weight:400;margin-bottom:.5rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";text-transform:uppercase;letter-spacing:.05rem}.frg-filter input,.frg-search input{display:block;width:100%;padding:10px;font-size:1rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";line-height:1.5;color:#3d3d3d;background-color:#fdfdfd;background-clip:padding-box;border:1px solid rgb(184.7584745763,185.9194915254,188.2415254237);border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.frg-filter input::placeholder,.frg-search input::placeholder{color:#737579;opacity:1}.frg-filter input:focus,.frg-search input:focus{color:#3d3d3d;background-color:#fdfdfd;border-color:#6ea8d9;outline:0;box-shadow:0 0 0 .2rem #2e6ea640}.frg-filter input.is-invalid,.frg-search input.is-invalid{border-color:#d66a6a;padding-right:calc(10px + 2rem);background-image:url(data:image/svg+xml,\\ ...);background-repeat:no-repeat;background-position:center right 5px;background-size:6.6666666667px 6.6666666667px}.frg-filter input.is-invalid:focus,.frg-search input.is-invalid:focus{border-color:#d66a6a;box-shadow:0 0 0 .2rem #da1e2840}.frg-filter input:disabled,.frg-search input:disabled{background-color:#bfbfbf;border-color:#737579}.frg-table-responsive{border:1px solid #e6e9ef;border-radius:.25rem;overflow:hidden;background-color:#fdfdfd}frg-title-bar+.frg-table-responsive{border-top:none;border-radius:0 0 .25rem .25rem}.frg-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.95rem;background-color:#fdfdfd}.frg-table-responsive{border-radius:0 0 .25rem .25rem;border:1px solid #e6e9ef;overflow:hidden;background-color:#fdfdfd}.frg-table td,.frg-table th{text-align:left;padding:.75rem .9rem;border-bottom:1px solid #e6e9ef;vertical-align:middle}.frg-table--row-small td,.frg-table--row-small th{padding:.35rem .6rem}.frg-table--row-medium td,.frg-table--row-medium th{padding:.75rem .9rem}.frg-table--row-large td,.frg-table--row-large th{padding:1rem 1.2rem}.frg-table thead th{background-color:#edf0f6;font-weight:600;color:#1f252e;letter-spacing:.01em;border-bottom:1px solid #e6e9ef}.frg-table tbody tr{transition:background-color .18s ease}.frg-table tbody tr:hover{background-color:#f1f4f9}.frg-table .frg-sorting{position:relative;cursor:pointer;padding-right:1.4rem}.frg-table .frg-sorting:before,.frg-table .frg-sorting:after{content:\"\";position:absolute;right:.65rem;border-left:4px solid transparent;border-right:4px solid transparent;opacity:.5}.frg-table .frg-sorting:before{top:calc(50% - 6px);border-bottom:5px solid currentColor}.frg-table .frg-sorting:after{top:calc(50% + 2px);border-top:5px solid currentColor}.frg-table .frg-sorting-asc:after{opacity:.5}.frg-table .frg-sorting-asc:before{opacity:1}.frg-table .frg-sorting-desc:before{opacity:.5}.frg-table .frg-sorting-desc:after{opacity:1}.frg-table__primary{overflow:hidden}.frg-table__primary thead th,.frg-table__primary.frg-table thead th{background-color:#83b5de;color:#fdfdfd;border-bottom-color:#a1c6e6}.frg-table__primary tbody tr:hover{background-color:#e8f0f8}.frg-table__secondary{overflow:hidden}.frg-table__secondary thead th,.frg-table__secondary.frg-table thead th{background-color:#e9cd8e;color:#fdfdfd;border-bottom-color:#efd9a9}.frg-table__secondary tbody tr:hover{background-color:#faf5e9}.frg-table__tertiary{overflow:hidden}.frg-table__tertiary thead th,.frg-table__tertiary.frg-table thead th{background-color:#de91c7;color:#fdfdfd;border-bottom-color:#e6abd4}.frg-table__tertiary tbody tr:hover{background-color:#f8eaf3}.frg-table__dark{background-color:#3d3d3d;color:#fdfdfd}.frg-table__dark td,.frg-table__dark th{border-bottom-color:#fdfdfd1f}.frg-table__dark thead th{background-color:#505050;color:#fdfdfd;border-bottom-color:#fdfdfd29}.frg-table__dark tbody tr:hover{background-color:#4d4d4d}.frg-table__light,.frg-table__light thead th{background-color:#fdfdfd;color:#3d3d3d}.frg-table__light tbody tr:hover{background-color:#f1f4f9}@media screen and (max-width: 768px){.frg-table-responsive{overflow:auto}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: TitleBarComponent, selector: "frg-title-bar", inputs: ["title", "styleType"] }, { kind: "component", type: SmallPaginationComponent, selector: "frg-small-pagination", inputs: ["totalItems", "fullData", "page", "pageSize", "hasElipsisPages", "styleType"], outputs: ["pageChange"] }, { kind: "directive", type: FragmentsTooltipDirective, selector: "[frgTooltip]", inputs: ["tooltipConfig"] }, { kind: "component", type: ButtonComponent, selector: "frg-button", inputs: ["id", "class", "textClass", "iconClass", "iconStyleType", "iconPosition", "type", "size", "buttonRouterLink", "buttonRouterLinkActive", "disabled", "styleType", "shape", "text", "ariaLabel"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: FieldArrayPositionPipe, name: "fieldArrayPosition" }, { kind: "pipe", type: TypeOfArrayPipe, name: "typeOfArray" }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }, { kind: "pipe", type: DynamicPipe, name: "dynamicPipe" }] }); }
2355
2351
  }
2356
2352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TableComponent, decorators: [{
2357
2353
  type: Component,
@@ -2367,7 +2363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
2367
2363
  FragmentsTooltipDirective,
2368
2364
  ButtonComponent,
2369
2365
  ReactiveFormsModule,
2370
- ], template: "@if (configTable.tTitleBar?.title) {\r\n <frg-title-bar\r\n [title]=\"configTable.tTitleBar?.title ?? ''\"\r\n [styleType]=\"styleType\"\r\n ></frg-title-bar>\r\n}\r\n@if (configTable.tBody.data && configTable.tBody.data.length > 0) {\r\n <div class=\"frg-table-responsive\">\r\n <table\r\n class=\"frg-table\"\r\n id=\"table1\"\r\n [ngClass]=\"{\r\n 'frg-table__primary': styleType === 'primary',\r\n 'frg-table__secondary': styleType === 'secondary',\r\n 'frg-table__tertiary': styleType === 'tertiary',\r\n 'frg-table__dark': styleType === 'dark',\r\n 'frg-table__light': styleType === 'light',\r\n 'frg-table--row-small': rowSize === 'small',\r\n 'frg-table--row-medium': rowSize === 'medium',\r\n 'frg-table--row-large': rowSize === 'large'\r\n }\"\r\n >\r\n @if (configTable.tCaption && configTable.tCaption.srOnly) {\r\n <caption class=\"visually-hidden\">\r\n {{ configTable.tCaption.srOnly }}\r\n </caption>\r\n }\r\n @if (configTable.tHead.columns.length > 0) {\r\n <thead #tableHead>\r\n <tr>\r\n <!--Sort-->\r\n @if (configTable.tHead) {\r\n @for (hColumn of configTable.tHead.columns; track $index) {\r\n @if (hColumn.fieldOrder) {\r\n <th\r\n scope=\"col\"\r\n [tabindex]=\"hColumn.fieldOrder ? 0 : null\"\r\n [attr.aria-sort]=\"\r\n !(hColumn.fieldOrder === configTable.tPagination.order)\r\n ? null\r\n : configTable.tPagination.direction ===\r\n EnumDirectionSortTable.asc\r\n ? 'ascending'\r\n : 'descending'\r\n \"\r\n [ngClass]=\"{\r\n 'frg-sorting': hColumn.fieldOrder,\r\n 'frg-sorting-asc':\r\n configTable.tPagination.direction ===\r\n EnumDirectionSortTable.asc &&\r\n hColumn.fieldOrder === configTable.tPagination.order,\r\n 'frg-sorting-desc':\r\n configTable.tPagination.direction ===\r\n EnumDirectionSortTable.desc &&\r\n hColumn.fieldOrder === configTable.tPagination.order\r\n }\"\r\n (click)=\"\r\n hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null\r\n \"\r\n (keydown.enter)=\"\r\n hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null\r\n \"\r\n >\r\n <span>\r\n {{ hColumn.fieldLabel }}\r\n </span>\r\n </th>\r\n } @else {\r\n <th scope=\"col\">\r\n <span>\r\n {{ hColumn.fieldLabel }}\r\n </span>\r\n </th>\r\n }\r\n }\r\n }\r\n <!--End Sort-->\r\n @if (configTable.tHead.action) {\r\n <th\r\n scope=\"col\"\r\n [ngClass]=\"configTable.tHead.action.customClass ?? ''\"\r\n >\r\n {{ configTable.tHead.action.label }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n <tbody>\r\n @for (item of configTable.tBody.data; let i = $index; track $index) {\r\n <tr\r\n [attr.id]=\"i === 0 ? idFirstTr : null\"\r\n [ngClass]=\"\r\n configTable.tBody.rowClick?.behaviourAction?.clickEvent\r\n ? 'cursor-pointer'\r\n : ''\r\n \"\r\n [routerLink]=\"\r\n configTable.tBody.rowClick?.disabled &&\r\n configTable.tBody.rowClick?.disabled(item)\r\n ? null\r\n : configTable.tBody.rowClick?.behaviourAction?.link\r\n ? [\r\n configTable.tBody.rowClick?.behaviourAction?.link\r\n ? configTable.tBody.rowClick?.behaviourAction?.link\r\n : './',\r\n configTable.tBody.rowClick?.behaviourAction\r\n ?.customParamsLink ||\r\n (item | fieldArrayPosition: configTable.tBody.uniqueField)\r\n ]\r\n : null\r\n \"\r\n (click)=\"handleRowClick($event, item)\"\r\n (keyup.enter)=\"handleRowClick($event, item)\"\r\n (keydown)=\"handleRowClick($event, item)\"\r\n >\r\n @for (column of configTable.tBody.columns; let i = $index; track $index) {\r\n <td>\r\n <div [ngClass]=\"column.customClass\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n (column.cells | typeOfArray) ? cellForTpl : cellTpl\r\n \"\r\n [ngTemplateOutletContext]=\"{\r\n cells: column.cells,\r\n item: item\r\n }\"\r\n ></ng-container>\r\n </div>\r\n </td>\r\n }\r\n @if (configTable.tBody.action ?? false) {\r\n <td\r\n class=\"table-action\"\r\n [ngClass]=\"configTable.tBody.action?.customClasses ?? ''\"\r\n >\r\n @for (act of configTable.tBody.action?.buttons ?? []; track $index) {\r\n @if (act.visible && act.visible(item) ? true : null) {\r\n <frg-button\r\n [ariaLabel]=\"act.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"act.iconClass ? act.iconClass(item) : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n act.tooltip &&\r\n act.tooltip.apply &&\r\n act.visible &&\r\n act.visible(item)\r\n ? act.tooltip.apply\r\n : true,\r\n text:\r\n act.tooltip && act.tooltip.text\r\n ? act.tooltip.text(item)\r\n : '',\r\n textContent:\r\n act.tooltip && act.tooltip.textContent\r\n ? act.tooltip.textContent(item)\r\n : '',\r\n position:\r\n act.tooltip && act.tooltip.position\r\n ? act.tooltip.position\r\n : 'top',\r\n gap: act.tooltip && act.tooltip.gap ? act.tooltip.gap : 0\r\n }\"\r\n [disabled]=\"act.disabled ? act.disabled(item) : null\"\r\n [buttonRouterLink]=\"\r\n act.disabled && act.disabled(item)\r\n ? null\r\n : act.behaviourAction.link\r\n ? [\r\n act.behaviourAction.link\r\n ? act.behaviourAction.link\r\n : './',\r\n act.behaviourAction.customParamsLink ||\r\n (item\r\n | fieldArrayPosition\r\n : configTable.tBody.uniqueField)\r\n ]\r\n : null\r\n \"\r\n (clickEvent)=\"\r\n act.behaviourAction.clickEvent\r\n ? act.behaviourAction.clickEvent(item)\r\n : null\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n @if (configTable.tPagination) {\r\n <frg-small-pagination\r\n [hasElipsisPages]=\"configTable.tPagination.hasElipsisPages ?? false\"\r\n [pageSize]=\"configTable.tPagination.pageSize ?? 10\"\r\n [page]=\"configTable.tPagination.page ?? 0\"\r\n [totalItems]=\"configTable.tPagination.fullData?.length ?? 0\"\r\n [fullData]=\"configTable.tPagination.fullData ?? []\"\r\n [styleType]=\"styleType\"\r\n (pageChange)=\"updateCurrentPage($event)\"\r\n ></frg-small-pagination>\r\n }\r\n} @else {\r\n <div class=\"d-flex justify-content-center my-4\">\r\n <div class=\"text-center\">No Elements</div>\r\n </div>\r\n}\r\n\r\n<ng-template #cellForTpl let-cells=\"cells\" let-item=\"item\">\r\n @for (cell of $any(cells); track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"cellTpl\"\r\n [ngTemplateOutletContext]=\"{\r\n cell: cell,\r\n item: item\r\n }\"\r\n ></ng-container>\r\n <br />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-cell=\"cells\" let-item=\"item\">\r\n @if (!cell.fieldPipe) {\r\n @if (\r\n cell.icon &&\r\n cell.icon.position !== 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n <span [ngClass]=\"cell.customClass ? cell.customClass(item) : ''\">\r\n {{ item | fieldArrayPosition: cell.fieldArrayPosition }}\r\n </span>\r\n @if (\r\n cell.icon &&\r\n cell.icon.position === 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n } @else {\r\n @if (\r\n cell.icon &&\r\n cell.icon.position !== 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n <span\r\n [innerHtml]=\"\r\n item\r\n | fieldArrayPosition: cell.fieldArrayPosition\r\n | dynamicPipe: cell.fieldPipe.type : cell.fieldPipe.args\r\n | safeHtml\r\n \"\r\n [ngClass]=\"cell.customClass ? cell.customClass(item) : ''\"\r\n ></span>\r\n @if (\r\n cell.icon &&\r\n cell.icon.position === 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n }\r\n</ng-template>\r\n", styles: [".frg-title-bar{color:#3d3d3d;font-weight:400;font-size:1.25rem;box-shadow:0 2px 4px #0000001a;font-family:Open Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.frg-title-bar__primary{background-color:#4c7aae;color:#fdfdfd}.frg-title-bar__primary .frg-title-bar-title button{color:#4c7aae}.frg-title-bar__primary .frg-title-bar-filter,.frg-title-bar__primary .frg-title-bar-search{background-color:#6ea8d9}.frg-title-bar__secondary{background-color:#c9a24e;color:#fdfdfd}.frg-title-bar__secondary .frg-title-bar-title button{color:#c9a24e}.frg-title-bar__secondary .frg-title-bar-filter,.frg-title-bar__secondary .frg-title-bar-search{background-color:#e6c57a}.frg-title-bar__tertiary{background-color:#b05a99;color:#fdfdfd}.frg-title-bar__tertiary .frg-title-bar-title button{color:#b05a99}.frg-title-bar__tertiary .frg-title-bar-filter,.frg-title-bar__tertiary .frg-title-bar-search{background-color:#d97ebd}.frg-title-bar__dark{background-color:#3d3d3d;color:#fff}.frg-title-bar__light{background-color:#fdfdfd}.frg-title-bar .frg-title-bar-title{padding:15px 25px}.frg-title-bar .frg-title-bar-title button{outline:none;border:none;border-radius:50%;width:25px;height:25px;padding:15px;font-size:1rem}.frg-title-bar .frg-title-bar-title button:focus{color:#3d3d3d;background-color:#fdfdfd;border-color:#6ea8d9;outline:0;outline:3px solid #6ea8d9;box-shadow:none}.frg-title-bar .frg-title-bar-title button:focus-visible{outline-offset:5px}.frg-title-bar .frg-title-bar-filter__container{padding:25px}.frg-title-bar .frg-title-bar-filter label{display:block;font-size:.8rem;font-weight:lighter}.frg-title-bar .frg-title-bar-search__container{padding:25px}.frg-title-bar .frg-title-bar-search label{display:block;font-size:.8rem;font-weight:lighter}.frg-filter label,.frg-search label{display:block;font-size:.875rem;font-weight:400;margin-bottom:.5rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";text-transform:uppercase;letter-spacing:.05rem}.frg-filter input,.frg-search input{display:block;width:100%;padding:10px;font-size:1rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";line-height:1.5;color:#3d3d3d;background-color:#fdfdfd;background-clip:padding-box;border:1px solid rgb(184.7584745763,185.9194915254,188.2415254237);border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.frg-filter input::placeholder,.frg-search input::placeholder{color:#737579;opacity:1}.frg-filter input:focus,.frg-search input:focus{color:#3d3d3d;background-color:#fdfdfd;border-color:#6ea8d9;outline:0;box-shadow:0 0 0 .2rem #2e6ea640}.frg-filter input.is-invalid,.frg-search input.is-invalid{border-color:#d66a6a;padding-right:calc(10px + 2rem);background-image:url(data:image/svg+xml,\\ ...);background-repeat:no-repeat;background-position:center right 5px;background-size:6.6666666667px 6.6666666667px}.frg-filter input.is-invalid:focus,.frg-search input.is-invalid:focus{border-color:#d66a6a;box-shadow:0 0 0 .2rem #da1e2840}.frg-filter input:disabled,.frg-search input:disabled{background-color:#bfbfbf;border-color:#737579}.frg-table-responsive{border:1px solid #e6e9ef;border-radius:.25rem;overflow:hidden;background-color:#fdfdfd}frg-title-bar+.frg-table-responsive{border-top:none;border-radius:0 0 .25rem .25rem}.frg-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.95rem;background-color:#fdfdfd}.frg-table-responsive{border-radius:0 0 .25rem .25rem;border:1px solid #e6e9ef;overflow:hidden;background-color:#fdfdfd}.frg-table td,.frg-table th{text-align:left;padding:.75rem .9rem;border-bottom:1px solid #e6e9ef;vertical-align:middle}.frg-table--row-small td,.frg-table--row-small th{padding:.35rem .6rem}.frg-table--row-medium td,.frg-table--row-medium th{padding:.75rem .9rem}.frg-table--row-large td,.frg-table--row-large th{padding:1rem 1.2rem}.frg-table thead th{background-color:#edf0f6;font-weight:600;color:#1f252e;letter-spacing:.01em;border-bottom:1px solid #e6e9ef}.frg-table tbody tr{transition:background-color .18s ease}.frg-table tbody tr:hover{background-color:#f1f4f9}.frg-table .frg-sorting{position:relative;cursor:pointer;padding-right:1.4rem}.frg-table .frg-sorting:before,.frg-table .frg-sorting:after{content:\"\";position:absolute;right:.65rem;border-left:4px solid transparent;border-right:4px solid transparent;opacity:.5}.frg-table .frg-sorting:before{top:calc(50% - 6px);border-bottom:5px solid currentColor}.frg-table .frg-sorting:after{top:calc(50% + 2px);border-top:5px solid currentColor}.frg-table .frg-sorting-asc:after{opacity:.5}.frg-table .frg-sorting-asc:before{opacity:1}.frg-table .frg-sorting-desc:before{opacity:.5}.frg-table .frg-sorting-desc:after{opacity:1}.frg-table__primary{overflow:hidden}.frg-table__primary thead th,.frg-table__primary.frg-table thead th{background-color:#83b5de;color:#fdfdfd;border-bottom-color:#a1c6e6}.frg-table__primary tbody tr:hover{background-color:#e8f0f8}.frg-table__secondary{overflow:hidden}.frg-table__secondary thead th,.frg-table__secondary.frg-table thead th{background-color:#e9cd8e;color:#fdfdfd;border-bottom-color:#efd9a9}.frg-table__secondary tbody tr:hover{background-color:#faf5e9}.frg-table__tertiary{overflow:hidden}.frg-table__tertiary thead th,.frg-table__tertiary.frg-table thead th{background-color:#de91c7;color:#fdfdfd;border-bottom-color:#e6abd4}.frg-table__tertiary tbody tr:hover{background-color:#f8eaf3}.frg-table__dark{background-color:#3d3d3d;color:#fdfdfd}.frg-table__dark td,.frg-table__dark th{border-bottom-color:#fdfdfd1f}.frg-table__dark thead th{background-color:#505050;color:#fdfdfd;border-bottom-color:#fdfdfd29}.frg-table__dark tbody tr:hover{background-color:#4d4d4d}.frg-table__light,.frg-table__light thead th{background-color:#fdfdfd;color:#3d3d3d}.frg-table__light tbody tr:hover{background-color:#f1f4f9}@media screen and (max-width: 768px){.frg-table-responsive{overflow:auto}}\n"] }]
2366
+ ], template: "@if (configTable.tTitleBar?.title) {\r\n <frg-title-bar\r\n [title]=\"configTable.tTitleBar?.title ?? ''\"\r\n [styleType]=\"styleType\"\r\n ></frg-title-bar>\r\n}\r\n@if (configTable.tBody.data && configTable.tBody.data.length > 0) {\r\n <div class=\"frg-table-responsive\">\r\n <table\r\n class=\"frg-table\"\r\n id=\"table1\"\r\n [ngClass]=\"{\r\n 'frg-table__primary': styleType === 'primary',\r\n 'frg-table__secondary': styleType === 'secondary',\r\n 'frg-table__tertiary': styleType === 'tertiary',\r\n 'frg-table__dark': styleType === 'dark',\r\n 'frg-table__light': styleType === 'light',\r\n 'frg-table--row-small': rowSize === 'small',\r\n 'frg-table--row-medium': rowSize === 'medium',\r\n 'frg-table--row-large': rowSize === 'large'\r\n }\"\r\n >\r\n @if (configTable.tCaption && configTable.tCaption.srOnly) {\r\n <caption class=\"frg-visually-hidden\">\r\n {{ configTable.tCaption.srOnly }}\r\n </caption>\r\n }\r\n @if (configTable.tHead.columns.length > 0) {\r\n <thead #tableHead>\r\n <tr>\r\n <!--Sort-->\r\n @if (configTable.tHead) {\r\n @for (hColumn of configTable.tHead.columns; track $index) {\r\n @if (hColumn.fieldOrder) {\r\n <th\r\n scope=\"col\"\r\n [tabindex]=\"hColumn.fieldOrder ? 0 : null\"\r\n [attr.aria-sort]=\"\r\n !(hColumn.fieldOrder === configTable.tPagination.order)\r\n ? null\r\n : configTable.tPagination.direction ===\r\n EnumDirectionSortTable.asc\r\n ? 'ascending'\r\n : 'descending'\r\n \"\r\n [ngClass]=\"{\r\n 'frg-sorting': hColumn.fieldOrder,\r\n 'frg-sorting-asc':\r\n configTable.tPagination.direction ===\r\n EnumDirectionSortTable.asc &&\r\n hColumn.fieldOrder === configTable.tPagination.order,\r\n 'frg-sorting-desc':\r\n configTable.tPagination.direction ===\r\n EnumDirectionSortTable.desc &&\r\n hColumn.fieldOrder === configTable.tPagination.order\r\n }\"\r\n (click)=\"\r\n hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null\r\n \"\r\n (keydown.enter)=\"\r\n hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null\r\n \"\r\n >\r\n <span>\r\n {{ hColumn.fieldLabel }}\r\n </span>\r\n </th>\r\n } @else {\r\n <th scope=\"col\">\r\n <span>\r\n {{ hColumn.fieldLabel }}\r\n </span>\r\n </th>\r\n }\r\n }\r\n }\r\n <!--End Sort-->\r\n @if (configTable.tHead.action) {\r\n <th\r\n scope=\"col\"\r\n [ngClass]=\"configTable.tHead.action.customClass ?? ''\"\r\n >\r\n {{ configTable.tHead.action.label }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n <tbody>\r\n @for (item of configTable.tBody.data; let i = $index; track $index) {\r\n <tr\r\n [attr.id]=\"i === 0 ? idFirstTr : null\"\r\n [ngClass]=\"\r\n configTable.tBody.rowClick?.behaviourAction?.clickEvent\r\n ? 'cursor-pointer'\r\n : ''\r\n \"\r\n [routerLink]=\"\r\n configTable.tBody.rowClick?.disabled &&\r\n configTable.tBody.rowClick?.disabled(item)\r\n ? null\r\n : configTable.tBody.rowClick?.behaviourAction?.link\r\n ? [\r\n configTable.tBody.rowClick?.behaviourAction?.link\r\n ? configTable.tBody.rowClick?.behaviourAction?.link\r\n : './',\r\n configTable.tBody.rowClick?.behaviourAction\r\n ?.customParamsLink ||\r\n (item | fieldArrayPosition: configTable.tBody.uniqueField)\r\n ]\r\n : null\r\n \"\r\n (click)=\"handleRowClick($event, item)\"\r\n (keyup.enter)=\"handleRowClick($event, item)\"\r\n (keydown)=\"handleRowClick($event, item)\"\r\n >\r\n @for (column of configTable.tBody.columns; let i = $index; track $index) {\r\n <td>\r\n <div [ngClass]=\"column.customClass\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n (column.cells | typeOfArray) ? cellForTpl : cellTpl\r\n \"\r\n [ngTemplateOutletContext]=\"{\r\n cells: column.cells,\r\n item: item\r\n }\"\r\n ></ng-container>\r\n </div>\r\n </td>\r\n }\r\n @if (configTable.tBody.action ?? false) {\r\n <td\r\n class=\"table-action\"\r\n [ngClass]=\"configTable.tBody.action?.customClasses ?? ''\"\r\n >\r\n @for (act of configTable.tBody.action?.buttons ?? []; track $index) {\r\n @if (act.visible && act.visible(item) ? true : null) {\r\n <frg-button\r\n [ariaLabel]=\"act.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"act.iconClass ? act.iconClass(item) : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n act.tooltip &&\r\n act.tooltip.apply &&\r\n act.visible &&\r\n act.visible(item)\r\n ? act.tooltip.apply\r\n : true,\r\n text:\r\n act.tooltip && act.tooltip.text\r\n ? act.tooltip.text(item)\r\n : '',\r\n textContent:\r\n act.tooltip && act.tooltip.textContent\r\n ? act.tooltip.textContent(item)\r\n : '',\r\n position:\r\n act.tooltip && act.tooltip.position\r\n ? act.tooltip.position\r\n : 'top',\r\n gap: act.tooltip && act.tooltip.gap ? act.tooltip.gap : 0\r\n }\"\r\n [disabled]=\"act.disabled ? act.disabled(item) : null\"\r\n [buttonRouterLink]=\"\r\n act.disabled && act.disabled(item)\r\n ? null\r\n : act.behaviourAction.link\r\n ? [\r\n act.behaviourAction.link\r\n ? act.behaviourAction.link\r\n : './',\r\n act.behaviourAction.customParamsLink ||\r\n (item\r\n | fieldArrayPosition\r\n : configTable.tBody.uniqueField)\r\n ]\r\n : null\r\n \"\r\n (clickEvent)=\"\r\n act.behaviourAction.clickEvent\r\n ? act.behaviourAction.clickEvent(item)\r\n : null\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n @if (configTable.tPagination) {\r\n <frg-small-pagination\r\n [hasElipsisPages]=\"configTable.tPagination.hasElipsisPages ?? false\"\r\n [pageSize]=\"configTable.tPagination.pageSize ?? 10\"\r\n [page]=\"configTable.tPagination.page ?? 0\"\r\n [totalItems]=\"configTable.tPagination.fullData?.length ?? 0\"\r\n [fullData]=\"configTable.tPagination.fullData ?? []\"\r\n [styleType]=\"styleType\"\r\n (pageChange)=\"updateCurrentPage($event)\"\r\n ></frg-small-pagination>\r\n }\r\n} @else {\r\n <div class=\"d-flex justify-content-center my-4\">\r\n <div class=\"text-center\">No Elements</div>\r\n </div>\r\n}\r\n\r\n<ng-template #cellForTpl let-cells=\"cells\" let-item=\"item\">\r\n @for (cell of $any(cells); track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"cellTpl\"\r\n [ngTemplateOutletContext]=\"{\r\n cell: cell,\r\n item: item\r\n }\"\r\n ></ng-container>\r\n <br />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-cell=\"cells\" let-item=\"item\">\r\n @if (!cell.fieldPipe) {\r\n @if (\r\n cell.icon &&\r\n cell.icon.position !== 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n <span [ngClass]=\"cell.customClass ? cell.customClass(item) : ''\">\r\n {{ item | fieldArrayPosition: cell.fieldArrayPosition }}\r\n </span>\r\n @if (\r\n cell.icon &&\r\n cell.icon.position === 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n } @else {\r\n @if (\r\n cell.icon &&\r\n cell.icon.position !== 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n <span\r\n [innerHtml]=\"\r\n item\r\n | fieldArrayPosition: cell.fieldArrayPosition\r\n | dynamicPipe: cell.fieldPipe.type : cell.fieldPipe.args\r\n | safeHtml\r\n \"\r\n [ngClass]=\"cell.customClass ? cell.customClass(item) : ''\"\r\n ></span>\r\n @if (\r\n cell.icon &&\r\n cell.icon.position === 'right' &&\r\n cell.icon.action.visible &&\r\n cell.icon.action.visible(item)\r\n ) {\r\n <frg-button\r\n [ariaLabel]=\"cell.icon.ariaLabel || 'Azione'\"\r\n [text]=\"''\"\r\n [iconClass]=\"cell.icon.iconClass ? cell.icon.iconClass : ''\"\r\n [styleType]=\"'icon'\"\r\n [size]=\"'small'\"\r\n frgTooltip\r\n [tooltipConfig]=\"{\r\n apply:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.apply\r\n ? cell.icon.action.tooltip.apply\r\n : true,\r\n text:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.text\r\n ? cell.icon.action.tooltip.text(item)\r\n : '',\r\n textContent:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.textContent\r\n ? cell.icon.action.tooltip.textContent(item)\r\n : '',\r\n position:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.position\r\n ? cell.icon.action.tooltip.position\r\n : 'top',\r\n gap:\r\n cell.icon.action.tooltip && cell.icon.action.tooltip.gap\r\n ? cell.icon.action.tooltip.gap\r\n : 0\r\n }\"\r\n [disabled]=\"\r\n cell.icon.action.disabled\r\n ? cell.icon.action.disabled(item)\r\n : null\r\n \"\r\n (clickEvent)=\"handleIconClick(cell, item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup.enter)=\"$event.stopPropagation()\"\r\n >\r\n </frg-button>\r\n }\r\n }\r\n</ng-template>\r\n", styles: [".frg-title-bar{color:#3d3d3d;font-weight:400;font-size:1.25rem;box-shadow:0 2px 4px #0000001a;font-family:Open Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.frg-title-bar__primary{background-color:#4c7aae;color:#fdfdfd}.frg-title-bar__primary .frg-title-bar-title button{color:#4c7aae}.frg-title-bar__primary .frg-title-bar-filter,.frg-title-bar__primary .frg-title-bar-search{background-color:#6ea8d9}.frg-title-bar__secondary{background-color:#c9a24e;color:#fdfdfd}.frg-title-bar__secondary .frg-title-bar-title button{color:#c9a24e}.frg-title-bar__secondary .frg-title-bar-filter,.frg-title-bar__secondary .frg-title-bar-search{background-color:#e6c57a}.frg-title-bar__tertiary{background-color:#b05a99;color:#fdfdfd}.frg-title-bar__tertiary .frg-title-bar-title button{color:#b05a99}.frg-title-bar__tertiary .frg-title-bar-filter,.frg-title-bar__tertiary .frg-title-bar-search{background-color:#d97ebd}.frg-title-bar__dark{background-color:#3d3d3d;color:#fff}.frg-title-bar__light{background-color:#fdfdfd}.frg-title-bar .frg-title-bar-title{padding:15px 25px}.frg-title-bar .frg-title-bar-title button{outline:none;border:none;border-radius:50%;width:25px;height:25px;padding:15px;font-size:1rem}.frg-title-bar .frg-title-bar-title button:focus{color:#3d3d3d;background-color:#fdfdfd;border-color:#6ea8d9;outline:0;outline:3px solid #6ea8d9;box-shadow:none}.frg-title-bar .frg-title-bar-title button:focus-visible{outline-offset:5px}.frg-title-bar .frg-title-bar-filter__container{padding:25px}.frg-title-bar .frg-title-bar-filter label{display:block;font-size:.8rem;font-weight:lighter}.frg-title-bar .frg-title-bar-search__container{padding:25px}.frg-title-bar .frg-title-bar-search label{display:block;font-size:.8rem;font-weight:lighter}.frg-filter label,.frg-search label{display:block;font-size:.875rem;font-weight:400;margin-bottom:.5rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";text-transform:uppercase;letter-spacing:.05rem}.frg-filter input,.frg-search input{display:block;width:100%;padding:10px;font-size:1rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";line-height:1.5;color:#3d3d3d;background-color:#fdfdfd;background-clip:padding-box;border:1px solid rgb(184.7584745763,185.9194915254,188.2415254237);border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.frg-filter input::placeholder,.frg-search input::placeholder{color:#737579;opacity:1}.frg-filter input:focus,.frg-search input:focus{color:#3d3d3d;background-color:#fdfdfd;border-color:#6ea8d9;outline:0;box-shadow:0 0 0 .2rem #2e6ea640}.frg-filter input.is-invalid,.frg-search input.is-invalid{border-color:#d66a6a;padding-right:calc(10px + 2rem);background-image:url(data:image/svg+xml,\\ ...);background-repeat:no-repeat;background-position:center right 5px;background-size:6.6666666667px 6.6666666667px}.frg-filter input.is-invalid:focus,.frg-search input.is-invalid:focus{border-color:#d66a6a;box-shadow:0 0 0 .2rem #da1e2840}.frg-filter input:disabled,.frg-search input:disabled{background-color:#bfbfbf;border-color:#737579}.frg-table-responsive{border:1px solid #e6e9ef;border-radius:.25rem;overflow:hidden;background-color:#fdfdfd}frg-title-bar+.frg-table-responsive{border-top:none;border-radius:0 0 .25rem .25rem}.frg-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.95rem;background-color:#fdfdfd}.frg-table-responsive{border-radius:0 0 .25rem .25rem;border:1px solid #e6e9ef;overflow:hidden;background-color:#fdfdfd}.frg-table td,.frg-table th{text-align:left;padding:.75rem .9rem;border-bottom:1px solid #e6e9ef;vertical-align:middle}.frg-table--row-small td,.frg-table--row-small th{padding:.35rem .6rem}.frg-table--row-medium td,.frg-table--row-medium th{padding:.75rem .9rem}.frg-table--row-large td,.frg-table--row-large th{padding:1rem 1.2rem}.frg-table thead th{background-color:#edf0f6;font-weight:600;color:#1f252e;letter-spacing:.01em;border-bottom:1px solid #e6e9ef}.frg-table tbody tr{transition:background-color .18s ease}.frg-table tbody tr:hover{background-color:#f1f4f9}.frg-table .frg-sorting{position:relative;cursor:pointer;padding-right:1.4rem}.frg-table .frg-sorting:before,.frg-table .frg-sorting:after{content:\"\";position:absolute;right:.65rem;border-left:4px solid transparent;border-right:4px solid transparent;opacity:.5}.frg-table .frg-sorting:before{top:calc(50% - 6px);border-bottom:5px solid currentColor}.frg-table .frg-sorting:after{top:calc(50% + 2px);border-top:5px solid currentColor}.frg-table .frg-sorting-asc:after{opacity:.5}.frg-table .frg-sorting-asc:before{opacity:1}.frg-table .frg-sorting-desc:before{opacity:.5}.frg-table .frg-sorting-desc:after{opacity:1}.frg-table__primary{overflow:hidden}.frg-table__primary thead th,.frg-table__primary.frg-table thead th{background-color:#83b5de;color:#fdfdfd;border-bottom-color:#a1c6e6}.frg-table__primary tbody tr:hover{background-color:#e8f0f8}.frg-table__secondary{overflow:hidden}.frg-table__secondary thead th,.frg-table__secondary.frg-table thead th{background-color:#e9cd8e;color:#fdfdfd;border-bottom-color:#efd9a9}.frg-table__secondary tbody tr:hover{background-color:#faf5e9}.frg-table__tertiary{overflow:hidden}.frg-table__tertiary thead th,.frg-table__tertiary.frg-table thead th{background-color:#de91c7;color:#fdfdfd;border-bottom-color:#e6abd4}.frg-table__tertiary tbody tr:hover{background-color:#f8eaf3}.frg-table__dark{background-color:#3d3d3d;color:#fdfdfd}.frg-table__dark td,.frg-table__dark th{border-bottom-color:#fdfdfd1f}.frg-table__dark thead th{background-color:#505050;color:#fdfdfd;border-bottom-color:#fdfdfd29}.frg-table__dark tbody tr:hover{background-color:#4d4d4d}.frg-table__light,.frg-table__light thead th{background-color:#fdfdfd;color:#3d3d3d}.frg-table__light tbody tr:hover{background-color:#f1f4f9}@media screen and (max-width: 768px){.frg-table-responsive{overflow:auto}}\n"] }]
2371
2367
  }], propDecorators: { configTable: [{
2372
2368
  type: Input
2373
2369
  }], styleType: [{
@@ -4637,11 +4633,11 @@ class InputCalendarComponent {
4637
4633
  this.hasYearSelectionOpen$.next(false);
4638
4634
  }
4639
4635
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: InputCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4640
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: InputCalendarComponent, isStandalone: true, selector: "frg-input-calendar", inputs: { minDate: "minDate", maxDate: "maxDate", selectedValue: "selectedValue" }, outputs: { selectDate: "selectDate", handleMaxDate: "handleMaxDate", handleMinDate: "handleMinDate" }, ngImport: i0, template: "<div class=\"frg-calendar\" tabindex=\"-1\">\r\n <div class=\"frg-calendar__head\">\r\n <button class=\"frg__\" href=\"javascript:void(0);\" (click)=\"changeMonth(currentMonth - 1)\">\r\n <span class=\"visually-hidden\">Previous Page</span>\r\n <span class=\"fas fa-angle-left\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button class=\"frg-calendar__month\" (click)=\"openMonthSelection()\">\r\n {{month}}\r\n </button>\r\n @if((hasMonthSelectionOpen$ | async)){\r\n <div class=\"frg-date-selection\">\r\n <div class=\"frg-date-selection__month\">\r\n <ul class=\"frg-date-selection__month__list\">\r\n @for(month of months; let i = $index; track $index){\r\n <li class=\"frg-date-selection__month__item-list\"\r\n [class.selected-month]=\"isSelectedYearOrMonth(i + 1, currentMonth)\"\r\n >\r\n <button (click)=\"selectMonth($event, i + 1)\">\r\n {{month}} \r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n <button class=\"frg-calendar__year\" (click)=\"openYearSelection()\">\r\n {{year}}\r\n </button>\r\n @if((hasYearSelectionOpen$ | async)){\r\n <div class=\"frg-date-selection\">\r\n <div class=\"frg-date-selection__year\">\r\n <ul class=\"frg-date-selection__year__list\">\r\n @for(year of years; track $index){\r\n <li class=\"frg-date-selection__year__item-list\"\r\n [class.selected-year]=\"isSelectedYearOrMonth(year, currentYear)\"\r\n >\r\n <button (click)=\"selectYear($event, year)\">\r\n {{year}}\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n <button href=\"javascript:void(0);\" (click)=\"changeMonth(currentMonth + 1)\">\r\n <span class=\"visually-hidden\">Next Page</span>\r\n <span class=\"fas fa-angle-right\" aria-hidden=\"true\"></span>\r\n </button>\r\n </div>\r\n <div class=\"frg-calendar__body\">\r\n <div class=\"frg-calendar__week-day\">\r\n @for (dayName of weekDays; track $index) {\r\n <span>{{dayName}}</span>\r\n }\r\n </div>\r\n @for (week of calendarDays | chunk:7; track $index) {\r\n <div class=\"frg-calendar__week\">\r\n @for (day of week; track $index){\r\n <span class=\"frg-calendar__day\"\r\n [class.other-month]=\"day.getMonth() !== currentMonth - 1\"\r\n [class.current-date]=\"isToday(day)\"\r\n [class.selected-date]=\"isSelected(day, selectedValue)\"\r\n [class.disabled-date]=\"isDisabled(day)\"\r\n >\r\n <button type=\"button\" class=\"frg-calendar__day-button\"\r\n (click)=\"onSelectDate($event, day)\">\r\n {{ day.getDate() }}\r\n </button>\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: [":host{display:block}:host .frg-calendar{display:grid;background-color:#fdfdfd;color:#5e5f62;box-shadow:0 4px 6px #0000000f,0 2px 4px #0000001a;border-radius:.2rem;padding:.5rem;margin-top:.3rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}:host .frg-calendar__head{display:inline-flex;position:relative;align-items:center;justify-content:space-between}:host .frg-calendar__head button{background:transparent;border:none;color:#5e5f62;padding:.25rem}:host .frg-calendar__head button:hover{background:#4c7aae;color:#fdfdfd}:host .frg-calendar__body{display:flex;flex-direction:column;gap:.25rem}:host .frg-calendar__week-day{padding:.25rem 0;font-size:.75rem;text-align:center}:host .frg-calendar__week,:host .frg-calendar__week-day{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}:host .frg-calendar__day{display:flex;justify-content:center;align-items:center;min-height:2rem}:host .frg-calendar__day:hover{background-color:#6ea8d9;color:#fdfdfd;cursor:pointer}:host .frg-calendar__day.current-date{background-color:#b3d1f0;color:#fdfdfd;text-decoration:underline}:host .frg-calendar__day.other-month{opacity:.5}:host .frg-calendar__day.selected-date{background-color:#6ea8d9;color:#fdfdfd}:host .frg-calendar__day.disabled-date,:host .frg-calendar__day.disabled-date button{text-decoration:line-through;pointer-events:none}:host .frg-calendar__day.disabled-date:hover,:host .frg-calendar__day.disabled-date button:hover,:host .frg-calendar__day.disabled-date button button:hover{cursor:not-allowed}:host .frg-calendar__day-button{background:inherit;color:inherit;border:none}:host .frg-date-selection{position:absolute;overflow-y:scroll;max-height:250px;right:1rem;top:2rem;border-radius:.1rem;background:#fdfdfd;box-shadow:0 1px 2px #00000014,0 1px 3px #0000001f;z-index:1;scrollbar-width:thin;scrollbar-color:#6ea8d9 transparent}:host .frg-date-selection__year__list{list-style:none;padding:0}:host .frg-date-selection__year__item-list button{padding:.5rem 1rem;width:100%}:host .frg-date-selection__year__item-list button:hover{background-color:#b3d1f0;color:#fdfdfd;cursor:pointer}:host .frg-date-selection__year__item-list.selected-year{background-color:#6ea8d9;color:#fdfdfd}:host .frg-date-selection__year__item-list.selected-year button{color:#fdfdfd}:host .frg-date-selection__month__list{list-style:none;padding:0}:host .frg-date-selection__month__item-list button{padding:.5rem 1rem;width:100%}:host .frg-date-selection__month__item-list button:hover{background-color:#6ea8d9;color:#fdfdfd;cursor:pointer}:host .frg-date-selection__month__item-list.selected-month{background-color:#6ea8d9;color:#fdfdfd}:host .frg-date-selection__month__item-list.selected-month button{color:#fdfdfd}\n"], dependencies: [{ kind: "pipe", type: ChunkPipe, name: "chunk" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
4636
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: InputCalendarComponent, isStandalone: true, selector: "frg-input-calendar", inputs: { minDate: "minDate", maxDate: "maxDate", selectedValue: "selectedValue" }, outputs: { selectDate: "selectDate", handleMaxDate: "handleMaxDate", handleMinDate: "handleMinDate" }, ngImport: i0, template: "<div class=\"frg-calendar\" tabindex=\"-1\">\r\n <div class=\"frg-calendar__head\">\r\n <button class=\"frg__\" href=\"javascript:void(0);\" (click)=\"changeMonth(currentMonth - 1)\">\r\n <span class=\"frg-visually-hidden\">Previous Page</span>\r\n <span class=\"fas fa-angle-left\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button class=\"frg-calendar__month\" (click)=\"openMonthSelection()\">\r\n {{month}}\r\n </button>\r\n @if((hasMonthSelectionOpen$ | async)){\r\n <div class=\"frg-date-selection\">\r\n <div class=\"frg-date-selection__month\">\r\n <ul class=\"frg-date-selection__month__list\">\r\n @for(month of months; let i = $index; track $index){\r\n <li class=\"frg-date-selection__month__item-list\"\r\n [class.selected-month]=\"isSelectedYearOrMonth(i + 1, currentMonth)\"\r\n >\r\n <button (click)=\"selectMonth($event, i + 1)\">\r\n {{month}} \r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n <button class=\"frg-calendar__year\" (click)=\"openYearSelection()\">\r\n {{year}}\r\n </button>\r\n @if((hasYearSelectionOpen$ | async)){\r\n <div class=\"frg-date-selection\">\r\n <div class=\"frg-date-selection__year\">\r\n <ul class=\"frg-date-selection__year__list\">\r\n @for(year of years; track $index){\r\n <li class=\"frg-date-selection__year__item-list\"\r\n [class.selected-year]=\"isSelectedYearOrMonth(year, currentYear)\"\r\n >\r\n <button (click)=\"selectYear($event, year)\">\r\n {{year}}\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n <button href=\"javascript:void(0);\" (click)=\"changeMonth(currentMonth + 1)\">\r\n <span class=\"frg-visually-hidden\">Next Page</span>\r\n <span class=\"fas fa-angle-right\" aria-hidden=\"true\"></span>\r\n </button>\r\n </div>\r\n <div class=\"frg-calendar__body\">\r\n <div class=\"frg-calendar__week-day\">\r\n @for (dayName of weekDays; track $index) {\r\n <span>{{dayName}}</span>\r\n }\r\n </div>\r\n @for (week of calendarDays | chunk:7; track $index) {\r\n <div class=\"frg-calendar__week\">\r\n @for (day of week; track $index){\r\n <span class=\"frg-calendar__day\"\r\n [class.other-month]=\"day.getMonth() !== currentMonth - 1\"\r\n [class.current-date]=\"isToday(day)\"\r\n [class.selected-date]=\"isSelected(day, selectedValue)\"\r\n [class.disabled-date]=\"isDisabled(day)\"\r\n >\r\n <button type=\"button\" class=\"frg-calendar__day-button\"\r\n (click)=\"onSelectDate($event, day)\">\r\n {{ day.getDate() }}\r\n </button>\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: [":host{display:block}:host .frg-calendar{display:grid;background-color:#fdfdfd;color:#5e5f62;box-shadow:0 4px 6px #0000000f,0 2px 4px #0000001a;border-radius:.2rem;padding:.5rem;margin-top:.3rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}:host .frg-calendar__head{display:inline-flex;position:relative;align-items:center;justify-content:space-between}:host .frg-calendar__head button{background:transparent;border:none;color:#5e5f62;padding:.25rem}:host .frg-calendar__head button:hover{background:#4c7aae;color:#fdfdfd}:host .frg-calendar__body{display:flex;flex-direction:column;gap:.25rem}:host .frg-calendar__week-day{padding:.25rem 0;font-size:.75rem;text-align:center}:host .frg-calendar__week,:host .frg-calendar__week-day{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}:host .frg-calendar__day{display:flex;justify-content:center;align-items:center;min-height:2rem}:host .frg-calendar__day:hover{background-color:#6ea8d9;color:#fdfdfd;cursor:pointer}:host .frg-calendar__day.current-date{background-color:#b3d1f0;color:#fdfdfd;text-decoration:underline}:host .frg-calendar__day.other-month{opacity:.5}:host .frg-calendar__day.selected-date{background-color:#6ea8d9;color:#fdfdfd}:host .frg-calendar__day.disabled-date,:host .frg-calendar__day.disabled-date button{text-decoration:line-through;pointer-events:none}:host .frg-calendar__day.disabled-date:hover,:host .frg-calendar__day.disabled-date button:hover,:host .frg-calendar__day.disabled-date button button:hover{cursor:not-allowed}:host .frg-calendar__day-button{background:inherit;color:inherit;border:none}:host .frg-date-selection{position:absolute;overflow-y:scroll;max-height:250px;right:1rem;top:2rem;border-radius:.1rem;background:#fdfdfd;box-shadow:0 1px 2px #00000014,0 1px 3px #0000001f;z-index:1;scrollbar-width:thin;scrollbar-color:#6ea8d9 transparent}:host .frg-date-selection__year__list{list-style:none;padding:0}:host .frg-date-selection__year__item-list button{padding:.5rem 1rem;width:100%}:host .frg-date-selection__year__item-list button:hover{background-color:#b3d1f0;color:#fdfdfd;cursor:pointer}:host .frg-date-selection__year__item-list.selected-year{background-color:#6ea8d9;color:#fdfdfd}:host .frg-date-selection__year__item-list.selected-year button{color:#fdfdfd}:host .frg-date-selection__month__list{list-style:none;padding:0}:host .frg-date-selection__month__item-list button{padding:.5rem 1rem;width:100%}:host .frg-date-selection__month__item-list button:hover{background-color:#6ea8d9;color:#fdfdfd;cursor:pointer}:host .frg-date-selection__month__item-list.selected-month{background-color:#6ea8d9;color:#fdfdfd}:host .frg-date-selection__month__item-list.selected-month button{color:#fdfdfd}\n"], dependencies: [{ kind: "pipe", type: ChunkPipe, name: "chunk" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
4641
4637
  }
4642
4638
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: InputCalendarComponent, decorators: [{
4643
4639
  type: Component,
4644
- args: [{ selector: 'frg-input-calendar', imports: [ChunkPipe, AsyncPipe], template: "<div class=\"frg-calendar\" tabindex=\"-1\">\r\n <div class=\"frg-calendar__head\">\r\n <button class=\"frg__\" href=\"javascript:void(0);\" (click)=\"changeMonth(currentMonth - 1)\">\r\n <span class=\"visually-hidden\">Previous Page</span>\r\n <span class=\"fas fa-angle-left\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button class=\"frg-calendar__month\" (click)=\"openMonthSelection()\">\r\n {{month}}\r\n </button>\r\n @if((hasMonthSelectionOpen$ | async)){\r\n <div class=\"frg-date-selection\">\r\n <div class=\"frg-date-selection__month\">\r\n <ul class=\"frg-date-selection__month__list\">\r\n @for(month of months; let i = $index; track $index){\r\n <li class=\"frg-date-selection__month__item-list\"\r\n [class.selected-month]=\"isSelectedYearOrMonth(i + 1, currentMonth)\"\r\n >\r\n <button (click)=\"selectMonth($event, i + 1)\">\r\n {{month}} \r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n <button class=\"frg-calendar__year\" (click)=\"openYearSelection()\">\r\n {{year}}\r\n </button>\r\n @if((hasYearSelectionOpen$ | async)){\r\n <div class=\"frg-date-selection\">\r\n <div class=\"frg-date-selection__year\">\r\n <ul class=\"frg-date-selection__year__list\">\r\n @for(year of years; track $index){\r\n <li class=\"frg-date-selection__year__item-list\"\r\n [class.selected-year]=\"isSelectedYearOrMonth(year, currentYear)\"\r\n >\r\n <button (click)=\"selectYear($event, year)\">\r\n {{year}}\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n <button href=\"javascript:void(0);\" (click)=\"changeMonth(currentMonth + 1)\">\r\n <span class=\"visually-hidden\">Next Page</span>\r\n <span class=\"fas fa-angle-right\" aria-hidden=\"true\"></span>\r\n </button>\r\n </div>\r\n <div class=\"frg-calendar__body\">\r\n <div class=\"frg-calendar__week-day\">\r\n @for (dayName of weekDays; track $index) {\r\n <span>{{dayName}}</span>\r\n }\r\n </div>\r\n @for (week of calendarDays | chunk:7; track $index) {\r\n <div class=\"frg-calendar__week\">\r\n @for (day of week; track $index){\r\n <span class=\"frg-calendar__day\"\r\n [class.other-month]=\"day.getMonth() !== currentMonth - 1\"\r\n [class.current-date]=\"isToday(day)\"\r\n [class.selected-date]=\"isSelected(day, selectedValue)\"\r\n [class.disabled-date]=\"isDisabled(day)\"\r\n >\r\n <button type=\"button\" class=\"frg-calendar__day-button\"\r\n (click)=\"onSelectDate($event, day)\">\r\n {{ day.getDate() }}\r\n </button>\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: [":host{display:block}:host .frg-calendar{display:grid;background-color:#fdfdfd;color:#5e5f62;box-shadow:0 4px 6px #0000000f,0 2px 4px #0000001a;border-radius:.2rem;padding:.5rem;margin-top:.3rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}:host .frg-calendar__head{display:inline-flex;position:relative;align-items:center;justify-content:space-between}:host .frg-calendar__head button{background:transparent;border:none;color:#5e5f62;padding:.25rem}:host .frg-calendar__head button:hover{background:#4c7aae;color:#fdfdfd}:host .frg-calendar__body{display:flex;flex-direction:column;gap:.25rem}:host .frg-calendar__week-day{padding:.25rem 0;font-size:.75rem;text-align:center}:host .frg-calendar__week,:host .frg-calendar__week-day{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}:host .frg-calendar__day{display:flex;justify-content:center;align-items:center;min-height:2rem}:host .frg-calendar__day:hover{background-color:#6ea8d9;color:#fdfdfd;cursor:pointer}:host .frg-calendar__day.current-date{background-color:#b3d1f0;color:#fdfdfd;text-decoration:underline}:host .frg-calendar__day.other-month{opacity:.5}:host .frg-calendar__day.selected-date{background-color:#6ea8d9;color:#fdfdfd}:host .frg-calendar__day.disabled-date,:host .frg-calendar__day.disabled-date button{text-decoration:line-through;pointer-events:none}:host .frg-calendar__day.disabled-date:hover,:host .frg-calendar__day.disabled-date button:hover,:host .frg-calendar__day.disabled-date button button:hover{cursor:not-allowed}:host .frg-calendar__day-button{background:inherit;color:inherit;border:none}:host .frg-date-selection{position:absolute;overflow-y:scroll;max-height:250px;right:1rem;top:2rem;border-radius:.1rem;background:#fdfdfd;box-shadow:0 1px 2px #00000014,0 1px 3px #0000001f;z-index:1;scrollbar-width:thin;scrollbar-color:#6ea8d9 transparent}:host .frg-date-selection__year__list{list-style:none;padding:0}:host .frg-date-selection__year__item-list button{padding:.5rem 1rem;width:100%}:host .frg-date-selection__year__item-list button:hover{background-color:#b3d1f0;color:#fdfdfd;cursor:pointer}:host .frg-date-selection__year__item-list.selected-year{background-color:#6ea8d9;color:#fdfdfd}:host .frg-date-selection__year__item-list.selected-year button{color:#fdfdfd}:host .frg-date-selection__month__list{list-style:none;padding:0}:host .frg-date-selection__month__item-list button{padding:.5rem 1rem;width:100%}:host .frg-date-selection__month__item-list button:hover{background-color:#6ea8d9;color:#fdfdfd;cursor:pointer}:host .frg-date-selection__month__item-list.selected-month{background-color:#6ea8d9;color:#fdfdfd}:host .frg-date-selection__month__item-list.selected-month button{color:#fdfdfd}\n"] }]
4640
+ args: [{ selector: 'frg-input-calendar', imports: [ChunkPipe, AsyncPipe], template: "<div class=\"frg-calendar\" tabindex=\"-1\">\r\n <div class=\"frg-calendar__head\">\r\n <button class=\"frg__\" href=\"javascript:void(0);\" (click)=\"changeMonth(currentMonth - 1)\">\r\n <span class=\"frg-visually-hidden\">Previous Page</span>\r\n <span class=\"fas fa-angle-left\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button class=\"frg-calendar__month\" (click)=\"openMonthSelection()\">\r\n {{month}}\r\n </button>\r\n @if((hasMonthSelectionOpen$ | async)){\r\n <div class=\"frg-date-selection\">\r\n <div class=\"frg-date-selection__month\">\r\n <ul class=\"frg-date-selection__month__list\">\r\n @for(month of months; let i = $index; track $index){\r\n <li class=\"frg-date-selection__month__item-list\"\r\n [class.selected-month]=\"isSelectedYearOrMonth(i + 1, currentMonth)\"\r\n >\r\n <button (click)=\"selectMonth($event, i + 1)\">\r\n {{month}} \r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n <button class=\"frg-calendar__year\" (click)=\"openYearSelection()\">\r\n {{year}}\r\n </button>\r\n @if((hasYearSelectionOpen$ | async)){\r\n <div class=\"frg-date-selection\">\r\n <div class=\"frg-date-selection__year\">\r\n <ul class=\"frg-date-selection__year__list\">\r\n @for(year of years; track $index){\r\n <li class=\"frg-date-selection__year__item-list\"\r\n [class.selected-year]=\"isSelectedYearOrMonth(year, currentYear)\"\r\n >\r\n <button (click)=\"selectYear($event, year)\">\r\n {{year}}\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n <button href=\"javascript:void(0);\" (click)=\"changeMonth(currentMonth + 1)\">\r\n <span class=\"frg-visually-hidden\">Next Page</span>\r\n <span class=\"fas fa-angle-right\" aria-hidden=\"true\"></span>\r\n </button>\r\n </div>\r\n <div class=\"frg-calendar__body\">\r\n <div class=\"frg-calendar__week-day\">\r\n @for (dayName of weekDays; track $index) {\r\n <span>{{dayName}}</span>\r\n }\r\n </div>\r\n @for (week of calendarDays | chunk:7; track $index) {\r\n <div class=\"frg-calendar__week\">\r\n @for (day of week; track $index){\r\n <span class=\"frg-calendar__day\"\r\n [class.other-month]=\"day.getMonth() !== currentMonth - 1\"\r\n [class.current-date]=\"isToday(day)\"\r\n [class.selected-date]=\"isSelected(day, selectedValue)\"\r\n [class.disabled-date]=\"isDisabled(day)\"\r\n >\r\n <button type=\"button\" class=\"frg-calendar__day-button\"\r\n (click)=\"onSelectDate($event, day)\">\r\n {{ day.getDate() }}\r\n </button>\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: [":host{display:block}:host .frg-calendar{display:grid;background-color:#fdfdfd;color:#5e5f62;box-shadow:0 4px 6px #0000000f,0 2px 4px #0000001a;border-radius:.2rem;padding:.5rem;margin-top:.3rem;font-family:Open Sans,Roboto,system-ui,-apple-system,Segoe UI,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}:host .frg-calendar__head{display:inline-flex;position:relative;align-items:center;justify-content:space-between}:host .frg-calendar__head button{background:transparent;border:none;color:#5e5f62;padding:.25rem}:host .frg-calendar__head button:hover{background:#4c7aae;color:#fdfdfd}:host .frg-calendar__body{display:flex;flex-direction:column;gap:.25rem}:host .frg-calendar__week-day{padding:.25rem 0;font-size:.75rem;text-align:center}:host .frg-calendar__week,:host .frg-calendar__week-day{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}:host .frg-calendar__day{display:flex;justify-content:center;align-items:center;min-height:2rem}:host .frg-calendar__day:hover{background-color:#6ea8d9;color:#fdfdfd;cursor:pointer}:host .frg-calendar__day.current-date{background-color:#b3d1f0;color:#fdfdfd;text-decoration:underline}:host .frg-calendar__day.other-month{opacity:.5}:host .frg-calendar__day.selected-date{background-color:#6ea8d9;color:#fdfdfd}:host .frg-calendar__day.disabled-date,:host .frg-calendar__day.disabled-date button{text-decoration:line-through;pointer-events:none}:host .frg-calendar__day.disabled-date:hover,:host .frg-calendar__day.disabled-date button:hover,:host .frg-calendar__day.disabled-date button button:hover{cursor:not-allowed}:host .frg-calendar__day-button{background:inherit;color:inherit;border:none}:host .frg-date-selection{position:absolute;overflow-y:scroll;max-height:250px;right:1rem;top:2rem;border-radius:.1rem;background:#fdfdfd;box-shadow:0 1px 2px #00000014,0 1px 3px #0000001f;z-index:1;scrollbar-width:thin;scrollbar-color:#6ea8d9 transparent}:host .frg-date-selection__year__list{list-style:none;padding:0}:host .frg-date-selection__year__item-list button{padding:.5rem 1rem;width:100%}:host .frg-date-selection__year__item-list button:hover{background-color:#b3d1f0;color:#fdfdfd;cursor:pointer}:host .frg-date-selection__year__item-list.selected-year{background-color:#6ea8d9;color:#fdfdfd}:host .frg-date-selection__year__item-list.selected-year button{color:#fdfdfd}:host .frg-date-selection__month__list{list-style:none;padding:0}:host .frg-date-selection__month__item-list button{padding:.5rem 1rem;width:100%}:host .frg-date-selection__month__item-list button:hover{background-color:#6ea8d9;color:#fdfdfd;cursor:pointer}:host .frg-date-selection__month__item-list.selected-month{background-color:#6ea8d9;color:#fdfdfd}:host .frg-date-selection__month__item-list.selected-month button{color:#fdfdfd}\n"] }]
4645
4641
  }], propDecorators: { minDate: [{
4646
4642
  type: Input
4647
4643
  }], maxDate: [{
package/index.d.ts CHANGED
@@ -792,9 +792,10 @@ declare class BlobMorphComponent extends MorphBase implements AfterViewInit {
792
792
  protected generateRandomPath(points?: number, radius?: number, variability?: number): string;
793
793
  onLoadEvent(): void;
794
794
  static ɵfac: i0.ɵɵFactoryDeclaration<BlobMorphComponent, never>;
795
- static ɵcmp: i0.ɵɵComponentDeclaration<BlobMorphComponent, "app-blob-morph", never, { "imageUrl": { "alias": "imageUrl"; "required": false; }; "fillColor": { "alias": "fillColor"; "required": false; }; "pathStart": { "alias": "pathStart"; "required": false; }; "pathEnd": { "alias": "pathEnd"; "required": false; }; "duration": { "alias": "duration"; "required": false; }; }, { "loadEvent": "loadEvent"; }, never, never, true, never>;
795
+ static ɵcmp: i0.ɵɵComponentDeclaration<BlobMorphComponent, "frg-blob-morph", never, { "imageUrl": { "alias": "imageUrl"; "required": false; }; "fillColor": { "alias": "fillColor"; "required": false; }; "pathStart": { "alias": "pathStart"; "required": false; }; "pathEnd": { "alias": "pathEnd"; "required": false; }; "duration": { "alias": "duration"; "required": false; }; }, { "loadEvent": "loadEvent"; }, never, never, true, never>;
796
796
  }
797
797
 
798
+ type SizeValue = number | string | null;
798
799
  interface Sparkle {
799
800
  x: number;
800
801
  y: number;
@@ -804,9 +805,10 @@ interface Sparkle {
804
805
  driftX: number;
805
806
  driftY: number;
806
807
  }
808
+
807
809
  declare class SparkleFieldComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {
808
- width: number | string;
809
- height: number | string;
810
+ width: SizeValue;
811
+ height: SizeValue;
810
812
  count: number;
811
813
  minSize: number;
812
814
  maxSize: number;
@@ -817,23 +819,22 @@ declare class SparkleFieldComponent implements OnInit, OnChanges, AfterViewInit,
817
819
  color: string | null;
818
820
  sparkles: Sparkle[];
819
821
  sparkleRefs: QueryList<ElementRef<HTMLSpanElement>>;
820
- private sparkleAnimations;
821
- private sparkleChangesSub;
822
+ private animations;
823
+ private changesSub;
822
824
  private readonly fallbackWidth;
823
825
  private readonly fallbackHeight;
824
- get hostWidth(): string;
825
- get hostHeight(): string;
826
+ get hostWidth(): string | null;
827
+ get hostHeight(): string | null;
826
828
  get hostMinWidth(): string | null;
827
829
  get hostMinHeight(): string | null;
830
+ get hostColor(): string | null;
828
831
  ngOnInit(): void;
829
832
  ngOnChanges(changes: SimpleChanges): void;
830
833
  ngAfterViewInit(): void;
831
834
  ngOnDestroy(): void;
832
835
  private buildSparkles;
833
836
  private restartAnimation;
834
- private randomInRange;
835
- get widthStyle(): string;
836
- get heightStyle(): string;
837
+ private rand;
837
838
  private formatSize;
838
839
  private needsMinSize;
839
840
  static ɵfac: i0.ɵɵFactoryDeclaration<SparkleFieldComponent, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tacdaed/fragments",
3
- "version": "1.0.0-beta.6",
3
+ "version": "1.0.0-beta.8",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.2.0",
6
6
  "@angular/core": "^20.2.0",