@ngstarter-ui/components 21.0.22 → 21.0.23

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.
@@ -8362,8 +8362,7 @@
8362
8362
  "cssTokens": [
8363
8363
  "--ngs-color-neutral-100",
8364
8364
  "--ngs-color-neutral-950",
8365
- "--ngs-font-size-sm",
8366
- "--ngs-radius-xl"
8365
+ "--ngs-font-size-sm"
8367
8366
  ],
8368
8367
  "example": null
8369
8368
  },
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, NgZone, Renderer2, input, numberAttribute, output, computed, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { inject, ElementRef, NgZone, Renderer2, input, numberAttribute, output, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
 
4
4
  class ProgressBar {
5
5
  _elementRef = inject(ElementRef);
@@ -42,11 +42,11 @@ class ProgressBar {
42
42
  }
43
43
  };
44
44
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: ProgressBar, isStandalone: true, selector: "ngs-progress-bar", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, bufferValue: { classPropertyName: "bufferValue", publicName: "bufferValue", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { animationEnd: "animationEnd" }, host: { attributes: { "role": "progressbar", "aria-valuemin": "0", "aria-valuemax": "100", "tabindex": "-1" }, properties: { "attr.aria-valuenow": "isIndeterminate() ? null : value()", "attr.mode": "mode()", "class.ngs-progress-bar-indeterminate": "isIndeterminate()", "style.--ngs-progress-bar-value": "value()", "style.--ngs-progress-bar-buffer-value": "bufferValue()" }, classAttribute: "ngs-progress-bar" }, exportAs: ["ngsProgressBar"], ngImport: i0, template: "@if (mode() === 'buffer') {\n <div class=\"ngs-progress-bar-track\"></div>\n <div class=\"ngs-progress-bar-buffer-bar\" [style.transform]=\"bufferBarTransform()\"></div>\n} @else {\n <div class=\"ngs-progress-bar-track\"></div>\n}\n\n<div class=\"ngs-progress-bar-primary-bar\" [style.transform]=\"primaryBarTransform()\">\n <span class=\"ngs-progress-bar-inner\"></span>\n</div>\n\n@if (isIndeterminate()) {\n <div class=\"ngs-progress-bar-secondary-bar\">\n <span class=\"ngs-progress-bar-inner\"></span>\n </div>\n}\n", styles: [".ngs-progress-bar{--ngs-progress-bar-height: 4px;--ngs-progress-bar-track-color: var(--ngs-color-surface-container-highest);--ngs-progress-bar-indicator-color: var(--ngs-color-primary);--ngs-progress-bar-animation-multiplier: 1;display:block;position:relative;height:var(--ngs-progress-bar-height);overflow:hidden;width:100%;transform:translateZ(0);transition:opacity .25s linear}.ngs-progress-bar[mode=query]{transform:rotate(180deg)}.ngs-progress-bar[mode=buffer] .ngs-progress-bar-track{background-image:radial-gradient(circle,var(--ngs-progress-bar-track-color) calc(var(--ngs-progress-bar-height) / 2),transparent 0);background-repeat:repeat-x;background-size:calc(var(--ngs-progress-bar-height) / 2 * 5) var(--ngs-progress-bar-height);background-position:left;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering calc(.25s * var(--ngs-progress-bar-animation-multiplier)) infinite linear;background-color:transparent}.ngs-progress-bar-track,.ngs-progress-bar-buffer-bar,.ngs-progress-bar-primary-bar,.ngs-progress-bar-secondary-bar{position:absolute;inset:0}.ngs-progress-bar-track{background:var(--ngs-progress-bar-track-color)}.ngs-progress-bar-buffer-bar{background:var(--ngs-progress-bar-track-color);opacity:.25;transform-origin:top left;transition:transform .25s linear}.ngs-progress-bar-primary-bar,.ngs-progress-bar-secondary-bar{transform-origin:top left;transition:transform .25s linear}.ngs-progress-bar-inner{display:inline-block;position:absolute;width:100%;height:100%;background:var(--ngs-progress-bar-indicator-color)}.ngs-progress-bar-indeterminate .ngs-progress-bar-primary-bar,.ngs-progress-bar[mode=query] .ngs-progress-bar-primary-bar{left:0;animation:ngs-progress-bar-primary-indeterminate-translate 2s infinite linear}.ngs-progress-bar-indeterminate .ngs-progress-bar-primary-bar .ngs-progress-bar-inner,.ngs-progress-bar[mode=query] .ngs-progress-bar-primary-bar .ngs-progress-bar-inner{animation:ngs-progress-bar-primary-indeterminate-scale 2s infinite linear}.ngs-progress-bar-indeterminate .ngs-progress-bar-secondary-bar,.ngs-progress-bar[mode=query] .ngs-progress-bar-secondary-bar{left:0;display:block;animation:ngs-progress-bar-secondary-indeterminate-translate 2s infinite linear}.ngs-progress-bar-indeterminate .ngs-progress-bar-secondary-bar .ngs-progress-bar-inner,.ngs-progress-bar[mode=query] .ngs-progress-bar-secondary-bar .ngs-progress-bar-inner{animation:ngs-progress-bar-secondary-indeterminate-scale 2s infinite linear}.ngs-progress-bar-primary-bar,.ngs-progress-bar-secondary-bar,.ngs-progress-bar-buffer-bar{display:block}@keyframes ngs-progress-bar-primary-indeterminate-translate{0%{transform:translate(-145.166611%)}20%{animation-timing-function:cubic-bezier(.5,0,.701732,.495819);transform:translate(-145.166611%)}59.15%{animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);transform:translate(-61.495191%)}to{transform:translate(55.444446%)}}@keyframes ngs-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(.08)}36.65%{animation-timing-function:cubic-bezier(.334731,.12482,.785844,1);transform:scaleX(.08)}69.15%{animation-timing-function:cubic-bezier(.06,.11,.6,1);transform:scaleX(.661479)}to{transform:scaleX(.08)}}@keyframes ngs-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(.15,0,.515058,.409685);transform:translate(-54.888891%)}25%{animation-timing-function:cubic-bezier(.31033,.284058,.8,.733712);transform:translate(-17.236978%)}48.35%{animation-timing-function:cubic-bezier(.4,.627035,.6,.902026);transform:translate(29.497274%)}to{transform:translate(105.388891%)}}@keyframes ngs-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(.15,0,.515058,.409685);transform:scaleX(.08)}19.15%{animation-timing-function:cubic-bezier(.31033,.284058,.8,.733712);transform:scaleX(.457104)}44.15%{animation-timing-function:cubic-bezier(.4,.627035,.6,.902026);transform:scaleX(.72796)}to{transform:scaleX(.08)}}@keyframes mdc-linear-progress-buffering{to{background-position:calc(var(--ngs-progress-bar-height) / 2 * -5) 0}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: ProgressBar, isStandalone: true, selector: "ngs-progress-bar", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, bufferValue: { classPropertyName: "bufferValue", publicName: "bufferValue", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { animationEnd: "animationEnd" }, host: { attributes: { "role": "progressbar", "aria-valuemin": "0", "aria-valuemax": "100", "tabindex": "-1" }, properties: { "attr.aria-valuenow": "isIndeterminate() ? null : value()", "attr.mode": "mode()", "class.ngs-progress-bar-indeterminate": "isIndeterminate()", "style.--ngs-progress-bar-value": "value()", "style.--ngs-progress-bar-buffer-value": "bufferValue()" }, classAttribute: "ngs-progress-bar" }, exportAs: ["ngsProgressBar"], ngImport: i0, template: "@if (mode() === 'buffer') {\n <div class=\"ngs-progress-bar-track\"></div>\n <div class=\"ngs-progress-bar-buffer-bar\" [style.transform]=\"bufferBarTransform()\"></div>\n} @else {\n <div class=\"ngs-progress-bar-track\"></div>\n}\n\n<div class=\"ngs-progress-bar-primary-bar\" [style.transform]=\"primaryBarTransform()\">\n <span class=\"ngs-progress-bar-inner\"></span>\n</div>\n\n@if (isIndeterminate()) {\n <div class=\"ngs-progress-bar-secondary-bar\">\n <span class=\"ngs-progress-bar-inner\"></span>\n </div>\n}\n", styles: [":host{--ngs-progress-bar-height: 4px;--ngs-progress-bar-track-color: var(--ngs-color-surface-container-highest);--ngs-progress-bar-indicator-color: var(--ngs-color-primary);--ngs-progress-bar-animation-multiplier: 1;display:block;position:relative;height:var(--ngs-progress-bar-height);overflow:hidden;width:100%;transform:translateZ(0);transition:opacity .25s linear}:host[mode=query]{transform:rotate(180deg)}:host[mode=buffer] .ngs-progress-bar-track{background-image:radial-gradient(circle,var(--ngs-progress-bar-track-color) calc(var(--ngs-progress-bar-height) / 2),transparent 0);background-repeat:repeat-x;background-size:calc(var(--ngs-progress-bar-height) / 2 * 5) var(--ngs-progress-bar-height);background-position:left;flex:auto;transform:rotate(180deg);animation:ngs-linear-progress-buffering calc(.25s * var(--ngs-progress-bar-animation-multiplier)) infinite linear;background-color:transparent}:host .ngs-progress-bar-track,:host .ngs-progress-bar-buffer-bar,:host .ngs-progress-bar-primary-bar,:host .ngs-progress-bar-secondary-bar{position:absolute;inset:0}:host .ngs-progress-bar-track{background:var(--ngs-progress-bar-track-color)}:host .ngs-progress-bar-buffer-bar{background:var(--ngs-progress-bar-track-color);opacity:.25;transform-origin:top left;transition:transform .25s linear}:host .ngs-progress-bar-primary-bar,:host .ngs-progress-bar-secondary-bar{transform-origin:top left;transition:transform .25s linear}:host .ngs-progress-bar-inner{display:inline-block;position:absolute;width:100%;height:100%;background:var(--ngs-progress-bar-indicator-color)}:host.ngs-progress-bar-indeterminate .ngs-progress-bar-primary-bar,:host[mode=query] .ngs-progress-bar-primary-bar{left:0;animation:ngs-progress-bar-primary-indeterminate-translate 2s infinite linear}:host.ngs-progress-bar-indeterminate .ngs-progress-bar-primary-bar .ngs-progress-bar-inner,:host[mode=query] .ngs-progress-bar-primary-bar .ngs-progress-bar-inner{animation:ngs-progress-bar-primary-indeterminate-scale 2s infinite linear}:host.ngs-progress-bar-indeterminate .ngs-progress-bar-secondary-bar,:host[mode=query] .ngs-progress-bar-secondary-bar{left:0;display:block;animation:ngs-progress-bar-secondary-indeterminate-translate 2s infinite linear}:host.ngs-progress-bar-indeterminate .ngs-progress-bar-secondary-bar .ngs-progress-bar-inner,:host[mode=query] .ngs-progress-bar-secondary-bar .ngs-progress-bar-inner{animation:ngs-progress-bar-secondary-indeterminate-scale 2s infinite linear}:host .ngs-progress-bar-primary-bar,:host .ngs-progress-bar-secondary-bar,:host .ngs-progress-bar-buffer-bar{display:block}@keyframes ngs-progress-bar-primary-indeterminate-translate{0%{transform:translate(-145.166611%)}20%{animation-timing-function:cubic-bezier(.5,0,.701732,.495819);transform:translate(-145.166611%)}59.15%{animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);transform:translate(-61.495191%)}to{transform:translate(55.444446%)}}@keyframes ngs-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(.08)}36.65%{animation-timing-function:cubic-bezier(.334731,.12482,.785844,1);transform:scaleX(.08)}69.15%{animation-timing-function:cubic-bezier(.06,.11,.6,1);transform:scaleX(.661479)}to{transform:scaleX(.08)}}@keyframes ngs-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(.15,0,.515058,.409685);transform:translate(-54.888891%)}25%{animation-timing-function:cubic-bezier(.31033,.284058,.8,.733712);transform:translate(-17.236978%)}48.35%{animation-timing-function:cubic-bezier(.4,.627035,.6,.902026);transform:translate(29.497274%)}to{transform:translate(105.388891%)}}@keyframes ngs-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(.15,0,.515058,.409685);transform:scaleX(.08)}19.15%{animation-timing-function:cubic-bezier(.31033,.284058,.8,.733712);transform:scaleX(.457104)}44.15%{animation-timing-function:cubic-bezier(.4,.627035,.6,.902026);transform:scaleX(.72796)}to{transform:scaleX(.08)}}@keyframes ngs-linear-progress-buffering{to{background-position:calc(var(--ngs-progress-bar-height) / 2 * -5) 0}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
46
46
  }
47
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ProgressBar, decorators: [{
48
48
  type: Component,
49
- args: [{ selector: 'ngs-progress-bar', exportAs: 'ngsProgressBar', host: {
49
+ args: [{ selector: 'ngs-progress-bar', exportAs: 'ngsProgressBar', changeDetection: ChangeDetectionStrategy.OnPush, host: {
50
50
  'role': 'progressbar',
51
51
  'aria-valuemin': '0',
52
52
  'aria-valuemax': '100',
@@ -57,7 +57,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
57
57
  '[class.ngs-progress-bar-indeterminate]': 'isIndeterminate()',
58
58
  '[style.--ngs-progress-bar-value]': 'value()',
59
59
  '[style.--ngs-progress-bar-buffer-value]': 'bufferValue()',
60
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if (mode() === 'buffer') {\n <div class=\"ngs-progress-bar-track\"></div>\n <div class=\"ngs-progress-bar-buffer-bar\" [style.transform]=\"bufferBarTransform()\"></div>\n} @else {\n <div class=\"ngs-progress-bar-track\"></div>\n}\n\n<div class=\"ngs-progress-bar-primary-bar\" [style.transform]=\"primaryBarTransform()\">\n <span class=\"ngs-progress-bar-inner\"></span>\n</div>\n\n@if (isIndeterminate()) {\n <div class=\"ngs-progress-bar-secondary-bar\">\n <span class=\"ngs-progress-bar-inner\"></span>\n </div>\n}\n", styles: [".ngs-progress-bar{--ngs-progress-bar-height: 4px;--ngs-progress-bar-track-color: var(--ngs-color-surface-container-highest);--ngs-progress-bar-indicator-color: var(--ngs-color-primary);--ngs-progress-bar-animation-multiplier: 1;display:block;position:relative;height:var(--ngs-progress-bar-height);overflow:hidden;width:100%;transform:translateZ(0);transition:opacity .25s linear}.ngs-progress-bar[mode=query]{transform:rotate(180deg)}.ngs-progress-bar[mode=buffer] .ngs-progress-bar-track{background-image:radial-gradient(circle,var(--ngs-progress-bar-track-color) calc(var(--ngs-progress-bar-height) / 2),transparent 0);background-repeat:repeat-x;background-size:calc(var(--ngs-progress-bar-height) / 2 * 5) var(--ngs-progress-bar-height);background-position:left;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering calc(.25s * var(--ngs-progress-bar-animation-multiplier)) infinite linear;background-color:transparent}.ngs-progress-bar-track,.ngs-progress-bar-buffer-bar,.ngs-progress-bar-primary-bar,.ngs-progress-bar-secondary-bar{position:absolute;inset:0}.ngs-progress-bar-track{background:var(--ngs-progress-bar-track-color)}.ngs-progress-bar-buffer-bar{background:var(--ngs-progress-bar-track-color);opacity:.25;transform-origin:top left;transition:transform .25s linear}.ngs-progress-bar-primary-bar,.ngs-progress-bar-secondary-bar{transform-origin:top left;transition:transform .25s linear}.ngs-progress-bar-inner{display:inline-block;position:absolute;width:100%;height:100%;background:var(--ngs-progress-bar-indicator-color)}.ngs-progress-bar-indeterminate .ngs-progress-bar-primary-bar,.ngs-progress-bar[mode=query] .ngs-progress-bar-primary-bar{left:0;animation:ngs-progress-bar-primary-indeterminate-translate 2s infinite linear}.ngs-progress-bar-indeterminate .ngs-progress-bar-primary-bar .ngs-progress-bar-inner,.ngs-progress-bar[mode=query] .ngs-progress-bar-primary-bar .ngs-progress-bar-inner{animation:ngs-progress-bar-primary-indeterminate-scale 2s infinite linear}.ngs-progress-bar-indeterminate .ngs-progress-bar-secondary-bar,.ngs-progress-bar[mode=query] .ngs-progress-bar-secondary-bar{left:0;display:block;animation:ngs-progress-bar-secondary-indeterminate-translate 2s infinite linear}.ngs-progress-bar-indeterminate .ngs-progress-bar-secondary-bar .ngs-progress-bar-inner,.ngs-progress-bar[mode=query] .ngs-progress-bar-secondary-bar .ngs-progress-bar-inner{animation:ngs-progress-bar-secondary-indeterminate-scale 2s infinite linear}.ngs-progress-bar-primary-bar,.ngs-progress-bar-secondary-bar,.ngs-progress-bar-buffer-bar{display:block}@keyframes ngs-progress-bar-primary-indeterminate-translate{0%{transform:translate(-145.166611%)}20%{animation-timing-function:cubic-bezier(.5,0,.701732,.495819);transform:translate(-145.166611%)}59.15%{animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);transform:translate(-61.495191%)}to{transform:translate(55.444446%)}}@keyframes ngs-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(.08)}36.65%{animation-timing-function:cubic-bezier(.334731,.12482,.785844,1);transform:scaleX(.08)}69.15%{animation-timing-function:cubic-bezier(.06,.11,.6,1);transform:scaleX(.661479)}to{transform:scaleX(.08)}}@keyframes ngs-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(.15,0,.515058,.409685);transform:translate(-54.888891%)}25%{animation-timing-function:cubic-bezier(.31033,.284058,.8,.733712);transform:translate(-17.236978%)}48.35%{animation-timing-function:cubic-bezier(.4,.627035,.6,.902026);transform:translate(29.497274%)}to{transform:translate(105.388891%)}}@keyframes ngs-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(.15,0,.515058,.409685);transform:scaleX(.08)}19.15%{animation-timing-function:cubic-bezier(.31033,.284058,.8,.733712);transform:scaleX(.457104)}44.15%{animation-timing-function:cubic-bezier(.4,.627035,.6,.902026);transform:scaleX(.72796)}to{transform:scaleX(.08)}}@keyframes mdc-linear-progress-buffering{to{background-position:calc(var(--ngs-progress-bar-height) / 2 * -5) 0}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
60
+ }, template: "@if (mode() === 'buffer') {\n <div class=\"ngs-progress-bar-track\"></div>\n <div class=\"ngs-progress-bar-buffer-bar\" [style.transform]=\"bufferBarTransform()\"></div>\n} @else {\n <div class=\"ngs-progress-bar-track\"></div>\n}\n\n<div class=\"ngs-progress-bar-primary-bar\" [style.transform]=\"primaryBarTransform()\">\n <span class=\"ngs-progress-bar-inner\"></span>\n</div>\n\n@if (isIndeterminate()) {\n <div class=\"ngs-progress-bar-secondary-bar\">\n <span class=\"ngs-progress-bar-inner\"></span>\n </div>\n}\n", styles: [":host{--ngs-progress-bar-height: 4px;--ngs-progress-bar-track-color: var(--ngs-color-surface-container-highest);--ngs-progress-bar-indicator-color: var(--ngs-color-primary);--ngs-progress-bar-animation-multiplier: 1;display:block;position:relative;height:var(--ngs-progress-bar-height);overflow:hidden;width:100%;transform:translateZ(0);transition:opacity .25s linear}:host[mode=query]{transform:rotate(180deg)}:host[mode=buffer] .ngs-progress-bar-track{background-image:radial-gradient(circle,var(--ngs-progress-bar-track-color) calc(var(--ngs-progress-bar-height) / 2),transparent 0);background-repeat:repeat-x;background-size:calc(var(--ngs-progress-bar-height) / 2 * 5) var(--ngs-progress-bar-height);background-position:left;flex:auto;transform:rotate(180deg);animation:ngs-linear-progress-buffering calc(.25s * var(--ngs-progress-bar-animation-multiplier)) infinite linear;background-color:transparent}:host .ngs-progress-bar-track,:host .ngs-progress-bar-buffer-bar,:host .ngs-progress-bar-primary-bar,:host .ngs-progress-bar-secondary-bar{position:absolute;inset:0}:host .ngs-progress-bar-track{background:var(--ngs-progress-bar-track-color)}:host .ngs-progress-bar-buffer-bar{background:var(--ngs-progress-bar-track-color);opacity:.25;transform-origin:top left;transition:transform .25s linear}:host .ngs-progress-bar-primary-bar,:host .ngs-progress-bar-secondary-bar{transform-origin:top left;transition:transform .25s linear}:host .ngs-progress-bar-inner{display:inline-block;position:absolute;width:100%;height:100%;background:var(--ngs-progress-bar-indicator-color)}:host.ngs-progress-bar-indeterminate .ngs-progress-bar-primary-bar,:host[mode=query] .ngs-progress-bar-primary-bar{left:0;animation:ngs-progress-bar-primary-indeterminate-translate 2s infinite linear}:host.ngs-progress-bar-indeterminate .ngs-progress-bar-primary-bar .ngs-progress-bar-inner,:host[mode=query] .ngs-progress-bar-primary-bar .ngs-progress-bar-inner{animation:ngs-progress-bar-primary-indeterminate-scale 2s infinite linear}:host.ngs-progress-bar-indeterminate .ngs-progress-bar-secondary-bar,:host[mode=query] .ngs-progress-bar-secondary-bar{left:0;display:block;animation:ngs-progress-bar-secondary-indeterminate-translate 2s infinite linear}:host.ngs-progress-bar-indeterminate .ngs-progress-bar-secondary-bar .ngs-progress-bar-inner,:host[mode=query] .ngs-progress-bar-secondary-bar .ngs-progress-bar-inner{animation:ngs-progress-bar-secondary-indeterminate-scale 2s infinite linear}:host .ngs-progress-bar-primary-bar,:host .ngs-progress-bar-secondary-bar,:host .ngs-progress-bar-buffer-bar{display:block}@keyframes ngs-progress-bar-primary-indeterminate-translate{0%{transform:translate(-145.166611%)}20%{animation-timing-function:cubic-bezier(.5,0,.701732,.495819);transform:translate(-145.166611%)}59.15%{animation-timing-function:cubic-bezier(.302435,.381352,.55,.956352);transform:translate(-61.495191%)}to{transform:translate(55.444446%)}}@keyframes ngs-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(.08)}36.65%{animation-timing-function:cubic-bezier(.334731,.12482,.785844,1);transform:scaleX(.08)}69.15%{animation-timing-function:cubic-bezier(.06,.11,.6,1);transform:scaleX(.661479)}to{transform:scaleX(.08)}}@keyframes ngs-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(.15,0,.515058,.409685);transform:translate(-54.888891%)}25%{animation-timing-function:cubic-bezier(.31033,.284058,.8,.733712);transform:translate(-17.236978%)}48.35%{animation-timing-function:cubic-bezier(.4,.627035,.6,.902026);transform:translate(29.497274%)}to{transform:translate(105.388891%)}}@keyframes ngs-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(.15,0,.515058,.409685);transform:scaleX(.08)}19.15%{animation-timing-function:cubic-bezier(.31033,.284058,.8,.733712);transform:scaleX(.457104)}44.15%{animation-timing-function:cubic-bezier(.4,.627035,.6,.902026);transform:scaleX(.72796)}to{transform:scaleX(.08)}}@keyframes ngs-linear-progress-buffering{to{background-position:calc(var(--ngs-progress-bar-height) / 2 * -5) 0}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
61
61
  }], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], bufferValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "bufferValue", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], animationEnd: [{ type: i0.Output, args: ["animationEnd"] }] } });
62
62
 
63
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-progress-bar.mjs","sources":["../../../projects/components/progress-bar/src/progress-bar/progress-bar.ts","../../../projects/components/progress-bar/src/progress-bar/progress-bar.html","../../../projects/components/progress-bar/ngstarter-ui-components-progress-bar.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n input,\n computed,\n AfterViewInit,\n OnDestroy,\n inject,\n ElementRef,\n NgZone,\n Renderer2,\n numberAttribute,\n output\n} from '@angular/core';\n\nexport type ProgressBarMode = 'determinate' | 'indeterminate' | 'buffer' | 'query';\n\n@Component({\n selector: 'ngs-progress-bar',\n templateUrl: './progress-bar.html',\n styleUrl: './progress-bar.scss',\n exportAs: 'ngsProgressBar',\n host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n 'tabindex': '-1',\n '[attr.aria-valuenow]': 'isIndeterminate() ? null : value()',\n '[attr.mode]': 'mode()',\n 'class': 'ngs-progress-bar',\n '[class.ngs-progress-bar-indeterminate]': 'isIndeterminate()',\n '[style.--ngs-progress-bar-value]': 'value()',\n '[style.--ngs-progress-bar-buffer-value]': 'bufferValue()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProgressBar implements AfterViewInit, OnDestroy {\n private readonly _elementRef = inject(ElementRef);\n private readonly _ngZone = inject(NgZone);\n private readonly _renderer = inject(Renderer2);\n\n readonly color = input<string>('primary');\n readonly value = input(0, { transform: numberAttribute });\n readonly bufferValue = input(0, { transform: numberAttribute });\n readonly mode = input<ProgressBarMode>('determinate');\n\n readonly animationEnd = output<{\n value: number;\n}>();\n\n private _cleanupTransitionEnd?: () => void;\n\n readonly isIndeterminate = computed(() => {\n return this.mode() === 'indeterminate' || this.mode() === 'query';\n });\n\n readonly primaryBarTransform = computed(() => {\n return `scaleX(${this.isIndeterminate() ? 1 : this.value() / 100})`;\n });\n\n readonly bufferBarTransform = computed(() => {\n return `scaleX(${this.mode() === 'buffer' ? this.bufferValue() / 100 : 1})`;\n });\n\n /** @deprecated use bufferBarTransform instead */\n readonly bufferBarFlexBasis = computed(() => {\n return this.bufferBarTransform();\n });\n\n ngAfterViewInit() {\n this._ngZone.runOutsideAngular(() => {\n this._cleanupTransitionEnd = this._renderer.listen(\n this._elementRef.nativeElement,\n 'transitionend',\n this._transitionendHandler\n );\n });\n }\n\n ngOnDestroy() {\n this._cleanupTransitionEnd?.();\n }\n\n private _transitionendHandler = (event: TransitionEvent) => {\n if (\n !event.target ||\n !(event.target as HTMLElement).classList.contains('ngs-progress-bar-primary-bar')\n ) {\n return;\n }\n\n if (this.mode() === 'determinate' || this.mode() === 'buffer') {\n this._ngZone.run(() => this.animationEnd.emit({ value: this.value() }));\n }\n };\n}\n","@if (mode() === 'buffer') {\n <div class=\"ngs-progress-bar-track\"></div>\n <div class=\"ngs-progress-bar-buffer-bar\" [style.transform]=\"bufferBarTransform()\"></div>\n} @else {\n <div class=\"ngs-progress-bar-track\"></div>\n}\n\n<div class=\"ngs-progress-bar-primary-bar\" [style.transform]=\"primaryBarTransform()\">\n <span class=\"ngs-progress-bar-inner\"></span>\n</div>\n\n@if (isIndeterminate()) {\n <div class=\"ngs-progress-bar-secondary-bar\">\n <span class=\"ngs-progress-bar-inner\"></span>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-progress-bar.mjs","sources":["../../../projects/components/progress-bar/src/progress-bar/progress-bar.ts","../../../projects/components/progress-bar/src/progress-bar/progress-bar.html","../../../projects/components/progress-bar/ngstarter-ui-components-progress-bar.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n AfterViewInit,\n OnDestroy,\n inject,\n ElementRef,\n NgZone,\n Renderer2,\n numberAttribute,\n output\n} from '@angular/core';\n\nexport type ProgressBarMode = 'determinate' | 'indeterminate' | 'buffer' | 'query';\n\n@Component({\n selector: 'ngs-progress-bar',\n exportAs: 'ngsProgressBar',\n templateUrl: './progress-bar.html',\n styleUrl: './progress-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n 'tabindex': '-1',\n '[attr.aria-valuenow]': 'isIndeterminate() ? null : value()',\n '[attr.mode]': 'mode()',\n 'class': 'ngs-progress-bar',\n '[class.ngs-progress-bar-indeterminate]': 'isIndeterminate()',\n '[style.--ngs-progress-bar-value]': 'value()',\n '[style.--ngs-progress-bar-buffer-value]': 'bufferValue()',\n },\n})\nexport class ProgressBar implements AfterViewInit, OnDestroy {\n private readonly _elementRef = inject(ElementRef);\n private readonly _ngZone = inject(NgZone);\n private readonly _renderer = inject(Renderer2);\n\n readonly color = input<string>('primary');\n readonly value = input(0, { transform: numberAttribute });\n readonly bufferValue = input(0, { transform: numberAttribute });\n readonly mode = input<ProgressBarMode>('determinate');\n\n readonly animationEnd = output<{\n value: number;\n }>();\n\n private _cleanupTransitionEnd?: () => void;\n\n readonly isIndeterminate = computed(() => {\n return this.mode() === 'indeterminate' || this.mode() === 'query';\n });\n\n readonly primaryBarTransform = computed(() => {\n return `scaleX(${this.isIndeterminate() ? 1 : this.value() / 100})`;\n });\n\n readonly bufferBarTransform = computed(() => {\n return `scaleX(${this.mode() === 'buffer' ? this.bufferValue() / 100 : 1})`;\n });\n\n /** @deprecated use bufferBarTransform instead */\n readonly bufferBarFlexBasis = computed(() => {\n return this.bufferBarTransform();\n });\n\n ngAfterViewInit() {\n this._ngZone.runOutsideAngular(() => {\n this._cleanupTransitionEnd = this._renderer.listen(\n this._elementRef.nativeElement,\n 'transitionend',\n this._transitionendHandler\n );\n });\n }\n\n ngOnDestroy() {\n this._cleanupTransitionEnd?.();\n }\n\n private _transitionendHandler = (event: TransitionEvent) => {\n if (\n !event.target ||\n !(event.target as HTMLElement).classList.contains('ngs-progress-bar-primary-bar')\n ) {\n return;\n }\n\n if (this.mode() === 'determinate' || this.mode() === 'buffer') {\n this._ngZone.run(() => this.animationEnd.emit({ value: this.value() }));\n }\n };\n}\n","@if (mode() === 'buffer') {\n <div class=\"ngs-progress-bar-track\"></div>\n <div class=\"ngs-progress-bar-buffer-bar\" [style.transform]=\"bufferBarTransform()\"></div>\n} @else {\n <div class=\"ngs-progress-bar-track\"></div>\n}\n\n<div class=\"ngs-progress-bar-primary-bar\" [style.transform]=\"primaryBarTransform()\">\n <span class=\"ngs-progress-bar-inner\"></span>\n</div>\n\n@if (isIndeterminate()) {\n <div class=\"ngs-progress-bar-secondary-bar\">\n <span class=\"ngs-progress-bar-inner\"></span>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, viewChild, inject, ChangeDetectorRef, PLATFORM_ID, signal, EventEmitter, ViewEncapsulation, ChangeDetectionStrategy, Component, Injector, TemplateRef, Injectable } from '@angular/core';
2
+ import { InjectionToken, viewChild, inject, ChangeDetectorRef, PLATFORM_ID, signal, EventEmitter, ChangeDetectionStrategy, Component, Injector, TemplateRef, Injectable } from '@angular/core';
3
3
  import { Subject } from 'rxjs';
4
4
  import { isPlatformBrowser } from '@angular/common';
5
5
  import { BasePortalOutlet, CdkPortalOutlet, TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
@@ -173,13 +173,13 @@ class SnackBarContainer extends BasePortalOutlet {
173
173
  this._onEnter.complete();
174
174
  }
175
175
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SnackBarContainer, deps: [{ token: SnackBarConfig }], target: i0.ɵɵFactoryTarget.Component });
176
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: SnackBarContainer, isStandalone: true, selector: "ngs-snack-bar-container", host: { classAttribute: "snack-bar-container-host" }, viewQueries: [{ propertyName: "_portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, isSignal: true }], exportAs: ["ngsSnackBarContainer"], usesInheritance: true, ngImport: i0, template: "<div\n class=\"snack-bar-container\"\n [class.visible]=\"animationState() === 'visible'\"\n [class.hidden-top]=\"animationState() === 'hidden-top'\"\n [class.hidden-bottom]=\"animationState() === 'hidden-bottom'\"\n [class.leaving]=\"leaving()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n <ng-template cdkPortalOutlet/>\n</div>\n", styles: [".snack-bar-container{border-radius:4px;box-sizing:border-box;display:block;margin:calc(var(--spacing, .25rem) * 5);max-width:33vw;min-width:344px;min-height:54px;transform-origin:center;padding:0;opacity:0;transition-property:transform,opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}.snack-bar-container.leaving{transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,1,1)}.snack-bar-container.hidden-top{opacity:0;transform:translateY(-100%)}.snack-bar-container.hidden-bottom{opacity:0;transform:translateY(100%)}.snack-bar-container.visible{opacity:1;transform:translateY(0)}@media(max-width:599px){.snack-bar-container .snack-bar-container{min-width:100%;margin:0;border-radius:0}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
176
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: SnackBarContainer, isStandalone: true, selector: "ngs-snack-bar-container", host: { classAttribute: "snack-bar-container-host" }, viewQueries: [{ propertyName: "_portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, isSignal: true }], exportAs: ["ngsSnackBarContainer"], usesInheritance: true, ngImport: i0, template: "<div\n class=\"snack-bar-container\"\n [class.visible]=\"animationState() === 'visible'\"\n [class.hidden-top]=\"animationState() === 'hidden-top'\"\n [class.hidden-bottom]=\"animationState() === 'hidden-bottom'\"\n [class.leaving]=\"leaving()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n <ng-template cdkPortalOutlet/>\n</div>\n", styles: [":host .snack-bar-container{border-radius:4px;box-sizing:border-box;display:block;margin:calc(var(--spacing, .25rem) * 5);max-width:33vw;min-width:344px;min-height:54px;transform-origin:center;padding:0;opacity:0;transition-property:transform,opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}:host .snack-bar-container.leaving{transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,1,1)}:host .snack-bar-container.hidden-top{opacity:0;transform:translateY(-100%)}:host .snack-bar-container.hidden-bottom{opacity:0;transform:translateY(100%)}:host .snack-bar-container.visible{opacity:1;transform:translateY(0)}@media(max-width:599px){:host .snack-bar-container{min-width:100%;margin:0;border-radius:0}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
177
177
  }
178
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SnackBarContainer, decorators: [{
179
179
  type: Component,
180
- args: [{ selector: 'ngs-snack-bar-container', exportAs: 'ngsSnackBarContainer', standalone: true, imports: [CdkPortalOutlet], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
180
+ args: [{ selector: 'ngs-snack-bar-container', exportAs: 'ngsSnackBarContainer', standalone: true, imports: [CdkPortalOutlet], changeDetection: ChangeDetectionStrategy.OnPush, host: {
181
181
  'class': 'snack-bar-container-host'
182
- }, template: "<div\n class=\"snack-bar-container\"\n [class.visible]=\"animationState() === 'visible'\"\n [class.hidden-top]=\"animationState() === 'hidden-top'\"\n [class.hidden-bottom]=\"animationState() === 'hidden-bottom'\"\n [class.leaving]=\"leaving()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n <ng-template cdkPortalOutlet/>\n</div>\n", styles: [".snack-bar-container{border-radius:4px;box-sizing:border-box;display:block;margin:calc(var(--spacing, .25rem) * 5);max-width:33vw;min-width:344px;min-height:54px;transform-origin:center;padding:0;opacity:0;transition-property:transform,opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}.snack-bar-container.leaving{transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,1,1)}.snack-bar-container.hidden-top{opacity:0;transform:translateY(-100%)}.snack-bar-container.hidden-bottom{opacity:0;transform:translateY(100%)}.snack-bar-container.visible{opacity:1;transform:translateY(0)}@media(max-width:599px){.snack-bar-container .snack-bar-container{min-width:100%;margin:0;border-radius:0}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
182
+ }, template: "<div\n class=\"snack-bar-container\"\n [class.visible]=\"animationState() === 'visible'\"\n [class.hidden-top]=\"animationState() === 'hidden-top'\"\n [class.hidden-bottom]=\"animationState() === 'hidden-bottom'\"\n [class.leaving]=\"leaving()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n <ng-template cdkPortalOutlet/>\n</div>\n", styles: [":host .snack-bar-container{border-radius:4px;box-sizing:border-box;display:block;margin:calc(var(--spacing, .25rem) * 5);max-width:33vw;min-width:344px;min-height:54px;transform-origin:center;padding:0;opacity:0;transition-property:transform,opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}:host .snack-bar-container.leaving{transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,1,1)}:host .snack-bar-container.hidden-top{opacity:0;transform:translateY(-100%)}:host .snack-bar-container.hidden-bottom{opacity:0;transform:translateY(100%)}:host .snack-bar-container.visible{opacity:1;transform:translateY(0)}@media(max-width:599px){:host .snack-bar-container{min-width:100%;margin:0;border-radius:0}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
183
183
  }], ctorParameters: () => [{ type: SnackBarConfig }], propDecorators: { _portalOutlet: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkPortalOutlet), { isSignal: true }] }] } });
184
184
 
185
185
  class SimpleSnackBar {
@@ -190,13 +190,13 @@ class SimpleSnackBar {
190
190
  this.snackBarRef.dismiss();
191
191
  }
192
192
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SimpleSnackBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
193
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: SimpleSnackBar, isStandalone: true, selector: "ngs-simple-snack-bar", exportAs: ["ngsSimpleSnackBar"], ngImport: i0, template: "<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n", styles: [":host{display:flex;justify-content:space-between;align-items:center;font-size:var(--ngs-font-size-sm);color:var(--ngs-color-neutral-100);border-radius:var(--ngs-radius-xl);padding:0 calc(var(--spacing, .25rem) * 2.5);background:var(--ngs-color-neutral-950)}:host .simple-snack-bar-message{padding:14px 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:1 1 auto}:host .simple-snack-bar-action{flex:0 0 auto;margin-left:8px}:host:has(.simple-snack-bar-action){padding-inline-end:calc(var(--spacing, .25rem) * 1.5)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
193
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: SimpleSnackBar, isStandalone: true, selector: "ngs-simple-snack-bar", exportAs: ["ngsSimpleSnackBar"], ngImport: i0, template: "<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n", styles: [":host{display:flex;justify-content:space-between;align-items:center;font-size:var(--ngs-font-size-sm);color:var(--ngs-color-neutral-100);border-radius:.75rem;padding:0 calc(var(--spacing, .25rem) * 3);background:var(--ngs-color-neutral-950)}:host .simple-snack-bar-message{padding:14px 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:1 1 auto}:host .simple-snack-bar-action{flex:0 0 auto;margin-left:8px}:host:has(.simple-snack-bar-action){padding-inline-end:calc(var(--spacing, .25rem) * 1)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
194
194
  }
195
195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SimpleSnackBar, decorators: [{
196
196
  type: Component,
197
197
  args: [{ selector: 'ngs-simple-snack-bar', exportAs: 'ngsSimpleSnackBar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
198
198
  Button
199
- ], template: "<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n", styles: [":host{display:flex;justify-content:space-between;align-items:center;font-size:var(--ngs-font-size-sm);color:var(--ngs-color-neutral-100);border-radius:var(--ngs-radius-xl);padding:0 calc(var(--spacing, .25rem) * 2.5);background:var(--ngs-color-neutral-950)}:host .simple-snack-bar-message{padding:14px 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:1 1 auto}:host .simple-snack-bar-action{flex:0 0 auto;margin-left:8px}:host:has(.simple-snack-bar-action){padding-inline-end:calc(var(--spacing, .25rem) * 1.5)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
199
+ ], template: "<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n", styles: [":host{display:flex;justify-content:space-between;align-items:center;font-size:var(--ngs-font-size-sm);color:var(--ngs-color-neutral-100);border-radius:.75rem;padding:0 calc(var(--spacing, .25rem) * 3);background:var(--ngs-color-neutral-950)}:host .simple-snack-bar-message{padding:14px 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:1 1 auto}:host .simple-snack-bar-action{flex:0 0 auto;margin-left:8px}:host:has(.simple-snack-bar-action){padding-inline-end:calc(var(--spacing, .25rem) * 1)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
200
200
  }] });
201
201
 
202
202
  class SnackBar {
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-snack-bar.mjs","sources":["../../../projects/components/snack-bar/src/snack-bar/snack-bar-config.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-ref.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-container/snack-bar-container.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-container/snack-bar-container.html","../../../projects/components/snack-bar/src/snack-bar/simple-snack-bar/simple-snack-bar.ts","../../../projects/components/snack-bar/src/snack-bar/simple-snack-bar/simple-snack-bar.html","../../../projects/components/snack-bar/src/snack-bar/snack-bar.service.ts","../../../projects/components/snack-bar/ngstarter-ui-components-snack-bar.ts"],"sourcesContent":["import { InjectionToken, ViewContainerRef, Injectable } from '@angular/core';\nimport { AriaLivePoliteness } from '@angular/cdk/a11y';\nimport { Direction } from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const SNACK_BAR_DATA = new InjectionToken<any>('SnackBarData');\n\n/** Injection token that can be used to specify default snack bar. */\nexport const SNACK_BAR_CONFIG = new InjectionToken<SnackBarConfig>('SnackBarConfig');\n\n/** Function to provide the snack bar configuration. */\nexport function provideSnackBarConfig(config: SnackBarConfig) {\n return {\n provide: SNACK_BAR_CONFIG,\n useValue: config,\n };\n}\n\nexport type SnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\nexport type SnackBarVerticalPosition = 'top' | 'bottom';\n\nexport class SnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'assertive';\n\n /** Message to be announced by the LiveAnnouncer. */\n announcementMessage?: string = '';\n\n /** The view container that should be used for the snack bar's origin. */\n viewContainerRef?: ViewContainerRef;\n\n /** The duration in milliseconds to wait before automatically closing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: SnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: SnackBarVerticalPosition = 'bottom';\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\nexport class SnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance!: T;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n constructor(public containerInstance: any, private _overlayRef: OverlayRef) {\n containerInstance._onExit.subscribe(() => {\n this._overlayRef.dispose();\n this._afterDismissed.next();\n this._afterDismissed.complete();\n });\n\n containerInstance._onEnter.subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n }\n\n /** Dismisses the snack bar. */\n dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<void> {\n return this._afterDismissed.asObservable();\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n OnDestroy,\n signal,\n PLATFORM_ID,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { SnackBarConfig } from '../snack-bar-config';\n\n@Component({\n selector: 'ngs-snack-bar-container',\n exportAs: 'ngsSnackBarContainer',\n templateUrl: './snack-bar-container.html',\n styleUrl: './snack-bar-container.scss',\n standalone: true,\n imports: [CdkPortalOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'snack-bar-container-host'\n }\n})\nexport class SnackBarContainer extends BasePortalOutlet implements OnDestroy {\n readonly _portalOutlet = viewChild.required(CdkPortalOutlet);\n private _cdr = inject(ChangeDetectorRef);\n private _platformId = inject(PLATFORM_ID);\n\n /** State of the snack bar animation. */\n readonly animationState = signal<'void' | 'visible' | 'hidden-top' | 'hidden-bottom'>('void');\n readonly leaving = signal(false);\n\n /** Event emitted when the snack bar exit animation is finished. */\n readonly _onExit = new EventEmitter<void>();\n\n /** Event emitted when the snack bar enter animation is finished. */\n readonly _onEnter = new EventEmitter<void>();\n\n constructor(public snackBarConfig: SnackBarConfig) {\n super();\n if (this.snackBarConfig.verticalPosition === 'top') {\n this.animationState.set('hidden-top');\n } else {\n this.animationState.set('hidden-bottom');\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n override attachComponentPortal<T>(portal: ComponentPortal<T>): any {\n this._assertNotAttached();\n return this._portalOutlet().attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this snack bar container. */\n override attachTemplatePortal<C>(portal: TemplatePortal<C>): any {\n this._assertNotAttached();\n return this._portalOutlet().attachTemplatePortal(portal);\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n // Ensure we are not in leaving state\n this.leaving.set(false);\n\n if (!isPlatformBrowser(this._platformId)) {\n this.animationState.set('visible');\n this._cdr.markForCheck();\n return;\n }\n\n // Use requestAnimationFrame to ensure the initial state (hidden-top/bottom)\n // is applied to the DOM before we change it to 'visible'.\n // We use two nested requestAnimationFrames to ensure at least one paint cycle has occurred.\n // The first rAF captures the current state, the second one allows for the state to be applied\n // and then triggers the transition.\n requestAnimationFrame(() => {\n // Force a reflow to ensure the initial styles are applied.\n // This is sometimes necessary in addition to rAF in some browsers/environments.\n if (typeof document !== 'undefined' && document.body) {\n void document.body.offsetHeight;\n }\n requestAnimationFrame(() => {\n this.animationState.set('visible');\n this._cdr.markForCheck();\n });\n });\n }\n\n /** Begin animation of snack bar exit from view. */\n exit(): void {\n const initialState = this.animationState();\n const targetState = this.snackBarConfig.verticalPosition === 'top' ? 'hidden-top' : 'hidden-bottom';\n\n if (initialState === targetState) {\n this._onExit.emit();\n return;\n }\n\n // Mark as leaving to use faster transition timing\n this.leaving.set(true);\n this.animationState.set(targetState);\n this._cdr.markForCheck();\n }\n\n /** Handle end of transition. */\n onTransitionEnd(event: TransitionEvent) {\n if (event.propertyName !== 'transform' && event.propertyName !== 'opacity') {\n return;\n }\n const state = this.animationState();\n if (state === 'visible' && event.propertyName === 'transform') {\n this._onEnter.emit();\n } else if ((state === 'hidden-top' || state === 'hidden-bottom')) {\n if (event.propertyName === 'opacity' || event.propertyName === 'transform') {\n this._onExit.emit();\n }\n }\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet().hasAttached()) {\n throw Error('Attempting to attach snack bar content after content has already been attached.');\n }\n }\n\n ngOnDestroy() {\n this._onExit.complete();\n this._onEnter.complete();\n }\n}\n","<div\n class=\"snack-bar-container\"\n [class.visible]=\"animationState() === 'visible'\"\n [class.hidden-top]=\"animationState() === 'hidden-top'\"\n [class.hidden-bottom]=\"animationState() === 'hidden-bottom'\"\n [class.leaving]=\"leaving()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n <ng-template cdkPortalOutlet/>\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { SNACK_BAR_DATA } from '../snack-bar-config';\nimport { SnackBarRef } from '../snack-bar-ref';\nimport { Button } from '@ngstarter-ui/components/button';\n\n@Component({\n selector: 'ngs-simple-snack-bar',\n exportAs: 'ngsSimpleSnackBar',\n templateUrl: './simple-snack-bar.html',\n styleUrl: './simple-snack-bar.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n Button\n ]\n})\nexport class SimpleSnackBar {\n readonly snackBarRef = inject(SnackBarRef);\n readonly data = inject(SNACK_BAR_DATA);\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismiss();\n }\n}\n","<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n TemplateRef,\n Type,\n inject,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { SnackBarConfig, SNACK_BAR_DATA, SNACK_BAR_CONFIG } from './snack-bar-config';\nimport { SnackBarRef } from './snack-bar-ref';\nimport { SnackBarContainer } from './snack-bar-container/snack-bar-container';\nimport { SimpleSnackBar } from './simple-snack-bar/simple-snack-bar';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackBar {\n private _overlay = inject(Overlay);\n private _injector = inject(Injector);\n private _parentSnackBar = inject(SnackBar, { optional: true, skipSelf: true });\n private _defaultConfig = inject(SNACK_BAR_CONFIG, { optional: true }) ?? new SnackBarConfig();\n\n /** Reference to the currently-opened snack bar. */\n private _openedSnackBarRef: SnackBarRef<any> | null = null;\n\n /**\n * Opens a snack bar with a message and an optional action.\n */\n open(message: string, action?: string, config?: SnackBarConfig): SnackBarRef<SimpleSnackBar> {\n const _config = { ...this._defaultConfig, ...config };\n _config.data = { message, action };\n\n return this.openFromComponent(SimpleSnackBar, _config);\n }\n\n /**\n * Opens a snack bar with a custom component.\n */\n openFromComponent<T>(component: Type<T>, config?: SnackBarConfig): SnackBarRef<T> {\n return this._attach(component, config) as SnackBarRef<T>;\n }\n\n /**\n * Opens a snack bar with a custom template.\n */\n openFromTemplate(template: TemplateRef<any>, config?: SnackBarConfig): SnackBarRef<any> {\n return this._attach(template, config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container and the appropriate content.\n */\n private _attach<T>(content: Type<T> | TemplateRef<T>, config?: SnackBarConfig): SnackBarRef<T | any> {\n const _config = { ...this._defaultConfig, ...config };\n const overlayRef = this._createOverlay(_config);\n const container = this._attachContainer(overlayRef, _config);\n const snackBarRef = new SnackBarRef<T | any>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: _config.data,\n snackBarRef,\n } as any);\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(_config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal(portal);\n snackBarRef.instance = contentRef.instance;\n }\n\n // If there is another snack bar already opened, dismiss it before showing the new one.\n if (this._openedSnackBarRef) {\n const oldSnackBarRef = this._openedSnackBarRef;\n oldSnackBarRef.afterDismissed().subscribe(() => {\n container.enter();\n });\n oldSnackBarRef.dismiss();\n } else {\n container.enter();\n }\n\n this._openedSnackBarRef = snackBarRef;\n snackBarRef.afterDismissed().subscribe(() => {\n if (this._openedSnackBarRef === snackBarRef) {\n this._openedSnackBarRef = null;\n }\n });\n\n if (_config.duration && _config.duration > 0) {\n setTimeout(() => snackBarRef.dismiss(), _config.duration);\n }\n\n return snackBarRef;\n }\n\n /**\n * Creates a new overlay and configures it for the snack bar.\n */\n private _createOverlay(config: SnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n direction: config.direction,\n hasBackdrop: false,\n scrollStrategy: this._overlay.scrollStrategies.noop(),\n positionStrategy: this._overlay.position()\n .global()\n .centerHorizontally()\n .bottom('0'),\n });\n\n // Custom positioning based on config\n const positionStrategy = this._overlay.position().global();\n\n if (config.horizontalPosition === 'start' || config.horizontalPosition === 'left') {\n positionStrategy.left('0');\n } else if (config.horizontalPosition === 'end' || config.horizontalPosition === 'right') {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Attaches the snack bar container to the overlay.\n */\n private _attachContainer(overlayRef: OverlayRef, config: SnackBarConfig): SnackBarContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{ provide: SnackBarConfig, useValue: config }],\n });\n\n const containerPortal = new ComponentPortal(SnackBarContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<SnackBarContainer> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n */\n private _createInjector<T>(config: SnackBarConfig, snackBarRef: SnackBarRef<T>): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n { provide: SnackBarRef, useValue: snackBarRef },\n { provide: SNACK_BAR_DATA, useValue: config.data },\n ],\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SnackBarConfig"],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-snack-bar.mjs","sources":["../../../projects/components/snack-bar/src/snack-bar/snack-bar-config.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-ref.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-container/snack-bar-container.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-container/snack-bar-container.html","../../../projects/components/snack-bar/src/snack-bar/simple-snack-bar/simple-snack-bar.ts","../../../projects/components/snack-bar/src/snack-bar/simple-snack-bar/simple-snack-bar.html","../../../projects/components/snack-bar/src/snack-bar/snack-bar.service.ts","../../../projects/components/snack-bar/ngstarter-ui-components-snack-bar.ts"],"sourcesContent":["import { InjectionToken, ViewContainerRef, Injectable } from '@angular/core';\nimport { AriaLivePoliteness } from '@angular/cdk/a11y';\nimport { Direction } from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const SNACK_BAR_DATA = new InjectionToken<any>('SnackBarData');\n\n/** Injection token that can be used to specify default snack bar. */\nexport const SNACK_BAR_CONFIG = new InjectionToken<SnackBarConfig>('SnackBarConfig');\n\n/** Function to provide the snack bar configuration. */\nexport function provideSnackBarConfig(config: SnackBarConfig) {\n return {\n provide: SNACK_BAR_CONFIG,\n useValue: config,\n };\n}\n\nexport type SnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\nexport type SnackBarVerticalPosition = 'top' | 'bottom';\n\nexport class SnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'assertive';\n\n /** Message to be announced by the LiveAnnouncer. */\n announcementMessage?: string = '';\n\n /** The view container that should be used for the snack bar's origin. */\n viewContainerRef?: ViewContainerRef;\n\n /** The duration in milliseconds to wait before automatically closing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: SnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: SnackBarVerticalPosition = 'bottom';\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\nexport class SnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance!: T;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n constructor(public containerInstance: any, private _overlayRef: OverlayRef) {\n containerInstance._onExit.subscribe(() => {\n this._overlayRef.dispose();\n this._afterDismissed.next();\n this._afterDismissed.complete();\n });\n\n containerInstance._onEnter.subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n }\n\n /** Dismisses the snack bar. */\n dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<void> {\n return this._afterDismissed.asObservable();\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n OnDestroy,\n signal,\n PLATFORM_ID,\n viewChild\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { SnackBarConfig } from '../snack-bar-config';\n\n@Component({\n selector: 'ngs-snack-bar-container',\n exportAs: 'ngsSnackBarContainer',\n templateUrl: './snack-bar-container.html',\n styleUrl: './snack-bar-container.scss',\n standalone: true,\n imports: [CdkPortalOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'snack-bar-container-host'\n }\n})\nexport class SnackBarContainer extends BasePortalOutlet implements OnDestroy {\n readonly _portalOutlet = viewChild.required(CdkPortalOutlet);\n private _cdr = inject(ChangeDetectorRef);\n private _platformId = inject(PLATFORM_ID);\n\n /** State of the snack bar animation. */\n readonly animationState = signal<'void' | 'visible' | 'hidden-top' | 'hidden-bottom'>('void');\n readonly leaving = signal(false);\n\n /** Event emitted when the snack bar exit animation is finished. */\n readonly _onExit = new EventEmitter<void>();\n\n /** Event emitted when the snack bar enter animation is finished. */\n readonly _onEnter = new EventEmitter<void>();\n\n constructor(public snackBarConfig: SnackBarConfig) {\n super();\n if (this.snackBarConfig.verticalPosition === 'top') {\n this.animationState.set('hidden-top');\n } else {\n this.animationState.set('hidden-bottom');\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n override attachComponentPortal<T>(portal: ComponentPortal<T>): any {\n this._assertNotAttached();\n return this._portalOutlet().attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this snack bar container. */\n override attachTemplatePortal<C>(portal: TemplatePortal<C>): any {\n this._assertNotAttached();\n return this._portalOutlet().attachTemplatePortal(portal);\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n // Ensure we are not in leaving state\n this.leaving.set(false);\n\n if (!isPlatformBrowser(this._platformId)) {\n this.animationState.set('visible');\n this._cdr.markForCheck();\n return;\n }\n\n // Use requestAnimationFrame to ensure the initial state (hidden-top/bottom)\n // is applied to the DOM before we change it to 'visible'.\n // We use two nested requestAnimationFrames to ensure at least one paint cycle has occurred.\n // The first rAF captures the current state, the second one allows for the state to be applied\n // and then triggers the transition.\n requestAnimationFrame(() => {\n // Force a reflow to ensure the initial styles are applied.\n // This is sometimes necessary in addition to rAF in some browsers/environments.\n if (typeof document !== 'undefined' && document.body) {\n void document.body.offsetHeight;\n }\n requestAnimationFrame(() => {\n this.animationState.set('visible');\n this._cdr.markForCheck();\n });\n });\n }\n\n /** Begin animation of snack bar exit from view. */\n exit(): void {\n const initialState = this.animationState();\n const targetState = this.snackBarConfig.verticalPosition === 'top' ? 'hidden-top' : 'hidden-bottom';\n\n if (initialState === targetState) {\n this._onExit.emit();\n return;\n }\n\n // Mark as leaving to use faster transition timing\n this.leaving.set(true);\n this.animationState.set(targetState);\n this._cdr.markForCheck();\n }\n\n /** Handle end of transition. */\n onTransitionEnd(event: TransitionEvent) {\n if (event.propertyName !== 'transform' && event.propertyName !== 'opacity') {\n return;\n }\n const state = this.animationState();\n if (state === 'visible' && event.propertyName === 'transform') {\n this._onEnter.emit();\n } else if ((state === 'hidden-top' || state === 'hidden-bottom')) {\n if (event.propertyName === 'opacity' || event.propertyName === 'transform') {\n this._onExit.emit();\n }\n }\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet().hasAttached()) {\n throw Error('Attempting to attach snack bar content after content has already been attached.');\n }\n }\n\n ngOnDestroy() {\n this._onExit.complete();\n this._onEnter.complete();\n }\n}\n","<div\n class=\"snack-bar-container\"\n [class.visible]=\"animationState() === 'visible'\"\n [class.hidden-top]=\"animationState() === 'hidden-top'\"\n [class.hidden-bottom]=\"animationState() === 'hidden-bottom'\"\n [class.leaving]=\"leaving()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n <ng-template cdkPortalOutlet/>\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { SNACK_BAR_DATA } from '../snack-bar-config';\nimport { SnackBarRef } from '../snack-bar-ref';\nimport { Button } from '@ngstarter-ui/components/button';\n\n@Component({\n selector: 'ngs-simple-snack-bar',\n exportAs: 'ngsSimpleSnackBar',\n templateUrl: './simple-snack-bar.html',\n styleUrl: './simple-snack-bar.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n Button\n ]\n})\nexport class SimpleSnackBar {\n readonly snackBarRef = inject(SnackBarRef);\n readonly data = inject(SNACK_BAR_DATA);\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismiss();\n }\n}\n","<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n TemplateRef,\n Type,\n inject,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { SnackBarConfig, SNACK_BAR_DATA, SNACK_BAR_CONFIG } from './snack-bar-config';\nimport { SnackBarRef } from './snack-bar-ref';\nimport { SnackBarContainer } from './snack-bar-container/snack-bar-container';\nimport { SimpleSnackBar } from './simple-snack-bar/simple-snack-bar';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackBar {\n private _overlay = inject(Overlay);\n private _injector = inject(Injector);\n private _parentSnackBar = inject(SnackBar, { optional: true, skipSelf: true });\n private _defaultConfig = inject(SNACK_BAR_CONFIG, { optional: true }) ?? new SnackBarConfig();\n\n /** Reference to the currently-opened snack bar. */\n private _openedSnackBarRef: SnackBarRef<any> | null = null;\n\n /**\n * Opens a snack bar with a message and an optional action.\n */\n open(message: string, action?: string, config?: SnackBarConfig): SnackBarRef<SimpleSnackBar> {\n const _config = { ...this._defaultConfig, ...config };\n _config.data = { message, action };\n\n return this.openFromComponent(SimpleSnackBar, _config);\n }\n\n /**\n * Opens a snack bar with a custom component.\n */\n openFromComponent<T>(component: Type<T>, config?: SnackBarConfig): SnackBarRef<T> {\n return this._attach(component, config) as SnackBarRef<T>;\n }\n\n /**\n * Opens a snack bar with a custom template.\n */\n openFromTemplate(template: TemplateRef<any>, config?: SnackBarConfig): SnackBarRef<any> {\n return this._attach(template, config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container and the appropriate content.\n */\n private _attach<T>(content: Type<T> | TemplateRef<T>, config?: SnackBarConfig): SnackBarRef<T | any> {\n const _config = { ...this._defaultConfig, ...config };\n const overlayRef = this._createOverlay(_config);\n const container = this._attachContainer(overlayRef, _config);\n const snackBarRef = new SnackBarRef<T | any>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: _config.data,\n snackBarRef,\n } as any);\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(_config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal(portal);\n snackBarRef.instance = contentRef.instance;\n }\n\n // If there is another snack bar already opened, dismiss it before showing the new one.\n if (this._openedSnackBarRef) {\n const oldSnackBarRef = this._openedSnackBarRef;\n oldSnackBarRef.afterDismissed().subscribe(() => {\n container.enter();\n });\n oldSnackBarRef.dismiss();\n } else {\n container.enter();\n }\n\n this._openedSnackBarRef = snackBarRef;\n snackBarRef.afterDismissed().subscribe(() => {\n if (this._openedSnackBarRef === snackBarRef) {\n this._openedSnackBarRef = null;\n }\n });\n\n if (_config.duration && _config.duration > 0) {\n setTimeout(() => snackBarRef.dismiss(), _config.duration);\n }\n\n return snackBarRef;\n }\n\n /**\n * Creates a new overlay and configures it for the snack bar.\n */\n private _createOverlay(config: SnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n direction: config.direction,\n hasBackdrop: false,\n scrollStrategy: this._overlay.scrollStrategies.noop(),\n positionStrategy: this._overlay.position()\n .global()\n .centerHorizontally()\n .bottom('0'),\n });\n\n // Custom positioning based on config\n const positionStrategy = this._overlay.position().global();\n\n if (config.horizontalPosition === 'start' || config.horizontalPosition === 'left') {\n positionStrategy.left('0');\n } else if (config.horizontalPosition === 'end' || config.horizontalPosition === 'right') {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Attaches the snack bar container to the overlay.\n */\n private _attachContainer(overlayRef: OverlayRef, config: SnackBarConfig): SnackBarContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{ provide: SnackBarConfig, useValue: config }],\n });\n\n const containerPortal = new ComponentPortal(SnackBarContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<SnackBarContainer> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n */\n private _createInjector<T>(config: SnackBarConfig, snackBarRef: SnackBarRef<T>): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n { provide: SnackBarRef, useValue: snackBarRef },\n { provide: SNACK_BAR_DATA, useValue: config.data },\n ],\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SnackBarConfig"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, contentChild, forwardRef, Inject, Component, input, contentChildren, ViewEncapsulation } from '@angular/core';
2
+ import { Directive, contentChild, forwardRef, Inject, Component, input, contentChildren } from '@angular/core';
3
3
  import { CdkStep, CdkStepper, CdkStepperNext, CdkStepperPrevious } from '@angular/cdk/stepper';
4
4
  import * as i1 from '@angular/common';
5
5
  import { CommonModule } from '@angular/common';
@@ -65,11 +65,25 @@ class Stepper extends CdkStepper {
65
65
  super.ngAfterContentInit();
66
66
  }
67
67
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Stepper, deps: null, target: i0.ɵɵFactoryTarget.Component });
68
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Stepper, isStandalone: true, selector: "ngs-stepper", inputs: { headerPosition: { classPropertyName: "headerPosition", publicName: "headerPosition", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: CdkStepper, useExisting: Stepper }], queries: [{ propertyName: "stepItems", predicate: Step, descendants: true, isSignal: true }, { propertyName: "_stepLabels", predicate: StepLabel, descendants: true, isSignal: true }], exportAs: ["ngsStepper"], usesInheritance: true, ngImport: i0, template: "<div class=\"ngs-stepper\"\n [class.ngs-stepper-vertical]=\"orientation === 'vertical'\"\n [class.ngs-stepper-horizontal]=\"orientation === 'horizontal'\"\n [class.ngs-stepper-header-bottom]=\"headerPosition() === 'bottom'\">\n @if (orientation === 'horizontal') {\n <div class=\"ngs-stepper-header-container\" [class.ngs-stepper-label-bottom-container]=\"labelPosition() === 'bottom'\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n [class.ngs-stepper-label-bottom]=\"labelPosition() === 'bottom'\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n @if (i < stepItems().length - 1 && labelPosition() !== 'bottom') {\n <div class=\"ngs-stepper-line\"></div>\n }\n }\n </div>\n\n <div class=\"ngs-stepper-content-container\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n }\n </div>\n } @else {\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n <div class=\"ngs-stepper-content-wrapper\" [class.ngs-stepper-last-step]=\"i === stepItems().length - 1\">\n <div class=\"ngs-stepper-vertical-line\"></div>\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n </div>\n }\n }\n</div>\n", styles: [":root{--ngs-stepper-header-padding: 16px;--ngs-stepper-header-gap: 8px;--ngs-stepper-icon-size: 24px;--ngs-stepper-icon-bg: var(--ngs-color-surface-container-high);--ngs-stepper-icon-color: var(--ngs-color-on-surface);--ngs-stepper-icon-active-bg: var(--ngs-color-primary);--ngs-stepper-icon-active-color: var(--ngs-color-on-primary);--ngs-stepper-icon-completed-bg: var(--ngs-color-success);--ngs-stepper-icon-completed-color: var(--ngs-color-on-success);--ngs-stepper-label-color: var(--ngs-color-on-surface-variant);--ngs-stepper-label-active-color: var(--ngs-color-on-surface);--ngs-stepper-line-color: var(--ngs-color-outline-variant);--ngs-stepper-content-padding: 24px}.ngs-stepper{display:flex;flex-direction:column}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-header{padding:16px 0}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-content-wrapper{margin-left:calc(var(--ngs-stepper-icon-size) / 2 - .5px);padding-left:calc(var(--ngs-stepper-icon-size) / 2 + var(--ngs-stepper-header-gap) + .5px);position:relative}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-content-wrapper.ngs-stepper-last-step .ngs-stepper-vertical-line{display:none}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-vertical-line{position:absolute;left:0;top:-16px;bottom:-16px;width:1px;background:var(--ngs-stepper-line-color)}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-content{padding:8px 0 24px}.ngs-stepper.ngs-stepper-header-bottom{flex-direction:column-reverse}.ngs-stepper.ngs-stepper-header-bottom .ngs-stepper-header-container{border-bottom:none;border-top:1px solid var(--ngs-stepper-line-color)}.ngs-stepper-header-container{display:flex;align-items:center;padding:0 var(--ngs-stepper-header-padding);border-bottom:1px solid var(--ngs-stepper-line-color);overflow-x:hidden}.ngs-stepper-header-container.ngs-stepper-label-bottom-container{align-items:flex-start;padding:0}.ngs-stepper-header-container.ngs-stepper-label-bottom-container .ngs-stepper-header{flex:1;padding-left:8px;padding-right:8px}.ngs-stepper-header{display:flex;align-items:center;gap:var(--ngs-stepper-header-gap);padding:16px 0;cursor:pointer;white-space:nowrap;outline:none;position:relative;min-width:0}.ngs-stepper-header:hover .ngs-stepper-icon:not(.ngs-stepper-header-active .ngs-stepper-icon){background:var(--ngs-color-surface-container-highest)}.ngs-stepper-header.ngs-stepper-label-bottom{flex-direction:column;justify-content:center;width:auto;min-width:100px;gap:12px}.ngs-stepper-header.ngs-stepper-label-bottom .ngs-stepper-label{text-align:center;white-space:normal}.ngs-stepper-header.ngs-stepper-label-bottom:before,.ngs-stepper-header.ngs-stepper-label-bottom:after{content:\"\";position:absolute;top:calc(var(--ngs-stepper-icon-size) / 2 + 16px);height:1px;background:var(--ngs-stepper-line-color);width:calc(50% - var(--ngs-stepper-icon-size) / 2 - 8px)}.ngs-stepper-header.ngs-stepper-label-bottom:before{left:0}.ngs-stepper-header.ngs-stepper-label-bottom:after{right:0}.ngs-stepper-header.ngs-stepper-label-bottom:first-child:before,.ngs-stepper-header.ngs-stepper-label-bottom:last-of-type:after{display:none}.ngs-stepper-icon{width:var(--ngs-stepper-icon-size);height:var(--ngs-stepper-icon-size);border-radius:50%;background:var(--ngs-stepper-icon-bg);color:var(--ngs-stepper-icon-color);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;flex-shrink:0;transition:background-color .2s ease;z-index:1}.ngs-stepper-header-active .ngs-stepper-icon{background:var(--ngs-stepper-icon-active-bg);color:var(--ngs-stepper-icon-active-color)}.ngs-stepper-header-active .ngs-stepper-label{color:var(--ngs-stepper-label-active-color);font-weight:500}.ngs-stepper-header-completed .ngs-stepper-icon{background:var(--ngs-stepper-icon-completed-bg);color:var(--ngs-stepper-icon-completed-color)}.ngs-stepper-label{color:var(--ngs-stepper-label-color);font-size:14px;transition:color .2s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngs-stepper-line{flex:1;height:1px;background:var(--ngs-stepper-line-color);margin:0 16px;min-width:24px}.ngs-stepper-content-container{padding:var(--ngs-stepper-content-padding)}.ngs-stepper-content{outline:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
68
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Stepper, isStandalone: true, selector: "ngs-stepper", inputs: { headerPosition: { classPropertyName: "headerPosition", publicName: "headerPosition", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ngs-stepper" }, providers: [
69
+ {
70
+ provide: CdkStepper,
71
+ useExisting: Stepper
72
+ }
73
+ ], queries: [{ propertyName: "stepItems", predicate: Step, descendants: true, isSignal: true }, { propertyName: "_stepLabels", predicate: StepLabel, descendants: true, isSignal: true }], exportAs: ["ngsStepper"], usesInheritance: true, ngImport: i0, template: "<div class=\"ngs-stepper\"\n [class.ngs-stepper-vertical]=\"orientation === 'vertical'\"\n [class.ngs-stepper-horizontal]=\"orientation === 'horizontal'\"\n [class.ngs-stepper-header-bottom]=\"headerPosition() === 'bottom'\">\n @if (orientation === 'horizontal') {\n <div class=\"ngs-stepper-header-container\" [class.ngs-stepper-label-bottom-container]=\"labelPosition() === 'bottom'\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n [class.ngs-stepper-label-bottom]=\"labelPosition() === 'bottom'\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n @if (i < stepItems().length - 1 && labelPosition() !== 'bottom') {\n <div class=\"ngs-stepper-line\"></div>\n }\n }\n </div>\n\n <div class=\"ngs-stepper-content-container\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n }\n </div>\n } @else {\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n <div class=\"ngs-stepper-content-wrapper\" [class.ngs-stepper-last-step]=\"i === stepItems().length - 1\">\n <div class=\"ngs-stepper-vertical-line\"></div>\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n </div>\n }\n }\n</div>\n", styles: [":host{--ngs-stepper-header-padding: 16px;--ngs-stepper-header-gap: 8px;--ngs-stepper-icon-size: 24px;--ngs-stepper-icon-bg: var(--ngs-color-surface-container-high);--ngs-stepper-icon-color: var(--ngs-color-on-surface);--ngs-stepper-icon-active-bg: var(--ngs-color-primary);--ngs-stepper-icon-active-color: var(--ngs-color-on-primary);--ngs-stepper-icon-completed-bg: var(--ngs-color-success);--ngs-stepper-icon-completed-color: var(--ngs-color-on-success);--ngs-stepper-label-color: var(--ngs-color-on-surface-variant);--ngs-stepper-label-active-color: var(--ngs-color-on-surface);--ngs-stepper-line-color: var(--ngs-color-outline-variant);--ngs-stepper-content-padding: 24px}:host .ngs-stepper{display:flex;flex-direction:column}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-header{padding:16px 0}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-content-wrapper{margin-left:calc(var(--ngs-stepper-icon-size) / 2 - .5px);padding-left:calc(var(--ngs-stepper-icon-size) / 2 + var(--ngs-stepper-header-gap) + .5px);position:relative}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-content-wrapper.ngs-stepper-last-step .ngs-stepper-vertical-line{display:none}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-vertical-line{position:absolute;left:0;top:-16px;bottom:-16px;width:1px;background:var(--ngs-stepper-line-color)}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-content{padding:8px 0 24px}:host .ngs-stepper.ngs-stepper-header-bottom{flex-direction:column-reverse}:host .ngs-stepper.ngs-stepper-header-bottom .ngs-stepper-header-container{border-bottom:none;border-top:1px solid var(--ngs-stepper-line-color)}:host .ngs-stepper-header-container{display:flex;align-items:center;padding:0 var(--ngs-stepper-header-padding);border-bottom:1px solid var(--ngs-stepper-line-color);overflow-x:hidden}:host .ngs-stepper-header-container.ngs-stepper-label-bottom-container{align-items:flex-start;padding:0}:host .ngs-stepper-header-container.ngs-stepper-label-bottom-container .ngs-stepper-header{flex:1;padding-left:8px;padding-right:8px}:host .ngs-stepper-header{display:flex;align-items:center;gap:var(--ngs-stepper-header-gap);padding:16px 0;cursor:pointer;white-space:nowrap;outline:none;position:relative;min-width:0}:host .ngs-stepper-header:not(.ngs-stepper-header-active):hover .ngs-stepper-icon{background:var(--ngs-color-surface-container-highest)}:host .ngs-stepper-header.ngs-stepper-label-bottom{flex-direction:column;justify-content:center;width:auto;min-width:100px;gap:12px}:host .ngs-stepper-header.ngs-stepper-label-bottom .ngs-stepper-label{text-align:center;white-space:normal}:host .ngs-stepper-header.ngs-stepper-label-bottom:before,:host .ngs-stepper-header.ngs-stepper-label-bottom:after{content:\"\";position:absolute;top:calc(var(--ngs-stepper-icon-size) / 2 + 16px);height:1px;background:var(--ngs-stepper-line-color);width:calc(50% - var(--ngs-stepper-icon-size) / 2 - 8px)}:host .ngs-stepper-header.ngs-stepper-label-bottom:before{left:0}:host .ngs-stepper-header.ngs-stepper-label-bottom:after{right:0}:host .ngs-stepper-header.ngs-stepper-label-bottom:first-child:before,:host .ngs-stepper-header.ngs-stepper-label-bottom:last-of-type:after{display:none}:host .ngs-stepper-icon{width:var(--ngs-stepper-icon-size);height:var(--ngs-stepper-icon-size);border-radius:50%;background:var(--ngs-stepper-icon-bg);color:var(--ngs-stepper-icon-color);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;flex-shrink:0;transition:background-color .2s ease;z-index:1}:host .ngs-stepper-header-active .ngs-stepper-icon{background:var(--ngs-stepper-icon-active-bg);color:var(--ngs-stepper-icon-active-color)}:host .ngs-stepper-header-active .ngs-stepper-label{color:var(--ngs-stepper-label-active-color);font-weight:500}:host .ngs-stepper-header-completed .ngs-stepper-icon{background:var(--ngs-stepper-icon-completed-bg);color:var(--ngs-stepper-icon-completed-color)}:host .ngs-stepper-label{color:var(--ngs-stepper-label-color);font-size:14px;transition:color .2s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .ngs-stepper-line{flex:1;height:1px;background:var(--ngs-stepper-line-color);margin:0 16px;min-width:24px}:host .ngs-stepper-content-container{padding:var(--ngs-stepper-content-padding)}:host .ngs-stepper-content{outline:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
69
74
  }
70
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Stepper, decorators: [{
71
76
  type: Component,
72
- args: [{ selector: 'ngs-stepper', exportAs: 'ngsStepper', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, providers: [{ provide: CdkStepper, useExisting: Stepper }], template: "<div class=\"ngs-stepper\"\n [class.ngs-stepper-vertical]=\"orientation === 'vertical'\"\n [class.ngs-stepper-horizontal]=\"orientation === 'horizontal'\"\n [class.ngs-stepper-header-bottom]=\"headerPosition() === 'bottom'\">\n @if (orientation === 'horizontal') {\n <div class=\"ngs-stepper-header-container\" [class.ngs-stepper-label-bottom-container]=\"labelPosition() === 'bottom'\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n [class.ngs-stepper-label-bottom]=\"labelPosition() === 'bottom'\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n @if (i < stepItems().length - 1 && labelPosition() !== 'bottom') {\n <div class=\"ngs-stepper-line\"></div>\n }\n }\n </div>\n\n <div class=\"ngs-stepper-content-container\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n }\n </div>\n } @else {\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n <div class=\"ngs-stepper-content-wrapper\" [class.ngs-stepper-last-step]=\"i === stepItems().length - 1\">\n <div class=\"ngs-stepper-vertical-line\"></div>\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n </div>\n }\n }\n</div>\n", styles: [":root{--ngs-stepper-header-padding: 16px;--ngs-stepper-header-gap: 8px;--ngs-stepper-icon-size: 24px;--ngs-stepper-icon-bg: var(--ngs-color-surface-container-high);--ngs-stepper-icon-color: var(--ngs-color-on-surface);--ngs-stepper-icon-active-bg: var(--ngs-color-primary);--ngs-stepper-icon-active-color: var(--ngs-color-on-primary);--ngs-stepper-icon-completed-bg: var(--ngs-color-success);--ngs-stepper-icon-completed-color: var(--ngs-color-on-success);--ngs-stepper-label-color: var(--ngs-color-on-surface-variant);--ngs-stepper-label-active-color: var(--ngs-color-on-surface);--ngs-stepper-line-color: var(--ngs-color-outline-variant);--ngs-stepper-content-padding: 24px}.ngs-stepper{display:flex;flex-direction:column}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-header{padding:16px 0}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-content-wrapper{margin-left:calc(var(--ngs-stepper-icon-size) / 2 - .5px);padding-left:calc(var(--ngs-stepper-icon-size) / 2 + var(--ngs-stepper-header-gap) + .5px);position:relative}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-content-wrapper.ngs-stepper-last-step .ngs-stepper-vertical-line{display:none}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-vertical-line{position:absolute;left:0;top:-16px;bottom:-16px;width:1px;background:var(--ngs-stepper-line-color)}.ngs-stepper.ngs-stepper-vertical .ngs-stepper-content{padding:8px 0 24px}.ngs-stepper.ngs-stepper-header-bottom{flex-direction:column-reverse}.ngs-stepper.ngs-stepper-header-bottom .ngs-stepper-header-container{border-bottom:none;border-top:1px solid var(--ngs-stepper-line-color)}.ngs-stepper-header-container{display:flex;align-items:center;padding:0 var(--ngs-stepper-header-padding);border-bottom:1px solid var(--ngs-stepper-line-color);overflow-x:hidden}.ngs-stepper-header-container.ngs-stepper-label-bottom-container{align-items:flex-start;padding:0}.ngs-stepper-header-container.ngs-stepper-label-bottom-container .ngs-stepper-header{flex:1;padding-left:8px;padding-right:8px}.ngs-stepper-header{display:flex;align-items:center;gap:var(--ngs-stepper-header-gap);padding:16px 0;cursor:pointer;white-space:nowrap;outline:none;position:relative;min-width:0}.ngs-stepper-header:hover .ngs-stepper-icon:not(.ngs-stepper-header-active .ngs-stepper-icon){background:var(--ngs-color-surface-container-highest)}.ngs-stepper-header.ngs-stepper-label-bottom{flex-direction:column;justify-content:center;width:auto;min-width:100px;gap:12px}.ngs-stepper-header.ngs-stepper-label-bottom .ngs-stepper-label{text-align:center;white-space:normal}.ngs-stepper-header.ngs-stepper-label-bottom:before,.ngs-stepper-header.ngs-stepper-label-bottom:after{content:\"\";position:absolute;top:calc(var(--ngs-stepper-icon-size) / 2 + 16px);height:1px;background:var(--ngs-stepper-line-color);width:calc(50% - var(--ngs-stepper-icon-size) / 2 - 8px)}.ngs-stepper-header.ngs-stepper-label-bottom:before{left:0}.ngs-stepper-header.ngs-stepper-label-bottom:after{right:0}.ngs-stepper-header.ngs-stepper-label-bottom:first-child:before,.ngs-stepper-header.ngs-stepper-label-bottom:last-of-type:after{display:none}.ngs-stepper-icon{width:var(--ngs-stepper-icon-size);height:var(--ngs-stepper-icon-size);border-radius:50%;background:var(--ngs-stepper-icon-bg);color:var(--ngs-stepper-icon-color);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;flex-shrink:0;transition:background-color .2s ease;z-index:1}.ngs-stepper-header-active .ngs-stepper-icon{background:var(--ngs-stepper-icon-active-bg);color:var(--ngs-stepper-icon-active-color)}.ngs-stepper-header-active .ngs-stepper-label{color:var(--ngs-stepper-label-active-color);font-weight:500}.ngs-stepper-header-completed .ngs-stepper-icon{background:var(--ngs-stepper-icon-completed-bg);color:var(--ngs-stepper-icon-completed-color)}.ngs-stepper-label{color:var(--ngs-stepper-label-color);font-size:14px;transition:color .2s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngs-stepper-line{flex:1;height:1px;background:var(--ngs-stepper-line-color);margin:0 16px;min-width:24px}.ngs-stepper-content-container{padding:var(--ngs-stepper-content-padding)}.ngs-stepper-content{outline:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
77
+ args: [{ selector: 'ngs-stepper', exportAs: 'ngsStepper', standalone: true, imports: [
78
+ CommonModule
79
+ ], providers: [
80
+ {
81
+ provide: CdkStepper,
82
+ useExisting: Stepper
83
+ }
84
+ ], host: {
85
+ 'class': 'ngs-stepper',
86
+ }, template: "<div class=\"ngs-stepper\"\n [class.ngs-stepper-vertical]=\"orientation === 'vertical'\"\n [class.ngs-stepper-horizontal]=\"orientation === 'horizontal'\"\n [class.ngs-stepper-header-bottom]=\"headerPosition() === 'bottom'\">\n @if (orientation === 'horizontal') {\n <div class=\"ngs-stepper-header-container\" [class.ngs-stepper-label-bottom-container]=\"labelPosition() === 'bottom'\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n [class.ngs-stepper-label-bottom]=\"labelPosition() === 'bottom'\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n @if (i < stepItems().length - 1 && labelPosition() !== 'bottom') {\n <div class=\"ngs-stepper-line\"></div>\n }\n }\n </div>\n\n <div class=\"ngs-stepper-content-container\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n }\n </div>\n } @else {\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n <div class=\"ngs-stepper-content-wrapper\" [class.ngs-stepper-last-step]=\"i === stepItems().length - 1\">\n <div class=\"ngs-stepper-vertical-line\"></div>\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n </div>\n }\n }\n</div>\n", styles: [":host{--ngs-stepper-header-padding: 16px;--ngs-stepper-header-gap: 8px;--ngs-stepper-icon-size: 24px;--ngs-stepper-icon-bg: var(--ngs-color-surface-container-high);--ngs-stepper-icon-color: var(--ngs-color-on-surface);--ngs-stepper-icon-active-bg: var(--ngs-color-primary);--ngs-stepper-icon-active-color: var(--ngs-color-on-primary);--ngs-stepper-icon-completed-bg: var(--ngs-color-success);--ngs-stepper-icon-completed-color: var(--ngs-color-on-success);--ngs-stepper-label-color: var(--ngs-color-on-surface-variant);--ngs-stepper-label-active-color: var(--ngs-color-on-surface);--ngs-stepper-line-color: var(--ngs-color-outline-variant);--ngs-stepper-content-padding: 24px}:host .ngs-stepper{display:flex;flex-direction:column}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-header{padding:16px 0}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-content-wrapper{margin-left:calc(var(--ngs-stepper-icon-size) / 2 - .5px);padding-left:calc(var(--ngs-stepper-icon-size) / 2 + var(--ngs-stepper-header-gap) + .5px);position:relative}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-content-wrapper.ngs-stepper-last-step .ngs-stepper-vertical-line{display:none}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-vertical-line{position:absolute;left:0;top:-16px;bottom:-16px;width:1px;background:var(--ngs-stepper-line-color)}:host .ngs-stepper.ngs-stepper-vertical .ngs-stepper-content{padding:8px 0 24px}:host .ngs-stepper.ngs-stepper-header-bottom{flex-direction:column-reverse}:host .ngs-stepper.ngs-stepper-header-bottom .ngs-stepper-header-container{border-bottom:none;border-top:1px solid var(--ngs-stepper-line-color)}:host .ngs-stepper-header-container{display:flex;align-items:center;padding:0 var(--ngs-stepper-header-padding);border-bottom:1px solid var(--ngs-stepper-line-color);overflow-x:hidden}:host .ngs-stepper-header-container.ngs-stepper-label-bottom-container{align-items:flex-start;padding:0}:host .ngs-stepper-header-container.ngs-stepper-label-bottom-container .ngs-stepper-header{flex:1;padding-left:8px;padding-right:8px}:host .ngs-stepper-header{display:flex;align-items:center;gap:var(--ngs-stepper-header-gap);padding:16px 0;cursor:pointer;white-space:nowrap;outline:none;position:relative;min-width:0}:host .ngs-stepper-header:not(.ngs-stepper-header-active):hover .ngs-stepper-icon{background:var(--ngs-color-surface-container-highest)}:host .ngs-stepper-header.ngs-stepper-label-bottom{flex-direction:column;justify-content:center;width:auto;min-width:100px;gap:12px}:host .ngs-stepper-header.ngs-stepper-label-bottom .ngs-stepper-label{text-align:center;white-space:normal}:host .ngs-stepper-header.ngs-stepper-label-bottom:before,:host .ngs-stepper-header.ngs-stepper-label-bottom:after{content:\"\";position:absolute;top:calc(var(--ngs-stepper-icon-size) / 2 + 16px);height:1px;background:var(--ngs-stepper-line-color);width:calc(50% - var(--ngs-stepper-icon-size) / 2 - 8px)}:host .ngs-stepper-header.ngs-stepper-label-bottom:before{left:0}:host .ngs-stepper-header.ngs-stepper-label-bottom:after{right:0}:host .ngs-stepper-header.ngs-stepper-label-bottom:first-child:before,:host .ngs-stepper-header.ngs-stepper-label-bottom:last-of-type:after{display:none}:host .ngs-stepper-icon{width:var(--ngs-stepper-icon-size);height:var(--ngs-stepper-icon-size);border-radius:50%;background:var(--ngs-stepper-icon-bg);color:var(--ngs-stepper-icon-color);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;flex-shrink:0;transition:background-color .2s ease;z-index:1}:host .ngs-stepper-header-active .ngs-stepper-icon{background:var(--ngs-stepper-icon-active-bg);color:var(--ngs-stepper-icon-active-color)}:host .ngs-stepper-header-active .ngs-stepper-label{color:var(--ngs-stepper-label-active-color);font-weight:500}:host .ngs-stepper-header-completed .ngs-stepper-icon{background:var(--ngs-stepper-icon-completed-bg);color:var(--ngs-stepper-icon-completed-color)}:host .ngs-stepper-label{color:var(--ngs-stepper-label-color);font-size:14px;transition:color .2s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .ngs-stepper-line{flex:1;height:1px;background:var(--ngs-stepper-line-color);margin:0 16px;min-width:24px}:host .ngs-stepper-content-container{padding:var(--ngs-stepper-content-padding)}:host .ngs-stepper-content{outline:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
73
87
  }], propDecorators: { headerPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerPosition", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], stepItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Step), { ...{ descendants: true }, isSignal: true }] }], _stepLabels: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StepLabel), { ...{ descendants: true }, isSignal: true }] }] } });
74
88
 
75
89
  class StepperNext extends CdkStepperNext {
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-stepper.mjs","sources":["../../../projects/components/stepper/src/step-label.ts","../../../projects/components/stepper/src/step/step.ts","../../../projects/components/stepper/src/step/step.html","../../../projects/components/stepper/src/stepper/stepper.ts","../../../projects/components/stepper/src/stepper/stepper.html","../../../projects/components/stepper/src/stepper-next.ts","../../../projects/components/stepper/src/stepper-previous.ts","../../../projects/components/stepper/ngstarter-ui-components-stepper.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsStepLabel]',\n standalone: true\n})\nexport class StepLabel {\n constructor(public template: TemplateRef<any>) { }\n}\n","import { Component, contentChild, forwardRef, Inject } from '@angular/core';\nimport { CdkStep } from '@angular/cdk/stepper';\nimport { StepLabel } from '../step-label';\nimport { Stepper } from '../stepper/stepper';\n\n@Component({\n selector: 'ngs-step',\n exportAs: 'ngsStep',\n templateUrl: './step.html',\n styleUrl: './step.scss',\n providers: [\n {\n provide: CdkStep,\n useExisting: Step\n }\n ],\n host: {\n 'class': 'ngs-step'\n }\n})\nexport class Step extends CdkStep {\n readonly ngsStepLabel = contentChild(StepLabel);\n\n constructor(@Inject(forwardRef(() => Stepper)) stepper: Stepper) {\n super(stepper);\n }\n}\n","<ng-template>\n <ng-content />\n</ng-template>\n","import { Component, input, ViewEncapsulation, contentChildren } from '@angular/core';\nimport { CdkStepper, StepperOrientation } from '@angular/cdk/stepper';\nimport { Step } from '../step/step';\nimport { StepLabel } from '../step-label';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ngs-stepper',\n exportAs: 'ngsStepper',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './stepper.html',\n styleUrl: './stepper.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: CdkStepper, useExisting: Stepper }],\n})\nexport class Stepper extends CdkStepper {\n headerPosition = input<'top' | 'bottom'>('top');\n labelPosition = input<'top' | 'bottom'>('top');\n\n private _stepperOrientation: StepperOrientation = 'horizontal';\n\n override get orientation(): StepperOrientation {\n return this._stepperOrientation;\n }\n override set orientation(value: StepperOrientation) {\n this._stepperOrientation = value;\n }\n\n // Use a separate signal for template iteration to avoid overriding CdkStepper's QueryList `_steps`.\n readonly stepItems = contentChildren(Step, { descendants: true });\n readonly _stepLabels = contentChildren(StepLabel, { descendants: true });\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n}\n","<div class=\"ngs-stepper\"\n [class.ngs-stepper-vertical]=\"orientation === 'vertical'\"\n [class.ngs-stepper-horizontal]=\"orientation === 'horizontal'\"\n [class.ngs-stepper-header-bottom]=\"headerPosition() === 'bottom'\">\n @if (orientation === 'horizontal') {\n <div class=\"ngs-stepper-header-container\" [class.ngs-stepper-label-bottom-container]=\"labelPosition() === 'bottom'\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n [class.ngs-stepper-label-bottom]=\"labelPosition() === 'bottom'\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n @if (i < stepItems().length - 1 && labelPosition() !== 'bottom') {\n <div class=\"ngs-stepper-line\"></div>\n }\n }\n </div>\n\n <div class=\"ngs-stepper-content-container\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n }\n </div>\n } @else {\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n <div class=\"ngs-stepper-content-wrapper\" [class.ngs-stepper-last-step]=\"i === stepItems().length - 1\">\n <div class=\"ngs-stepper-vertical-line\"></div>\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n </div>\n }\n }\n</div>\n","import { Directive, input } from '@angular/core';\nimport { CdkStepperNext } from '@angular/cdk/stepper';\n\n@Directive({\n selector: 'button[ngsStepperNext]',\n host: {\n '[type]': 'type',\n },\n standalone: true\n})\nexport class StepperNext extends CdkStepperNext {\n override type: string = 'submit';\n}\n","import { Directive, input } from '@angular/core';\nimport { CdkStepperPrevious } from '@angular/cdk/stepper';\n\n@Directive({\n selector: 'button[ngsStepperPrevious]',\n host: {\n '[type]': 'type',\n },\n standalone: true\n})\nexport class StepperPrevious extends CdkStepperPrevious {\n override type: string = 'button';\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-stepper.mjs","sources":["../../../projects/components/stepper/src/step-label.ts","../../../projects/components/stepper/src/step/step.ts","../../../projects/components/stepper/src/step/step.html","../../../projects/components/stepper/src/stepper/stepper.ts","../../../projects/components/stepper/src/stepper/stepper.html","../../../projects/components/stepper/src/stepper-next.ts","../../../projects/components/stepper/src/stepper-previous.ts","../../../projects/components/stepper/ngstarter-ui-components-stepper.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsStepLabel]',\n standalone: true\n})\nexport class StepLabel {\n constructor(public template: TemplateRef<any>) { }\n}\n","import { Component, contentChild, forwardRef, Inject } from '@angular/core';\nimport { CdkStep } from '@angular/cdk/stepper';\nimport { StepLabel } from '../step-label';\nimport { Stepper } from '../stepper/stepper';\n\n@Component({\n selector: 'ngs-step',\n exportAs: 'ngsStep',\n templateUrl: './step.html',\n styleUrl: './step.scss',\n providers: [\n {\n provide: CdkStep,\n useExisting: Step\n }\n ],\n host: {\n 'class': 'ngs-step'\n }\n})\nexport class Step extends CdkStep {\n readonly ngsStepLabel = contentChild(StepLabel);\n\n constructor(@Inject(forwardRef(() => Stepper)) stepper: Stepper) {\n super(stepper);\n }\n}\n","<ng-template>\n <ng-content />\n</ng-template>\n","import { Component, input, contentChildren } from '@angular/core';\nimport { CdkStepper, StepperOrientation } from '@angular/cdk/stepper';\nimport { Step } from '../step/step';\nimport { StepLabel } from '../step-label';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ngs-stepper',\n exportAs: 'ngsStepper',\n standalone: true,\n imports: [\n CommonModule\n ],\n templateUrl: './stepper.html',\n styleUrl: './stepper.scss',\n providers: [\n {\n provide: CdkStepper,\n useExisting: Stepper\n }\n ],\n host: {\n 'class': 'ngs-stepper',\n }\n})\nexport class Stepper extends CdkStepper {\n headerPosition = input<'top' | 'bottom'>('top');\n labelPosition = input<'top' | 'bottom'>('top');\n\n private _stepperOrientation: StepperOrientation = 'horizontal';\n\n override get orientation(): StepperOrientation {\n return this._stepperOrientation;\n }\n override set orientation(value: StepperOrientation) {\n this._stepperOrientation = value;\n }\n\n // Use a separate signal for template iteration to avoid overriding CdkStepper's QueryList `_steps`.\n readonly stepItems = contentChildren(Step, { descendants: true });\n readonly _stepLabels = contentChildren(StepLabel, { descendants: true });\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n}\n","<div class=\"ngs-stepper\"\n [class.ngs-stepper-vertical]=\"orientation === 'vertical'\"\n [class.ngs-stepper-horizontal]=\"orientation === 'horizontal'\"\n [class.ngs-stepper-header-bottom]=\"headerPosition() === 'bottom'\">\n @if (orientation === 'horizontal') {\n <div class=\"ngs-stepper-header-container\" [class.ngs-stepper-label-bottom-container]=\"labelPosition() === 'bottom'\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n [class.ngs-stepper-label-bottom]=\"labelPosition() === 'bottom'\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n @if (i < stepItems().length - 1 && labelPosition() !== 'bottom') {\n <div class=\"ngs-stepper-line\"></div>\n }\n }\n </div>\n\n <div class=\"ngs-stepper-content-container\">\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n }\n </div>\n } @else {\n @for (step of stepItems(); track step; let i = $index) {\n <div class=\"ngs-stepper-header\"\n [class.ngs-stepper-header-active]=\"selectedIndex === i\"\n [class.ngs-stepper-header-completed]=\"step.completed\"\n (click)=\"step.select()\"\n role=\"tab\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-controls]=\"_getStepContentId(i)\">\n <div class=\"ngs-stepper-icon\">\n @if (step.completed) {\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"ngs-stepper-label\">\n @if (step.ngsStepLabel(); as stepLabel) {\n <ng-container [ngTemplateOutlet]=\"stepLabel.template\" />\n } @else {\n {{ step.label }}\n }\n </div>\n </div>\n <div class=\"ngs-stepper-content-wrapper\" [class.ngs-stepper-last-step]=\"i === stepItems().length - 1\">\n <div class=\"ngs-stepper-vertical-line\"></div>\n <div class=\"ngs-stepper-content\"\n [id]=\"_getStepContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [hidden]=\"selectedIndex !== i\">\n <ng-container [ngTemplateOutlet]=\"step.content\" />\n </div>\n </div>\n }\n }\n</div>\n","import { Directive, input } from '@angular/core';\nimport { CdkStepperNext } from '@angular/cdk/stepper';\n\n@Directive({\n selector: 'button[ngsStepperNext]',\n host: {\n '[type]': 'type',\n },\n standalone: true\n})\nexport class StepperNext extends CdkStepperNext {\n override type: string = 'submit';\n}\n","import { Directive, input } from '@angular/core';\nimport { CdkStepperPrevious } from '@angular/cdk/stepper';\n\n@Directive({\n selector: 'button[ngsStepperPrevious]',\n host: {\n '[type]': 'type',\n },\n standalone: true\n})\nexport class StepperPrevious extends CdkStepperPrevious {\n override type: string = 'button';\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -323,11 +323,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
323
323
  */
324
324
  class TextColumn extends CdkTextColumn {
325
325
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TextColumn, deps: null, target: i0.ɵɵFactoryTarget.Component });
326
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: TextColumn, isStandalone: true, selector: "ngs-text-column", usesInheritance: true, ngImport: i0, template: "<ng-container ngsColumnDef>\n <th ngs-header-cell *ngsHeaderCellDef> {{headerText}} </th>\n <td ngs-cell *ngsCellDef=\"let data\"> {{dataAccessor(data, name)}} </td>\n</ng-container>\n", styles: ["/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: ColumnDef, selector: "[ngsColumnDef]", inputs: ["ngsColumnDef"] }, { kind: "directive", type: HeaderCellDef, selector: "[ngsHeaderCellDef]" }, { kind: "directive", type: HeaderCell, selector: "ngs-header-cell, [ngs-header-cell], th[ngs-header-cell]" }, { kind: "directive", type: CellDef, selector: "[ngsCellDef]" }, { kind: "directive", type: Cell, selector: "ngs-cell, [ngs-cell], td[ngs-cell]" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
326
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: TextColumn, isStandalone: true, selector: "ngs-text-column", host: { classAttribute: "ngs-text-column" }, exportAs: ["ngsTextColumn"], usesInheritance: true, ngImport: i0, template: "<ng-container ngsColumnDef>\n <th ngs-header-cell *ngsHeaderCellDef> {{headerText}} </th>\n <td ngs-cell *ngsCellDef=\"let data\"> {{dataAccessor(data, name)}} </td>\n</ng-container>\n", styles: ["/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: ColumnDef, selector: "[ngsColumnDef]", inputs: ["ngsColumnDef"] }, { kind: "directive", type: HeaderCellDef, selector: "[ngsHeaderCellDef]" }, { kind: "directive", type: HeaderCell, selector: "ngs-header-cell, [ngs-header-cell], th[ngs-header-cell]" }, { kind: "directive", type: CellDef, selector: "[ngsCellDef]" }, { kind: "directive", type: Cell, selector: "ngs-cell, [ngs-cell], td[ngs-cell]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
327
327
  }
328
328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TextColumn, decorators: [{
329
329
  type: Component,
330
- args: [{ selector: 'ngs-text-column', changeDetection: ChangeDetectionStrategy.Default, standalone: true, imports: [ColumnDef, HeaderCellDef, HeaderCell, CellDef, Cell], template: "<ng-container ngsColumnDef>\n <th ngs-header-cell *ngsHeaderCellDef> {{headerText}} </th>\n <td ngs-cell *ngsCellDef=\"let data\"> {{dataAccessor(data, name)}} </td>\n</ng-container>\n", styles: ["/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
330
+ args: [{ selector: 'ngs-text-column', exportAs: 'ngsTextColumn', imports: [
331
+ ColumnDef,
332
+ HeaderCellDef,
333
+ HeaderCell,
334
+ CellDef,
335
+ Cell
336
+ ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
337
+ 'class': 'ngs-text-column',
338
+ }, template: "<ng-container ngsColumnDef>\n <th ngs-header-cell *ngsHeaderCellDef> {{headerText}} </th>\n <td ngs-cell *ngsCellDef=\"let data\"> {{dataAccessor(data, name)}} </td>\n</ng-container>\n", styles: ["/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
331
339
  }] });
332
340
 
333
341
  class TableDataSource extends DataSource {
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-table.mjs","sources":["../../../projects/components/table/src/table/table.ts","../../../projects/components/table/src/table/table.html","../../../projects/components/table/src/cell/cell.ts","../../../projects/components/table/src/cell-def.ts","../../../projects/components/table/src/column-def.ts","../../../projects/components/table/src/footer-cell/footer-cell.ts","../../../projects/components/table/src/footer-cell-def.ts","../../../projects/components/table/src/footer-row/footer-row.ts","../../../projects/components/table/src/footer-row/footer-row.html","../../../projects/components/table/src/footer-row-def.ts","../../../projects/components/table/src/header-cell/header-cell.ts","../../../projects/components/table/src/header-cell-def.ts","../../../projects/components/table/src/header-row/header-row.ts","../../../projects/components/table/src/header-row/header-row.html","../../../projects/components/table/src/header-row-def.ts","../../../projects/components/table/src/no-data-row.ts","../../../projects/components/table/src/row/row.ts","../../../projects/components/table/src/row/row.html","../../../projects/components/table/src/row-def.ts","../../../projects/components/table/src/text-column/text-column.ts","../../../projects/components/table/src/text-column/text-column.html","../../../projects/components/table/src/table-data-source.ts","../../../projects/components/table/src/native-table/native-table.ts","../../../projects/components/table/src/native-table/native-table.html","../../../projects/components/table/ngstarter-ui-components-table.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n ContentChildren,\n QueryList,\n signal,\n DestroyRef,\n inject\n} from '@angular/core';\nimport {\n CdkColumnDef,\n CdkHeaderRowDef,\n CdkTable,\n CDK_TABLE,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n NoDataRowOutlet,\n STICKY_POSITIONING_LISTENER,\n CdkTableModule,\n} from '@angular/cdk/table';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngs-table, table[ngs-table]',\n exportAs: 'ngsTable',\n imports: [\n CdkTableModule,\n HeaderRowOutlet,\n FooterRowOutlet,\n DataRowOutlet,\n NoDataRowOutlet,\n ],\n templateUrl: './table.html',\n styleUrl: './table.scss',\n providers: [\n { provide: CdkTable, useExisting: forwardRef(() => Table) },\n { provide: CDK_TABLE, useExisting: forwardRef(() => Table) },\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-table not-prose',\n '[class.ngs-table-fixed-layout]': 'fixedLayout',\n '[class.ngs-table-sticky]': 'hasStickyColumns()',\n 'role': 'grid'\n },\n})\nexport class Table<T> extends CdkTable<T> {\n hideHeader = input(false, { transform: booleanAttribute });\n hideBody = input(false, { transform: booleanAttribute });\n hideFooter = input(false, { transform: booleanAttribute });\n\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * Whether the table has any sticky header rows.\n * This is used to apply the 'ngs-table-sticky-header' class.\n */\n private readonly _hasStickyHeader = signal<boolean>(false);\n\n readonly hasStickyHeader = computed(() => this._hasStickyHeader());\n\n // We define our own queries to track changes, avoiding conflict with CdkTable's internal properties.\n // Angular will populate these just fine alongside the parent's queries.\n @ContentChildren(CdkHeaderRowDef, { descendants: true })\n headerRowDefsQuery!: QueryList<CdkHeaderRowDef>;\n\n @ContentChildren(CdkColumnDef, { descendants: true })\n columnDefsQuery!: QueryList<CdkColumnDef>;\n\n /**\n * Whether the table has any sticky columns.\n */\n private readonly _hasStickyColumns = signal<boolean>(false);\n\n readonly hasStickyColumns = computed(() => this._hasStickyColumns());\n\n private _updateStickyStates(): void {\n if (this.headerRowDefsQuery) {\n const headerRowDefs = this.headerRowDefsQuery.toArray();\n const hasStickyHeaderRows = headerRowDefs.some((def: any) => def.sticky);\n this._hasStickyHeader.set(hasStickyHeaderRows);\n }\n if (this.columnDefsQuery) {\n const colDefs = this.columnDefsQuery.toArray();\n const hasStickyColumns = colDefs.some((def: any) => def.sticky || def.stickyEnd);\n\n this._hasStickyColumns.set(hasStickyColumns);\n\n // Directly set the property on the base class.\n // This triggers the base class setter logic which handles style updates.\n this.fixedLayout = hasStickyColumns;\n }\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n override ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n this.headerRowDefsQuery.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this._updateStickyStates();\n });\n\n this.columnDefsQuery.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this._updateStickyStates();\n });\n\n this._updateStickyStates();\n }\n\n protected override stickyCssClass = 'ngs-table-sticky';\n}\n","<thead [class.ngs-table-sticky-header]=\"hasStickyHeader()\" [class.hidden]=\"hideHeader()\">\n <ng-container headerRowOutlet />\n</thead>\n<tbody [class.hidden]=\"hideBody()\">\n <ng-container rowOutlet />\n <ng-container noDataRowOutlet />\n</tbody>\n<tfoot [class.hidden]=\"hideFooter()\">\n <ng-container footerRowOutlet />\n</tfoot>\n","import { Directive, ElementRef } from '@angular/core';\nimport { CdkCell } from '@angular/cdk/table';\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'ngs-cell, [ngs-cell], td[ngs-cell]',\n host: {\n 'class': 'ngs-cell',\n 'role': 'gridcell',\n },\n standalone: true,\n})\nexport class Cell extends CdkCell {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkCellDef } from '@angular/cdk/table';\n\n/** Cell definition for the ngs-table. */\n@Directive({\n selector: '[ngsCellDef]',\n standalone: true,\n providers: [{provide: CdkCellDef, useExisting: forwardRef(() => CellDef)}],\n})\nexport class CellDef extends CdkCellDef {}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkColumnDef } from '@angular/cdk/table';\n\n/**\n * Column definition for the ngs-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[ngsColumnDef]',\n standalone: true,\n providers: [{provide: CdkColumnDef, useExisting: forwardRef(() => ColumnDef)}],\n inputs: ['name: ngsColumnDef'],\n})\nexport class ColumnDef extends CdkColumnDef {}\n","import { Directive, ElementRef } from '@angular/core';\nimport { CdkFooterCell } from '@angular/cdk/table';\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'ngs-footer-cell, [ngs-footer-cell], td[ngs-footer-cell]',\n host: {\n 'class': 'ngs-footer-cell',\n 'role': 'gridcell',\n },\n standalone: true,\n})\nexport class FooterCell extends CdkFooterCell {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkFooterCellDef } from '@angular/cdk/table';\n\n/** Footer cell definition for the ngs-table. */\n@Directive({\n selector: '[ngsFooterCellDef]',\n standalone: true,\n providers: [{provide: CdkFooterCellDef, useExisting: forwardRef(() => FooterCellDef)}],\n})\nexport class FooterCellDef extends CdkFooterCellDef {}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport {\n CdkCellOutlet,\n CdkFooterRow\n} from '@angular/cdk/table';\n\n/** Footer template container that adds the right classes and role. */\n@Component({\n selector: 'ngs-footer-row, [ngs-footer-row], tr[ngs-footer-row]',\n templateUrl: './footer-row.html',\n styleUrl: './footer-row.scss',\n host: {\n 'class': 'ngs-footer-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [CdkCellOutlet],\n providers: [{provide: CdkFooterRow, useExisting: forwardRef(() => FooterRow)}],\n})\nexport class FooterRow extends CdkFooterRow {\n}\n","<ng-container cdkCellOutlet />\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkFooterRowDef } from '@angular/cdk/table';\n\n/** Footer row definition for the ngs-table. */\n@Directive({\n selector: '[ngsFooterRowDef]',\n standalone: true,\n providers: [{provide: CdkFooterRowDef, useExisting: forwardRef(() => FooterRowDef)}],\n inputs: ['columns: ngsFooterRowDef', 'sticky: ngsFooterRowDefSticky'],\n})\nexport class FooterRowDef extends CdkFooterRowDef {}\n","import { Directive, ElementRef } from '@angular/core';\nimport { CdkHeaderCell } from '@angular/cdk/table';\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'ngs-header-cell, [ngs-header-cell], th[ngs-header-cell]',\n host: {\n 'class': 'ngs-header-cell',\n 'role': 'columnheader',\n },\n standalone: true,\n})\nexport class HeaderCell extends CdkHeaderCell {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkHeaderCellDef } from '@angular/cdk/table';\n\n/** Header cell definition for the ngs-table. */\n@Directive({\n selector: '[ngsHeaderCellDef]',\n standalone: true,\n providers: [{provide: CdkHeaderCellDef, useExisting: forwardRef(() => HeaderCellDef)}],\n})\nexport class HeaderCellDef extends CdkHeaderCellDef {}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport {\n CdkCellOutlet,\n CdkHeaderRow\n} from '@angular/cdk/table';\n\n/** Header template container that adds the right classes and role. */\n@Component({\n selector: 'ngs-header-row, [ngs-header-row], tr[ngs-header-row]',\n templateUrl: './header-row.html',\n styleUrl: './header-row.scss',\n host: {\n 'class': 'ngs-header-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [CdkCellOutlet],\n providers: [{provide: CdkHeaderRow, useExisting: forwardRef(() => HeaderRow)}],\n})\nexport class HeaderRow extends CdkHeaderRow {\n}\n","<ng-container cdkCellOutlet />\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkHeaderRowDef } from '@angular/cdk/table';\n\n/** Header row definition for the ngs-table. */\n@Directive({\n selector: '[ngsHeaderRowDef]',\n standalone: true,\n providers: [{provide: CdkHeaderRowDef, useExisting: forwardRef(() => HeaderRowDef)}],\n inputs: ['columns: ngsHeaderRowDef', 'sticky: ngsHeaderRowDefSticky'],\n})\nexport class HeaderRowDef extends CdkHeaderRowDef {}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkNoDataRow } from '@angular/cdk/table';\n\n/** Row that can be used to display a message when no data is shown in the table. */\n@Directive({\n selector: 'ng-template[ngsNoDataRow]',\n standalone: true,\n providers: [{provide: CdkNoDataRow, useExisting: forwardRef(() => NoDataRow)}],\n})\nexport class NoDataRow extends CdkNoDataRow {\n}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport {\n CdkCellOutlet,\n CdkRow\n} from '@angular/cdk/table';\n\n/** Data row template container that adds the right classes and role. */\n@Component({\n selector: 'ngs-row, [ngs-row], tr[ngs-row]',\n templateUrl: './row.html',\n styleUrl: './row.scss',\n host: {\n 'class': 'ngs-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [CdkCellOutlet],\n providers: [{provide: CdkRow, useExisting: forwardRef(() => Row)}],\n})\nexport class Row extends CdkRow {}\n","<ng-container cdkCellOutlet />\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkRowDef } from '@angular/cdk/table';\n\n/** Data row definition for the ngs-table. */\n@Directive({\n selector: '[ngsRowDef]',\n standalone: true,\n providers: [{provide: CdkRowDef, useExisting: forwardRef(() => RowDef)}],\n inputs: ['columns: ngsRowDefColumns', 'when: ngsRowDefWhen'],\n})\nexport class RowDef<T> extends CdkRowDef<T> {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CdkTextColumn } from '@angular/cdk/table';\nimport { ColumnDef } from '../column-def';\nimport { CellDef } from '../cell-def';\nimport { HeaderCellDef } from '../header-cell-def';\nimport { HeaderCell } from '../header-cell/header-cell';\nimport { Cell } from '../cell/cell';\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the same as the data property that it should show.\n * The header can be overridden by setting the `headerText` input.\n *\n * Example usage:\n * <table ngs-table [dataSource]=\"dataSource\">\n * <ngs-text-column name=\"userName\"></ngs-text-column>\n * <tr ngs-header-row *ngsHeaderRowDef=\"['userName']\"></tr>\n * <tr ngs-row *ngsRowDef=\"['userName']\"></tr>\n * </table>\n */\n@Component({\n selector: 'ngs-text-column',\n templateUrl: './text-column.html',\n styleUrl: './text-column.scss',\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [ColumnDef, HeaderCellDef, HeaderCell, CellDef, Cell],\n})\nexport class TextColumn<T> extends CdkTextColumn<T> {}\n","<ng-container ngsColumnDef>\n <th ngs-header-cell *ngsHeaderCellDef> {{headerText}} </th>\n <td ngs-cell *ngsCellDef=\"let data\"> {{dataAccessor(data, name)}} </td>\n</ng-container>\n","import { DataSource as _DataSource } from '@angular/cdk/collections';\nimport {\n BehaviorSubject,\n combineLatest,\n isObservable,\n merge,\n Observable,\n of,\n Subject,\n Subscription\n} from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { SortDirective, Sort } from '@ngstarter-ui/components/sort';\nimport { Paginator } from '@ngstarter-ui/components/paginator';\n\nexport class TableDataSource<T> extends _DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData: BehaviorSubject<T[]>;\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that the table needs to be notified about. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered data, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription = Subscription.EMPTY;\n\n /**\n * Cache for quick filter strings. Maps each data object to its concatenated string representation\n * used for filtering.\n */\n private _quickFilterCache = new WeakMap<T & object, string>();\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'scrolled' paginator can use this to know the total number of items when\n * pagination has been applied.\n */\n filteredData: T[];\n\n /**\n * The sorted set of data that has been ordered by the sort state, or all the filtered data if there\n * is no sort. Useful for knowing the set of data the table represents.\n */\n sortedData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() {\n return this._data.value;\n }\n set data(data: T[]) {\n this._data.next(data);\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To `TableDataSource`'s\n * default implementation, this string checks for stringification matches anywhere in the object.\n */\n get filter(): string {\n return this._filter.value;\n }\n set filter(filter: string) {\n this._filter.next(filter);\n if (!this._renderChangesSubscription) {\n this._filterData(this.data);\n }\n }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): SortDirective | null {\n return this._sort;\n }\n set sort(sort: SortDirective | null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n private _sort: SortDirective | null = null;\n\n /**\n * Instance of the Paginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the Paginator will trigger an update to the\n * table's rendered data.\n */\n get paginator(): Paginator | null {\n return this._paginator;\n }\n set paginator(paginator: Paginator | null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: Paginator | null = null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the data objects are flat and can be accessed directly by\n * the column name.\n */\n sortingDataAccessor: (data: T, sortHeaderId: string) => string | number = (\n data: T,\n sortHeaderId: string,\n ): string | number => {\n const value = (data as unknown as Record<string, any>)[sortHeaderId];\n return typeof value === 'number' || typeof value === 'string' ? value : '' + value;\n };\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * objects by retrieving data using the sortingDataAccessor. May be overridden for a\n * custom implementation of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: (data: T[], sort: SortDirective) => T[] = (data: T[], sort: SortDirective): T[] => {\n const active = typeof sort.active === 'function' ? sort.active() : sort.active;\n const direction = typeof sort.direction === 'function' ? sort.direction() : sort.direction;\n if (!active || direction === '') {\n return data;\n }\n\n return data.slice().sort((a, b) => {\n const valueA = this.sortingDataAccessor(a, active);\n const valueB = this.sortingDataAccessor(b, active);\n\n // If both valueA and valueB are numbers, use the numeric comparison.\n // If either valueA or valueB is not a number, use the string comparison.\n const comparatorResult =\n typeof valueA === 'number' && typeof valueB === 'number'\n ? valueA - valueB\n : (valueA + '').localeCompare(valueB + '');\n\n return comparatorResult * (direction === 'asc' ? 1 : -1);\n });\n };\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has at least one\n * occurrence in that string. By default, the filter string has its whitespace trimmed and the match\n * is case-insensitive. May be overridden for a custom implementation of filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches the data.\n */\n filterPredicate: (data: T, filter: string) => boolean = (data: T, filter: string): boolean => {\n // Transform the filter by converting it to lowercase and splitting into words.\n const transformedFilter = filter.trim().toLowerCase();\n if (!transformedFilter) {\n return true;\n }\n const filterWords = transformedFilter.split(/\\s+/);\n\n // Get the string representation of the data.\n const dataStr = this._getQuickFilterString(data);\n\n // Check if all filter words are present in the data string (any order).\n return filterWords.every(word => dataStr.indexOf(word) !== -1);\n };\n\n /**\n * Gets a string representation of the data object used for quick filtering.\n * Caches the result to improve performance.\n * @param data\n * @private\n */\n private _getQuickFilterString(data: T): string {\n if (typeof data !== 'object' || data === null) {\n return String(data).toLowerCase();\n }\n\n let cached = this._quickFilterCache.get(data as T & object);\n if (cached !== undefined) {\n return cached;\n }\n\n const dataStr = Object.keys(data as unknown as Record<string, any>)\n .reduce((currentTerm: string, key: string) => {\n const val = (data as unknown as Record<string, any>)[key];\n return currentTerm + (val === null || val === undefined ? '' : val) + ' ';\n }, '')\n .toLowerCase();\n\n this._quickFilterCache.set(data as T & object, dataStr);\n return dataStr;\n }\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._renderData = new BehaviorSubject<T[]>(initialData);\n this.filteredData = initialData;\n this.sortedData = initialData;\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered data.\n */\n _updateChangeSubscription() {\n const sortChange: Observable<Sort | null | void> = this._sort\n ? (merge(\n this._observeOutput<Sort>(this._sort.sortChange),\n this._sort.initialized || of(undefined),\n of(undefined)\n ) as Observable<Sort | void>)\n : of(null);\n const pageChange: Observable<any> = this._paginator\n ? (merge(\n this._observeOutput<any>(this._paginator.page as any),\n this._internalPageChanges,\n this._paginator.initialized || of(undefined),\n of(undefined)\n ) as Observable<any>)\n : of(null);\n const dataStream = this._data;\n\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter]).pipe(\n map(([data]) => this._filterData(data)),\n );\n\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange]).pipe(\n map(([data]) => this._orderData(data)),\n );\n\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(\n map(([data]) => this._pageData(data)),\n );\n\n // Watched for paged data changes and emit the result to the table to render.\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe((data) =>\n this._renderData.next(data),\n );\n }\n\n private _observeOutput<R>(output: any): Observable<R> {\n if (isObservable(output)) {\n return output as Observable<R>;\n }\n\n if (typeof output === 'object' && output !== null && ('subscribe' in output || 'emit' in output)) {\n return new Observable<R>((subscriber) => {\n try {\n const obs = outputToObservable(output);\n const sub = obs.subscribe({\n next: (value: any) => subscriber.next(value as R),\n error: (err) => {\n if (err && err.message && err.message.includes('NG0911')) {\n subscriber.complete();\n } else {\n subscriber.error(err);\n }\n },\n complete: () => subscriber.complete(),\n });\n return () => sub.unsubscribe();\n } catch (e: any) {\n if (e && e.message && e.message.includes('NG0911')) {\n subscriber.complete();\n return;\n }\n throw e;\n }\n });\n }\n\n return of() as Observable<R>;\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterPredicate function. If no filter is set, returns the entire data\n * array without changes.\n */\n _filterData(data: T[]) {\n this.filteredData = !this.filter\n ? data\n : data.filter((obj) => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array entirely.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, then the data should not be ordered.\n if (!this.sort) {\n this.sortedData = data;\n return data;\n }\n\n this.sortedData = this.sortData(data.slice(), this.sort);\n return this.sortedData;\n }\n\n /**\n * Returns a paged splice of the provided data array based on the provided Paginator's page\n * index and length. If there is no paginator provided, returns the data array as is.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) {\n return data;\n }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + (this.paginator.pageSize as any));\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the amount of pages in the new data set.\n */\n _updatePaginator(filteredDataLength: number) {\n if (!this.paginator) {\n return;\n }\n\n this.paginator.length = filteredDataLength;\n\n // If the page index is now larger than the number of pages, move the page index to the last\n // page.\n if (this.paginator.pageIndex > 0) {\n const lastPageIndex = Math.max(0, Math.ceil(this.paginator.length / this.paginator.pageSize) - 1);\n const newPageIndex = Math.min(this.paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== this.paginator.pageIndex) {\n this.paginator.pageIndex = newPageIndex;\n\n // Since the paginator has changed, notify the data source that the rendered data\n // should be updated.\n this._internalPageChanges.next();\n }\n }\n }\n\n /**\n * Used by the CdkTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() {\n if (!this._renderChangesSubscription || this._renderChangesSubscription.closed) {\n this._updateChangeSubscription();\n }\n\n return this._renderData;\n }\n\n /**\n * Used by the CdkTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = Subscription.EMPTY;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'table[ngs-native-table]',\n exportAs: 'ngsNativeTable',\n imports: [],\n templateUrl: './native-table.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './native-table.scss',\n host: {\n 'class': 'ngs-native-table not-prose',\n }\n})\nexport class NativeTable {\n\n}\n","<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_DataSource"],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-table.mjs","sources":["../../../projects/components/table/src/table/table.ts","../../../projects/components/table/src/table/table.html","../../../projects/components/table/src/cell/cell.ts","../../../projects/components/table/src/cell-def.ts","../../../projects/components/table/src/column-def.ts","../../../projects/components/table/src/footer-cell/footer-cell.ts","../../../projects/components/table/src/footer-cell-def.ts","../../../projects/components/table/src/footer-row/footer-row.ts","../../../projects/components/table/src/footer-row/footer-row.html","../../../projects/components/table/src/footer-row-def.ts","../../../projects/components/table/src/header-cell/header-cell.ts","../../../projects/components/table/src/header-cell-def.ts","../../../projects/components/table/src/header-row/header-row.ts","../../../projects/components/table/src/header-row/header-row.html","../../../projects/components/table/src/header-row-def.ts","../../../projects/components/table/src/no-data-row.ts","../../../projects/components/table/src/row/row.ts","../../../projects/components/table/src/row/row.html","../../../projects/components/table/src/row-def.ts","../../../projects/components/table/src/text-column/text-column.ts","../../../projects/components/table/src/text-column/text-column.html","../../../projects/components/table/src/table-data-source.ts","../../../projects/components/table/src/native-table/native-table.ts","../../../projects/components/table/src/native-table/native-table.html","../../../projects/components/table/ngstarter-ui-components-table.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n ContentChildren,\n QueryList,\n signal,\n DestroyRef,\n inject\n} from '@angular/core';\nimport {\n CdkColumnDef,\n CdkHeaderRowDef,\n CdkTable,\n CDK_TABLE,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n NoDataRowOutlet,\n STICKY_POSITIONING_LISTENER,\n CdkTableModule,\n} from '@angular/cdk/table';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngs-table, table[ngs-table]',\n exportAs: 'ngsTable',\n imports: [\n CdkTableModule,\n HeaderRowOutlet,\n FooterRowOutlet,\n DataRowOutlet,\n NoDataRowOutlet,\n ],\n templateUrl: './table.html',\n styleUrl: './table.scss',\n providers: [\n { provide: CdkTable, useExisting: forwardRef(() => Table) },\n { provide: CDK_TABLE, useExisting: forwardRef(() => Table) },\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-table not-prose',\n '[class.ngs-table-fixed-layout]': 'fixedLayout',\n '[class.ngs-table-sticky]': 'hasStickyColumns()',\n 'role': 'grid'\n },\n})\nexport class Table<T> extends CdkTable<T> {\n hideHeader = input(false, { transform: booleanAttribute });\n hideBody = input(false, { transform: booleanAttribute });\n hideFooter = input(false, { transform: booleanAttribute });\n\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * Whether the table has any sticky header rows.\n * This is used to apply the 'ngs-table-sticky-header' class.\n */\n private readonly _hasStickyHeader = signal<boolean>(false);\n\n readonly hasStickyHeader = computed(() => this._hasStickyHeader());\n\n // We define our own queries to track changes, avoiding conflict with CdkTable's internal properties.\n // Angular will populate these just fine alongside the parent's queries.\n @ContentChildren(CdkHeaderRowDef, { descendants: true })\n headerRowDefsQuery!: QueryList<CdkHeaderRowDef>;\n\n @ContentChildren(CdkColumnDef, { descendants: true })\n columnDefsQuery!: QueryList<CdkColumnDef>;\n\n /**\n * Whether the table has any sticky columns.\n */\n private readonly _hasStickyColumns = signal<boolean>(false);\n\n readonly hasStickyColumns = computed(() => this._hasStickyColumns());\n\n private _updateStickyStates(): void {\n if (this.headerRowDefsQuery) {\n const headerRowDefs = this.headerRowDefsQuery.toArray();\n const hasStickyHeaderRows = headerRowDefs.some((def: any) => def.sticky);\n this._hasStickyHeader.set(hasStickyHeaderRows);\n }\n if (this.columnDefsQuery) {\n const colDefs = this.columnDefsQuery.toArray();\n const hasStickyColumns = colDefs.some((def: any) => def.sticky || def.stickyEnd);\n\n this._hasStickyColumns.set(hasStickyColumns);\n\n // Directly set the property on the base class.\n // This triggers the base class setter logic which handles style updates.\n this.fixedLayout = hasStickyColumns;\n }\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n override ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n this.headerRowDefsQuery.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this._updateStickyStates();\n });\n\n this.columnDefsQuery.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this._updateStickyStates();\n });\n\n this._updateStickyStates();\n }\n\n protected override stickyCssClass = 'ngs-table-sticky';\n}\n","<thead [class.ngs-table-sticky-header]=\"hasStickyHeader()\" [class.hidden]=\"hideHeader()\">\n <ng-container headerRowOutlet />\n</thead>\n<tbody [class.hidden]=\"hideBody()\">\n <ng-container rowOutlet />\n <ng-container noDataRowOutlet />\n</tbody>\n<tfoot [class.hidden]=\"hideFooter()\">\n <ng-container footerRowOutlet />\n</tfoot>\n","import { Directive, ElementRef } from '@angular/core';\nimport { CdkCell } from '@angular/cdk/table';\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'ngs-cell, [ngs-cell], td[ngs-cell]',\n host: {\n 'class': 'ngs-cell',\n 'role': 'gridcell',\n },\n standalone: true,\n})\nexport class Cell extends CdkCell {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkCellDef } from '@angular/cdk/table';\n\n/** Cell definition for the ngs-table. */\n@Directive({\n selector: '[ngsCellDef]',\n standalone: true,\n providers: [{provide: CdkCellDef, useExisting: forwardRef(() => CellDef)}],\n})\nexport class CellDef extends CdkCellDef {}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkColumnDef } from '@angular/cdk/table';\n\n/**\n * Column definition for the ngs-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[ngsColumnDef]',\n standalone: true,\n providers: [{provide: CdkColumnDef, useExisting: forwardRef(() => ColumnDef)}],\n inputs: ['name: ngsColumnDef'],\n})\nexport class ColumnDef extends CdkColumnDef {}\n","import { Directive, ElementRef } from '@angular/core';\nimport { CdkFooterCell } from '@angular/cdk/table';\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'ngs-footer-cell, [ngs-footer-cell], td[ngs-footer-cell]',\n host: {\n 'class': 'ngs-footer-cell',\n 'role': 'gridcell',\n },\n standalone: true,\n})\nexport class FooterCell extends CdkFooterCell {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkFooterCellDef } from '@angular/cdk/table';\n\n/** Footer cell definition for the ngs-table. */\n@Directive({\n selector: '[ngsFooterCellDef]',\n standalone: true,\n providers: [{provide: CdkFooterCellDef, useExisting: forwardRef(() => FooterCellDef)}],\n})\nexport class FooterCellDef extends CdkFooterCellDef {}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport {\n CdkCellOutlet,\n CdkFooterRow\n} from '@angular/cdk/table';\n\n/** Footer template container that adds the right classes and role. */\n@Component({\n selector: 'ngs-footer-row, [ngs-footer-row], tr[ngs-footer-row]',\n templateUrl: './footer-row.html',\n styleUrl: './footer-row.scss',\n host: {\n 'class': 'ngs-footer-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [CdkCellOutlet],\n providers: [{provide: CdkFooterRow, useExisting: forwardRef(() => FooterRow)}],\n})\nexport class FooterRow extends CdkFooterRow {\n}\n","<ng-container cdkCellOutlet />\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkFooterRowDef } from '@angular/cdk/table';\n\n/** Footer row definition for the ngs-table. */\n@Directive({\n selector: '[ngsFooterRowDef]',\n standalone: true,\n providers: [{provide: CdkFooterRowDef, useExisting: forwardRef(() => FooterRowDef)}],\n inputs: ['columns: ngsFooterRowDef', 'sticky: ngsFooterRowDefSticky'],\n})\nexport class FooterRowDef extends CdkFooterRowDef {}\n","import { Directive, ElementRef } from '@angular/core';\nimport { CdkHeaderCell } from '@angular/cdk/table';\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'ngs-header-cell, [ngs-header-cell], th[ngs-header-cell]',\n host: {\n 'class': 'ngs-header-cell',\n 'role': 'columnheader',\n },\n standalone: true,\n})\nexport class HeaderCell extends CdkHeaderCell {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkHeaderCellDef } from '@angular/cdk/table';\n\n/** Header cell definition for the ngs-table. */\n@Directive({\n selector: '[ngsHeaderCellDef]',\n standalone: true,\n providers: [{provide: CdkHeaderCellDef, useExisting: forwardRef(() => HeaderCellDef)}],\n})\nexport class HeaderCellDef extends CdkHeaderCellDef {}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport {\n CdkCellOutlet,\n CdkHeaderRow\n} from '@angular/cdk/table';\n\n/** Header template container that adds the right classes and role. */\n@Component({\n selector: 'ngs-header-row, [ngs-header-row], tr[ngs-header-row]',\n templateUrl: './header-row.html',\n styleUrl: './header-row.scss',\n host: {\n 'class': 'ngs-header-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [CdkCellOutlet],\n providers: [{provide: CdkHeaderRow, useExisting: forwardRef(() => HeaderRow)}],\n})\nexport class HeaderRow extends CdkHeaderRow {\n}\n","<ng-container cdkCellOutlet />\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkHeaderRowDef } from '@angular/cdk/table';\n\n/** Header row definition for the ngs-table. */\n@Directive({\n selector: '[ngsHeaderRowDef]',\n standalone: true,\n providers: [{provide: CdkHeaderRowDef, useExisting: forwardRef(() => HeaderRowDef)}],\n inputs: ['columns: ngsHeaderRowDef', 'sticky: ngsHeaderRowDefSticky'],\n})\nexport class HeaderRowDef extends CdkHeaderRowDef {}\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkNoDataRow } from '@angular/cdk/table';\n\n/** Row that can be used to display a message when no data is shown in the table. */\n@Directive({\n selector: 'ng-template[ngsNoDataRow]',\n standalone: true,\n providers: [{provide: CdkNoDataRow, useExisting: forwardRef(() => NoDataRow)}],\n})\nexport class NoDataRow extends CdkNoDataRow {\n}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport {\n CdkCellOutlet,\n CdkRow\n} from '@angular/cdk/table';\n\n/** Data row template container that adds the right classes and role. */\n@Component({\n selector: 'ngs-row, [ngs-row], tr[ngs-row]',\n templateUrl: './row.html',\n styleUrl: './row.scss',\n host: {\n 'class': 'ngs-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [CdkCellOutlet],\n providers: [{provide: CdkRow, useExisting: forwardRef(() => Row)}],\n})\nexport class Row extends CdkRow {}\n","<ng-container cdkCellOutlet />\n","import { Directive, forwardRef } from '@angular/core';\nimport { CdkRowDef } from '@angular/cdk/table';\n\n/** Data row definition for the ngs-table. */\n@Directive({\n selector: '[ngsRowDef]',\n standalone: true,\n providers: [{provide: CdkRowDef, useExisting: forwardRef(() => RowDef)}],\n inputs: ['columns: ngsRowDefColumns', 'when: ngsRowDefWhen'],\n})\nexport class RowDef<T> extends CdkRowDef<T> {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CdkTextColumn } from '@angular/cdk/table';\nimport { ColumnDef } from '../column-def';\nimport { CellDef } from '../cell-def';\nimport { HeaderCellDef } from '../header-cell-def';\nimport { HeaderCell } from '../header-cell/header-cell';\nimport { Cell } from '../cell/cell';\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the same as the data property that it should show.\n * The header can be overridden by setting the `headerText` input.\n *\n * Example usage:\n * <table ngs-table [dataSource]=\"dataSource\">\n * <ngs-text-column name=\"userName\"></ngs-text-column>\n * <tr ngs-header-row *ngsHeaderRowDef=\"['userName']\"></tr>\n * <tr ngs-row *ngsRowDef=\"['userName']\"></tr>\n * </table>\n */\n@Component({\n selector: 'ngs-text-column',\n exportAs: 'ngsTextColumn',\n imports: [\n ColumnDef,\n HeaderCellDef,\n HeaderCell,\n CellDef,\n Cell\n ],\n templateUrl: './text-column.html',\n styleUrl: './text-column.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-text-column',\n }\n})\nexport class TextColumn<T> extends CdkTextColumn<T> {}\n","<ng-container ngsColumnDef>\n <th ngs-header-cell *ngsHeaderCellDef> {{headerText}} </th>\n <td ngs-cell *ngsCellDef=\"let data\"> {{dataAccessor(data, name)}} </td>\n</ng-container>\n","import { DataSource as _DataSource } from '@angular/cdk/collections';\nimport {\n BehaviorSubject,\n combineLatest,\n isObservable,\n merge,\n Observable,\n of,\n Subject,\n Subscription\n} from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { SortDirective, Sort } from '@ngstarter-ui/components/sort';\nimport { Paginator } from '@ngstarter-ui/components/paginator';\n\nexport class TableDataSource<T> extends _DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData: BehaviorSubject<T[]>;\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that the table needs to be notified about. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered data, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription = Subscription.EMPTY;\n\n /**\n * Cache for quick filter strings. Maps each data object to its concatenated string representation\n * used for filtering.\n */\n private _quickFilterCache = new WeakMap<T & object, string>();\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'scrolled' paginator can use this to know the total number of items when\n * pagination has been applied.\n */\n filteredData: T[];\n\n /**\n * The sorted set of data that has been ordered by the sort state, or all the filtered data if there\n * is no sort. Useful for knowing the set of data the table represents.\n */\n sortedData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() {\n return this._data.value;\n }\n set data(data: T[]) {\n this._data.next(data);\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To `TableDataSource`'s\n * default implementation, this string checks for stringification matches anywhere in the object.\n */\n get filter(): string {\n return this._filter.value;\n }\n set filter(filter: string) {\n this._filter.next(filter);\n if (!this._renderChangesSubscription) {\n this._filterData(this.data);\n }\n }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): SortDirective | null {\n return this._sort;\n }\n set sort(sort: SortDirective | null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n private _sort: SortDirective | null = null;\n\n /**\n * Instance of the Paginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the Paginator will trigger an update to the\n * table's rendered data.\n */\n get paginator(): Paginator | null {\n return this._paginator;\n }\n set paginator(paginator: Paginator | null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: Paginator | null = null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the data objects are flat and can be accessed directly by\n * the column name.\n */\n sortingDataAccessor: (data: T, sortHeaderId: string) => string | number = (\n data: T,\n sortHeaderId: string,\n ): string | number => {\n const value = (data as unknown as Record<string, any>)[sortHeaderId];\n return typeof value === 'number' || typeof value === 'string' ? value : '' + value;\n };\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * objects by retrieving data using the sortingDataAccessor. May be overridden for a\n * custom implementation of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: (data: T[], sort: SortDirective) => T[] = (data: T[], sort: SortDirective): T[] => {\n const active = typeof sort.active === 'function' ? sort.active() : sort.active;\n const direction = typeof sort.direction === 'function' ? sort.direction() : sort.direction;\n if (!active || direction === '') {\n return data;\n }\n\n return data.slice().sort((a, b) => {\n const valueA = this.sortingDataAccessor(a, active);\n const valueB = this.sortingDataAccessor(b, active);\n\n // If both valueA and valueB are numbers, use the numeric comparison.\n // If either valueA or valueB is not a number, use the string comparison.\n const comparatorResult =\n typeof valueA === 'number' && typeof valueB === 'number'\n ? valueA - valueB\n : (valueA + '').localeCompare(valueB + '');\n\n return comparatorResult * (direction === 'asc' ? 1 : -1);\n });\n };\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has at least one\n * occurrence in that string. By default, the filter string has its whitespace trimmed and the match\n * is case-insensitive. May be overridden for a custom implementation of filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches the data.\n */\n filterPredicate: (data: T, filter: string) => boolean = (data: T, filter: string): boolean => {\n // Transform the filter by converting it to lowercase and splitting into words.\n const transformedFilter = filter.trim().toLowerCase();\n if (!transformedFilter) {\n return true;\n }\n const filterWords = transformedFilter.split(/\\s+/);\n\n // Get the string representation of the data.\n const dataStr = this._getQuickFilterString(data);\n\n // Check if all filter words are present in the data string (any order).\n return filterWords.every(word => dataStr.indexOf(word) !== -1);\n };\n\n /**\n * Gets a string representation of the data object used for quick filtering.\n * Caches the result to improve performance.\n * @param data\n * @private\n */\n private _getQuickFilterString(data: T): string {\n if (typeof data !== 'object' || data === null) {\n return String(data).toLowerCase();\n }\n\n let cached = this._quickFilterCache.get(data as T & object);\n if (cached !== undefined) {\n return cached;\n }\n\n const dataStr = Object.keys(data as unknown as Record<string, any>)\n .reduce((currentTerm: string, key: string) => {\n const val = (data as unknown as Record<string, any>)[key];\n return currentTerm + (val === null || val === undefined ? '' : val) + ' ';\n }, '')\n .toLowerCase();\n\n this._quickFilterCache.set(data as T & object, dataStr);\n return dataStr;\n }\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._renderData = new BehaviorSubject<T[]>(initialData);\n this.filteredData = initialData;\n this.sortedData = initialData;\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered data.\n */\n _updateChangeSubscription() {\n const sortChange: Observable<Sort | null | void> = this._sort\n ? (merge(\n this._observeOutput<Sort>(this._sort.sortChange),\n this._sort.initialized || of(undefined),\n of(undefined)\n ) as Observable<Sort | void>)\n : of(null);\n const pageChange: Observable<any> = this._paginator\n ? (merge(\n this._observeOutput<any>(this._paginator.page as any),\n this._internalPageChanges,\n this._paginator.initialized || of(undefined),\n of(undefined)\n ) as Observable<any>)\n : of(null);\n const dataStream = this._data;\n\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter]).pipe(\n map(([data]) => this._filterData(data)),\n );\n\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange]).pipe(\n map(([data]) => this._orderData(data)),\n );\n\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(\n map(([data]) => this._pageData(data)),\n );\n\n // Watched for paged data changes and emit the result to the table to render.\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe((data) =>\n this._renderData.next(data),\n );\n }\n\n private _observeOutput<R>(output: any): Observable<R> {\n if (isObservable(output)) {\n return output as Observable<R>;\n }\n\n if (typeof output === 'object' && output !== null && ('subscribe' in output || 'emit' in output)) {\n return new Observable<R>((subscriber) => {\n try {\n const obs = outputToObservable(output);\n const sub = obs.subscribe({\n next: (value: any) => subscriber.next(value as R),\n error: (err) => {\n if (err && err.message && err.message.includes('NG0911')) {\n subscriber.complete();\n } else {\n subscriber.error(err);\n }\n },\n complete: () => subscriber.complete(),\n });\n return () => sub.unsubscribe();\n } catch (e: any) {\n if (e && e.message && e.message.includes('NG0911')) {\n subscriber.complete();\n return;\n }\n throw e;\n }\n });\n }\n\n return of() as Observable<R>;\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterPredicate function. If no filter is set, returns the entire data\n * array without changes.\n */\n _filterData(data: T[]) {\n this.filteredData = !this.filter\n ? data\n : data.filter((obj) => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array entirely.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, then the data should not be ordered.\n if (!this.sort) {\n this.sortedData = data;\n return data;\n }\n\n this.sortedData = this.sortData(data.slice(), this.sort);\n return this.sortedData;\n }\n\n /**\n * Returns a paged splice of the provided data array based on the provided Paginator's page\n * index and length. If there is no paginator provided, returns the data array as is.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) {\n return data;\n }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + (this.paginator.pageSize as any));\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the amount of pages in the new data set.\n */\n _updatePaginator(filteredDataLength: number) {\n if (!this.paginator) {\n return;\n }\n\n this.paginator.length = filteredDataLength;\n\n // If the page index is now larger than the number of pages, move the page index to the last\n // page.\n if (this.paginator.pageIndex > 0) {\n const lastPageIndex = Math.max(0, Math.ceil(this.paginator.length / this.paginator.pageSize) - 1);\n const newPageIndex = Math.min(this.paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== this.paginator.pageIndex) {\n this.paginator.pageIndex = newPageIndex;\n\n // Since the paginator has changed, notify the data source that the rendered data\n // should be updated.\n this._internalPageChanges.next();\n }\n }\n }\n\n /**\n * Used by the CdkTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() {\n if (!this._renderChangesSubscription || this._renderChangesSubscription.closed) {\n this._updateChangeSubscription();\n }\n\n return this._renderData;\n }\n\n /**\n * Used by the CdkTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = Subscription.EMPTY;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'table[ngs-native-table]',\n exportAs: 'ngsNativeTable',\n imports: [],\n templateUrl: './native-table.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './native-table.scss',\n host: {\n 'class': 'ngs-native-table not-prose',\n }\n})\nexport class NativeTable {\n\n}\n","<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_DataSource"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ngstarter-ui/components",
3
3
  "description": "NgStarter - AI-friendly Enterprise Angular UI Components and Admin Panel",
4
- "version": "21.0.22",
4
+ "version": "21.0.23",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/elementarlabsdev/ngstarter.git"
@@ -138,7 +138,7 @@ declare class RowDef<T> extends CdkRowDef<T> {
138
138
  */
139
139
  declare class TextColumn<T> extends CdkTextColumn<T> {
140
140
  static ɵfac: i0.ɵɵFactoryDeclaration<TextColumn<any>, never>;
141
- static ɵcmp: i0.ɵɵComponentDeclaration<TextColumn<any>, "ngs-text-column", never, {}, {}, never, never, true, never>;
141
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextColumn<any>, "ngs-text-column", ["ngsTextColumn"], {}, {}, never, never, true, never>;
142
142
  }
143
143
 
144
144
  declare class TableDataSource<T> extends DataSource<T> {