@seniorsistemas/angular-components 19.4.1 → 19.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/accordion/lib/accordion/accordion.module.d.ts +2 -1
  2. package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +10 -1
  3. package/esm2022/accordion/lib/accordion/accordion.module.mjs +5 -18
  4. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +11 -3
  5. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +1 -1
  6. package/esm2022/loading-state/lib/loading-state/components/loading-state-indicators.mjs +2 -1
  7. package/esm2022/loading-state/lib/loading-state/components/progress-bar-indicator/progress-bar-indicator.component.mjs +41 -0
  8. package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +30 -3
  9. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +15 -4
  10. package/esm2022/loading-state/lib/loading-state/loading-state.module.mjs +5 -2
  11. package/esm2022/loading-state/public-api.mjs +1 -1
  12. package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +8 -3
  13. package/esm2022/stats-card/lib/stats-card/stats-card.module.mjs +5 -4
  14. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +14 -19
  15. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  16. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +1 -1
  17. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  18. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +84 -6
  19. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  20. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +11 -5
  21. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  22. package/loading-state/lib/loading-state/components/loading-state-indicators.d.ts +2 -1
  23. package/loading-state/lib/loading-state/components/progress-bar-indicator/progress-bar-indicator.component.d.ts +24 -0
  24. package/loading-state/lib/loading-state/loading-state.component.d.ts +22 -1
  25. package/loading-state/lib/loading-state/loading-state.directive.d.ts +8 -2
  26. package/loading-state/lib/loading-state/loading-state.module.d.ts +4 -3
  27. package/loading-state/public-api.d.ts +1 -0
  28. package/package.json +1 -1
  29. package/stats-card/lib/stats-card/stats-card.component.d.ts +3 -1
  30. package/stats-card/lib/stats-card/stats-card.module.d.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-loading-state.mjs","sources":["../../projects/angular-components/loading-state/src/lib/loading-state/components/dots-indicator/dots-indicator.components.ts","../../projects/angular-components/loading-state/src/lib/loading-state/components/dots-indicator/dots-indicator.component.html","../../projects/angular-components/loading-state/src/lib/loading-state/components/logo-indicator/logo-indicator.component.ts","../../projects/angular-components/loading-state/src/lib/loading-state/components/logo-indicator/logo-indicator.component.html","../../projects/angular-components/loading-state/src/lib/loading-state/components/loading-state-indicators.ts","../../projects/angular-components/loading-state/src/lib/loading-state/loading-state.component.ts","../../projects/angular-components/loading-state/src/lib/loading-state/loading-state.component.html","../../projects/angular-components/loading-state/src/lib/loading-state/loading-state.directive.ts","../../projects/angular-components/loading-state/src/lib/loading-state/loading-state.module.ts","../../projects/angular-components/loading-state/src/seniorsistemas-angular-components-loading-state.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 's-dots-indicator',\n templateUrl: './dots-indicator.component.html',\n styleUrls: ['./dots-indicator.component.scss'],\n})\nexport class DotsIndicatorComponent {}\n","<div class=\"dots-indicator\">\n <div class=\"bounce bounce--1\"></div>\n <div class=\"bounce bounce--2\"></div>\n <div class=\"bounce bounce--3\"></div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 's-logo-indicator',\n templateUrl: './logo-indicator.component.html',\n styleUrls: ['./logo-indicator.component.scss'],\n})\nexport class LoadingIndicatorComponent {}\n","<div class=\"logo-indicator\">\n <span *sSVGFactory=\"'senior'\"></span>\n</div>\n","export enum LoadingStateIndicators {\n Dots = 'dots',\n Logo = 'logo',\n}\n","import { Component, Input, OnDestroy, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport { LoadingStateIndicators } from './components/loading-state-indicators';\n\n/**\n * @description Componente de estado de carregamento que exibe um indicador animado enquanto\n * um processo assíncrono está em andamento. Suporta bloqueio da janela inteira\n * e diferentes tipos de indicadores visuais.\n * Também pode ser usado como diretiva estrutural `[sLoadingState]`.\n *\n * @example\n * ```html\n * <s-loading-state [loading]=\"isLoading\" [blockWindow]=\"true\">\n * <p>Conteúdo carregado!</p>\n * </s-loading-state>\n * ```\n *\n * @category Feedback\n */\n@Component({\n selector: 's-loading-state',\n templateUrl: './loading-state.component.html',\n styleUrls: ['./loading-state.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class LoadingStateComponent implements OnDestroy {\n public static nextId = 0;\n\n /**\n * @description Tipo de indicador visual exibido durante o carregamento.\n * - `LoadingStateIndicators.Dots`: indicador de pontos animados (padrão).\n * - `LoadingStateIndicators.Logo`: indicador com logotipo animado.\n *\n * @default LoadingStateIndicators.Dots\n */\n @Input()\n public indicator: LoadingStateIndicators = LoadingStateIndicators.Dots;\n\n /**\n * @description Identificador único do componente. Gerado automaticamente se não informado.\n */\n @Input()\n public id = `s-loading-state-${LoadingStateComponent.nextId++}`;\n\n /**\n * @description Quando `true`, bloqueia a janela inteira durante o carregamento,\n * sobrepondo todo o conteúdo da página com o indicador.\n *\n * @default false\n */\n @Input()\n public blockWindow = false;\n\n /**\n * @description Controla o estado de carregamento do componente. Campo obrigatório.\n * Quando `true`, exibe o indicador de carregamento após um breve delay.\n * Quando `false`, remove o indicador após um breve delay (evita flash).\n */\n @Input({ required: true })\n public set loading(loading: boolean) {\n this._loading = loading;\n loading ? this.block() : this.unblock();\n }\n\n public get loading() {\n return this._loading;\n }\n\n public contents: TemplateRef<any> | null = null;\n public blocking = false;\n\n private _loading = false;\n private BLOCK_TIMEOUT_VALUE = 300;\n private UNBLOCK_TIMEOUT_VALUE = 200;\n private blockTimeoutId: any;\n private unblockTimeoutId: any;\n\n public ngOnDestroy(): void {\n if (this.blockTimeoutId) {\n clearTimeout(this.blockTimeoutId);\n }\n\n if (this.unblockTimeoutId) {\n clearTimeout(this.unblockTimeoutId);\n }\n }\n\n public block(): void {\n if (this.unblockTimeoutId) {\n clearTimeout(this.unblockTimeoutId);\n this.unblockTimeoutId = undefined;\n }\n\n if (!this.blockTimeoutId) {\n this.blockTimeoutId = setTimeout(() => {\n this.blocking = true;\n this.blockTimeoutId = undefined;\n }, this.BLOCK_TIMEOUT_VALUE);\n }\n }\n\n public unblock(): void {\n if (this.blockTimeoutId) {\n clearTimeout(this.blockTimeoutId);\n this.blockTimeoutId = undefined;\n }\n\n if (!this.unblockTimeoutId) {\n this.unblockTimeoutId = setTimeout(() => {\n this.blocking = false;\n this.unblockTimeoutId = undefined;\n }, this.UNBLOCK_TIMEOUT_VALUE);\n }\n }\n}\n\n","<div\n [id]=\"id\"\n class=\"s-loading-state\"\n [ngClass]=\"{\n 's-loading-state--loading': loading,\n 's-loading-state--blocking': blocking,\n 's-loading-state--fullscreen': blockWindow\n }\"\n>\n <div\n [id]=\"id + '-loader'\"\n class=\"loader\"\n >\n <div\n [id]=\"id + '-spinner'\"\n class=\"spinner\"\n >\n @switch (indicator) {\n @case ('logo') {\n <s-logo-indicator></s-logo-indicator>\n }\n @case ('dots') {\n <s-dots-indicator></s-dots-indicator>\n }\n }\n </div>\n <div\n [id]=\"id + '-overlay'\"\n class=\"overlay\"\n ></div>\n </div>\n <div\n [id]=\"id + '-contents'\"\n class=\"state-contents\"\n >\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n","import { AfterViewInit, ChangeDetectorRef, \n// NOSONAR - 'ComponentFactoryResolver' is deprecated.\nComponentFactoryResolver, ComponentRef, Directive, Input, OnDestroy, TemplateRef, ViewContainerRef, inject } from '@angular/core';\n\nimport { LoadingStateComponent } from './loading-state.component';\nimport { LoadingStateIndicators } from './components/loading-state-indicators';\n\n/**\n * @description Diretiva estrutural que envolve o conteúdo da view com um indicador de carregamento.\n * É uma alternativa inline ao `LoadingStateComponent`, podendo ser aplicada diretamente\n * em containers existentes sem a necessidade de criar um wrapper explícito no template.\n *\n * @example\n * ```html\n * <!-- Forma simples (boolean) -->\n * <div *sLoadingState=\"isLoading\">Conteúdo</div>\n *\n * <!-- Forma com configuração -->\n * <div *sLoadingState=\"{ loading: isLoading, indicator: 'logo' }\">Conteúdo</div>\n * ```\n *\n * @category Feedback\n */\n@Directive({\n selector: '[sLoadingState]',\n})\nexport class LoadingStateDirective implements AfterViewInit, OnDestroy {\n private readonly target = inject(ViewContainerRef);\n private readonly template = inject<TemplateRef<any>>(TemplateRef);\n private readonly componentFactoryResolver = inject(ComponentFactoryResolver);\n private readonly cdr = inject(ChangeDetectorRef);\n\n /**\n * @description Controla o estado de carregamento da diretiva.\n * Aceita:\n * - `boolean`: ativa/desativa o carregamento com o indicador padrão (`dots`).\n * - `{ loading: boolean; indicator?: LoadingStateIndicators }`: permite configurar\n * o tipo de indicador junto com o estado de carregamento.\n */\n @Input()\n public set sLoadingState(value: boolean | { loading: boolean; indicator?: LoadingStateIndicators }) {\n if (typeof value === 'boolean') {\n this._loading = value;\n this.indicator = LoadingStateIndicators.Dots;\n } else if (typeof value === 'object') {\n this._loading = value.loading;\n this.indicator = value.indicator ?? LoadingStateIndicators.Dots;\n }\n\n if (this.loaderComponent) {\n this.loaderComponent.instance.loading = this._loading;\n this.loaderComponent.instance.indicator = this.indicator;\n }\n }\n\n private _loading = false;\n private indicator = LoadingStateIndicators.Dots;\n private loaderComponent: ComponentRef<LoadingStateComponent> | null = null;\n\n public ngAfterViewInit() {\n this.createComponent();\n }\n\n private createComponent() {\n const factory = this.componentFactoryResolver.resolveComponentFactory(LoadingStateComponent);\n this.loaderComponent = this.target.createComponent(factory);\n this.loaderComponent.instance.contents = this.template;\n this.loaderComponent.instance.loading = this._loading;\n this.loaderComponent.instance.indicator = this.indicator;\n this.cdr.detectChanges();\n }\n\n public ngOnDestroy() {\n if (this.loaderComponent) {\n this.loaderComponent.destroy();\n }\n }\n}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DotsIndicatorComponent } from './components/dots-indicator/dots-indicator.components';\nimport { LoadingIndicatorComponent } from './components/logo-indicator/logo-indicator.component';\nimport { LoadingStateComponent } from './loading-state.component';\nimport { LoadingStateDirective } from './loading-state.directive';\nimport { SVGFactoryModule } from '@seniorsistemas/angular-components/common';\n\n@NgModule({\n imports: [CommonModule, SVGFactoryModule],\n declarations: [\n LoadingStateComponent,\n LoadingStateDirective,\n DotsIndicatorComponent,\n LoadingIndicatorComponent,\n ],\n exports: [LoadingStateComponent, LoadingStateDirective],\n})\nexport class LoadingStateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.DotsIndicatorComponent","i3.LoadingIndicatorComponent"],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-loading-state.mjs","sources":["../../projects/angular-components/loading-state/src/lib/loading-state/components/dots-indicator/dots-indicator.components.ts","../../projects/angular-components/loading-state/src/lib/loading-state/components/dots-indicator/dots-indicator.component.html","../../projects/angular-components/loading-state/src/lib/loading-state/components/logo-indicator/logo-indicator.component.ts","../../projects/angular-components/loading-state/src/lib/loading-state/components/logo-indicator/logo-indicator.component.html","../../projects/angular-components/loading-state/src/lib/loading-state/components/progress-bar-indicator/progress-bar-indicator.component.ts","../../projects/angular-components/loading-state/src/lib/loading-state/components/progress-bar-indicator/progress-bar-indicator.component.html","../../projects/angular-components/loading-state/src/lib/loading-state/components/loading-state-indicators.ts","../../projects/angular-components/loading-state/src/lib/loading-state/loading-state.component.ts","../../projects/angular-components/loading-state/src/lib/loading-state/loading-state.component.html","../../projects/angular-components/loading-state/src/lib/loading-state/loading-state.directive.ts","../../projects/angular-components/loading-state/src/lib/loading-state/loading-state.module.ts","../../projects/angular-components/loading-state/src/seniorsistemas-angular-components-loading-state.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 's-dots-indicator',\n templateUrl: './dots-indicator.component.html',\n styleUrls: ['./dots-indicator.component.scss'],\n})\nexport class DotsIndicatorComponent {}\n","<div class=\"dots-indicator\">\n <div class=\"bounce bounce--1\"></div>\n <div class=\"bounce bounce--2\"></div>\n <div class=\"bounce bounce--3\"></div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 's-logo-indicator',\n templateUrl: './logo-indicator.component.html',\n styleUrls: ['./logo-indicator.component.scss'],\n})\nexport class LoadingIndicatorComponent {}\n","<div class=\"logo-indicator\">\n <span *sSVGFactory=\"'senior'\"></span>\n</div>\n","import { Component, Input } from '@angular/core';\n\nexport type ProgressBarIndicatorMode = 'percentage' | 'intermittent';\n\n@Component({\n selector: 's-progress-bar-indicator',\n templateUrl: './progress-bar-indicator.component.html',\n styleUrls: ['./progress-bar-indicator.component.scss'],\n})\nexport class ProgressBarIndicatorComponent {\n /**\n * @description Modo de exibição da barra.\n * - `'percentage'`: exibe o preenchimento proporcional ao `value` (0–100).\n * - `'intermittent'`: anima a barra indo e voltando indefinidamente.\n * @default 'intermittent'\n */\n @Input()\n public mode: ProgressBarIndicatorMode = 'intermittent';\n\n /**\n * @description Valor de progresso (0–100). Usado apenas no modo `'percentage'`.\n * @default 0\n */\n @Input()\n public value = 0;\n\n /**\n * @description Texto exibido abaixo da barra.\n * Quando omitido, usa `'{value}%'` no modo `'percentage'` ou `'Carregando...'` no modo `'intermittent'`.\n */\n @Input()\n public label?: string;\n\n public get displayLabel(): string {\n if (this.label) {\n return this.label;\n }\n return this.mode === 'percentage' ? `${this.value}%` : 'Carregando...';\n }\n}\n\n","<div class=\"progress-bar-indicator\">\n <div class=\"progress-bar-track\">\n <div\n class=\"progress-bar-fill\"\n [class.progress-bar-fill--percentage]=\"mode === 'percentage'\"\n [class.progress-bar-fill--intermittent]=\"mode === 'intermittent'\"\n [ngStyle]=\"mode === 'percentage' ? { width: value + '%' } : {}\"\n ></div>\n </div>\n <span class=\"progress-bar-label\">{{ displayLabel }}</span>\n</div>\n","export enum LoadingStateIndicators {\n Dots = 'dots',\n Logo = 'logo',\n ProgressBar = 'progress-bar',\n}\n","import { Component, Input, OnDestroy, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport { LoadingStateIndicators } from './components/loading-state-indicators';\nimport { ProgressBarIndicatorMode } from './components/progress-bar-indicator/progress-bar-indicator.component';\n\n/**\n * @description Componente de estado de carregamento que exibe um indicador animado enquanto\n * um processo assíncrono está em andamento. Suporta bloqueio da janela inteira\n * e diferentes tipos de indicadores visuais.\n * Também pode ser usado como diretiva estrutural `[sLoadingState]`.\n *\n * @example\n * ```html\n * <s-loading-state [loading]=\"isLoading\" [blockWindow]=\"true\">\n * <p>Conteúdo carregado!</p>\n * </s-loading-state>\n * ```\n *\n * @category Feedback\n */\n@Component({\n selector: 's-loading-state',\n templateUrl: './loading-state.component.html',\n styleUrls: ['./loading-state.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class LoadingStateComponent implements OnDestroy {\n public static nextId = 0;\n\n /**\n * @description Tipo de indicador visual exibido durante o carregamento.\n * - `LoadingStateIndicators.Dots`: indicador de pontos animados (padrão).\n * - `LoadingStateIndicators.Logo`: indicador com logotipo animado.\n *\n * @default LoadingStateIndicators.Dots\n */\n @Input()\n public indicator: LoadingStateIndicators = LoadingStateIndicators.Dots;\n\n /**\n * @description Identificador único do componente. Gerado automaticamente se não informado.\n */\n @Input()\n public id = `s-loading-state-${LoadingStateComponent.nextId++}`;\n\n /**\n * @description Quando `true`, bloqueia a janela inteira durante o carregamento,\n * sobrepondo todo o conteúdo da página com o indicador.\n *\n * @default false\n */\n @Input()\n public blockWindow = false;\n\n /**\n * @description Controla o estado de carregamento do componente. Campo obrigatório.\n * Quando `true`, exibe o indicador de carregamento após um breve delay.\n * Quando `false`, remove o indicador após um breve delay (evita flash).\n */\n @Input({ required: true })\n public set loading(loading: boolean) {\n this._loading = loading;\n loading ? this.block() : this.unblock();\n }\n\n public get loading() {\n return this._loading;\n }\n\n /**\n * @description Modo da barra de progresso. Usado quando `indicator` é `LoadingStateIndicators.ProgressBar`.\n * - `'percentage'`: exibe o preenchimento proporcional ao `progressBarValue`.\n * - `'intermittent'`: anima a barra indo e voltando.\n *\n * @default 'intermittent'\n */\n @Input()\n public progressBarMode: ProgressBarIndicatorMode = 'intermittent';\n\n /**\n * @description Valor de progresso (0–100). Usado quando `indicator` é `LoadingStateIndicators.ProgressBar`\n * e `progressBarMode` é `'percentage'`.\n *\n * @default 0\n */\n @Input()\n public progressBarValue = 0;\n\n /**\n * @description Texto exibido abaixo da barra de progresso.\n * Quando omitido, usa `'{value}%'` no modo `'percentage'` ou `'Carregando...'` no modo `'intermittent'`.\n */\n @Input()\n public progressBarLabel?: string;\n\n public contents: TemplateRef<any> | null = null;\n public blocking = false;\n\n private _loading = false;\n private BLOCK_TIMEOUT_VALUE = 300;\n private UNBLOCK_TIMEOUT_VALUE = 200;\n private blockTimeoutId: any;\n private unblockTimeoutId: any;\n\n public ngOnDestroy(): void {\n if (this.blockTimeoutId) {\n clearTimeout(this.blockTimeoutId);\n }\n\n if (this.unblockTimeoutId) {\n clearTimeout(this.unblockTimeoutId);\n }\n }\n\n public block(): void {\n if (this.unblockTimeoutId) {\n clearTimeout(this.unblockTimeoutId);\n this.unblockTimeoutId = undefined;\n }\n\n if (!this.blockTimeoutId) {\n this.blockTimeoutId = setTimeout(() => {\n this.blocking = true;\n this.blockTimeoutId = undefined;\n }, this.BLOCK_TIMEOUT_VALUE);\n }\n }\n\n public unblock(): void {\n if (this.blockTimeoutId) {\n clearTimeout(this.blockTimeoutId);\n this.blockTimeoutId = undefined;\n }\n\n if (!this.unblockTimeoutId) {\n this.unblockTimeoutId = setTimeout(() => {\n this.blocking = false;\n this.unblockTimeoutId = undefined;\n }, this.UNBLOCK_TIMEOUT_VALUE);\n }\n }\n}\n\n","<div\n [id]=\"id\"\n class=\"s-loading-state\"\n [ngClass]=\"{\n 's-loading-state--loading': loading,\n 's-loading-state--blocking': blocking,\n 's-loading-state--fullscreen': blockWindow\n }\"\n>\n <div\n [id]=\"id + '-loader'\"\n class=\"loader\"\n >\n @if (indicator === 'progress-bar') {\n <div class=\"progress-bar-wrapper\">\n <s-progress-bar-indicator\n [mode]=\"progressBarMode\"\n [value]=\"progressBarValue\"\n [label]=\"progressBarLabel\"\n ></s-progress-bar-indicator>\n </div>\n } @else {\n <div\n [id]=\"id + '-spinner'\"\n class=\"spinner\"\n >\n @switch (indicator) {\n @case ('logo') {\n <s-logo-indicator></s-logo-indicator>\n }\n @case ('dots') {\n <s-dots-indicator></s-dots-indicator>\n }\n }\n </div>\n }\n <div\n [id]=\"id + '-overlay'\"\n class=\"overlay\"\n ></div>\n </div>\n <div\n [id]=\"id + '-contents'\"\n class=\"state-contents\"\n >\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n // NOSONAR - 'ComponentFactoryResolver' is deprecated.\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n Input,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n inject,\n} from '@angular/core';\n\nimport { LoadingStateComponent } from './loading-state.component';\nimport { LoadingStateIndicators } from './components/loading-state-indicators';\nimport { ProgressBarIndicatorMode } from './components/progress-bar-indicator/progress-bar-indicator.component';\n\n/**\n * @description Diretiva estrutural que envolve o conteúdo da view com um indicador de carregamento.\n * É uma alternativa inline ao `LoadingStateComponent`, podendo ser aplicada diretamente\n * em containers existentes sem a necessidade de criar um wrapper explícito no template.\n *\n * @example\n * ```html\n * <!-- Forma simples (boolean) -->\n * <div *sLoadingState=\"isLoading\">Conteúdo</div>\n *\n * <!-- Forma com configuração -->\n * <div *sLoadingState=\"{ loading: isLoading, indicator: 'logo' }\">Conteúdo</div>\n * ```\n *\n * @category Feedback\n */\n@Directive({\n selector: '[sLoadingState]',\n})\nexport class LoadingStateDirective implements AfterViewInit, OnDestroy {\n private readonly target = inject(ViewContainerRef);\n private readonly template = inject<TemplateRef<any>>(TemplateRef);\n private readonly componentFactoryResolver = inject(ComponentFactoryResolver);\n private readonly cdr = inject(ChangeDetectorRef);\n\n /**\n * @description Controla o estado de carregamento da diretiva.\n * Aceita:\n * - `boolean`: ativa/desativa o carregamento com o indicador padrão (`dots`).\n * - objeto de configuração: permite definir indicador, modo e valor da barra de progresso.\n */\n @Input()\n public set sLoadingState(\n value:\n | boolean\n | {\n loading: boolean;\n indicator?: LoadingStateIndicators;\n progressBarMode?: ProgressBarIndicatorMode;\n progressBarValue?: number;\n progressBarLabel?: string;\n },\n ) {\n if (typeof value === 'boolean') {\n this._loading = value;\n this.indicator = LoadingStateIndicators.Dots;\n } else if (typeof value === 'object') {\n this._loading = value.loading;\n this.indicator = value.indicator ?? LoadingStateIndicators.Dots;\n this.progressBarMode = value.progressBarMode ?? 'intermittent';\n this.progressBarValue = value.progressBarValue ?? 0;\n this.progressBarLabel = value.progressBarLabel;\n }\n\n if (this.loaderComponent) {\n this.loaderComponent.instance.loading = this._loading;\n this.loaderComponent.instance.indicator = this.indicator;\n this.loaderComponent.instance.progressBarMode = this.progressBarMode;\n this.loaderComponent.instance.progressBarValue = this.progressBarValue;\n this.loaderComponent.instance.progressBarLabel = this.progressBarLabel;\n }\n }\n\n private _loading = false;\n private indicator = LoadingStateIndicators.Dots;\n private progressBarMode: ProgressBarIndicatorMode = 'intermittent';\n private progressBarValue = 0;\n private progressBarLabel?: string;\n private loaderComponent: ComponentRef<LoadingStateComponent> | null = null;\n\n public ngAfterViewInit() {\n this.createComponent();\n }\n\n private createComponent() {\n const factory = this.componentFactoryResolver.resolveComponentFactory(LoadingStateComponent);\n this.loaderComponent = this.target.createComponent(factory);\n this.loaderComponent.instance.contents = this.template;\n this.loaderComponent.instance.loading = this._loading;\n this.loaderComponent.instance.indicator = this.indicator;\n this.loaderComponent.instance.progressBarMode = this.progressBarMode;\n this.loaderComponent.instance.progressBarValue = this.progressBarValue;\n this.loaderComponent.instance.progressBarLabel = this.progressBarLabel;\n this.cdr.detectChanges();\n }\n\n public ngOnDestroy() {\n if (this.loaderComponent) {\n this.loaderComponent.destroy();\n }\n }\n}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DotsIndicatorComponent } from './components/dots-indicator/dots-indicator.components';\nimport { LoadingIndicatorComponent } from './components/logo-indicator/logo-indicator.component';\nimport { ProgressBarIndicatorComponent } from './components/progress-bar-indicator/progress-bar-indicator.component';\nimport { LoadingStateComponent } from './loading-state.component';\nimport { LoadingStateDirective } from './loading-state.directive';\nimport { SVGFactoryModule } from '@seniorsistemas/angular-components/common';\n\n@NgModule({\n imports: [CommonModule, SVGFactoryModule],\n declarations: [\n LoadingStateComponent,\n LoadingStateDirective,\n DotsIndicatorComponent,\n LoadingIndicatorComponent,\n ProgressBarIndicatorComponent,\n ],\n exports: [LoadingStateComponent, LoadingStateDirective],\n})\nexport class LoadingStateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.DotsIndicatorComponent","i3.LoadingIndicatorComponent","i4.ProgressBarIndicatorComponent"],"mappings":"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"}
@@ -5,6 +5,8 @@ import { EventEmitter, Component, ViewEncapsulation, Input, Output, NgModule } f
5
5
  import { BigNumber } from 'bignumber.js';
6
6
  import * as i2 from '@seniorsistemas/angular-components/tooltip';
7
7
  import { TooltipModule } from '@seniorsistemas/angular-components/tooltip';
8
+ import * as i3 from '@seniorsistemas/angular-components/info-sign';
9
+ import { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';
8
10
 
9
11
  /**
10
12
  * @description Card de estatística que exibe um valor numérico com ícone,
@@ -28,6 +30,8 @@ class StatsCardComponent {
28
30
  id = `s-stats-card-${StatsCardComponent.nextId++}`;
29
31
  /** @description Rótulo descritivo da estatística exibida. Campo obrigatório. */
30
32
  label;
33
+ /** @description Texto do tooltip exibido ao passar o mouse sobre o ícone de informação ao lado do label do stats card. */
34
+ infoSignTooltip;
31
35
  /** @description Exibe borda mesmo quando o card não está em destaque. @default false */
32
36
  alwaysWithBorder = false;
33
37
  /** @description Ativa a versão visual leve (sem sombra e com fundo claro). @default false */
@@ -110,16 +114,18 @@ class StatsCardComponent {
110
114
  }, this._STEP_DURATION_MS);
111
115
  }
112
116
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StatsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
113
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: StatsCardComponent, selector: "s-stats-card", inputs: { id: "id", label: "label", alwaysWithBorder: "alwaysWithBorder", lightVersion: "lightVersion", lightMode: "lightMode", iconClass: "iconClass", color: "color", animateNumbers: "animateNumbers", clickable: "clickable", tooltip: "tooltip", value: "value" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"s-stats-card\"\n [ngClass]=\"{\n 's-stats-card--always-border': alwaysWithBorder,\n 's-stats-card--light': lightMode,\n 's-stats-card--color': !lightMode,\n 's-stats-card--light-version': lightVersion,\n 's-stats-card--clickable': clickable,\n }\"\n (click)=\"clickable && clicked.next($event)\"\n>\n <div\n [id]=\"id + '-background'\"\n class=\"s-stats-card-background\"\n [ngStyle]=\"{ 'background-color': (!lightMode && color) || '' }\"\n ></div>\n <div\n [id]=\"id + '-overlay'\"\n class=\"s-stats-card-overlay\"\n ></div>\n\n <div\n [id]=\"id + '-info-container'\"\n class=\"s-stats-card-info-container\"\n >\n <div class=\"s-stats-card-info-inner-container\">\n <div\n [id]=\"id + '-icon-container'\"\n class=\"s-stats-card-icon-container\"\n [ngStyle]=\"{ 'background-color': (lightMode && color) || '' }\"\n >\n <span\n [id]=\"id + '-icon'\"\n [class]=\"iconClass\"\n [ngClass]=\"{ 's-stats-card-icon': true }\"\n [ngStyle]=\"{ color: (!lightMode && color) || '' }\"\n aria-hidden=\"true\"\n ></span>\n </div>\n\n <div\n [id]=\"id + '-text-container'\"\n class=\"s-stats-card-text-container\"\n >\n <h4\n [id]=\"id + '-label'\"\n class=\"s-stats-card-label\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </h4>\n <span\n [id]=\"id + '-value'\"\n class=\"s-stats-card-value\"\n [sTooltip]=\"displayValue\"\n >\n {{ displayValue }}\n </span>\n </div>\n </div>\n <div class=\"s-stats-card-content-inner-container\">\n <div\n #content\n class=\"s-stats-card-content-container\"\n >\n <ng-content></ng-content>\n </div>\n @if (content.children.length) {\n <div class=\"s-stats-card-content-separator\"></div>\n }\n </div>\n @if (tooltip) {\n <span\n class=\"s-status-card-tooltip\"\n [sTooltip]=\"tooltip\"\n >\n <i class=\"fa fa-info-circle s-status-card-tooltip-icon\"></i>\n </span>\n }\n </div>\n</div>\n", styles: ["s-stats-card{display:block;height:auto;position:relative}s-stats-card .s-stats-card{border:1px solid transparent;min-width:120px;overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-overlay,s-stats-card .s-stats-card .s-stats-card-background{height:calc(100% - 2px);left:1px;position:absolute;top:1px;width:calc(100% - 2px)}s-stats-card .s-stats-card .s-stats-card-background{background-color:#fff}s-stats-card .s-stats-card .s-stats-card-overlay{background-color:#000;opacity:0;transition:opacity .2s ease-out}s-stats-card .s-stats-card .s-stats-card-info-container{overflow:auto;padding:15px;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container{overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{float:left;font-size:24px;height:50px;line-height:50px;text-align:center;transition:width .2s ease-out;width:50px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{align-items:flex-start;color:#fff;display:flex;flex-direction:column;float:left;height:50px;justify-content:center;max-width:calc(100% - 65px);padding-left:15px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label{font-weight:400;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{display:inline-block;font-size:20px;font-weight:700;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container{display:flex;flex-direction:column}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-separator{border-top:1px solid #ccc;margin:15px 0;order:1}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-container{order:2}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip{font-size:1rem;line-height:0;margin:.3rem;position:absolute;right:0;top:0}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip .s-status-card-tooltip-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--color .s-stats-card-icon-container{background-color:#fff}s-stats-card .s-stats-card.s-stats-card--light *{color:#333}s-stats-card .s-stats-card.s-stats-card--light *.s-stats-card-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--light *.s-stats-card-label{color:#999}s-stats-card .s-stats-card.s-stats-card--light * .s-status-card-tooltip .s-status-card-tooltip-icon{color:#999}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card.s-stats-card--clickable{cursor:pointer}s-stats-card .s-stats-card.s-stats-card--clickable:hover .s-stats-card-overlay{opacity:.2}s-stats-card .s-stats-card.s-stats-card--clickable.s-stats-card--light:hover .s-stats-card-overlay{opacity:.08}s-stats-card .s-stats-card.s-stats-card--light{border-color:#ccc}p-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),s-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.ui-dialog-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.s-sidebar-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border){border-color:transparent}@media (max-width: 767px){s-stats-card .s-stats-card{height:auto}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:visible;white-space:normal;word-break:break-all}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }], encapsulation: i0.ViewEncapsulation.None });
117
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: StatsCardComponent, selector: "s-stats-card", inputs: { id: "id", label: "label", infoSignTooltip: "infoSignTooltip", alwaysWithBorder: "alwaysWithBorder", lightVersion: "lightVersion", lightMode: "lightMode", iconClass: "iconClass", color: "color", animateNumbers: "animateNumbers", clickable: "clickable", tooltip: "tooltip", value: "value" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"s-stats-card\"\n [ngClass]=\"{\n 's-stats-card--always-border': alwaysWithBorder,\n 's-stats-card--light': lightMode,\n 's-stats-card--color': !lightMode,\n 's-stats-card--light-version': lightVersion,\n 's-stats-card--clickable': clickable,\n }\"\n (click)=\"clickable && clicked.next($event)\"\n>\n <div\n [id]=\"id + '-background'\"\n class=\"s-stats-card-background\"\n [ngStyle]=\"{ 'background-color': (!lightMode && color) || '' }\"\n ></div>\n <div\n [id]=\"id + '-overlay'\"\n class=\"s-stats-card-overlay\"\n ></div>\n\n <div\n [id]=\"id + '-info-container'\"\n class=\"s-stats-card-info-container\"\n >\n <div class=\"s-stats-card-info-inner-container\">\n <div\n [id]=\"id + '-icon-container'\"\n class=\"s-stats-card-icon-container\"\n [ngStyle]=\"{ 'background-color': (lightMode && color) || '' }\"\n >\n <span\n [id]=\"id + '-icon'\"\n [class]=\"iconClass\"\n [ngClass]=\"{ 's-stats-card-icon': true }\"\n [ngStyle]=\"{ color: (!lightMode && color) || '' }\"\n aria-hidden=\"true\"\n ></span>\n </div>\n\n <div\n [id]=\"id + '-text-container'\"\n class=\"s-stats-card-text-container\"\n >\n @if (infoSignTooltip) {\n <div *sInfoSign=\"infoSignTooltip\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n }\n <span\n [id]=\"id + '-value'\"\n class=\"s-stats-card-value\"\n [sTooltip]=\"displayValue\"\n >\n {{ displayValue }}\n </span>\n </div>\n </div>\n <div class=\"s-stats-card-content-inner-container\">\n <div\n #content\n class=\"s-stats-card-content-container\"\n >\n <ng-content></ng-content>\n </div>\n @if (content.children.length) {\n <div class=\"s-stats-card-content-separator\"></div>\n }\n </div>\n @if (tooltip) {\n <span\n class=\"s-status-card-tooltip\"\n [sTooltip]=\"tooltip\"\n >\n <i class=\"fa fa-info-circle s-status-card-tooltip-icon\"></i>\n </span>\n }\n </div>\n</div>\n\n<ng-template #labelTemplate>\n <h4\n [id]=\"id + '-label'\"\n class=\"s-stats-card-label\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </h4>\n</ng-template>\n\n", styles: ["s-stats-card{display:block;height:auto;position:relative}s-stats-card .s-stats-card{border:1px solid transparent;min-width:120px;overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-overlay,s-stats-card .s-stats-card .s-stats-card-background{height:calc(100% - 2px);left:1px;position:absolute;top:1px;width:calc(100% - 2px)}s-stats-card .s-stats-card .s-stats-card-background{background-color:#fff}s-stats-card .s-stats-card .s-stats-card-overlay{background-color:#000;opacity:0;transition:opacity .2s ease-out}s-stats-card .s-stats-card .s-stats-card-info-container{overflow:auto;padding:15px;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container{overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{float:left;font-size:24px;height:50px;line-height:50px;text-align:center;transition:width .2s ease-out;width:50px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{align-items:flex-start;color:#fff;display:flex;flex-direction:column;float:left;height:50px;justify-content:center;max-width:calc(100% - 65px);padding-left:15px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label{font-weight:400;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{display:inline-block;font-size:20px;font-weight:700;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container{display:flex;flex-direction:column}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-separator{border-top:1px solid #ccc;margin:15px 0;order:1}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-container{order:2}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip{font-size:1rem;line-height:0;margin:.3rem;position:absolute;right:0;top:0}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip .s-status-card-tooltip-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--color .s-stats-card-icon-container{background-color:#fff}s-stats-card .s-stats-card.s-stats-card--light *{color:#333}s-stats-card .s-stats-card.s-stats-card--light *.s-stats-card-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--light *.s-stats-card-label{color:#999}s-stats-card .s-stats-card.s-stats-card--light * .s-status-card-tooltip .s-status-card-tooltip-icon{color:#999}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card.s-stats-card--clickable{cursor:pointer}s-stats-card .s-stats-card.s-stats-card--clickable:hover .s-stats-card-overlay{opacity:.2}s-stats-card .s-stats-card.s-stats-card--clickable.s-stats-card--light:hover .s-stats-card-overlay{opacity:.08}s-stats-card .s-stats-card.s-stats-card--light{border-color:#ccc}p-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),s-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.ui-dialog-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.s-sidebar-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border){border-color:transparent}@media (max-width: 767px){s-stats-card .s-stats-card{height:auto}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:visible;white-space:normal;word-break:break-all}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "directive", type: i3.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }], encapsulation: i0.ViewEncapsulation.None });
114
118
  }
115
119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StatsCardComponent, decorators: [{
116
120
  type: Component,
117
- args: [{ selector: 's-stats-card', encapsulation: ViewEncapsulation.None, template: "<div\n [id]=\"id\"\n class=\"s-stats-card\"\n [ngClass]=\"{\n 's-stats-card--always-border': alwaysWithBorder,\n 's-stats-card--light': lightMode,\n 's-stats-card--color': !lightMode,\n 's-stats-card--light-version': lightVersion,\n 's-stats-card--clickable': clickable,\n }\"\n (click)=\"clickable && clicked.next($event)\"\n>\n <div\n [id]=\"id + '-background'\"\n class=\"s-stats-card-background\"\n [ngStyle]=\"{ 'background-color': (!lightMode && color) || '' }\"\n ></div>\n <div\n [id]=\"id + '-overlay'\"\n class=\"s-stats-card-overlay\"\n ></div>\n\n <div\n [id]=\"id + '-info-container'\"\n class=\"s-stats-card-info-container\"\n >\n <div class=\"s-stats-card-info-inner-container\">\n <div\n [id]=\"id + '-icon-container'\"\n class=\"s-stats-card-icon-container\"\n [ngStyle]=\"{ 'background-color': (lightMode && color) || '' }\"\n >\n <span\n [id]=\"id + '-icon'\"\n [class]=\"iconClass\"\n [ngClass]=\"{ 's-stats-card-icon': true }\"\n [ngStyle]=\"{ color: (!lightMode && color) || '' }\"\n aria-hidden=\"true\"\n ></span>\n </div>\n\n <div\n [id]=\"id + '-text-container'\"\n class=\"s-stats-card-text-container\"\n >\n <h4\n [id]=\"id + '-label'\"\n class=\"s-stats-card-label\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </h4>\n <span\n [id]=\"id + '-value'\"\n class=\"s-stats-card-value\"\n [sTooltip]=\"displayValue\"\n >\n {{ displayValue }}\n </span>\n </div>\n </div>\n <div class=\"s-stats-card-content-inner-container\">\n <div\n #content\n class=\"s-stats-card-content-container\"\n >\n <ng-content></ng-content>\n </div>\n @if (content.children.length) {\n <div class=\"s-stats-card-content-separator\"></div>\n }\n </div>\n @if (tooltip) {\n <span\n class=\"s-status-card-tooltip\"\n [sTooltip]=\"tooltip\"\n >\n <i class=\"fa fa-info-circle s-status-card-tooltip-icon\"></i>\n </span>\n }\n </div>\n</div>\n", styles: ["s-stats-card{display:block;height:auto;position:relative}s-stats-card .s-stats-card{border:1px solid transparent;min-width:120px;overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-overlay,s-stats-card .s-stats-card .s-stats-card-background{height:calc(100% - 2px);left:1px;position:absolute;top:1px;width:calc(100% - 2px)}s-stats-card .s-stats-card .s-stats-card-background{background-color:#fff}s-stats-card .s-stats-card .s-stats-card-overlay{background-color:#000;opacity:0;transition:opacity .2s ease-out}s-stats-card .s-stats-card .s-stats-card-info-container{overflow:auto;padding:15px;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container{overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{float:left;font-size:24px;height:50px;line-height:50px;text-align:center;transition:width .2s ease-out;width:50px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{align-items:flex-start;color:#fff;display:flex;flex-direction:column;float:left;height:50px;justify-content:center;max-width:calc(100% - 65px);padding-left:15px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label{font-weight:400;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{display:inline-block;font-size:20px;font-weight:700;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container{display:flex;flex-direction:column}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-separator{border-top:1px solid #ccc;margin:15px 0;order:1}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-container{order:2}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip{font-size:1rem;line-height:0;margin:.3rem;position:absolute;right:0;top:0}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip .s-status-card-tooltip-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--color .s-stats-card-icon-container{background-color:#fff}s-stats-card .s-stats-card.s-stats-card--light *{color:#333}s-stats-card .s-stats-card.s-stats-card--light *.s-stats-card-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--light *.s-stats-card-label{color:#999}s-stats-card .s-stats-card.s-stats-card--light * .s-status-card-tooltip .s-status-card-tooltip-icon{color:#999}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card.s-stats-card--clickable{cursor:pointer}s-stats-card .s-stats-card.s-stats-card--clickable:hover .s-stats-card-overlay{opacity:.2}s-stats-card .s-stats-card.s-stats-card--clickable.s-stats-card--light:hover .s-stats-card-overlay{opacity:.08}s-stats-card .s-stats-card.s-stats-card--light{border-color:#ccc}p-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),s-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.ui-dialog-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.s-sidebar-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border){border-color:transparent}@media (max-width: 767px){s-stats-card .s-stats-card{height:auto}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:visible;white-space:normal;word-break:break-all}}\n"] }]
121
+ args: [{ selector: 's-stats-card', encapsulation: ViewEncapsulation.None, template: "<div\n [id]=\"id\"\n class=\"s-stats-card\"\n [ngClass]=\"{\n 's-stats-card--always-border': alwaysWithBorder,\n 's-stats-card--light': lightMode,\n 's-stats-card--color': !lightMode,\n 's-stats-card--light-version': lightVersion,\n 's-stats-card--clickable': clickable,\n }\"\n (click)=\"clickable && clicked.next($event)\"\n>\n <div\n [id]=\"id + '-background'\"\n class=\"s-stats-card-background\"\n [ngStyle]=\"{ 'background-color': (!lightMode && color) || '' }\"\n ></div>\n <div\n [id]=\"id + '-overlay'\"\n class=\"s-stats-card-overlay\"\n ></div>\n\n <div\n [id]=\"id + '-info-container'\"\n class=\"s-stats-card-info-container\"\n >\n <div class=\"s-stats-card-info-inner-container\">\n <div\n [id]=\"id + '-icon-container'\"\n class=\"s-stats-card-icon-container\"\n [ngStyle]=\"{ 'background-color': (lightMode && color) || '' }\"\n >\n <span\n [id]=\"id + '-icon'\"\n [class]=\"iconClass\"\n [ngClass]=\"{ 's-stats-card-icon': true }\"\n [ngStyle]=\"{ color: (!lightMode && color) || '' }\"\n aria-hidden=\"true\"\n ></span>\n </div>\n\n <div\n [id]=\"id + '-text-container'\"\n class=\"s-stats-card-text-container\"\n >\n @if (infoSignTooltip) {\n <div *sInfoSign=\"infoSignTooltip\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n }\n <span\n [id]=\"id + '-value'\"\n class=\"s-stats-card-value\"\n [sTooltip]=\"displayValue\"\n >\n {{ displayValue }}\n </span>\n </div>\n </div>\n <div class=\"s-stats-card-content-inner-container\">\n <div\n #content\n class=\"s-stats-card-content-container\"\n >\n <ng-content></ng-content>\n </div>\n @if (content.children.length) {\n <div class=\"s-stats-card-content-separator\"></div>\n }\n </div>\n @if (tooltip) {\n <span\n class=\"s-status-card-tooltip\"\n [sTooltip]=\"tooltip\"\n >\n <i class=\"fa fa-info-circle s-status-card-tooltip-icon\"></i>\n </span>\n }\n </div>\n</div>\n\n<ng-template #labelTemplate>\n <h4\n [id]=\"id + '-label'\"\n class=\"s-stats-card-label\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </h4>\n</ng-template>\n\n", styles: ["s-stats-card{display:block;height:auto;position:relative}s-stats-card .s-stats-card{border:1px solid transparent;min-width:120px;overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-overlay,s-stats-card .s-stats-card .s-stats-card-background{height:calc(100% - 2px);left:1px;position:absolute;top:1px;width:calc(100% - 2px)}s-stats-card .s-stats-card .s-stats-card-background{background-color:#fff}s-stats-card .s-stats-card .s-stats-card-overlay{background-color:#000;opacity:0;transition:opacity .2s ease-out}s-stats-card .s-stats-card .s-stats-card-info-container{overflow:auto;padding:15px;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container{overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{float:left;font-size:24px;height:50px;line-height:50px;text-align:center;transition:width .2s ease-out;width:50px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{align-items:flex-start;color:#fff;display:flex;flex-direction:column;float:left;height:50px;justify-content:center;max-width:calc(100% - 65px);padding-left:15px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label{font-weight:400;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{display:inline-block;font-size:20px;font-weight:700;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container{display:flex;flex-direction:column}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-separator{border-top:1px solid #ccc;margin:15px 0;order:1}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-container{order:2}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip{font-size:1rem;line-height:0;margin:.3rem;position:absolute;right:0;top:0}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip .s-status-card-tooltip-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--color .s-stats-card-icon-container{background-color:#fff}s-stats-card .s-stats-card.s-stats-card--light *{color:#333}s-stats-card .s-stats-card.s-stats-card--light *.s-stats-card-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--light *.s-stats-card-label{color:#999}s-stats-card .s-stats-card.s-stats-card--light * .s-status-card-tooltip .s-status-card-tooltip-icon{color:#999}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card.s-stats-card--clickable{cursor:pointer}s-stats-card .s-stats-card.s-stats-card--clickable:hover .s-stats-card-overlay{opacity:.2}s-stats-card .s-stats-card.s-stats-card--clickable.s-stats-card--light:hover .s-stats-card-overlay{opacity:.08}s-stats-card .s-stats-card.s-stats-card--light{border-color:#ccc}p-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),s-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.ui-dialog-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.s-sidebar-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border){border-color:transparent}@media (max-width: 767px){s-stats-card .s-stats-card{height:auto}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:visible;white-space:normal;word-break:break-all}}\n"] }]
118
122
  }], propDecorators: { id: [{
119
123
  type: Input
120
124
  }], label: [{
121
125
  type: Input,
122
126
  args: [{ required: true }]
127
+ }], infoSignTooltip: [{
128
+ type: Input
123
129
  }], alwaysWithBorder: [{
124
130
  type: Input
125
131
  }], lightVersion: [{
@@ -144,13 +150,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
144
150
 
145
151
  class StatsCardModule {
146
152
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StatsCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
147
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: StatsCardModule, declarations: [StatsCardComponent], imports: [CommonModule, TooltipModule], exports: [StatsCardComponent] });
148
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StatsCardModule, imports: [CommonModule, TooltipModule] });
153
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: StatsCardModule, declarations: [StatsCardComponent], imports: [CommonModule, TooltipModule, InfoSignModule], exports: [StatsCardComponent] });
154
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StatsCardModule, imports: [CommonModule, TooltipModule, InfoSignModule] });
149
155
  }
150
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StatsCardModule, decorators: [{
151
157
  type: NgModule,
152
158
  args: [{
153
- imports: [CommonModule, TooltipModule],
159
+ imports: [CommonModule, TooltipModule, InfoSignModule],
154
160
  declarations: [StatsCardComponent],
155
161
  exports: [StatsCardComponent],
156
162
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-stats-card.mjs","sources":["../../projects/angular-components/stats-card/src/lib/stats-card/stats-card.component.ts","../../projects/angular-components/stats-card/src/lib/stats-card/stats-card.component.html","../../projects/angular-components/stats-card/src/lib/stats-card/stats-card.module.ts","../../projects/angular-components/stats-card/src/seniorsistemas-angular-components-stats-card.ts"],"sourcesContent":["import { Component, Input, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\n\nimport { BigNumber } from 'bignumber.js';\n\n/**\n * @description Card de estatística que exibe um valor numérico com ícone,\n * rótulo e animação de contagem. Suporta diferentes estilos visuais\n * (borda, versão leve) e pode emitir evento ao ser clicado.\n *\n * @example\n * ```html\n * <s-stats-card\n * label=\"Vendas\"\n * [value]=\"'1.234'\"\n * iconClass=\"fas fa-shopping-cart\"\n * color=\"#3399ff\" />\n * ```\n *\n * @category Summary\n */\n@Component({\n selector: 's-stats-card',\n templateUrl: './stats-card.component.html',\n styleUrls: ['./stats-card.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class StatsCardComponent {\n public static nextId = 0;\n\n /** @description Identificador único do card no DOM. Gerado automaticamente se não informado. */\n @Input()\n public id = `s-stats-card-${StatsCardComponent.nextId++}`;\n\n /** @description Rótulo descritivo da estatística exibida. Campo obrigatório. */\n @Input({ required: true })\n public label!: string;\n\n /** @description Exibe borda mesmo quando o card não está em destaque. @default false */\n @Input()\n public alwaysWithBorder = false;\n\n /** @description Ativa a versão visual leve (sem sombra e com fundo claro). @default false */\n @Input()\n public lightVersion = false;\n\n /** @description Ativa o modo de cores claras para o card. @default true */\n @Input()\n public lightMode = true;\n\n /** @description Classe do ícone exibido no card. @default 'fa fa-bar-chart' */\n @Input()\n public iconClass = 'fa fa-bar-chart';\n\n /** @description Cor de destaque do card em formato CSS. @default '#339966' */\n @Input()\n public color = '#339966';\n\n /** @description Habilita a animação de contagem ao atualizar o valor. @default true */\n @Input()\n public animateNumbers = true;\n\n /** @description Habilita o cursor de ponteiro e o evento de clique. @default false */\n @Input()\n public clickable = false;\n\n /** @description Texto do tooltip exibido ao passar o mouse sobre o card. @default '' */\n @Input()\n public tooltip = '';\n\n /** @description Emitido quando o usuário clica no card (requer `clickable = true`). */\n @Output()\n public clicked = new EventEmitter<MouseEvent>();\n\n public displayValue?: string;\n\n private _ANIMATION_DURATION_MS = 200;\n private _STEP_DURATION_MS = 20;\n private _previousValue = '0';\n private _intervalId: any;\n private _value = '0';\n\n public get value() {\n return this._value;\n }\n\n /** @description Valor numérico exibido no card. Quando `animateNumbers` está ativo, a contagem é animada. */\n @Input()\n public set value(value: string) {\n this._previousValue = this._value;\n this._value = String(value);\n if (this.animateNumbers) this._updateDisplayValue();\n else this.displayValue = this.value;\n }\n\n public replaceNumericPositions(value: string, newValue?: BigNumber) {\n const rawValue = value.replace(/[^\\d]/g, '');\n const newValueString = newValue ? newValue.toString() : '';\n const formattedNewValue = newValueString.toString().replace(/\\D/g, '').padStart(rawValue.length, '0');\n let newValueIndex = 0;\n\n return value\n .split('')\n .map((char) => {\n const number = Number(char);\n if (number || char === '0') return formattedNewValue[newValueIndex++];\n return char;\n })\n .join('');\n }\n\n private _updateDisplayValue() {\n const animationDuration = new BigNumber(this._ANIMATION_DURATION_MS);\n const stepDuration = new BigNumber(this._STEP_DURATION_MS);\n const animationCount = animationDuration.dividedBy(stepDuration);\n\n const previousRawValue = new BigNumber(this._previousValue.replace(/\\D/g, ''));\n const rawValue = new BigNumber(this.value.replace(/\\D/g, ''));\n\n const incrementValue = rawValue.minus(previousRawValue).absoluteValue().dividedBy(animationCount);\n const incremental = previousRawValue.isLessThan(rawValue);\n\n clearInterval(this._intervalId);\n\n this.displayValue = this.replaceNumericPositions(this.value);\n\n let counter = previousRawValue;\n\n this._intervalId = setInterval(() => {\n if (incremental && counter.isLessThan(rawValue)) {\n if (this.displayValue) {\n this.displayValue = this.replaceNumericPositions(this.displayValue, counter);\n }\n counter = counter.plus(incrementValue);\n } else if (!incremental && counter.isGreaterThan(rawValue)) {\n if (this.displayValue) {\n this.displayValue = this.replaceNumericPositions(this.displayValue, counter);\n }\n counter = counter.minus(incrementValue);\n } else {\n this.displayValue = this.value;\n\n clearInterval(this._intervalId);\n }\n }, this._STEP_DURATION_MS);\n }\n}\n\n","<div\n [id]=\"id\"\n class=\"s-stats-card\"\n [ngClass]=\"{\n 's-stats-card--always-border': alwaysWithBorder,\n 's-stats-card--light': lightMode,\n 's-stats-card--color': !lightMode,\n 's-stats-card--light-version': lightVersion,\n 's-stats-card--clickable': clickable,\n }\"\n (click)=\"clickable && clicked.next($event)\"\n>\n <div\n [id]=\"id + '-background'\"\n class=\"s-stats-card-background\"\n [ngStyle]=\"{ 'background-color': (!lightMode && color) || '' }\"\n ></div>\n <div\n [id]=\"id + '-overlay'\"\n class=\"s-stats-card-overlay\"\n ></div>\n\n <div\n [id]=\"id + '-info-container'\"\n class=\"s-stats-card-info-container\"\n >\n <div class=\"s-stats-card-info-inner-container\">\n <div\n [id]=\"id + '-icon-container'\"\n class=\"s-stats-card-icon-container\"\n [ngStyle]=\"{ 'background-color': (lightMode && color) || '' }\"\n >\n <span\n [id]=\"id + '-icon'\"\n [class]=\"iconClass\"\n [ngClass]=\"{ 's-stats-card-icon': true }\"\n [ngStyle]=\"{ color: (!lightMode && color) || '' }\"\n aria-hidden=\"true\"\n ></span>\n </div>\n\n <div\n [id]=\"id + '-text-container'\"\n class=\"s-stats-card-text-container\"\n >\n <h4\n [id]=\"id + '-label'\"\n class=\"s-stats-card-label\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </h4>\n <span\n [id]=\"id + '-value'\"\n class=\"s-stats-card-value\"\n [sTooltip]=\"displayValue\"\n >\n {{ displayValue }}\n </span>\n </div>\n </div>\n <div class=\"s-stats-card-content-inner-container\">\n <div\n #content\n class=\"s-stats-card-content-container\"\n >\n <ng-content></ng-content>\n </div>\n @if (content.children.length) {\n <div class=\"s-stats-card-content-separator\"></div>\n }\n </div>\n @if (tooltip) {\n <span\n class=\"s-status-card-tooltip\"\n [sTooltip]=\"tooltip\"\n >\n <i class=\"fa fa-info-circle s-status-card-tooltip-icon\"></i>\n </span>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { StatsCardComponent } from './stats-card.component';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\n\n@NgModule({\n imports: [CommonModule, TooltipModule],\n declarations: [StatsCardComponent],\n exports: [StatsCardComponent],\n})\nexport class StatsCardModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAIA;;;;;;;;;;;;;;;AAeG;MAOU,kBAAkB,CAAA;AACpB,IAAA,OAAO,MAAM,GAAG,CAAC,CAAC;;AAIlB,IAAA,EAAE,GAAG,CAAgB,aAAA,EAAA,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;;AAInD,IAAA,KAAK,CAAU;;IAIf,gBAAgB,GAAG,KAAK,CAAC;;IAIzB,YAAY,GAAG,KAAK,CAAC;;IAIrB,SAAS,GAAG,IAAI,CAAC;;IAIjB,SAAS,GAAG,iBAAiB,CAAC;;IAI9B,KAAK,GAAG,SAAS,CAAC;;IAIlB,cAAc,GAAG,IAAI,CAAC;;IAItB,SAAS,GAAG,KAAK,CAAC;;IAIlB,OAAO,GAAG,EAAE,CAAC;;AAIb,IAAA,OAAO,GAAG,IAAI,YAAY,EAAc,CAAC;AAEzC,IAAA,YAAY,CAAU;IAErB,sBAAsB,GAAG,GAAG,CAAC;IAC7B,iBAAiB,GAAG,EAAE,CAAC;IACvB,cAAc,GAAG,GAAG,CAAC;AACrB,IAAA,WAAW,CAAM;IACjB,MAAM,GAAG,GAAG,CAAC;AAErB,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;;IAGD,IACW,KAAK,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;;AAC/C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;KACvC;IAEM,uBAAuB,CAAC,KAAa,EAAE,QAAoB,EAAA;QAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAA,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC3D,MAAM,iBAAiB,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtG,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB,QAAA,OAAO,KAAK;aACP,KAAK,CAAC,EAAE,CAAC;AACT,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACV,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,IAAI,MAAM,IAAI,IAAI,KAAK,GAAG;AAAE,gBAAA,OAAO,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;AACtE,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAC;KACjB;IAEO,mBAAmB,GAAA;QACvB,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAEjE,QAAA,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/E,QAAA,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAE9D,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAClG,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE1D,QAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7D,IAAI,OAAO,GAAG,gBAAgB,CAAC;AAE/B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAK;YAChC,IAAI,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC7C,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;iBAChF;AACD,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1C;iBAAM,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;AACxD,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;iBAChF;AACD,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;aAC3C;iBAAM;AACH,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;AAE/B,gBAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACnC;AACL,SAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC9B;wGAtHQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,6VC1B/B,8oFAkFA,EAAA,MAAA,EAAA,CAAA,+0KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDxDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACI,cAAc,EAAA,aAAA,EAGT,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8oFAAA,EAAA,MAAA,EAAA,CAAA,+0KAAA,CAAA,EAAA,CAAA;8BAO9B,EAAE,EAAA,CAAA;sBADR,KAAK;gBAKC,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAKlB,gBAAgB,EAAA,CAAA;sBADtB,KAAK;gBAKC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAKC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAKC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAKC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAKC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAKC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAKC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAKC,OAAO,EAAA,CAAA;sBADb,MAAM;gBAiBI,KAAK,EAAA,CAAA;sBADf,KAAK;;;ME3EG,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAHT,kBAAkB,CAAA,EAAA,OAAA,EAAA,CADvB,YAAY,EAAE,aAAa,aAE3B,kBAAkB,CAAA,EAAA,CAAA,CAAA;yGAEnB,eAAe,EAAA,OAAA,EAAA,CAJd,YAAY,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;;4FAI5B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;oBACtC,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAChC,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-stats-card.mjs","sources":["../../projects/angular-components/stats-card/src/lib/stats-card/stats-card.component.ts","../../projects/angular-components/stats-card/src/lib/stats-card/stats-card.component.html","../../projects/angular-components/stats-card/src/lib/stats-card/stats-card.module.ts","../../projects/angular-components/stats-card/src/seniorsistemas-angular-components-stats-card.ts"],"sourcesContent":["import { Component, Input, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\n\nimport { BigNumber } from 'bignumber.js';\n\n/**\n * @description Card de estatística que exibe um valor numérico com ícone,\n * rótulo e animação de contagem. Suporta diferentes estilos visuais\n * (borda, versão leve) e pode emitir evento ao ser clicado.\n *\n * @example\n * ```html\n * <s-stats-card\n * label=\"Vendas\"\n * [value]=\"'1.234'\"\n * iconClass=\"fas fa-shopping-cart\"\n * color=\"#3399ff\" />\n * ```\n *\n * @category Summary\n */\n@Component({\n selector: 's-stats-card',\n templateUrl: './stats-card.component.html',\n styleUrls: ['./stats-card.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class StatsCardComponent {\n public static nextId = 0;\n\n /** @description Identificador único do card no DOM. Gerado automaticamente se não informado. */\n @Input()\n public id = `s-stats-card-${StatsCardComponent.nextId++}`;\n\n /** @description Rótulo descritivo da estatística exibida. Campo obrigatório. */\n @Input({ required: true })\n public label!: string;\n\n /** @description Texto do tooltip exibido ao passar o mouse sobre o ícone de informação ao lado do label do stats card. */\n @Input()\n public infoSignTooltip?: string;\n\n /** @description Exibe borda mesmo quando o card não está em destaque. @default false */\n @Input()\n public alwaysWithBorder = false;\n\n /** @description Ativa a versão visual leve (sem sombra e com fundo claro). @default false */\n @Input()\n public lightVersion = false;\n\n /** @description Ativa o modo de cores claras para o card. @default true */\n @Input()\n public lightMode = true;\n\n /** @description Classe do ícone exibido no card. @default 'fa fa-bar-chart' */\n @Input()\n public iconClass = 'fa fa-bar-chart';\n\n /** @description Cor de destaque do card em formato CSS. @default '#339966' */\n @Input()\n public color = '#339966';\n\n /** @description Habilita a animação de contagem ao atualizar o valor. @default true */\n @Input()\n public animateNumbers = true;\n\n /** @description Habilita o cursor de ponteiro e o evento de clique. @default false */\n @Input()\n public clickable = false;\n\n /** @description Texto do tooltip exibido ao passar o mouse sobre o card. @default '' */\n @Input()\n public tooltip = '';\n\n /** @description Emitido quando o usuário clica no card (requer `clickable = true`). */\n @Output()\n public clicked = new EventEmitter<MouseEvent>();\n\n public displayValue?: string;\n\n private _ANIMATION_DURATION_MS = 200;\n private _STEP_DURATION_MS = 20;\n private _previousValue = '0';\n private _intervalId: any;\n private _value = '0';\n\n public get value() {\n return this._value;\n }\n\n /** @description Valor numérico exibido no card. Quando `animateNumbers` está ativo, a contagem é animada. */\n @Input()\n public set value(value: string) {\n this._previousValue = this._value;\n this._value = String(value);\n if (this.animateNumbers) this._updateDisplayValue();\n else this.displayValue = this.value;\n }\n\n public replaceNumericPositions(value: string, newValue?: BigNumber) {\n const rawValue = value.replace(/[^\\d]/g, '');\n const newValueString = newValue ? newValue.toString() : '';\n const formattedNewValue = newValueString.toString().replace(/\\D/g, '').padStart(rawValue.length, '0');\n let newValueIndex = 0;\n\n return value\n .split('')\n .map((char) => {\n const number = Number(char);\n if (number || char === '0') return formattedNewValue[newValueIndex++];\n return char;\n })\n .join('');\n }\n\n private _updateDisplayValue() {\n const animationDuration = new BigNumber(this._ANIMATION_DURATION_MS);\n const stepDuration = new BigNumber(this._STEP_DURATION_MS);\n const animationCount = animationDuration.dividedBy(stepDuration);\n\n const previousRawValue = new BigNumber(this._previousValue.replace(/\\D/g, ''));\n const rawValue = new BigNumber(this.value.replace(/\\D/g, ''));\n\n const incrementValue = rawValue.minus(previousRawValue).absoluteValue().dividedBy(animationCount);\n const incremental = previousRawValue.isLessThan(rawValue);\n\n clearInterval(this._intervalId);\n\n this.displayValue = this.replaceNumericPositions(this.value);\n\n let counter = previousRawValue;\n\n this._intervalId = setInterval(() => {\n if (incremental && counter.isLessThan(rawValue)) {\n if (this.displayValue) {\n this.displayValue = this.replaceNumericPositions(this.displayValue, counter);\n }\n counter = counter.plus(incrementValue);\n } else if (!incremental && counter.isGreaterThan(rawValue)) {\n if (this.displayValue) {\n this.displayValue = this.replaceNumericPositions(this.displayValue, counter);\n }\n counter = counter.minus(incrementValue);\n } else {\n this.displayValue = this.value;\n\n clearInterval(this._intervalId);\n }\n }, this._STEP_DURATION_MS);\n }\n}\n\n","<div\n [id]=\"id\"\n class=\"s-stats-card\"\n [ngClass]=\"{\n 's-stats-card--always-border': alwaysWithBorder,\n 's-stats-card--light': lightMode,\n 's-stats-card--color': !lightMode,\n 's-stats-card--light-version': lightVersion,\n 's-stats-card--clickable': clickable,\n }\"\n (click)=\"clickable && clicked.next($event)\"\n>\n <div\n [id]=\"id + '-background'\"\n class=\"s-stats-card-background\"\n [ngStyle]=\"{ 'background-color': (!lightMode && color) || '' }\"\n ></div>\n <div\n [id]=\"id + '-overlay'\"\n class=\"s-stats-card-overlay\"\n ></div>\n\n <div\n [id]=\"id + '-info-container'\"\n class=\"s-stats-card-info-container\"\n >\n <div class=\"s-stats-card-info-inner-container\">\n <div\n [id]=\"id + '-icon-container'\"\n class=\"s-stats-card-icon-container\"\n [ngStyle]=\"{ 'background-color': (lightMode && color) || '' }\"\n >\n <span\n [id]=\"id + '-icon'\"\n [class]=\"iconClass\"\n [ngClass]=\"{ 's-stats-card-icon': true }\"\n [ngStyle]=\"{ color: (!lightMode && color) || '' }\"\n aria-hidden=\"true\"\n ></span>\n </div>\n\n <div\n [id]=\"id + '-text-container'\"\n class=\"s-stats-card-text-container\"\n >\n @if (infoSignTooltip) {\n <div *sInfoSign=\"infoSignTooltip\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"labelTemplate\" />\n }\n <span\n [id]=\"id + '-value'\"\n class=\"s-stats-card-value\"\n [sTooltip]=\"displayValue\"\n >\n {{ displayValue }}\n </span>\n </div>\n </div>\n <div class=\"s-stats-card-content-inner-container\">\n <div\n #content\n class=\"s-stats-card-content-container\"\n >\n <ng-content></ng-content>\n </div>\n @if (content.children.length) {\n <div class=\"s-stats-card-content-separator\"></div>\n }\n </div>\n @if (tooltip) {\n <span\n class=\"s-status-card-tooltip\"\n [sTooltip]=\"tooltip\"\n >\n <i class=\"fa fa-info-circle s-status-card-tooltip-icon\"></i>\n </span>\n }\n </div>\n</div>\n\n<ng-template #labelTemplate>\n <h4\n [id]=\"id + '-label'\"\n class=\"s-stats-card-label\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </h4>\n</ng-template>\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { StatsCardComponent } from './stats-card.component';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';\n\n@NgModule({\n imports: [CommonModule, TooltipModule, InfoSignModule],\n declarations: [StatsCardComponent],\n exports: [StatsCardComponent],\n})\nexport class StatsCardModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;AAIA;;;;;;;;;;;;;;;AAeG;MAOU,kBAAkB,CAAA;AACpB,IAAA,OAAO,MAAM,GAAG,CAAC,CAAC;;AAIlB,IAAA,EAAE,GAAG,CAAgB,aAAA,EAAA,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;;AAInD,IAAA,KAAK,CAAU;;AAIf,IAAA,eAAe,CAAU;;IAIzB,gBAAgB,GAAG,KAAK,CAAC;;IAIzB,YAAY,GAAG,KAAK,CAAC;;IAIrB,SAAS,GAAG,IAAI,CAAC;;IAIjB,SAAS,GAAG,iBAAiB,CAAC;;IAI9B,KAAK,GAAG,SAAS,CAAC;;IAIlB,cAAc,GAAG,IAAI,CAAC;;IAItB,SAAS,GAAG,KAAK,CAAC;;IAIlB,OAAO,GAAG,EAAE,CAAC;;AAIb,IAAA,OAAO,GAAG,IAAI,YAAY,EAAc,CAAC;AAEzC,IAAA,YAAY,CAAU;IAErB,sBAAsB,GAAG,GAAG,CAAC;IAC7B,iBAAiB,GAAG,EAAE,CAAC;IACvB,cAAc,GAAG,GAAG,CAAC;AACrB,IAAA,WAAW,CAAM;IACjB,MAAM,GAAG,GAAG,CAAC;AAErB,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;;IAGD,IACW,KAAK,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;;AAC/C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;KACvC;IAEM,uBAAuB,CAAC,KAAa,EAAE,QAAoB,EAAA;QAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAA,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC3D,MAAM,iBAAiB,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtG,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB,QAAA,OAAO,KAAK;aACP,KAAK,CAAC,EAAE,CAAC;AACT,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACV,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,IAAI,MAAM,IAAI,IAAI,KAAK,GAAG;AAAE,gBAAA,OAAO,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;AACtE,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAC;KACjB;IAEO,mBAAmB,GAAA;QACvB,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAEjE,QAAA,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/E,QAAA,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAE9D,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAClG,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE1D,QAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7D,IAAI,OAAO,GAAG,gBAAgB,CAAC;AAE/B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAK;YAChC,IAAI,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC7C,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;iBAChF;AACD,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1C;iBAAM,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;AACxD,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;iBAChF;AACD,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;aAC3C;iBAAM;AACH,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;AAE/B,gBAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACnC;AACL,SAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC9B;wGA1HQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,iYC1B/B,i7FA6FA,EAAA,MAAA,EAAA,CAAA,+0KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDnEa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACI,cAAc,EAAA,aAAA,EAGT,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,i7FAAA,EAAA,MAAA,EAAA,CAAA,+0KAAA,CAAA,EAAA,CAAA;8BAO9B,EAAE,EAAA,CAAA;sBADR,KAAK;gBAKC,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAKlB,eAAe,EAAA,CAAA;sBADrB,KAAK;gBAKC,gBAAgB,EAAA,CAAA;sBADtB,KAAK;gBAKC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAKC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAKC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAKC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAKC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAKC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAKC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAKC,OAAO,EAAA,CAAA;sBADb,MAAM;gBAiBI,KAAK,EAAA,CAAA;sBADf,KAAK;;;ME9EG,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAf,eAAe,EAAA,YAAA,EAAA,CAHT,kBAAkB,CADvB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CAE3C,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJd,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAI5C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;oBACtD,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAChC,iBAAA,CAAA;;;ACXD;;AAEG;;;;"}
@@ -1,4 +1,5 @@
1
1
  export declare enum LoadingStateIndicators {
2
2
  Dots = "dots",
3
- Logo = "logo"
3
+ Logo = "logo",
4
+ ProgressBar = "progress-bar"
4
5
  }
@@ -0,0 +1,24 @@
1
+ import * as i0 from "@angular/core";
2
+ export type ProgressBarIndicatorMode = 'percentage' | 'intermittent';
3
+ export declare class ProgressBarIndicatorComponent {
4
+ /**
5
+ * @description Modo de exibição da barra.
6
+ * - `'percentage'`: exibe o preenchimento proporcional ao `value` (0–100).
7
+ * - `'intermittent'`: anima a barra indo e voltando indefinidamente.
8
+ * @default 'intermittent'
9
+ */
10
+ mode: ProgressBarIndicatorMode;
11
+ /**
12
+ * @description Valor de progresso (0–100). Usado apenas no modo `'percentage'`.
13
+ * @default 0
14
+ */
15
+ value: number;
16
+ /**
17
+ * @description Texto exibido abaixo da barra.
18
+ * Quando omitido, usa `'{value}%'` no modo `'percentage'` ou `'Carregando...'` no modo `'intermittent'`.
19
+ */
20
+ label?: string;
21
+ get displayLabel(): string;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProgressBarIndicatorComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProgressBarIndicatorComponent, "s-progress-bar-indicator", never, { "mode": { "alias": "mode"; "required": false; }; "value": { "alias": "value"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, {}, never, never, false, never>;
24
+ }
@@ -1,5 +1,6 @@
1
1
  import { OnDestroy, TemplateRef } from '@angular/core';
2
2
  import { LoadingStateIndicators } from './components/loading-state-indicators';
3
+ import { ProgressBarIndicatorMode } from './components/progress-bar-indicator/progress-bar-indicator.component';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * @description Componente de estado de carregamento que exibe um indicador animado enquanto
@@ -44,6 +45,26 @@ export declare class LoadingStateComponent implements OnDestroy {
44
45
  */
45
46
  set loading(loading: boolean);
46
47
  get loading(): boolean;
48
+ /**
49
+ * @description Modo da barra de progresso. Usado quando `indicator` é `LoadingStateIndicators.ProgressBar`.
50
+ * - `'percentage'`: exibe o preenchimento proporcional ao `progressBarValue`.
51
+ * - `'intermittent'`: anima a barra indo e voltando.
52
+ *
53
+ * @default 'intermittent'
54
+ */
55
+ progressBarMode: ProgressBarIndicatorMode;
56
+ /**
57
+ * @description Valor de progresso (0–100). Usado quando `indicator` é `LoadingStateIndicators.ProgressBar`
58
+ * e `progressBarMode` é `'percentage'`.
59
+ *
60
+ * @default 0
61
+ */
62
+ progressBarValue: number;
63
+ /**
64
+ * @description Texto exibido abaixo da barra de progresso.
65
+ * Quando omitido, usa `'{value}%'` no modo `'percentage'` ou `'Carregando...'` no modo `'intermittent'`.
66
+ */
67
+ progressBarLabel?: string;
47
68
  contents: TemplateRef<any> | null;
48
69
  blocking: boolean;
49
70
  private _loading;
@@ -55,5 +76,5 @@ export declare class LoadingStateComponent implements OnDestroy {
55
76
  block(): void;
56
77
  unblock(): void;
57
78
  static ɵfac: i0.ɵɵFactoryDeclaration<LoadingStateComponent, never>;
58
- static ɵcmp: i0.ɵɵComponentDeclaration<LoadingStateComponent, "s-loading-state", never, { "indicator": { "alias": "indicator"; "required": false; }; "id": { "alias": "id"; "required": false; }; "blockWindow": { "alias": "blockWindow"; "required": false; }; "loading": { "alias": "loading"; "required": true; }; }, {}, never, ["*"], false, never>;
79
+ static ɵcmp: i0.ɵɵComponentDeclaration<LoadingStateComponent, "s-loading-state", never, { "indicator": { "alias": "indicator"; "required": false; }; "id": { "alias": "id"; "required": false; }; "blockWindow": { "alias": "blockWindow"; "required": false; }; "loading": { "alias": "loading"; "required": true; }; "progressBarMode": { "alias": "progressBarMode"; "required": false; }; "progressBarValue": { "alias": "progressBarValue"; "required": false; }; "progressBarLabel": { "alias": "progressBarLabel"; "required": false; }; }, {}, never, ["*"], false, never>;
59
80
  }
@@ -1,5 +1,6 @@
1
1
  import { AfterViewInit, OnDestroy } from '@angular/core';
2
2
  import { LoadingStateIndicators } from './components/loading-state-indicators';
3
+ import { ProgressBarIndicatorMode } from './components/progress-bar-indicator/progress-bar-indicator.component';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * @description Diretiva estrutural que envolve o conteúdo da view com um indicador de carregamento.
@@ -26,15 +27,20 @@ export declare class LoadingStateDirective implements AfterViewInit, OnDestroy {
26
27
  * @description Controla o estado de carregamento da diretiva.
27
28
  * Aceita:
28
29
  * - `boolean`: ativa/desativa o carregamento com o indicador padrão (`dots`).
29
- * - `{ loading: boolean; indicator?: LoadingStateIndicators }`: permite configurar
30
- * o tipo de indicador junto com o estado de carregamento.
30
+ * - objeto de configuração: permite definir indicador, modo e valor da barra de progresso.
31
31
  */
32
32
  set sLoadingState(value: boolean | {
33
33
  loading: boolean;
34
34
  indicator?: LoadingStateIndicators;
35
+ progressBarMode?: ProgressBarIndicatorMode;
36
+ progressBarValue?: number;
37
+ progressBarLabel?: string;
35
38
  });
36
39
  private _loading;
37
40
  private indicator;
41
+ private progressBarMode;
42
+ private progressBarValue;
43
+ private progressBarLabel?;
38
44
  private loaderComponent;
39
45
  ngAfterViewInit(): void;
40
46
  private createComponent;
@@ -3,10 +3,11 @@ import * as i1 from "./loading-state.component";
3
3
  import * as i2 from "./loading-state.directive";
4
4
  import * as i3 from "./components/dots-indicator/dots-indicator.components";
5
5
  import * as i4 from "./components/logo-indicator/logo-indicator.component";
6
- import * as i5 from "@angular/common";
7
- import * as i6 from "@seniorsistemas/angular-components/common";
6
+ import * as i5 from "./components/progress-bar-indicator/progress-bar-indicator.component";
7
+ import * as i6 from "@angular/common";
8
+ import * as i7 from "@seniorsistemas/angular-components/common";
8
9
  export declare class LoadingStateModule {
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<LoadingStateModule, never>;
10
- static ɵmod: i0.ɵɵNgModuleDeclaration<LoadingStateModule, [typeof i1.LoadingStateComponent, typeof i2.LoadingStateDirective, typeof i3.DotsIndicatorComponent, typeof i4.LoadingIndicatorComponent], [typeof i5.CommonModule, typeof i6.SVGFactoryModule], [typeof i1.LoadingStateComponent, typeof i2.LoadingStateDirective]>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<LoadingStateModule, [typeof i1.LoadingStateComponent, typeof i2.LoadingStateDirective, typeof i3.DotsIndicatorComponent, typeof i4.LoadingIndicatorComponent, typeof i5.ProgressBarIndicatorComponent], [typeof i6.CommonModule, typeof i7.SVGFactoryModule], [typeof i1.LoadingStateComponent, typeof i2.LoadingStateDirective]>;
11
12
  static ɵinj: i0.ɵɵInjectorDeclaration<LoadingStateModule>;
12
13
  }
@@ -2,3 +2,4 @@ export { LoadingStateModule } from './lib/loading-state/loading-state.module';
2
2
  export { LoadingStateComponent } from './lib/loading-state/loading-state.component';
3
3
  export { LoadingStateDirective } from './lib/loading-state/loading-state.directive';
4
4
  export { LoadingStateIndicators } from './lib/loading-state/components/loading-state-indicators';
5
+ export type { ProgressBarIndicatorMode } from './lib/loading-state/components/progress-bar-indicator/progress-bar-indicator.component';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seniorsistemas/angular-components",
3
- "version": "19.4.1",
3
+ "version": "19.5.1",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^18.2.14",
6
6
  "@angular/common": "^18.2.0",
@@ -22,6 +22,8 @@ export declare class StatsCardComponent {
22
22
  id: string;
23
23
  /** @description Rótulo descritivo da estatística exibida. Campo obrigatório. */
24
24
  label: string;
25
+ /** @description Texto do tooltip exibido ao passar o mouse sobre o ícone de informação ao lado do label do stats card. */
26
+ infoSignTooltip?: string;
25
27
  /** @description Exibe borda mesmo quando o card não está em destaque. @default false */
26
28
  alwaysWithBorder: boolean;
27
29
  /** @description Ativa a versão visual leve (sem sombra e com fundo claro). @default false */
@@ -52,5 +54,5 @@ export declare class StatsCardComponent {
52
54
  replaceNumericPositions(value: string, newValue?: BigNumber): string;
53
55
  private _updateDisplayValue;
54
56
  static ɵfac: i0.ɵɵFactoryDeclaration<StatsCardComponent, never>;
55
- static ɵcmp: i0.ɵɵComponentDeclaration<StatsCardComponent, "s-stats-card", never, { "id": { "alias": "id"; "required": false; }; "label": { "alias": "label"; "required": true; }; "alwaysWithBorder": { "alias": "alwaysWithBorder"; "required": false; }; "lightVersion": { "alias": "lightVersion"; "required": false; }; "lightMode": { "alias": "lightMode"; "required": false; }; "iconClass": { "alias": "iconClass"; "required": false; }; "color": { "alias": "color"; "required": false; }; "animateNumbers": { "alias": "animateNumbers"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], false, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<StatsCardComponent, "s-stats-card", never, { "id": { "alias": "id"; "required": false; }; "label": { "alias": "label"; "required": true; }; "infoSignTooltip": { "alias": "infoSignTooltip"; "required": false; }; "alwaysWithBorder": { "alias": "alwaysWithBorder"; "required": false; }; "lightVersion": { "alias": "lightVersion"; "required": false; }; "lightMode": { "alias": "lightMode"; "required": false; }; "iconClass": { "alias": "iconClass"; "required": false; }; "color": { "alias": "color"; "required": false; }; "animateNumbers": { "alias": "animateNumbers"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], false, never>;
56
58
  }
@@ -2,8 +2,9 @@ import * as i0 from "@angular/core";
2
2
  import * as i1 from "./stats-card.component";
3
3
  import * as i2 from "@angular/common";
4
4
  import * as i3 from "@seniorsistemas/angular-components/tooltip";
5
+ import * as i4 from "@seniorsistemas/angular-components/info-sign";
5
6
  export declare class StatsCardModule {
6
7
  static ɵfac: i0.ɵɵFactoryDeclaration<StatsCardModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<StatsCardModule, [typeof i1.StatsCardComponent], [typeof i2.CommonModule, typeof i3.TooltipModule], [typeof i1.StatsCardComponent]>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<StatsCardModule, [typeof i1.StatsCardComponent], [typeof i2.CommonModule, typeof i3.TooltipModule, typeof i4.InfoSignModule], [typeof i1.StatsCardComponent]>;
8
9
  static ɵinj: i0.ɵɵInjectorDeclaration<StatsCardModule>;
9
10
  }