ngx-opalbytes-components 1.19.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +103 -0
- package/cli/cao-comp.cjs +186 -0
- package/fesm2022/ngx-opalbytes-components.mjs +23 -7
- package/fesm2022/ngx-opalbytes-components.mjs.map +1 -1
- package/package.json +4 -1
- package/src/lib/shared/components/autocomplete/autocomplete.component.html +126 -0
- package/src/lib/shared/components/autocomplete/autocomplete.component.scss +150 -0
- package/src/lib/shared/components/autocomplete/autocomplete.component.ts +552 -0
- package/src/lib/shared/components/base-button/base-button.component.html +33 -0
- package/src/lib/shared/components/base-button/base-button.component.scss +14 -0
- package/src/lib/shared/components/base-button/base-button.component.spec.ts +64 -0
- package/src/lib/shared/components/base-button/base-button.component.ts +48 -0
- package/src/lib/shared/components/base-icon/base-icon.css +0 -0
- package/src/lib/shared/components/base-icon/base-icon.html +11 -0
- package/src/lib/shared/components/base-icon/base-icon.spec.ts +23 -0
- package/src/lib/shared/components/base-icon/base-icon.ts +18 -0
- package/src/lib/shared/components/base-input/base-input.css +193 -0
- package/src/lib/shared/components/base-input/base-input.html +43 -0
- package/src/lib/shared/components/base-input/base-input.spec.ts +146 -0
- package/src/lib/shared/components/base-input/base-input.ts +133 -0
- package/src/lib/shared/components/base-time-range/base-time-range.css +27 -0
- package/src/lib/shared/components/base-time-range/base-time-range.html +23 -0
- package/src/lib/shared/components/base-time-range/base-time-range.spec.ts +27 -0
- package/src/lib/shared/components/base-time-range/base-time-range.ts +61 -0
- package/src/lib/shared/components/base-toggle/base-toggle.component.html +28 -0
- package/src/lib/shared/components/base-toggle/base-toggle.component.scss +45 -0
- package/src/lib/shared/components/base-toggle/base-toggle.component.spec.ts +22 -0
- package/src/lib/shared/components/base-toggle/base-toggle.component.ts +138 -0
- package/src/lib/shared/components/card/card.component.css +264 -0
- package/src/lib/shared/components/card/card.component.html +103 -0
- package/src/lib/shared/components/card/card.component.ts +63 -0
- package/src/lib/shared/components/date-picker/date-picker.html +82 -0
- package/src/lib/shared/components/date-picker/date-picker.scss +8 -0
- package/src/lib/shared/components/date-picker/date-picker.spec.ts +23 -0
- package/src/lib/shared/components/date-picker/date-picker.ts +165 -0
- package/src/lib/shared/components/drop-down/drop-down.css +61 -0
- package/src/lib/shared/components/drop-down/drop-down.html +96 -0
- package/src/lib/shared/components/drop-down/drop-down.spec.ts +335 -0
- package/src/lib/shared/components/drop-down/drop-down.ts +335 -0
- package/src/lib/shared/components/footer/footer.css +29 -0
- package/src/lib/shared/components/footer/footer.html +10 -0
- package/src/lib/shared/components/footer/footer.spec.ts +22 -0
- package/src/lib/shared/components/footer/footer.ts +15 -0
- package/src/lib/shared/components/index.ts +19 -0
- package/src/lib/shared/components/kpi/kpi.css +0 -0
- package/src/lib/shared/components/kpi/kpi.html +11 -0
- package/src/lib/shared/components/kpi/kpi.spec.ts +38 -0
- package/src/lib/shared/components/kpi/kpi.ts +25 -0
- package/src/lib/shared/components/links-button/links-button.css +70 -0
- package/src/lib/shared/components/links-button/links-button.html +23 -0
- package/src/lib/shared/components/links-button/links-button.spec.ts +139 -0
- package/src/lib/shared/components/links-button/links-button.ts +45 -0
- package/src/lib/shared/components/paginator/paginator.css +0 -0
- package/src/lib/shared/components/paginator/paginator.html +10 -0
- package/src/lib/shared/components/paginator/paginator.spec.ts +23 -0
- package/src/lib/shared/components/paginator/paginator.ts +25 -0
- package/src/lib/shared/components/stepper/step/step.css +8 -0
- package/src/lib/shared/components/stepper/step/step.html +1 -0
- package/src/lib/shared/components/stepper/step/step.spec.ts +131 -0
- package/src/lib/shared/components/stepper/step/step.ts +14 -0
- package/src/lib/shared/components/stepper/stepper.css +17 -0
- package/src/lib/shared/components/stepper/stepper.html +11 -0
- package/src/lib/shared/components/stepper/stepper.spec.ts +238 -0
- package/src/lib/shared/components/stepper/stepper.ts +57 -0
- package/src/lib/shared/components/tab-group/tab-group.component.html +84 -0
- package/src/lib/shared/components/tab-group/tab-group.component.scss +151 -0
- package/src/lib/shared/components/tab-group/tab-group.spec.ts +22 -0
- package/src/lib/shared/components/tab-group/tab-group.ts +218 -0
- package/src/lib/shared/components/tab-panel/tab-content.directive.ts +7 -0
- package/src/lib/shared/components/tab-panel/tab-label.directive.ts +7 -0
- package/src/lib/shared/components/tab-panel/tab-panel.css +0 -0
- package/src/lib/shared/components/tab-panel/tab-panel.spec.ts +22 -0
- package/src/lib/shared/components/tab-panel/tab-panel.ts +31 -0
- package/src/lib/shared/components/time-picker/time-picker.css +84 -0
- package/src/lib/shared/components/time-picker/time-picker.html +21 -0
- package/src/lib/shared/components/time-picker/time-picker.spec.ts +23 -0
- package/src/lib/shared/components/time-picker/time-picker.ts +90 -0
- package/types/ngx-opalbytes-components.d.ts +23 -4
package/README.md
CHANGED
|
@@ -72,6 +72,59 @@ export class ExemploComponent {
|
|
|
72
72
|
|
|
73
73
|
---
|
|
74
74
|
|
|
75
|
+
## Comandos CLI
|
|
76
|
+
|
|
77
|
+
A biblioteca disponibiliza uma CLI (`cao-comp`) para copiar o código-fonte de um componente da `ngx-opalbytes-components` para qualquer projeto. Isso é útil quando você precisa customizar o código-fonte de um componente internamente, sem depender apenas da API pública.
|
|
78
|
+
|
|
79
|
+
### Instalação global
|
|
80
|
+
|
|
81
|
+
Para utilizar o comando `cao-comp` de qualquer lugar, instale a biblioteca globalmente:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
npm install -g ngx-opalbytes-components
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Para desenvolvimento local, a partir da pasta `projects/ngx-opalbytes-components`:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npm link
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
> Caso não queira instalar, também é possível executar o script diretamente:
|
|
94
|
+
> `node ./node_modules/ngx-opalbytes-components/cli/cao-comp.cjs ...`
|
|
95
|
+
|
|
96
|
+
### Uso
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
cao-comp <componente> <destino> [opcoes]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Argumentos:**
|
|
103
|
+
|
|
104
|
+
| Argumento | Descrição |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| `<componente>` | Nome da pasta do componente em `shared/components` (ex: `base-button`). |
|
|
107
|
+
| `<destino>` | Pasta de destino onde os arquivos serão gerados (criada se não existir). |
|
|
108
|
+
|
|
109
|
+
**Opções:**
|
|
110
|
+
|
|
111
|
+
| Opção | Descrição |
|
|
112
|
+
| --- | --- |
|
|
113
|
+
| `-h, --help` | Exibe a ajuda. |
|
|
114
|
+
| `-l, --list` | Lista os componentes disponíveis para cópia. |
|
|
115
|
+
| `-f, --force` | Sobrescreve arquivos existentes no destino. |
|
|
116
|
+
| `-v, --version` | Exibe a versão. |
|
|
117
|
+
|
|
118
|
+
**Exemplos:**
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
cao-comp base-button ./src/app/components
|
|
122
|
+
cao-comp stepper ./src/app/components --force
|
|
123
|
+
cao-comp --list
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
75
128
|
## Organização de Pastas
|
|
76
129
|
|
|
77
130
|
Dentro da pasta `src/lib/`, os componentes são organizados em `shared/components/` e cada componente reside em sua própria pasta, contendo seus arquivos (`.ts`, `.html`, `.css`, `.spec.ts`).
|
|
@@ -89,6 +142,7 @@ src/
|
|
|
89
142
|
| ├── base-toggle/
|
|
90
143
|
| ├── drop-down/
|
|
91
144
|
| ├── footer/
|
|
145
|
+
| ├── kpi/
|
|
92
146
|
| ├── links-button/
|
|
93
147
|
| ├── paginator/
|
|
94
148
|
| ├── stepper/
|
|
@@ -816,6 +870,55 @@ Um rodapé simples para a aplicação.
|
|
|
816
870
|
|
|
817
871
|
---
|
|
818
872
|
|
|
873
|
+
### `CaoKpi`
|
|
874
|
+
|
|
875
|
+
Um componente de KPI (Key Performance Indicator) que exibe um cartão com ícone, valor, título, cor de texto e cor de borda configuráveis.
|
|
876
|
+
|
|
877
|
+
**Seletor:** `<cao-kpi>`
|
|
878
|
+
|
|
879
|
+
**Interface `ICaoKPI`**
|
|
880
|
+
|
|
881
|
+
| Propriedade | Tipo | Descrição |
|
|
882
|
+
| --- | --- | --- |
|
|
883
|
+
| `title` | `string` | O título do KPI. |
|
|
884
|
+
| `value` | `string` | O valor exibido (ex: `"R$ 12.345"`). |
|
|
885
|
+
| `textColor` | `string` | Cor do texto (valor e título). |
|
|
886
|
+
| `borderColor` | `string` | Cor da borda do cartão. |
|
|
887
|
+
| `icon` | `ICaoImage` | O ícone exibido no canto superior direito. |
|
|
888
|
+
|
|
889
|
+
**Interface `ICaoImage`**
|
|
890
|
+
|
|
891
|
+
| Propriedade | Tipo | Descrição |
|
|
892
|
+
| --- | --- | --- |
|
|
893
|
+
| `src` | `string` | Caminho ou URL da imagem do ícone. |
|
|
894
|
+
| `alt` | `string` | Texto alternativo (acessibilidade) da imagem. |
|
|
895
|
+
|
|
896
|
+
**Atributos (Inputs)**
|
|
897
|
+
|
|
898
|
+
| Atributo | Tipo | Padrão | Descrição |
|
|
899
|
+
| --- | --- | --- | --- |
|
|
900
|
+
| `kpiData` | `ICaoKPI` | — (obrigatório) | Dados do KPI, recebidos via `input.required`. |
|
|
901
|
+
|
|
902
|
+
**Exemplo de uso:**
|
|
903
|
+
|
|
904
|
+
```html
|
|
905
|
+
<cao-kpi [kpiData]="meuKpi"></cao-kpi>
|
|
906
|
+
```
|
|
907
|
+
|
|
908
|
+
```typescript
|
|
909
|
+
import { CaoKpi, ICaoKPI } from 'ngx-opalbytes-components';
|
|
910
|
+
|
|
911
|
+
meuKpi: ICaoKPI = {
|
|
912
|
+
title: 'Total de Vendas',
|
|
913
|
+
value: 'R$ 12.345',
|
|
914
|
+
textColor: '#16a34a',
|
|
915
|
+
borderColor: '#16a34a',
|
|
916
|
+
icon: { src: 'assets/icon-vendas.svg', alt: 'Vendas' }
|
|
917
|
+
};
|
|
918
|
+
```
|
|
919
|
+
|
|
920
|
+
---
|
|
921
|
+
|
|
819
922
|
### `LinksButton`
|
|
820
923
|
Exibe uma lista de links de navegação como botões.
|
|
821
924
|
|
package/cli/cao-comp.cjs
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
|
|
7
|
+
const USAGE = `cao-comp — Copia um componente da lib ngx-opalbytes-components para qualquer projeto
|
|
8
|
+
|
|
9
|
+
Uso:
|
|
10
|
+
cao-comp <componente> <destino> [opcoes]
|
|
11
|
+
|
|
12
|
+
Argumentos:
|
|
13
|
+
<componente> Nome da pasta do componente em shared/components (ex: base-button)
|
|
14
|
+
<destino> Pasta de destino onde os arquivos serao gerados (criada se nao existir)
|
|
15
|
+
|
|
16
|
+
Opcoes:
|
|
17
|
+
-h, --help Exibe esta ajuda
|
|
18
|
+
-l, --list Lista os componentes disponiveis para copia
|
|
19
|
+
-f, --force Sobrescreve arquivos existentes no destino
|
|
20
|
+
-v, --version Exibe a versao
|
|
21
|
+
|
|
22
|
+
Exemplos:
|
|
23
|
+
cao-comp base-button ./src/app/components
|
|
24
|
+
cao-comp stepper ./src/app/components --force
|
|
25
|
+
cao-comp --list
|
|
26
|
+
`;
|
|
27
|
+
|
|
28
|
+
function resolveTemplatesDir() {
|
|
29
|
+
const candidates = [
|
|
30
|
+
path.join(__dirname, '..', 'templates'),
|
|
31
|
+
path.join(__dirname, '..', 'src', 'lib', 'shared', 'components'),
|
|
32
|
+
path.join(__dirname, '..', '..', 'src', 'lib', 'shared', 'components'),
|
|
33
|
+
];
|
|
34
|
+
for (const dir of candidates) {
|
|
35
|
+
if (fs.existsSync(dir) && fs.statSync(dir).isDirectory()) {
|
|
36
|
+
return dir;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function resolvePackageVersion() {
|
|
43
|
+
const candidates = [
|
|
44
|
+
path.join(__dirname, '..', 'package.json'),
|
|
45
|
+
path.join(__dirname, '..', '..', 'package.json'),
|
|
46
|
+
path.join(__dirname, '..', '..', '..', 'package.json'),
|
|
47
|
+
];
|
|
48
|
+
for (const file of candidates) {
|
|
49
|
+
if (fs.existsSync(file)) {
|
|
50
|
+
try {
|
|
51
|
+
const pkg = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
52
|
+
if (pkg && pkg.version) {
|
|
53
|
+
return pkg.version;
|
|
54
|
+
}
|
|
55
|
+
} catch (_) {
|
|
56
|
+
/* ignore */
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return 'desconhecida';
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function listComponents(templatesDir) {
|
|
64
|
+
return fs
|
|
65
|
+
.readdirSync(templatesDir, { withFileTypes: true })
|
|
66
|
+
.filter((e) => e.isDirectory())
|
|
67
|
+
.map((e) => e.name)
|
|
68
|
+
.sort();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function copyRecursive(src, dest, force, conflicts) {
|
|
72
|
+
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
73
|
+
const srcPath = path.join(src, entry.name);
|
|
74
|
+
const destPath = path.join(dest, entry.name);
|
|
75
|
+
if (entry.isDirectory()) {
|
|
76
|
+
fs.mkdirSync(destPath, { recursive: true });
|
|
77
|
+
copyRecursive(srcPath, destPath, force, conflicts);
|
|
78
|
+
} else {
|
|
79
|
+
if (fs.existsSync(destPath) && !force) {
|
|
80
|
+
conflicts.push(destPath);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
fs.mkdirSync(path.dirname(destPath), { recursive: true });
|
|
84
|
+
fs.copyFileSync(srcPath, destPath);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function parseArgs(argv) {
|
|
90
|
+
const positionals = [];
|
|
91
|
+
const flags = { help: false, list: false, force: false, version: false };
|
|
92
|
+
for (let i = 0; i < argv.length; i++) {
|
|
93
|
+
const arg = argv[i];
|
|
94
|
+
switch (arg) {
|
|
95
|
+
case '-h':
|
|
96
|
+
case '--help':
|
|
97
|
+
flags.help = true;
|
|
98
|
+
break;
|
|
99
|
+
case '-l':
|
|
100
|
+
case '--list':
|
|
101
|
+
flags.list = true;
|
|
102
|
+
break;
|
|
103
|
+
case '-f':
|
|
104
|
+
case '--force':
|
|
105
|
+
flags.force = true;
|
|
106
|
+
break;
|
|
107
|
+
case '-v':
|
|
108
|
+
case '--version':
|
|
109
|
+
flags.version = true;
|
|
110
|
+
break;
|
|
111
|
+
default:
|
|
112
|
+
positionals.push(arg);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return { positionals, flags };
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function main() {
|
|
119
|
+
const argv = process.argv.slice(2);
|
|
120
|
+
const { positionals, flags } = parseArgs(argv);
|
|
121
|
+
|
|
122
|
+
if (flags.help) {
|
|
123
|
+
process.stdout.write(USAGE + '\n');
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (flags.version) {
|
|
128
|
+
process.stdout.write(`cao-comp ${resolvePackageVersion()}\n`);
|
|
129
|
+
return 0;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const templatesDir = resolveTemplatesDir();
|
|
133
|
+
if (!templatesDir) {
|
|
134
|
+
process.stderr.write(
|
|
135
|
+
'Erro: nao foi possivel localizar a pasta de templates dos componentes.\n'
|
|
136
|
+
);
|
|
137
|
+
return 1;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (flags.list) {
|
|
141
|
+
const components = listComponents(templatesDir);
|
|
142
|
+
process.stdout.write('Componentes disponiveis:\n');
|
|
143
|
+
for (const c of components) {
|
|
144
|
+
process.stdout.write(` - ${c}\n`);
|
|
145
|
+
}
|
|
146
|
+
return 0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const [component, destination] = positionals;
|
|
150
|
+
if (!component || !destination) {
|
|
151
|
+
process.stderr.write(
|
|
152
|
+
'Erro: informe o componente e o destino.\n\n' + USAGE + '\n'
|
|
153
|
+
);
|
|
154
|
+
return 1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const sourceDir = path.join(templatesDir, component);
|
|
158
|
+
if (!fs.existsSync(sourceDir) || !fs.statSync(sourceDir).isDirectory()) {
|
|
159
|
+
const available = listComponents(templatesDir).join(', ');
|
|
160
|
+
process.stderr.write(
|
|
161
|
+
`Erro: componente "${component}" nao encontrado.\n` +
|
|
162
|
+
`Componentes disponiveis: ${available}\n`
|
|
163
|
+
);
|
|
164
|
+
return 1;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
fs.mkdirSync(destination, { recursive: true });
|
|
168
|
+
const conflicts = [];
|
|
169
|
+
copyRecursive(sourceDir, destination, flags.force, conflicts);
|
|
170
|
+
|
|
171
|
+
if (conflicts.length) {
|
|
172
|
+
process.stderr.write(
|
|
173
|
+
`Erro: os seguintes arquivos ja existem no destino (use --force para sobrescrever):\n` +
|
|
174
|
+
conflicts.map((c) => ` - ${c}`).join('\n') +
|
|
175
|
+
'\n'
|
|
176
|
+
);
|
|
177
|
+
return 1;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
process.stdout.write(
|
|
181
|
+
`Componente "${component}" copiado para "${destination}".\n`
|
|
182
|
+
);
|
|
183
|
+
return 0;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
process.exit(main());
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i1 from '@angular/common';
|
|
2
2
|
import { CommonModule, isPlatformBrowser, NgTemplateOutlet, NgOptimizedImage } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { EventEmitter, Input, Output, Component, ViewChild, inject, ElementRef, ChangeDetectorRef, Renderer2, ViewContainerRef, forwardRef, HostListener, ChangeDetectionStrategy, ViewEncapsulation, NgModule, ContentChildren, Directive, TemplateRef, ContentChild, signal, PLATFORM_ID, ViewChildren, HostBinding, Injectable } from '@angular/core';
|
|
4
|
+
import { EventEmitter, Input, Output, Component, ViewChild, inject, ElementRef, ChangeDetectorRef, Renderer2, ViewContainerRef, forwardRef, HostListener, ChangeDetectionStrategy, ViewEncapsulation, NgModule, ContentChildren, Directive, TemplateRef, ContentChild, signal, PLATFORM_ID, ViewChildren, HostBinding, input, Injectable } from '@angular/core';
|
|
5
5
|
import * as i3 from '@angular/material/tooltip';
|
|
6
6
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
7
7
|
import { LucideDynamicIcon } from '@lucide/angular';
|
|
@@ -75,6 +75,7 @@ class CaoBaseButtonComponent {
|
|
|
75
75
|
iconColor;
|
|
76
76
|
strokeWidthIcon = 1;
|
|
77
77
|
minTextToTooltip = 20;
|
|
78
|
+
iconSize = 24;
|
|
78
79
|
ngOnInit() {
|
|
79
80
|
if (!this.dataCy) {
|
|
80
81
|
this.dataCy = `btn-${this.buttonText.replace(/\s+/g, '-').toLowerCase()}`;
|
|
@@ -89,11 +90,11 @@ class CaoBaseButtonComponent {
|
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CaoBaseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: CaoBaseButtonComponent, isStandalone: true, selector: "cao-button", inputs: { buttonText: "buttonText", isDarkMode: "isDarkMode", isDisabled: "isDisabled", isLoading: "isLoading", btnClass: "btnClass", tooltip: "tooltip", trailingIcon: "trailingIcon", leadingIcon: "leadingIcon", isLucideIcon: "isLucideIcon", dataCy: "dataCy", iconColor: "iconColor", strokeWidthIcon: "strokeWidthIcon", minTextToTooltip: "minTextToTooltip" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"base-button\"\n matTooltipPosition=\"below\"\n matTooltipClass=\"custom-arrow-tooltip\"\n [matTooltip]=\"tooltip\"\n [matTooltipDisabled]=\"!tooltip\"\n [class.dark-mode]=\"isDarkMode\"\n [class.disabled]=\"isDisabled\"\n [class.loading]=\"isLoading\"\n [disabled]=\"isDisabled || isLoading\"\n [attr.data-cy]=\"dataCy\"\n (click)=\"onClick()\">\n @if (leadingIcon) {\n <span class=\"leading-icon\">\n @if (isLucideIcon) {\n <svg [lucideIcon]=\"leadingIcon\" [style.color]=\"iconColor\" [strokeWidth]=\"strokeWidthIcon\"></svg>\n } @else {\n <img alt=\"icon\" [src]=\"leadingIcon\" />\n }\n </span>\n } {{ buttonText }} @if (trailingIcon) {\n <span class=\"trailing-icon\">\n @if (isLucideIcon) {\n <svg [lucideIcon]=\"trailingIcon\" [style.color]=\"iconColor\" [strokeWidth]=\"strokeWidthIcon\"></svg>\n } @else {\n <img alt=\"icon\" [src]=\"trailingIcon\" />\n }\n </span>\n } @if (isLoading) {\n <span class=\"loader\"></span>\n }\n</button>\n", styles: [".base-button{display:flex;gap:5px;width:100%;align-items:center;justify-content:center;cursor:pointer}.base-button.disabled{cursor:not-allowed}.base-button.loading{cursor:progress}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: LucideDynamicIcon, selector: "svg[lucideIcon]", inputs: ["lucideIcon"] }] });
|
|
93
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: CaoBaseButtonComponent, isStandalone: true, selector: "cao-button", inputs: { buttonText: "buttonText", isDarkMode: "isDarkMode", isDisabled: "isDisabled", isLoading: "isLoading", btnClass: "btnClass", tooltip: "tooltip", trailingIcon: "trailingIcon", leadingIcon: "leadingIcon", isLucideIcon: "isLucideIcon", dataCy: "dataCy", iconColor: "iconColor", strokeWidthIcon: "strokeWidthIcon", minTextToTooltip: "minTextToTooltip", iconSize: "iconSize" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"base-button\"\n matTooltipPosition=\"below\"\n matTooltipClass=\"custom-arrow-tooltip\"\n [matTooltip]=\"tooltip\"\n [matTooltipDisabled]=\"!tooltip\"\n [class.dark-mode]=\"isDarkMode\"\n [class.disabled]=\"isDisabled\"\n [class.loading]=\"isLoading\"\n [disabled]=\"isDisabled || isLoading\"\n [attr.data-cy]=\"dataCy\"\n (click)=\"onClick()\">\n @if (leadingIcon) {\n <span class=\"leading-icon\">\n @if (isLucideIcon) {\n <svg [lucideIcon]=\"leadingIcon\" [size]=\"iconSize\" [style.color]=\"iconColor\" [strokeWidth]=\"strokeWidthIcon\"></svg>\n } @else {\n <img alt=\"icon\" [src]=\"leadingIcon\" [style.width]=\"iconSize\" />\n }\n </span>\n } {{ buttonText }} @if (trailingIcon) {\n <span class=\"trailing-icon\">\n @if (isLucideIcon) {\n <svg [lucideIcon]=\"trailingIcon\" [size]=\"iconSize\" [style.color]=\"iconColor\" [strokeWidth]=\"strokeWidthIcon\"></svg>\n } @else {\n <img alt=\"icon\" [src]=\"trailingIcon\" [style.width]=\"iconSize\" />\n }\n </span>\n } @if (isLoading) {\n <span class=\"loader\"></span>\n }\n</button>\n", styles: [".base-button{display:flex;gap:5px;width:100%;align-items:center;justify-content:center;cursor:pointer}.base-button.disabled{cursor:not-allowed}.base-button.loading{cursor:progress}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: LucideDynamicIcon, selector: "svg[lucideIcon]", inputs: ["lucideIcon"] }] });
|
|
93
94
|
}
|
|
94
95
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CaoBaseButtonComponent, decorators: [{
|
|
95
96
|
type: Component,
|
|
96
|
-
args: [{ standalone: true, selector: "cao-button", imports: [CommonModule, MatTooltipModule, LucideDynamicIcon], template: "<button\n type=\"button\"\n class=\"base-button\"\n matTooltipPosition=\"below\"\n matTooltipClass=\"custom-arrow-tooltip\"\n [matTooltip]=\"tooltip\"\n [matTooltipDisabled]=\"!tooltip\"\n [class.dark-mode]=\"isDarkMode\"\n [class.disabled]=\"isDisabled\"\n [class.loading]=\"isLoading\"\n [disabled]=\"isDisabled || isLoading\"\n [attr.data-cy]=\"dataCy\"\n (click)=\"onClick()\">\n @if (leadingIcon) {\n <span class=\"leading-icon\">\n @if (isLucideIcon) {\n <svg [lucideIcon]=\"leadingIcon\" [style.color]=\"iconColor\" [strokeWidth]=\"strokeWidthIcon\"></svg>\n } @else {\n <img alt=\"icon\" [src]=\"leadingIcon\" />\n }\n </span>\n } {{ buttonText }} @if (trailingIcon) {\n <span class=\"trailing-icon\">\n @if (isLucideIcon) {\n <svg [lucideIcon]=\"trailingIcon\" [style.color]=\"iconColor\" [strokeWidth]=\"strokeWidthIcon\"></svg>\n } @else {\n <img alt=\"icon\" [src]=\"trailingIcon\" />\n }\n </span>\n } @if (isLoading) {\n <span class=\"loader\"></span>\n }\n</button>\n", styles: [".base-button{display:flex;gap:5px;width:100%;align-items:center;justify-content:center;cursor:pointer}.base-button.disabled{cursor:not-allowed}.base-button.loading{cursor:progress}\n"] }]
|
|
97
|
+
args: [{ standalone: true, selector: "cao-button", imports: [CommonModule, MatTooltipModule, LucideDynamicIcon], template: "<button\n type=\"button\"\n class=\"base-button\"\n matTooltipPosition=\"below\"\n matTooltipClass=\"custom-arrow-tooltip\"\n [matTooltip]=\"tooltip\"\n [matTooltipDisabled]=\"!tooltip\"\n [class.dark-mode]=\"isDarkMode\"\n [class.disabled]=\"isDisabled\"\n [class.loading]=\"isLoading\"\n [disabled]=\"isDisabled || isLoading\"\n [attr.data-cy]=\"dataCy\"\n (click)=\"onClick()\">\n @if (leadingIcon) {\n <span class=\"leading-icon\">\n @if (isLucideIcon) {\n <svg [lucideIcon]=\"leadingIcon\" [size]=\"iconSize\" [style.color]=\"iconColor\" [strokeWidth]=\"strokeWidthIcon\"></svg>\n } @else {\n <img alt=\"icon\" [src]=\"leadingIcon\" [style.width]=\"iconSize\" />\n }\n </span>\n } {{ buttonText }} @if (trailingIcon) {\n <span class=\"trailing-icon\">\n @if (isLucideIcon) {\n <svg [lucideIcon]=\"trailingIcon\" [size]=\"iconSize\" [style.color]=\"iconColor\" [strokeWidth]=\"strokeWidthIcon\"></svg>\n } @else {\n <img alt=\"icon\" [src]=\"trailingIcon\" [style.width]=\"iconSize\" />\n }\n </span>\n } @if (isLoading) {\n <span class=\"loader\"></span>\n }\n</button>\n", styles: [".base-button{display:flex;gap:5px;width:100%;align-items:center;justify-content:center;cursor:pointer}.base-button.disabled{cursor:not-allowed}.base-button.loading{cursor:progress}\n"] }]
|
|
97
98
|
}], propDecorators: { buttonClick: [{
|
|
98
99
|
type: Output
|
|
99
100
|
}], buttonText: [{
|
|
@@ -122,6 +123,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
122
123
|
type: Input
|
|
123
124
|
}], minTextToTooltip: [{
|
|
124
125
|
type: Input
|
|
126
|
+
}], iconSize: [{
|
|
127
|
+
type: Input
|
|
125
128
|
}] } });
|
|
126
129
|
|
|
127
130
|
class CaoBaseInput {
|
|
@@ -373,6 +376,7 @@ class CaoAutocompleteComponent {
|
|
|
373
376
|
strokeWidthIcon = 1;
|
|
374
377
|
isDisabled = false;
|
|
375
378
|
inputHeigth = '50px';
|
|
379
|
+
iconSize = 24;
|
|
376
380
|
checkIcon = '✓';
|
|
377
381
|
showCheckIcon = true;
|
|
378
382
|
isLucideCheckIcon = false;
|
|
@@ -768,13 +772,13 @@ class CaoAutocompleteComponent {
|
|
|
768
772
|
this.renderer.setStyle(this.el.nativeElement, "--form-field-height", this.inputHeigth);
|
|
769
773
|
}
|
|
770
774
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CaoAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
771
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: CaoAutocompleteComponent, isStandalone: true, selector: "cao-autocomplete", inputs: { label: "label", placeholder: "placeholder", options: "options", control: "control", dataCy: "dataCy", controlName: "controlName", isLucideIcon: "isLucideIcon", iconColor: "iconColor", _leadingIcon: "_leadingIcon", _trailingIcon: "_trailingIcon", optionIcon: "optionIcon", optionIConColor: "optionIConColor", isLucideOptionIcon: "isLucideOptionIcon", autocompleteBgColor: "autocompleteBgColor", strokeWidthIcon: "strokeWidthIcon", isDisabled: "isDisabled", inputHeigth: "inputHeigth", checkIcon: "checkIcon", showCheckIcon: "showCheckIcon", isLucideCheckIcon: "isLucideCheckIcon" }, outputs: { itemSelected: "itemSelected", blurEvent: "blurEvent", focusEvent: "focusEvent", leadingIconClick: "leadingIconClick", trailingIconClick: "trailingIconClick" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, providers: [
|
|
775
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: CaoAutocompleteComponent, isStandalone: true, selector: "cao-autocomplete", inputs: { label: "label", placeholder: "placeholder", options: "options", control: "control", dataCy: "dataCy", controlName: "controlName", isLucideIcon: "isLucideIcon", iconColor: "iconColor", _leadingIcon: "_leadingIcon", _trailingIcon: "_trailingIcon", optionIcon: "optionIcon", optionIConColor: "optionIConColor", isLucideOptionIcon: "isLucideOptionIcon", autocompleteBgColor: "autocompleteBgColor", strokeWidthIcon: "strokeWidthIcon", isDisabled: "isDisabled", inputHeigth: "inputHeigth", iconSize: "iconSize", checkIcon: "checkIcon", showCheckIcon: "showCheckIcon", isLucideCheckIcon: "isLucideCheckIcon" }, outputs: { itemSelected: "itemSelected", blurEvent: "blurEvent", focusEvent: "focusEvent", leadingIconClick: "leadingIconClick", trailingIconClick: "trailingIconClick" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, providers: [
|
|
772
776
|
{
|
|
773
777
|
provide: NG_VALUE_ACCESSOR,
|
|
774
778
|
useExisting: forwardRef(() => CaoAutocompleteComponent),
|
|
775
779
|
multi: true,
|
|
776
780
|
},
|
|
777
|
-
], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }, { propertyName: "wrapperEl", first: true, predicate: ["wrapper"], descendants: true, static: true }, { propertyName: "panelTemplate", first: true, predicate: ["panel"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"form-field\">\n @if (label) {\n <label [for]=\"dataCy\">{{ label }}</label>\n }\n\n <div class=\"rnv-autocomplete-field autocomplete\">\n <div\n #wrapper\n class=\"input-wrapper\"\n [class.has-leading-icon]=\"_leadingIcon\"\n [class.has-trailing-icon]=\"_trailingIcon\"\n [class.focused]=\"isFocused\"\n [class.invalid]=\"control?.touched && control?.invalid\"\n [class.valid]=\"control?.touched && control?.valid && control?.value\">\n\n @if (_leadingIcon) {\n @if (isLucideIcon) {\n <div class=\"icon\"\n tabindex=\"0\"\n (click)=\"onLeadingIconClick($event)\"\n (keydown.enter)=\"onLeadingIconClick($event)\">\n <svg [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"_leadingIcon\" [style.color]=\"iconColor\"></svg>\n </div>\n } @else {\n <div class=\"icon\"\n tabindex=\"0\"\n (click)=\"onLeadingIconClick($event)\"\n (keydown.enter)=\"onLeadingIconClick($event)\">\n <img alt=\"\u00EDcone de in\u00EDcio\" [src]=\"_leadingIcon\" />\n </div>\n }\n }\n\n <input\n #inputEl\n type=\"text\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isPanelOpen\"\n [attr.aria-controls]=\"isPanelOpen ? listboxId : null\"\n [attr.aria-activedescendant]=\"activeOptionId\"\n [placeholder]=\"placeholder\"\n [disabled]=\"isDisabled\"\n [formControl]=\"internalControl\"\n [attr.data-cy]=\"dataCy\"\n [id]=\"dataCy\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onUserInput()\"\n (keydown)=\"onInputKeydown($event)\" />\n\n @if (_trailingIcon) {\n @if (isLucideIcon) {\n <div\n tabindex=\"0\"\n class=\"icon trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n (keydown.enter)=\"onTrailingIconClick($event)\">\n <svg [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"_trailingIcon\" [style.color]=\"iconColor\"></svg>\n </div>\n } @else {\n <div\n tabindex=\"0\"\n class=\"icon trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n (keydown.enter)=\"onTrailingIconClick($event)\">\n <img alt=\"\u00EDcone de fim\" [src]=\"_trailingIcon\" />\n </div>\n }\n }\n </div>\n\n @if (errorText) {\n <span class=\"error-text\">{{ errorText }}</span>\n }\n </div>\n</div>\n\n<ng-template #panel>\n <div\n class=\"autocomplete-panel\"\n cdkScrollable\n role=\"listbox\"\n [id]=\"listboxId\"\n [style.width]=\"'100%'\"\n [style.max-height]=\"'260px'\"\n [style.background]=\"autocompleteBgColor\">\n \n @if (!filteredOptionsList.length) {\n <div class=\"empty-state\">Nenhum resultado encontrado</div>\n }\n\n @for (option of filteredOptionsList; track trackByOptionId($index, option)) {\n <div\n class=\"option-item\"\n role=\"option\"\n [id]=\"optionId(option)\"\n [class.active]=\"$index === activeIndex\"\n [class.selected]=\"isOptionSelected(option)\"\n [attr.aria-selected]=\"$index === activeIndex\"\n (mousedown)=\"$event.preventDefault(); selectOption(option)\"\n (mouseenter)=\"activeIndex = $index\">\n <span>{{ option.nome }}</span>\n\n <div class=\"option-item-icons\">\n @if (showCheckIcon && isOptionSelected(option)) {\n @if (isLucideCheckIcon) {\n <svg class=\"check-icon\" [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"checkIcon\" [style.color]=\"iconColor\"></svg>\n } @else {\n <span class=\"check-icon\">{{ checkIcon }}</span>\n }\n }\n\n @if (optionIcon) {\n @if (isLucideOptionIcon) {\n <svg [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"optionIcon\" [style.color]=\"optionIConColor || iconColor\"></svg>\n } @else {\n <img alt=\"\" [src]=\"optionIcon\" />\n }\n }\n </div>\n </div>\n }\n </div>\n</ng-template>", styles: [":host{display:block;position:relative;--autocomplete-bg-color: white}.form-field{display:flex;flex-direction:column;width:100%;height:100%}label{font-size:12px;font-weight:700;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.rnv-autocomplete-field{width:100%;flex:1;min-height:0;display:flex;flex-direction:column}.input-wrapper{position:relative;width:100%;height:var(--form-field-height, 44px);display:flex;align-items:center;background-color:var(--autocomplete-bg-color, white);border:1px solid transparent;border-radius:4px;box-sizing:border-box}.input-wrapper.invalid{border-color:#d32f2f}.input-wrapper.valid{border-color:#2e7d32}input{width:100%;height:100%;border:none;outline:none;background:transparent;padding:12px;font-size:1rem;box-sizing:border-box}input:disabled{opacity:.5;cursor:not-allowed}.input-wrapper.has-leading-icon input{padding-left:36px}.input-wrapper.has-trailing-icon input{padding-right:28px}.icon{position:absolute;top:50%;left:6px;transform:translateY(-50%);width:auto;height:auto;z-index:1;cursor:pointer}.trailing-icon{left:auto;right:6px}.error-text{color:#d32f2f;font-size:11px;margin-top:2px}.autocomplete-panel{background:var(--autocomplete-bg-color, white);border-radius:8px;padding:6px;box-shadow:0 2px 10px #00000026;max-height:260px;overflow-y:auto;box-sizing:border-box}.empty-state{padding:8px 12px;font-size:.9rem;color:#00000080}.option-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:1rem;text-transform:uppercase;border-radius:4px;cursor:pointer;position:relative}.option-item:hover,.option-item.active{background-color:#0000000f}.option-item.selected{background-color:#1976d21f;font-weight:600}.option-item.selected.active{background-color:#1976d233}.option-item-icons{display:flex;align-items:center;gap:6px;flex-shrink:0}.check-icon{font-weight:700;font-size:.95rem;line-height:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: LucideDynamicIcon, selector: "svg[lucideIcon]", inputs: ["lucideIcon"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2$2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
781
|
+
], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }, { propertyName: "wrapperEl", first: true, predicate: ["wrapper"], descendants: true, static: true }, { propertyName: "panelTemplate", first: true, predicate: ["panel"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"form-field\">\n @if (label) {\n <label [for]=\"dataCy\">{{ label }}</label>\n }\n\n <div class=\"rnv-autocomplete-field autocomplete\">\n <div\n #wrapper\n class=\"input-wrapper\"\n [class.has-leading-icon]=\"_leadingIcon\"\n [class.has-trailing-icon]=\"_trailingIcon\"\n [class.focused]=\"isFocused\"\n [class.invalid]=\"control?.touched && control?.invalid\"\n [class.valid]=\"control?.touched && control?.valid && control?.value\">\n\n @if (_leadingIcon) {\n @if (isLucideIcon) {\n <div class=\"icon\"\n tabindex=\"0\"\n (click)=\"onLeadingIconClick($event)\"\n (keydown.enter)=\"onLeadingIconClick($event)\">\n <svg [strokeWidth]=\"strokeWidthIcon\" [size]=\"iconSize\" [lucideIcon]=\"_leadingIcon\" [style.color]=\"iconColor\"></svg>\n </div>\n } @else {\n <div class=\"icon\"\n tabindex=\"0\"\n (click)=\"onLeadingIconClick($event)\"\n (keydown.enter)=\"onLeadingIconClick($event)\">\n <img alt=\"\u00EDcone de in\u00EDcio\" [style.width]=\"iconSize\" [src]=\"_leadingIcon\" />\n </div>\n }\n }\n\n <input\n #inputEl\n type=\"text\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isPanelOpen\"\n [attr.aria-controls]=\"isPanelOpen ? listboxId : null\"\n [attr.aria-activedescendant]=\"activeOptionId\"\n [placeholder]=\"placeholder\"\n [disabled]=\"isDisabled\"\n [formControl]=\"internalControl\"\n [attr.data-cy]=\"dataCy\"\n [id]=\"dataCy\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onUserInput()\"\n (keydown)=\"onInputKeydown($event)\" />\n\n @if (_trailingIcon) {\n @if (isLucideIcon) {\n <div\n tabindex=\"0\"\n class=\"icon trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n (keydown.enter)=\"onTrailingIconClick($event)\">\n <svg [strokeWidth]=\"strokeWidthIcon\" [size]=\"iconSize\" [lucideIcon]=\"_trailingIcon\" [style.color]=\"iconColor\"></svg>\n </div>\n } @else {\n <div\n tabindex=\"0\"\n class=\"icon trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n (keydown.enter)=\"onTrailingIconClick($event)\">\n <img alt=\"\u00EDcone de fim\" [style.width]=\"iconSize\" [src]=\"_trailingIcon\" />\n </div>\n }\n }\n </div>\n\n @if (errorText) {\n <span class=\"error-text\">{{ errorText }}</span>\n }\n </div>\n</div>\n\n<ng-template #panel>\n <div\n class=\"autocomplete-panel\"\n cdkScrollable\n role=\"listbox\"\n [id]=\"listboxId\"\n [style.width]=\"'100%'\"\n [style.max-height]=\"'260px'\"\n [style.background]=\"autocompleteBgColor\">\n \n @if (!filteredOptionsList.length) {\n <div class=\"empty-state\">Nenhum resultado encontrado</div>\n }\n\n @for (option of filteredOptionsList; track trackByOptionId($index, option)) {\n <div\n class=\"option-item\"\n role=\"option\"\n [id]=\"optionId(option)\"\n [class.active]=\"$index === activeIndex\"\n [class.selected]=\"isOptionSelected(option)\"\n [attr.aria-selected]=\"$index === activeIndex\"\n (mousedown)=\"$event.preventDefault(); selectOption(option)\"\n (mouseenter)=\"activeIndex = $index\">\n <span>{{ option.nome }}</span>\n\n <div class=\"option-item-icons\">\n @if (showCheckIcon && isOptionSelected(option)) {\n @if (isLucideCheckIcon) {\n <svg class=\"check-icon\" [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"checkIcon\" [style.color]=\"iconColor\"></svg>\n } @else {\n <span class=\"check-icon\">{{ checkIcon }}</span>\n }\n }\n\n @if (optionIcon) {\n @if (isLucideOptionIcon) {\n <svg [strokeWidth]=\"strokeWidthIcon\" [size]=\"iconSize\" [lucideIcon]=\"optionIcon\" [style.color]=\"optionIConColor || iconColor\"></svg>\n } @else {\n <img alt=\"\" [src]=\"optionIcon\" />\n }\n }\n </div>\n </div>\n }\n </div>\n</ng-template>", styles: [":host{display:block;position:relative;--autocomplete-bg-color: white}.form-field{display:flex;flex-direction:column;width:100%;height:100%}label{font-size:12px;font-weight:700;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.rnv-autocomplete-field{width:100%;flex:1;min-height:0;display:flex;flex-direction:column}.input-wrapper{position:relative;width:100%;height:var(--form-field-height, 44px);display:flex;align-items:center;background-color:var(--autocomplete-bg-color, white);border:1px solid transparent;border-radius:4px;box-sizing:border-box}.input-wrapper.invalid{border-color:#d32f2f}.input-wrapper.valid{border-color:#2e7d32}input{width:100%;height:100%;border:none;outline:none;background:transparent;padding:12px;font-size:1rem;box-sizing:border-box}input:disabled{opacity:.5;cursor:not-allowed}.input-wrapper.has-leading-icon input{padding-left:36px}.input-wrapper.has-trailing-icon input{padding-right:28px}.icon{position:absolute;top:50%;left:6px;transform:translateY(-50%);width:auto;height:auto;z-index:1;cursor:pointer}.trailing-icon{left:auto;right:6px}.error-text{color:#d32f2f;font-size:11px;margin-top:2px}.autocomplete-panel{background:var(--autocomplete-bg-color, white);border-radius:8px;padding:6px;box-shadow:0 2px 10px #00000026;max-height:260px;overflow-y:auto;box-sizing:border-box}.empty-state{padding:8px 12px;font-size:.9rem;color:#00000080}.option-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:1rem;text-transform:uppercase;border-radius:4px;cursor:pointer;position:relative}.option-item:hover,.option-item.active{background-color:#0000000f}.option-item.selected{background-color:#1976d21f;font-weight:600}.option-item.selected.active{background-color:#1976d233}.option-item-icons{display:flex;align-items:center;gap:6px;flex-shrink:0}.check-icon{font-weight:700;font-size:.95rem;line-height:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: LucideDynamicIcon, selector: "svg[lucideIcon]", inputs: ["lucideIcon"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2$2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
778
782
|
}
|
|
779
783
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CaoAutocompleteComponent, decorators: [{
|
|
780
784
|
type: Component,
|
|
@@ -790,7 +794,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
790
794
|
useExisting: forwardRef(() => CaoAutocompleteComponent),
|
|
791
795
|
multi: true,
|
|
792
796
|
},
|
|
793
|
-
], template: "<div class=\"form-field\">\n @if (label) {\n <label [for]=\"dataCy\">{{ label }}</label>\n }\n\n <div class=\"rnv-autocomplete-field autocomplete\">\n <div\n #wrapper\n class=\"input-wrapper\"\n [class.has-leading-icon]=\"_leadingIcon\"\n [class.has-trailing-icon]=\"_trailingIcon\"\n [class.focused]=\"isFocused\"\n [class.invalid]=\"control?.touched && control?.invalid\"\n [class.valid]=\"control?.touched && control?.valid && control?.value\">\n\n @if (_leadingIcon) {\n @if (isLucideIcon) {\n <div class=\"icon\"\n tabindex=\"0\"\n (click)=\"onLeadingIconClick($event)\"\n (keydown.enter)=\"onLeadingIconClick($event)\">\n <svg [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"_leadingIcon\" [style.color]=\"iconColor\"></svg>\n </div>\n } @else {\n <div class=\"icon\"\n tabindex=\"0\"\n (click)=\"onLeadingIconClick($event)\"\n (keydown.enter)=\"onLeadingIconClick($event)\">\n <img alt=\"\u00EDcone de in\u00EDcio\" [src]=\"_leadingIcon\" />\n </div>\n }\n }\n\n <input\n #inputEl\n type=\"text\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isPanelOpen\"\n [attr.aria-controls]=\"isPanelOpen ? listboxId : null\"\n [attr.aria-activedescendant]=\"activeOptionId\"\n [placeholder]=\"placeholder\"\n [disabled]=\"isDisabled\"\n [formControl]=\"internalControl\"\n [attr.data-cy]=\"dataCy\"\n [id]=\"dataCy\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onUserInput()\"\n (keydown)=\"onInputKeydown($event)\" />\n\n @if (_trailingIcon) {\n @if (isLucideIcon) {\n <div\n tabindex=\"0\"\n class=\"icon trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n (keydown.enter)=\"onTrailingIconClick($event)\">\n <svg [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"_trailingIcon\" [style.color]=\"iconColor\"></svg>\n </div>\n } @else {\n <div\n tabindex=\"0\"\n class=\"icon trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n (keydown.enter)=\"onTrailingIconClick($event)\">\n <img alt=\"\u00EDcone de fim\" [src]=\"_trailingIcon\" />\n </div>\n }\n }\n </div>\n\n @if (errorText) {\n <span class=\"error-text\">{{ errorText }}</span>\n }\n </div>\n</div>\n\n<ng-template #panel>\n <div\n class=\"autocomplete-panel\"\n cdkScrollable\n role=\"listbox\"\n [id]=\"listboxId\"\n [style.width]=\"'100%'\"\n [style.max-height]=\"'260px'\"\n [style.background]=\"autocompleteBgColor\">\n \n @if (!filteredOptionsList.length) {\n <div class=\"empty-state\">Nenhum resultado encontrado</div>\n }\n\n @for (option of filteredOptionsList; track trackByOptionId($index, option)) {\n <div\n class=\"option-item\"\n role=\"option\"\n [id]=\"optionId(option)\"\n [class.active]=\"$index === activeIndex\"\n [class.selected]=\"isOptionSelected(option)\"\n [attr.aria-selected]=\"$index === activeIndex\"\n (mousedown)=\"$event.preventDefault(); selectOption(option)\"\n (mouseenter)=\"activeIndex = $index\">\n <span>{{ option.nome }}</span>\n\n <div class=\"option-item-icons\">\n @if (showCheckIcon && isOptionSelected(option)) {\n @if (isLucideCheckIcon) {\n <svg class=\"check-icon\" [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"checkIcon\" [style.color]=\"iconColor\"></svg>\n } @else {\n <span class=\"check-icon\">{{ checkIcon }}</span>\n }\n }\n\n @if (optionIcon) {\n @if (isLucideOptionIcon) {\n <svg [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"optionIcon\" [style.color]=\"optionIConColor || iconColor\"></svg>\n } @else {\n <img alt=\"\" [src]=\"optionIcon\" />\n }\n }\n </div>\n </div>\n }\n </div>\n</ng-template>", styles: [":host{display:block;position:relative;--autocomplete-bg-color: white}.form-field{display:flex;flex-direction:column;width:100%;height:100%}label{font-size:12px;font-weight:700;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.rnv-autocomplete-field{width:100%;flex:1;min-height:0;display:flex;flex-direction:column}.input-wrapper{position:relative;width:100%;height:var(--form-field-height, 44px);display:flex;align-items:center;background-color:var(--autocomplete-bg-color, white);border:1px solid transparent;border-radius:4px;box-sizing:border-box}.input-wrapper.invalid{border-color:#d32f2f}.input-wrapper.valid{border-color:#2e7d32}input{width:100%;height:100%;border:none;outline:none;background:transparent;padding:12px;font-size:1rem;box-sizing:border-box}input:disabled{opacity:.5;cursor:not-allowed}.input-wrapper.has-leading-icon input{padding-left:36px}.input-wrapper.has-trailing-icon input{padding-right:28px}.icon{position:absolute;top:50%;left:6px;transform:translateY(-50%);width:auto;height:auto;z-index:1;cursor:pointer}.trailing-icon{left:auto;right:6px}.error-text{color:#d32f2f;font-size:11px;margin-top:2px}.autocomplete-panel{background:var(--autocomplete-bg-color, white);border-radius:8px;padding:6px;box-shadow:0 2px 10px #00000026;max-height:260px;overflow-y:auto;box-sizing:border-box}.empty-state{padding:8px 12px;font-size:.9rem;color:#00000080}.option-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:1rem;text-transform:uppercase;border-radius:4px;cursor:pointer;position:relative}.option-item:hover,.option-item.active{background-color:#0000000f}.option-item.selected{background-color:#1976d21f;font-weight:600}.option-item.selected.active{background-color:#1976d233}.option-item-icons{display:flex;align-items:center;gap:6px;flex-shrink:0}.check-icon{font-weight:700;font-size:.95rem;line-height:1}\n"] }]
|
|
797
|
+
], template: "<div class=\"form-field\">\n @if (label) {\n <label [for]=\"dataCy\">{{ label }}</label>\n }\n\n <div class=\"rnv-autocomplete-field autocomplete\">\n <div\n #wrapper\n class=\"input-wrapper\"\n [class.has-leading-icon]=\"_leadingIcon\"\n [class.has-trailing-icon]=\"_trailingIcon\"\n [class.focused]=\"isFocused\"\n [class.invalid]=\"control?.touched && control?.invalid\"\n [class.valid]=\"control?.touched && control?.valid && control?.value\">\n\n @if (_leadingIcon) {\n @if (isLucideIcon) {\n <div class=\"icon\"\n tabindex=\"0\"\n (click)=\"onLeadingIconClick($event)\"\n (keydown.enter)=\"onLeadingIconClick($event)\">\n <svg [strokeWidth]=\"strokeWidthIcon\" [size]=\"iconSize\" [lucideIcon]=\"_leadingIcon\" [style.color]=\"iconColor\"></svg>\n </div>\n } @else {\n <div class=\"icon\"\n tabindex=\"0\"\n (click)=\"onLeadingIconClick($event)\"\n (keydown.enter)=\"onLeadingIconClick($event)\">\n <img alt=\"\u00EDcone de in\u00EDcio\" [style.width]=\"iconSize\" [src]=\"_leadingIcon\" />\n </div>\n }\n }\n\n <input\n #inputEl\n type=\"text\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isPanelOpen\"\n [attr.aria-controls]=\"isPanelOpen ? listboxId : null\"\n [attr.aria-activedescendant]=\"activeOptionId\"\n [placeholder]=\"placeholder\"\n [disabled]=\"isDisabled\"\n [formControl]=\"internalControl\"\n [attr.data-cy]=\"dataCy\"\n [id]=\"dataCy\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onUserInput()\"\n (keydown)=\"onInputKeydown($event)\" />\n\n @if (_trailingIcon) {\n @if (isLucideIcon) {\n <div\n tabindex=\"0\"\n class=\"icon trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n (keydown.enter)=\"onTrailingIconClick($event)\">\n <svg [strokeWidth]=\"strokeWidthIcon\" [size]=\"iconSize\" [lucideIcon]=\"_trailingIcon\" [style.color]=\"iconColor\"></svg>\n </div>\n } @else {\n <div\n tabindex=\"0\"\n class=\"icon trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n (keydown.enter)=\"onTrailingIconClick($event)\">\n <img alt=\"\u00EDcone de fim\" [style.width]=\"iconSize\" [src]=\"_trailingIcon\" />\n </div>\n }\n }\n </div>\n\n @if (errorText) {\n <span class=\"error-text\">{{ errorText }}</span>\n }\n </div>\n</div>\n\n<ng-template #panel>\n <div\n class=\"autocomplete-panel\"\n cdkScrollable\n role=\"listbox\"\n [id]=\"listboxId\"\n [style.width]=\"'100%'\"\n [style.max-height]=\"'260px'\"\n [style.background]=\"autocompleteBgColor\">\n \n @if (!filteredOptionsList.length) {\n <div class=\"empty-state\">Nenhum resultado encontrado</div>\n }\n\n @for (option of filteredOptionsList; track trackByOptionId($index, option)) {\n <div\n class=\"option-item\"\n role=\"option\"\n [id]=\"optionId(option)\"\n [class.active]=\"$index === activeIndex\"\n [class.selected]=\"isOptionSelected(option)\"\n [attr.aria-selected]=\"$index === activeIndex\"\n (mousedown)=\"$event.preventDefault(); selectOption(option)\"\n (mouseenter)=\"activeIndex = $index\">\n <span>{{ option.nome }}</span>\n\n <div class=\"option-item-icons\">\n @if (showCheckIcon && isOptionSelected(option)) {\n @if (isLucideCheckIcon) {\n <svg class=\"check-icon\" [strokeWidth]=\"strokeWidthIcon\" [lucideIcon]=\"checkIcon\" [style.color]=\"iconColor\"></svg>\n } @else {\n <span class=\"check-icon\">{{ checkIcon }}</span>\n }\n }\n\n @if (optionIcon) {\n @if (isLucideOptionIcon) {\n <svg [strokeWidth]=\"strokeWidthIcon\" [size]=\"iconSize\" [lucideIcon]=\"optionIcon\" [style.color]=\"optionIConColor || iconColor\"></svg>\n } @else {\n <img alt=\"\" [src]=\"optionIcon\" />\n }\n }\n </div>\n </div>\n }\n </div>\n</ng-template>", styles: [":host{display:block;position:relative;--autocomplete-bg-color: white}.form-field{display:flex;flex-direction:column;width:100%;height:100%}label{font-size:12px;font-weight:700;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.rnv-autocomplete-field{width:100%;flex:1;min-height:0;display:flex;flex-direction:column}.input-wrapper{position:relative;width:100%;height:var(--form-field-height, 44px);display:flex;align-items:center;background-color:var(--autocomplete-bg-color, white);border:1px solid transparent;border-radius:4px;box-sizing:border-box}.input-wrapper.invalid{border-color:#d32f2f}.input-wrapper.valid{border-color:#2e7d32}input{width:100%;height:100%;border:none;outline:none;background:transparent;padding:12px;font-size:1rem;box-sizing:border-box}input:disabled{opacity:.5;cursor:not-allowed}.input-wrapper.has-leading-icon input{padding-left:36px}.input-wrapper.has-trailing-icon input{padding-right:28px}.icon{position:absolute;top:50%;left:6px;transform:translateY(-50%);width:auto;height:auto;z-index:1;cursor:pointer}.trailing-icon{left:auto;right:6px}.error-text{color:#d32f2f;font-size:11px;margin-top:2px}.autocomplete-panel{background:var(--autocomplete-bg-color, white);border-radius:8px;padding:6px;box-shadow:0 2px 10px #00000026;max-height:260px;overflow-y:auto;box-sizing:border-box}.empty-state{padding:8px 12px;font-size:.9rem;color:#00000080}.option-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:1rem;text-transform:uppercase;border-radius:4px;cursor:pointer;position:relative}.option-item:hover,.option-item.active{background-color:#0000000f}.option-item.selected{background-color:#1976d21f;font-weight:600}.option-item.selected.active{background-color:#1976d233}.option-item-icons{display:flex;align-items:center;gap:6px;flex-shrink:0}.check-icon{font-weight:700;font-size:.95rem;line-height:1}\n"] }]
|
|
794
798
|
}], propDecorators: { label: [{
|
|
795
799
|
type: Input
|
|
796
800
|
}], placeholder: [{
|
|
@@ -825,6 +829,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
825
829
|
type: Input
|
|
826
830
|
}], inputHeigth: [{
|
|
827
831
|
type: Input
|
|
832
|
+
}], iconSize: [{
|
|
833
|
+
type: Input
|
|
828
834
|
}], checkIcon: [{
|
|
829
835
|
type: Input
|
|
830
836
|
}], showCheckIcon: [{
|
|
@@ -1862,6 +1868,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
1862
1868
|
type: Input
|
|
1863
1869
|
}] } });
|
|
1864
1870
|
|
|
1871
|
+
class CaoKpi {
|
|
1872
|
+
kpiData = input.required(...(ngDevMode ? [{ debugName: "kpiData" }] : []));
|
|
1873
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CaoKpi, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1874
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: CaoKpi, isStandalone: true, selector: "cao-kpi", inputs: { kpiData: { classPropertyName: "kpiData", publicName: "kpiData", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"flex flex-col py-2 pt-2.25 px-3.75 rounded-card border-b w-46.25 bg-(--color-white)\"\n [style.border-color]=\"kpiData().borderColor\">\n <div class=\"flex w-full justify-end\">\n <img class=\"w-6 h-6 mr-2\" [src]=\"kpiData().icon.src\" [alt]=\"kpiData().icon.alt\" />\n </div>\n <div class=\"flex flex-col pl-1.5\">\n <p class=\"text-2xl\" [style.color]=\"kpiData().textColor\">{{ kpiData().value }}</p>\n <h3 class=\"text-base\" [style.color]=\"kpiData().textColor\">{{ kpiData().title }}</h3>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
1875
|
+
}
|
|
1876
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CaoKpi, decorators: [{
|
|
1877
|
+
type: Component,
|
|
1878
|
+
args: [{ selector: "cao-kpi", imports: [CommonModule], standalone: true, template: "<div\n class=\"flex flex-col py-2 pt-2.25 px-3.75 rounded-card border-b w-46.25 bg-(--color-white)\"\n [style.border-color]=\"kpiData().borderColor\">\n <div class=\"flex w-full justify-end\">\n <img class=\"w-6 h-6 mr-2\" [src]=\"kpiData().icon.src\" [alt]=\"kpiData().icon.alt\" />\n </div>\n <div class=\"flex flex-col pl-1.5\">\n <p class=\"text-2xl\" [style.color]=\"kpiData().textColor\">{{ kpiData().value }}</p>\n <h3 class=\"text-base\" [style.color]=\"kpiData().textColor\">{{ kpiData().title }}</h3>\n </div>\n</div>\n" }]
|
|
1879
|
+
}], propDecorators: { kpiData: [{ type: i0.Input, args: [{ isSignal: true, alias: "kpiData", required: true }] }] } });
|
|
1880
|
+
|
|
1865
1881
|
class BaseModalService {
|
|
1866
1882
|
constructor() { }
|
|
1867
1883
|
toggleModalEvent = new EventEmitter();
|
|
@@ -2987,5 +3003,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
2987
3003
|
* Generated bundle index. Do not edit.
|
|
2988
3004
|
*/
|
|
2989
3005
|
|
|
2990
|
-
export { BaseAlert, BaseAlertService, BaseDialog, BaseDialogService, BaseFilterTablePaginatedService, BaseFilterTableService, BaseModal, BaseModalService, BasePaginationService, BaseTable, BaseTablePaginated, BaseTableService, BaseTimeRange, CaoAutocompleteComponent, CaoBaseButtonComponent, CaoBaseIcon, CaoBaseInput, CaoDropDownComponent, CaoTabGroup, CaoTabPanel, Footer, LinksButton, Paginator, StepComponent, StepperComponent, TablePaginatedService, TimePicker, getPtBrPaginatorIntlBasePaginated, getPtBrPaginatorIntlBaseTable };
|
|
3006
|
+
export { BaseAlert, BaseAlertService, BaseDialog, BaseDialogService, BaseFilterTablePaginatedService, BaseFilterTableService, BaseModal, BaseModalService, BasePaginationService, BaseTable, BaseTablePaginated, BaseTableService, BaseTimeRange, CaoAutocompleteComponent, CaoBaseButtonComponent, CaoBaseIcon, CaoBaseInput, CaoDropDownComponent, CaoKpi, CaoTabGroup, CaoTabPanel, Footer, LinksButton, Paginator, StepComponent, StepperComponent, TablePaginatedService, TimePicker, getPtBrPaginatorIntlBasePaginated, getPtBrPaginatorIntlBaseTable };
|
|
2991
3007
|
//# sourceMappingURL=ngx-opalbytes-components.mjs.map
|