@seniorsistemas/angular-components 19.9.2 → 19.9.3
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 +99 -13
- package/esm2022/dynamic-form/dynamic-form/components/structure/fieldset/fieldset.component.mjs +4 -3
- package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +45 -34
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +4 -4
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +44 -33
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
- package/fieldset/README.md +77 -15
- package/fieldset/lib/fieldset/fieldset.component.d.ts +28 -14
- package/package.json +13 -13
- package/schematics/collection.json +26 -1
- package/schematics/migrations/migrate-dynamic-form-v19/index.js +15 -34
- package/schematics/migrations/migrate-dynamic-form-v19/index.js.map +1 -1
- package/schematics/migrations/migrate-fieldset-body-template/index.d.ts +2 -0
- package/schematics/migrations/migrate-fieldset-body-template/index.js +421 -0
- package/schematics/migrations/migrate-fieldset-body-template/index.js.map +1 -0
- package/schematics/migrations/migrate-steps-to-stepper/index.js +1 -19
- package/schematics/migrations/migrate-steps-to-stepper/index.js.map +1 -1
- package/schematics/migrations.json +5 -0
- package/schematics/utils/ast-utils.d.ts +33 -1
- package/schematics/utils/ast-utils.js +175 -4
- package/schematics/utils/ast-utils.js.map +1 -1
package/README.md
CHANGED
|
@@ -1,25 +1,111 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @seniorsistemas/angular-components
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Biblioteca de componentes Angular reutilizáveis da Senior Sistemas, construída com Angular 18 e Tailwind CSS.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Inclui mais de 70 componentes, diretivas e pipes para construção de interfaces — desde inputs e formulários dinâmicos até tabelas, kanban, chat e muito mais.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Documentação
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
A documentação oficial é feita via **Storybook**. Cada componente tem stories com exemplos interativos, descrição de inputs/outputs e variantes visuais.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
### Rodar o Storybook localmente
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
```bash
|
|
14
|
+
npm run storybook
|
|
15
|
+
```
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
Acesse em `http://localhost:6006`.
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
### Build do Storybook
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
```bash
|
|
22
|
+
npm run build-storybook
|
|
23
|
+
```
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
O output é gerado em `storybook-static/`.
|
|
22
26
|
|
|
23
|
-
##
|
|
27
|
+
## Showcase
|
|
28
|
+
|
|
29
|
+
Além do Storybook, há um projeto de showcase com exemplos reais de uso:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm run start
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Acesse em `http://localhost:4200`.
|
|
36
|
+
|
|
37
|
+
## Estrutura do monorepo
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
projects/
|
|
41
|
+
angular-components/ # Biblioteca de componentes
|
|
42
|
+
<nome-componente>/ # Cada componente é um sub-pacote independente
|
|
43
|
+
src/lib/
|
|
44
|
+
ng-package.json
|
|
45
|
+
showcase/ # Aplicação de demonstração
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Instalação
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm install @seniorsistemas/angular-components
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Cada componente é importado individualmente pelo seu sub-pacote:
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { ButtonModule } from '@seniorsistemas/angular-components/button';
|
|
58
|
+
import { DynamicFormModule } from '@seniorsistemas/angular-components/dynamic-form';
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Schematics de migração
|
|
62
|
+
|
|
63
|
+
A biblioteca oferece schematics de migração via `ng update`, então é boa prática sempre atualizar a versão instalada com esse comando em vez de só trocar o número no `package.json` — além de atualizar a dependência, ele aplica automaticamente as migrations necessárias no seu projeto e mostra o que há de novo relevante para o seu código:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
ng update @seniorsistemas/angular-components
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Migrations disponíveis (por versão em que passam a ser aplicadas):
|
|
70
|
+
|
|
71
|
+
| Versão | Migration | O que faz |
|
|
72
|
+
| -------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
73
|
+
| `19.0.0` | `migration-v19-0-0-dynamic-form` | Migra o `DynamicForm` de v18 para v19: construtores → plain objects, enums → string literals, `[fields]` → `[configs]`, `Editor` → `provideEditorField()`, estilos → `angular.json` |
|
|
74
|
+
| `19.0.0` | `migration-v19-0-0-steps-to-stepper` | Migra `Steps` para `Stepper`: `<s-steps>` → `<s-stepper>`, import de `.../steps` → `.../stepper`, `StepsComponent` → `StepperComponent`, e remove o `StepsModule` (componente agora standalone) substituindo por `StepperComponent` |
|
|
75
|
+
| `19.6.0` | `migration-v19-6-0-p-datepicker` | Migra `p-datepicker` (PrimeNG) para `s-datepicker` (`@seniorsistemas/angular-components`) |
|
|
76
|
+
| `19.6.0` | `migration-v19-6-0-p-editor` | Migra `p-editor` (PrimeNG/Quill) para `s-editor`: renomeia tag e eventos, remove atributos sem equivalente, limpa configs legadas do `DynamicForm` e atualiza dependências do `package.json` |
|
|
77
|
+
| `19.6.2` | `migration-v19-6-2-s-chips-outputs` | Renomeia outputs legados do `s-chips`: `onAdd`→`added`, `onRemove`→`removed`, `onChipClick`→`chipClicked`, `onFocus`→`focused`, `onBlur`→`focusLost` |
|
|
78
|
+
| `19.9.3` | `migration-v19-9-3-fieldset-body-template` | Envolve o conteúdo projetado do `s-fieldset` em `<ng-template sTemplate="body">`, mantendo templates de slot como `sTemplate="header"` fora do body, e garante o `TemplateDirective` no escopo do componente (standalone ou via `NgModule`) |
|
|
79
|
+
|
|
80
|
+
A lista completa, com a `version` que dispara cada migration e a `factory` correspondente, fica em [`projects/angular-components/schematics/migrations.json`](projects/angular-components/schematics/migrations.json).
|
|
81
|
+
|
|
82
|
+
### Executando uma migration individualmente
|
|
83
|
+
|
|
84
|
+
Se você já está na versão instalada (não chegou até ela via `ng update`) e só precisa aplicar uma migration específica no seu projeto, sem atualizar nada, há duas formas:
|
|
85
|
+
|
|
86
|
+
**Via `ng generate`** (mais simples) — cada migration também está disponível com um nome curto, sem o prefixo de versão (`migrate-<nome>` em vez de `migration-v<versão>-<nome>`):
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
ng generate @seniorsistemas/angular-components:migrate-fieldset-body-template
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Via `ng update --name`** (mais completo) — usa o nome versionado, o mesmo que aparece na tabela acima:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
ng update @seniorsistemas/angular-components --name migration-v19-9-3-fieldset-body-template
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Os dois rodam exatamente a mesma migration e nenhum dos dois altera a versão instalada ou reinstala dependências.
|
|
99
|
+
|
|
100
|
+
## Build da biblioteca
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npm run build
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Testes
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npm run test
|
|
110
|
+
```
|
|
24
111
|
|
|
25
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
package/esm2022/dynamic-form/dynamic-form/components/structure/fieldset/fieldset.component.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component, input } from '@angular/core';
|
|
2
2
|
import { DynamicFormDirective } from '../../../dynamic-form.directive';
|
|
3
3
|
import { FieldsetModule } from '@seniorsistemas/angular-components/fieldset';
|
|
4
|
+
import { TemplateDirective } from '@seniorsistemas/angular-components/template';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@seniorsistemas/angular-components/fieldset";
|
|
6
7
|
export class FieldsetComponent {
|
|
@@ -9,10 +10,10 @@ export class FieldsetComponent {
|
|
|
9
10
|
group = input.required();
|
|
10
11
|
errorMessages = input();
|
|
11
12
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "ng-component", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (
|
|
13
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "ng-component", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (beforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (afterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n <ng-template sTemplate=\"body\">\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n </ng-template>\n</s-fieldset>\n\n", dependencies: [{ kind: "directive", type: DynamicFormDirective, selector: "[sDynamicForm]", inputs: ["sDynamicForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "component", type: i1.FieldsetComponent, selector: "s-fieldset", inputs: ["legend", "toggleable", "icon", "destroyOnHide", "active"], outputs: ["beforeToggle", "afterToggle", "activeChange"] }, { kind: "directive", type: TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }] });
|
|
13
14
|
}
|
|
14
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, decorators: [{
|
|
15
16
|
type: Component,
|
|
16
|
-
args: [{ standalone: true, imports: [DynamicFormDirective, FieldsetModule], template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (
|
|
17
|
+
args: [{ standalone: true, imports: [DynamicFormDirective, FieldsetModule, TemplateDirective], template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (beforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (afterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n <ng-template sTemplate=\"body\">\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n </ng-template>\n</s-fieldset>\n\n" }]
|
|
17
18
|
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL3N0cnVjdHVyZS9maWVsZHNldC9maWVsZHNldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvc3RydWN0dXJlL2ZpZWxkc2V0L2ZpZWxkc2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBTWhGLE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsRUFBRSxHQUFHLEtBQUssRUFBVSxDQUFDO0lBQ3JCLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO0lBQzFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFhLENBQUM7SUFDcEMsYUFBYSxHQUFHLEtBQUssRUFBTyxDQUFDO3dHQUpwQixpQkFBaUI7NEZBQWpCLGlCQUFpQixva0JDYjlCLGltQkFnQkEsNENETmMsb0JBQW9CLG9GQUFFLGNBQWMseU9BQUUsaUJBQWlCOzs0RkFHeEQsaUJBQWlCO2tCQUw3QixTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRmllbGRzZXRDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvZmllbGRzZXQnO1xuaW1wb3J0IHsgQmFzZVN0cnVjdHVyZUNvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uL2Jhc2Utc3RydWN0dXJlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2R5bmFtaWMtZm9ybS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmllbGRzZXRNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0JztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy90ZW1wbGF0ZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtEeW5hbWljRm9ybURpcmVjdGl2ZSwgRmllbGRzZXRNb2R1bGUsIFRlbXBsYXRlRGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmllbGRzZXQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZHNldENvbXBvbmVudCBpbXBsZW1lbnRzIEJhc2VTdHJ1Y3R1cmVDb21wb25lbnRDb25maWcge1xuICAgIGlkID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEZpZWxkc2V0Q29uZmlnPigpO1xuICAgIGdyb3VwID0gaW5wdXQucmVxdWlyZWQ8Rm9ybUdyb3VwPigpO1xuICAgIGVycm9yTWVzc2FnZXMgPSBpbnB1dDxhbnk+KCk7XG59XG5cbiIsIkBsZXQgX2NvbmZpZyA9IGNvbmZpZygpO1xuPHMtZmllbGRzZXRcbiAgICBbdG9nZ2xlYWJsZV09XCJ0cnVlXCJcbiAgICAoYmVmb3JlVG9nZ2xlKT1cIl9jb25maWcuYmVmb3JlVG9nZ2xlID8gX2NvbmZpZy5iZWZvcmVUb2dnbGUoJGV2ZW50KSA6IG51bGxcIlxuICAgIChhZnRlclRvZ2dsZSk9XCJfY29uZmlnLmFmdGVyVG9nZ2xlID8gX2NvbmZpZy5hZnRlclRvZ2dsZSgkZXZlbnQpIDogbnVsbFwiXG4gICAgW2xlZ2VuZF09XCJfY29uZmlnLmhlYWRlciA/IF9jb25maWcuaGVhZGVyIDogJydcIlxuPlxuICAgIDxuZy10ZW1wbGF0ZSBzVGVtcGxhdGU9XCJib2R5XCI+XG4gICAgICAgIEBmb3IgKGNvbmYgb2YgX2NvbmZpZy5jb25maWdzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpzRHluYW1pY0Zvcm09XCJ7IGlkOiBpZCgpLCBjb25maWc6IGNvbmYsIGdyb3VwOiBncm91cCgpLCBlcnJvck1lc3NhZ2VzOiBlcnJvck1lc3NhZ2VzKCkgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9zLWZpZWxkc2V0PlxuXG4iXX0=
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
-
import { Component,
|
|
3
|
-
import { TemplateDirective } from '@seniorsistemas/angular-components/template';
|
|
4
|
-
import { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';
|
|
2
|
+
import { Component, computed, contentChildren, EventEmitter, input, model, Output, signal, } from '@angular/core';
|
|
5
3
|
import { NgTemplateOutlet } from '@angular/common';
|
|
4
|
+
import { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';
|
|
5
|
+
import { TemplateDirective } from '@seniorsistemas/angular-components/template';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
/**
|
|
8
8
|
* @description Componente de fieldset com legenda, ícone configurável e suporte a
|
|
9
|
-
* toggle (recolher/expandir) com animação. Suporta
|
|
10
|
-
*
|
|
9
|
+
* toggle (recolher/expandir) com animação. Suporta templates personalizados via
|
|
10
|
+
* diretiva `TemplateDirective`, com os tipos `'header'` (substitui a legenda) e
|
|
11
|
+
* `'body'` (conteúdo do fieldset).
|
|
12
|
+
*
|
|
13
|
+
* Prefira declarar o conteúdo em `sTemplate="body"` em vez de projetá-lo direto:
|
|
14
|
+
* o `ng-content` é instanciado pelo componente pai mesmo com o fieldset recolhido,
|
|
15
|
+
* disparando o `ngOnInit` dos filhos prematuramente. O template de corpo só é
|
|
16
|
+
* instanciado quando o fieldset está de fato ativo, e é obrigatório para que
|
|
17
|
+
* `destroyOnHide` funcione.
|
|
11
18
|
*
|
|
12
19
|
* @example
|
|
13
20
|
* ```html
|
|
14
21
|
* <s-fieldset legend="Dados pessoais" [toggleable]="true">
|
|
15
|
-
* <
|
|
22
|
+
* <ng-template sTemplate="body">
|
|
23
|
+
* <p>Conteúdo do fieldset</p>
|
|
24
|
+
* </ng-template>
|
|
16
25
|
* </s-fieldset>
|
|
17
26
|
* ```
|
|
18
27
|
*
|
|
@@ -20,33 +29,46 @@ import * as i0 from "@angular/core";
|
|
|
20
29
|
*/
|
|
21
30
|
export class FieldsetComponent {
|
|
22
31
|
/** @description Texto exibido como título do fieldset. @default '' */
|
|
23
|
-
legend = '';
|
|
32
|
+
legend = input('');
|
|
24
33
|
/** @description Habilita o botão de toggle que permite recolher e expandir o conteúdo. @default false */
|
|
25
|
-
toggleable = false;
|
|
34
|
+
toggleable = input(false);
|
|
26
35
|
/** @description Classe de ícone exibida ao lado da legenda (ex.: `'fas fa-cog'`). @default '' */
|
|
27
|
-
icon = '';
|
|
28
|
-
/** @description Quando `true`, remove o conteúdo do DOM ao recolher o fieldset. @default
|
|
29
|
-
destroyOnHide =
|
|
30
|
-
templateDirectives;
|
|
31
|
-
headerTemplate
|
|
36
|
+
icon = input('');
|
|
37
|
+
/** @description Quando `true`, remove o conteúdo do DOM ao recolher o fieldset. @default false */
|
|
38
|
+
destroyOnHide = input(false);
|
|
39
|
+
templateDirectives = contentChildren(TemplateDirective);
|
|
40
|
+
headerTemplate = computed(() => {
|
|
41
|
+
return this.templateDirectives()?.find((template) => template.type === 'header')?.template;
|
|
42
|
+
});
|
|
43
|
+
bodyTemplate = computed(() => {
|
|
44
|
+
return this.templateDirectives()?.find((template) => template.type === 'body')?.template;
|
|
45
|
+
});
|
|
32
46
|
/** @description Emitido imediatamente antes da animação de toggle iniciar, com o estado atual. */
|
|
33
47
|
beforeToggle = new EventEmitter();
|
|
34
48
|
/** @description Emitido após a animação de toggle concluir, com o novo estado. */
|
|
35
49
|
afterToggle = new EventEmitter();
|
|
36
|
-
active = true;
|
|
50
|
+
active = model(true);
|
|
51
|
+
/** @description `true` quando a animação de fechamento já terminou, aplicando `overflow-hidden` ao conteúdo. */
|
|
52
|
+
collapsed = signal(false);
|
|
37
53
|
ngAfterViewInit() {
|
|
38
|
-
|
|
54
|
+
const hasBodyTemplate = this.bodyTemplate();
|
|
55
|
+
if (!hasBodyTemplate && this.destroyOnHide()) {
|
|
56
|
+
console.warn('FieldsetComponent: O uso de destroyOnHide=true requer um template de corpo definido com sTemplate="body".');
|
|
57
|
+
}
|
|
39
58
|
}
|
|
40
59
|
toggleActive(originalEvent) {
|
|
41
|
-
if (!this.toggleable) {
|
|
60
|
+
if (!this.toggleable()) {
|
|
42
61
|
return;
|
|
43
62
|
}
|
|
44
|
-
this.beforeToggle.next({ collapsed: this.active, originalEvent });
|
|
45
|
-
this.active
|
|
46
|
-
this.afterToggle.next({ collapsed: this.active, originalEvent });
|
|
63
|
+
this.beforeToggle.next({ collapsed: this.active(), originalEvent });
|
|
64
|
+
this.active.set(!this.active());
|
|
65
|
+
this.afterToggle.next({ collapsed: this.active(), originalEvent });
|
|
66
|
+
}
|
|
67
|
+
onToggleAnimationDone(event) {
|
|
68
|
+
this.collapsed.set(event.toState === 'closed');
|
|
47
69
|
}
|
|
48
70
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "s-fieldset", inputs: { legend: "legend", toggleable: "toggleable", icon: "icon", destroyOnHide: "destroyOnHide" }, outputs: { beforeToggle: "beforeToggle", afterToggle: "afterToggle" }, queries: [{ propertyName: "templateDirectives", predicate: TemplateDirective }], ngImport: i0, template: "<fieldset\r\n class=\"
|
|
71
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "s-fieldset", inputs: { legend: { classPropertyName: "legend", publicName: "legend", isSignal: true, isRequired: false, transformFunction: null }, toggleable: { classPropertyName: "toggleable", publicName: "toggleable", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, destroyOnHide: { classPropertyName: "destroyOnHide", publicName: "destroyOnHide", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { beforeToggle: "beforeToggle", afterToggle: "afterToggle", active: "activeChange" }, queries: [{ propertyName: "templateDirectives", predicate: TemplateDirective, isSignal: true }], ngImport: i0, template: "<fieldset\r\n class=\"mb-[10px] min-h-[4.5em] w-full min-w-0 rounded-xbig border border-grayscale-20 bg-grayscale-0 px-2 py-1.5\"\r\n>\r\n <legend\r\n class=\"ml-4 flex select-none items-center gap-1 px-1 font-open-sans text-sm font-bold text-grayscale-90\"\r\n [class.cursor-pointer]=\"toggleable()\"\r\n (sInteractiveContent)=\"toggleActive($event)\"\r\n >\r\n @if (toggleable()) {\r\n @if (active()) {\r\n <i class=\"fas fa-minus\"></i>\r\n } @else {\r\n <i class=\"fas fa-plus\"></i>\r\n }\r\n }\r\n @let _headerTemplate = headerTemplate();\r\n @if (_headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_headerTemplate\"></ng-container>\r\n } @else {\r\n @if (icon()) {\r\n <i [class]=\"icon()\"></i>\r\n }\r\n {{ legend() }}\r\n }\r\n </legend>\r\n @if (destroyOnHide() ? (toggleable() ? active() : true) : true) {\r\n <div\r\n [@toggleAnimation]=\"destroyOnHide() ? null : active() ? 'open' : 'closed'\"\r\n (@toggleAnimation.done)=\"onToggleAnimationDone($event)\"\r\n [class.overflow-hidden]=\"collapsed()\"\r\n >\r\n @let _bodyTemplate = bodyTemplate();\r\n @if (_bodyTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_bodyTemplate\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n }\r\n</fieldset>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
|
|
50
72
|
trigger('toggleAnimation', [
|
|
51
73
|
transition(':enter', [
|
|
52
74
|
style({ opacity: 0, height: 0 }),
|
|
@@ -78,21 +100,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
78
100
|
state('closed', style({ opacity: 0, height: 0 })),
|
|
79
101
|
transition('open <=> closed', animate('300ms ease')),
|
|
80
102
|
]),
|
|
81
|
-
], standalone: true, imports: [InteractiveContentDirective, NgTemplateOutlet], template: "<fieldset\r\n class=\"
|
|
82
|
-
}], propDecorators: {
|
|
83
|
-
type: Input
|
|
84
|
-
}], toggleable: [{
|
|
85
|
-
type: Input
|
|
86
|
-
}], icon: [{
|
|
87
|
-
type: Input
|
|
88
|
-
}], destroyOnHide: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}], templateDirectives: [{
|
|
91
|
-
type: ContentChildren,
|
|
92
|
-
args: [TemplateDirective]
|
|
93
|
-
}], beforeToggle: [{
|
|
103
|
+
], standalone: true, imports: [InteractiveContentDirective, NgTemplateOutlet], template: "<fieldset\r\n class=\"mb-[10px] min-h-[4.5em] w-full min-w-0 rounded-xbig border border-grayscale-20 bg-grayscale-0 px-2 py-1.5\"\r\n>\r\n <legend\r\n class=\"ml-4 flex select-none items-center gap-1 px-1 font-open-sans text-sm font-bold text-grayscale-90\"\r\n [class.cursor-pointer]=\"toggleable()\"\r\n (sInteractiveContent)=\"toggleActive($event)\"\r\n >\r\n @if (toggleable()) {\r\n @if (active()) {\r\n <i class=\"fas fa-minus\"></i>\r\n } @else {\r\n <i class=\"fas fa-plus\"></i>\r\n }\r\n }\r\n @let _headerTemplate = headerTemplate();\r\n @if (_headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_headerTemplate\"></ng-container>\r\n } @else {\r\n @if (icon()) {\r\n <i [class]=\"icon()\"></i>\r\n }\r\n {{ legend() }}\r\n }\r\n </legend>\r\n @if (destroyOnHide() ? (toggleable() ? active() : true) : true) {\r\n <div\r\n [@toggleAnimation]=\"destroyOnHide() ? null : active() ? 'open' : 'closed'\"\r\n (@toggleAnimation.done)=\"onToggleAnimationDone($event)\"\r\n [class.overflow-hidden]=\"collapsed()\"\r\n >\r\n @let _bodyTemplate = bodyTemplate();\r\n @if (_bodyTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_bodyTemplate\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n }\r\n</fieldset>\r\n", styles: [":host{display:block}\n"] }]
|
|
104
|
+
}], propDecorators: { beforeToggle: [{
|
|
94
105
|
type: Output
|
|
95
106
|
}], afterToggle: [{
|
|
96
107
|
type: Output
|
|
97
108
|
}] } });
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0L3NyYy9saWIvZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0L3NyYy9saWIvZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FHVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVoRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFbkQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQXVCSCxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLHNFQUFzRTtJQUM3RCxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLHlHQUF5RztJQUNoRyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLGlHQUFpRztJQUN4RixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ25CLGlHQUFpRztJQUN4RixhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ2Usa0JBQWtCLENBQTJDO0lBQzFHLGNBQWMsQ0FBK0I7SUFDN0Msa0dBQWtHO0lBQ3hGLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztJQUM1RCxrRkFBa0Y7SUFDeEUsV0FBVyxHQUFHLElB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TyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs0QkFDakQsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNqRCxVQUFVLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO3lCQUN2RCxDQUFDO3FCQUNMLGNBQ1csSUFBSSxXQUNQLENBQUMsMkJBQTJCLEVBQUUsZ0JBQWdCLENBQUM7OEJBSS9DLE1BQU07c0JBQWQsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUN1QyxrQkFBa0I7c0JBQTlELGVBQWU7dUJBQUMsaUJBQWlCO2dCQUd4QixZQUFZO3NCQUFyQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RlbXBsYXRlJztcclxuaW1wb3J0IHsgRmllbGRTZXRUb2dnbGUgfSBmcm9tICcuL2ZpZWxkc2V0Lm1vZGVscyc7XHJcbmltcG9ydCB7IEludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvaW50ZXJhY3RpdmUtY29udGVudCc7XHJcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIGZpZWxkc2V0IGNvbSBsZWdlbmRhLCDDrWNvbmUgY29uZmlndXLDoXZlbCBlIHN1cG9ydGUgYVxyXG4gKiB0b2dnbGUgKHJlY29saGVyL2V4cGFuZGlyKSBjb20gYW5pbWHDp8Ojby4gU3Vwb3J0YSB0ZW1wbGF0ZSBwZXJzb25hbGl6YWRvIHBhcmEgb1xyXG4gKiBjYWJlw6dhbGhvIHZpYSBkaXJldGl2YSBgVGVtcGxhdGVEaXJlY3RpdmVgIGNvbSB0aXBvIGAnaGVhZGVyJ2AuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtZmllbGRzZXQgbGVnZW5kPVwiRGFkb3MgcGVzc29haXNcIiBbdG9nZ2xlYWJsZV09XCJ0cnVlXCI+XHJcbiAqICAgPHA+Q29udGXDumRvIGRvIGZpZWxkc2V0PC9wPlxyXG4gKiA8L3MtZmllbGRzZXQ+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy1maWVsZHNldCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmllbGRzZXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcclxuICAgIGFuaW1hdGlvbnM6IFtcclxuICAgICAgICB0cmlnZ2VyKCd0b2dnbGVBbmltYXRpb24nLCBbXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pLFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJyonIH0pKSxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgaGVpZ2h0OiAnKicgfSksXHJcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpLFxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgc3RhdGUoJ29wZW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJyonIH0pKSxcclxuICAgICAgICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignb3BlbiA8PT4gY2xvc2VkJywgYW5pbWF0ZSgnMzAwbXMgZWFzZScpKSxcclxuICAgICAgICBdKSxcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0ludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSwgTmdUZW1wbGF0ZU91dGxldF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWVsZHNldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIGNvbW8gdMOtdHVsbyBkbyBmaWVsZHNldC4gQGRlZmF1bHQgJycgKi9cclxuICAgIEBJbnB1dCgpIGxlZ2VuZCA9ICcnO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBvIGJvdMOjbyBkZSB0b2dnbGUgcXVlIHBlcm1pdGUgcmVjb2xoZXIgZSBleHBhbmRpciBvIGNvbnRlw7pkby4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpIHRvZ2dsZWFibGUgPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIGRlIMOtY29uZSBleGliaWRhIGFvIGxhZG8gZGEgbGVnZW5kYSAoZXguOiBgJ2ZhcyBmYS1jb2cnYCkuIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKSBpY29uID0gJyc7XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFF1YW5kbyBgdHJ1ZWAsIHJlbW92ZSBvIGNvbnRlw7pkbyBkbyBET00gYW8gcmVjb2xoZXIgbyBmaWVsZHNldC4gQGRlZmF1bHQgdHJ1ZSAqL1xyXG4gICAgQElucHV0KCkgZGVzdHJveU9uSGlkZSA9IHRydWU7XHJcbiAgICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSByZWFkb25seSB0ZW1wbGF0ZURpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT4gfCB1bmRlZmluZWQ7XHJcbiAgICBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBpbWVkaWF0YW1lbnRlIGFudGVzIGRhIGFuaW1hw6fDo28gZGUgdG9nZ2xlIGluaWNpYXIsIGNvbSBvIGVzdGFkbyBhdHVhbC4gKi9cclxuICAgIEBPdXRwdXQoKSBiZWZvcmVUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEZpZWxkU2V0VG9nZ2xlPigpO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIGFww7NzIGEgYW5pbWHDp8OjbyBkZSB0b2dnbGUgY29uY2x1aXIsIGNvbSBvIG5vdm8gZXN0YWRvLiAqL1xyXG4gICAgQE91dHB1dCgpIGFmdGVyVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWVsZFNldFRvZ2dsZT4oKTtcclxuICAgIGFjdGl2ZSA9IHRydWU7XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlRGlyZWN0aXZlcz8uZmluZCgodGVtcGxhdGUpID0+IHRlbXBsYXRlLnR5cGUgPT09ICdoZWFkZXInKT8udGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlQWN0aXZlKG9yaWdpbmFsRXZlbnQ6IFBvaW50ZXJFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMudG9nZ2xlYWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYmVmb3JlVG9nZ2xlLm5leHQoeyBjb2xsYXBzZWQ6IHRoaXMuYWN0aXZlLCBvcmlnaW5hbEV2ZW50IH0pO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gIXRoaXMuYWN0aXZlO1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJUb2dnbGUubmV4dCh7IGNvbGxhcHNlZDogdGhpcy5hY3RpdmUsIG9yaWdpbmFsRXZlbnQgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGZpZWxkc2V0XHJcbiAgICBjbGFzcz1cImJnLWdyYXlzY2FsZS0wIGJvcmRlciBib3JkZXItZ3JheXNjYWxlLTIwIHJvdW5kZWQteGJpZyBtYi1bMTBweF0gbWluLWgtWzQuNWVtXSBweC0yIHB5LTEuNSB3LWZ1bGwgbWluLXctMFwiXHJcbj5cclxuICAgIDxsZWdlbmRcclxuICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHRleHQtZ3JheXNjYWxlLTkwIGZvbnQtb3Blbi1zYW5zIHRleHQtc20gZm9udC1ib2xkIHB4LTEgZ2FwLTEgbWwtNCBzZWxlY3Qtbm9uZVwiXHJcbiAgICAgICAgW2NsYXNzLmN1cnNvci1wb2ludGVyXT1cInRvZ2dsZWFibGVcIlxyXG4gICAgICAgIChzSW50ZXJhY3RpdmVDb250ZW50KT1cInRvZ2dsZUFjdGl2ZSgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgICBAaWYgKHRvZ2dsZWFibGUpIHtcclxuICAgICAgICAgICAgQGlmIChhY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXNcIj48L2k+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChoZWFkZXJUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgQGlmIChpY29uKSB7XHJcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB7eyBsZWdlbmQgfX1cclxuICAgICAgICB9XHJcbiAgICA8L2xlZ2VuZD5cclxuICAgIEBpZiAoZGVzdHJveU9uSGlkZSA/ICh0b2dnbGVhYmxlID8gYWN0aXZlIDogdHJ1ZSkgOiB0cnVlKSB7XHJcbiAgICAgICAgPGRpdiBbQHRvZ2dsZUFuaW1hdGlvbl09XCJkZXN0cm95T25IaWRlID8gbnVsbCA6IGFjdGl2ZSA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxuPC9maWVsZHNldD5cclxuIl19
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0L3NyYy9saWIvZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0L3NyYy9saWIvZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUVILFNBQVMsRUFDVCxRQUFRLEVBQ1IsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDckcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBR2hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBdUJILE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsc0VBQXNFO0lBQ3RFLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkIseUdBQXlHO0lBQ3pHLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsaUdBQWlHO0lBQ2pHLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakIsa0dBQWtHO0lBQ2xHLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0Isa0JBQWtCLEdB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QztxQkFDTCxjQUNXLElBQUksV0FDUCxDQUFDLDJCQUEyQixFQUFFLGdCQUFnQixDQUFDOzhCQXFCOUMsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uRXZlbnQsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIGNvbXB1dGVkLFxyXG4gICAgY29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgaW5wdXQsXHJcbiAgICBtb2RlbCxcclxuICAgIE91dHB1dCxcclxuICAgIHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbnRlcmFjdGl2ZUNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2ludGVyYWN0aXZlLWNvbnRlbnQnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGVtcGxhdGUnO1xyXG5pbXBvcnQgeyBGaWVsZFNldFRvZ2dsZSB9IGZyb20gJy4vZmllbGRzZXQubW9kZWxzJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBmaWVsZHNldCBjb20gbGVnZW5kYSwgw61jb25lIGNvbmZpZ3Vyw6F2ZWwgZSBzdXBvcnRlIGFcclxuICogdG9nZ2xlIChyZWNvbGhlci9leHBhbmRpcikgY29tIGFuaW1hw6fDo28uIFN1cG9ydGEgdGVtcGxhdGVzIHBlcnNvbmFsaXphZG9zIHZpYVxyXG4gKiBkaXJldGl2YSBgVGVtcGxhdGVEaXJlY3RpdmVgLCBjb20gb3MgdGlwb3MgYCdoZWFkZXInYCAoc3Vic3RpdHVpIGEgbGVnZW5kYSkgZVxyXG4gKiBgJ2JvZHknYCAoY29udGXDumRvIGRvIGZpZWxkc2V0KS5cclxuICpcclxuICogUHJlZmlyYSBkZWNsYXJhciBvIGNvbnRlw7pkbyBlbSBgc1RlbXBsYXRlPVwiYm9keVwiYCBlbSB2ZXogZGUgcHJvamV0w6EtbG8gZGlyZXRvOlxyXG4gKiBvIGBuZy1jb250ZW50YCDDqSBpbnN0YW5jaWFkbyBwZWxvIGNvbXBvbmVudGUgcGFpIG1lc21vIGNvbSBvIGZpZWxkc2V0IHJlY29saGlkbyxcclxuICogZGlzcGFyYW5kbyBvIGBuZ09uSW5pdGAgZG9zIGZpbGhvcyBwcmVtYXR1cmFtZW50ZS4gTyB0ZW1wbGF0ZSBkZSBjb3JwbyBzw7Mgw6lcclxuICogaW5zdGFuY2lhZG8gcXVhbmRvIG8gZmllbGRzZXQgZXN0w6EgZGUgZmF0byBhdGl2bywgZSDDqSBvYnJpZ2F0w7NyaW8gcGFyYSBxdWVcclxuICogYGRlc3Ryb3lPbkhpZGVgIGZ1bmNpb25lLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLWZpZWxkc2V0IGxlZ2VuZD1cIkRhZG9zIHBlc3NvYWlzXCIgW3RvZ2dsZWFibGVdPVwidHJ1ZVwiPlxyXG4gKiAgIDxuZy10ZW1wbGF0ZSBzVGVtcGxhdGU9XCJib2R5XCI+XHJcbiAqICAgICA8cD5Db250ZcO6ZG8gZG8gZmllbGRzZXQ8L3A+XHJcbiAqICAgPC9uZy10ZW1wbGF0ZT5cclxuICogPC9zLWZpZWxkc2V0PlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IElucHV0c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtZmllbGRzZXQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkc2V0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXHJcbiAgICBhbmltYXRpb25zOiBbXHJcbiAgICAgICAgdHJpZ2dlcigndG9nZ2xlQW5pbWF0aW9uJywgW1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSxcclxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcqJyB9KSksXHJcbiAgICAgICAgICAgIF0pLFxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJyonIH0pLFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pKSxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgIHN0YXRlKCdvcGVuJywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcqJyB9KSksXHJcbiAgICAgICAgICAgIHN0YXRlKCdjbG9zZWQnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ29wZW4gPD0+IGNsb3NlZCcsIGFuaW1hdGUoJzMwMG1zIGVhc2UnKSksXHJcbiAgICAgICAgXSksXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtJbnRlcmFjdGl2ZUNvbnRlbnREaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmllbGRzZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gVGV4dG8gZXhpYmlkbyBjb21vIHTDrXR1bG8gZG8gZmllbGRzZXQuIEBkZWZhdWx0ICcnICovXHJcbiAgICBsZWdlbmQgPSBpbnB1dCgnJyk7XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIG8gYm90w6NvIGRlIHRvZ2dsZSBxdWUgcGVybWl0ZSByZWNvbGhlciBlIGV4cGFuZGlyIG8gY29udGXDumRvLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgdG9nZ2xlYWJsZSA9IGlucHV0KGZhbHNlKTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIGRlIMOtY29uZSBleGliaWRhIGFvIGxhZG8gZGEgbGVnZW5kYSAoZXguOiBgJ2ZhcyBmYS1jb2cnYCkuIEBkZWZhdWx0ICcnICovXHJcbiAgICBpY29uID0gaW5wdXQoJycpO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCByZW1vdmUgbyBjb250ZcO6ZG8gZG8gRE9NIGFvIHJlY29saGVyIG8gZmllbGRzZXQuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBkZXN0cm95T25IaWRlID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICAgIHRlbXBsYXRlRGlyZWN0aXZlcyA9IGNvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgICBoZWFkZXJUZW1wbGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZURpcmVjdGl2ZXMoKT8uZmluZCgodGVtcGxhdGUpID0+IHRlbXBsYXRlLnR5cGUgPT09ICdoZWFkZXInKT8udGVtcGxhdGU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBib2R5VGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGVEaXJlY3RpdmVzKCk/LmZpbmQoKHRlbXBsYXRlKSA9PiB0ZW1wbGF0ZS50eXBlID09PSAnYm9keScpPy50ZW1wbGF0ZTtcclxuICAgIH0pO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIGltZWRpYXRhbWVudGUgYW50ZXMgZGEgYW5pbWHDp8OjbyBkZSB0b2dnbGUgaW5pY2lhciwgY29tIG8gZXN0YWRvIGF0dWFsLiAqL1xyXG4gICAgQE91dHB1dCgpIGJlZm9yZVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmllbGRTZXRUb2dnbGU+KCk7XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gYXDDs3MgYSBhbmltYcOnw6NvIGRlIHRvZ2dsZSBjb25jbHVpciwgY29tIG8gbm92byBlc3RhZG8uICovXHJcbiAgICBAT3V0cHV0KCkgYWZ0ZXJUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEZpZWxkU2V0VG9nZ2xlPigpO1xyXG5cclxuICAgIGFjdGl2ZSA9IG1vZGVsKHRydWUpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gYHRydWVgIHF1YW5kbyBhIGFuaW1hw6fDo28gZGUgZmVjaGFtZW50byBqw6EgdGVybWlub3UsIGFwbGljYW5kbyBgb3ZlcmZsb3ctaGlkZGVuYCBhbyBjb250ZcO6ZG8uICovXHJcbiAgICBwcm90ZWN0ZWQgY29sbGFwc2VkID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgY29uc3QgaGFzQm9keVRlbXBsYXRlID0gdGhpcy5ib2R5VGVtcGxhdGUoKTtcclxuICAgICAgICBpZiAoIWhhc0JvZHlUZW1wbGF0ZSAmJiB0aGlzLmRlc3Ryb3lPbkhpZGUoKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgICAgICAnRmllbGRzZXRDb21wb25lbnQ6IE8gdXNvIGRlIGRlc3Ryb3lPbkhpZGU9dHJ1ZSByZXF1ZXIgdW0gdGVtcGxhdGUgZGUgY29ycG8gZGVmaW5pZG8gY29tIHNUZW1wbGF0ZT1cImJvZHlcIi4nLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9nZ2xlQWN0aXZlKG9yaWdpbmFsRXZlbnQ6IFBvaW50ZXJFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMudG9nZ2xlYWJsZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5iZWZvcmVUb2dnbGUubmV4dCh7IGNvbGxhcHNlZDogdGhpcy5hY3RpdmUoKSwgb3JpZ2luYWxFdmVudCB9KTtcclxuICAgICAgICB0aGlzLmFjdGl2ZS5zZXQoIXRoaXMuYWN0aXZlKCkpO1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJUb2dnbGUubmV4dCh7IGNvbGxhcHNlZDogdGhpcy5hY3RpdmUoKSwgb3JpZ2luYWxFdmVudCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25Ub2dnbGVBbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xyXG4gICAgICAgIHRoaXMuY29sbGFwc2VkLnNldChldmVudC50b1N0YXRlID09PSAnY2xvc2VkJyk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGZpZWxkc2V0XHJcbiAgICBjbGFzcz1cIm1iLVsxMHB4XSBtaW4taC1bNC41ZW1dIHctZnVsbCBtaW4tdy0wIHJvdW5kZWQteGJpZyBib3JkZXIgYm9yZGVyLWdyYXlzY2FsZS0yMCBiZy1ncmF5c2NhbGUtMCBweC0yIHB5LTEuNVwiXHJcbj5cclxuICAgIDxsZWdlbmRcclxuICAgICAgICBjbGFzcz1cIm1sLTQgZmxleCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgZ2FwLTEgcHgtMSBmb250LW9wZW4tc2FucyB0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LWdyYXlzY2FsZS05MFwiXHJcbiAgICAgICAgW2NsYXNzLmN1cnNvci1wb2ludGVyXT1cInRvZ2dsZWFibGUoKVwiXHJcbiAgICAgICAgKHNJbnRlcmFjdGl2ZUNvbnRlbnQpPVwidG9nZ2xlQWN0aXZlKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICAgIEBpZiAodG9nZ2xlYWJsZSgpKSB7XHJcbiAgICAgICAgICAgIEBpZiAoYWN0aXZlKCkpIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGxldCBfaGVhZGVyVGVtcGxhdGUgPSBoZWFkZXJUZW1wbGF0ZSgpO1xyXG4gICAgICAgIEBpZiAoX2hlYWRlclRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgQGlmIChpY29uKCkpIHtcclxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpY29uKClcIj48L2k+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAge3sgbGVnZW5kKCkgfX1cclxuICAgICAgICB9XHJcbiAgICA8L2xlZ2VuZD5cclxuICAgIEBpZiAoZGVzdHJveU9uSGlkZSgpID8gKHRvZ2dsZWFibGUoKSA/IGFjdGl2ZSgpIDogdHJ1ZSkgOiB0cnVlKSB7XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbQHRvZ2dsZUFuaW1hdGlvbl09XCJkZXN0cm95T25IaWRlKCkgPyBudWxsIDogYWN0aXZlKCkgPyAnb3BlbicgOiAnY2xvc2VkJ1wiXHJcbiAgICAgICAgICAgIChAdG9nZ2xlQW5pbWF0aW9uLmRvbmUpPVwib25Ub2dnbGVBbmltYXRpb25Eb25lKCRldmVudClcIlxyXG4gICAgICAgICAgICBbY2xhc3Mub3ZlcmZsb3ctaGlkZGVuXT1cImNvbGxhcHNlZCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEBsZXQgX2JvZHlUZW1wbGF0ZSA9IGJvZHlUZW1wbGF0ZSgpO1xyXG4gICAgICAgICAgICBAaWYgKF9ib2R5VGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfYm9keVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbjwvZmllbGRzZXQ+XHJcbiJdfQ==
|
|
@@ -11,6 +11,8 @@ import { SpotlightTourService } from '@seniorsistemas/angular-components/spotlig
|
|
|
11
11
|
import { takeUntil, Subject, delay } from 'rxjs';
|
|
12
12
|
import * as i1$2 from '@seniorsistemas/angular-components/fieldset';
|
|
13
13
|
import { FieldsetModule } from '@seniorsistemas/angular-components/fieldset';
|
|
14
|
+
import * as i12 from '@seniorsistemas/angular-components/template';
|
|
15
|
+
import { TemplateDirective, TemplateModule } from '@seniorsistemas/angular-components/template';
|
|
14
16
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
15
17
|
import * as i3$1 from '@seniorsistemas/angular-components/tooltip';
|
|
16
18
|
import { TooltipDirective, TooltipModule } from '@seniorsistemas/angular-components/tooltip';
|
|
@@ -33,8 +35,6 @@ import { MaskFormatterModule } from '@seniorsistemas/angular-components/mask';
|
|
|
33
35
|
import { CheckDisabled } from '@seniorsistemas/angular-components/shared';
|
|
34
36
|
import * as i11 from '@seniorsistemas/angular-components/table-header';
|
|
35
37
|
import { TableHeaderCheckboxModule } from '@seniorsistemas/angular-components/table-header';
|
|
36
|
-
import * as i12 from '@seniorsistemas/angular-components/template';
|
|
37
|
-
import { TemplateModule } from '@seniorsistemas/angular-components/template';
|
|
38
38
|
import { HotkeysService, Hotkey } from 'angular2-hotkeys';
|
|
39
39
|
import BigNumber from 'bignumber.js';
|
|
40
40
|
import * as i1$3 from 'primeng/autocomplete';
|
|
@@ -376,11 +376,11 @@ class FieldsetComponent {
|
|
|
376
376
|
group = input.required();
|
|
377
377
|
errorMessages = input();
|
|
378
378
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
379
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "ng-component", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (
|
|
379
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "ng-component", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (beforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (afterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n <ng-template sTemplate=\"body\">\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n </ng-template>\n</s-fieldset>\n\n", dependencies: [{ kind: "directive", type: DynamicFormDirective, selector: "[sDynamicForm]", inputs: ["sDynamicForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "component", type: i1$2.FieldsetComponent, selector: "s-fieldset", inputs: ["legend", "toggleable", "icon", "destroyOnHide", "active"], outputs: ["beforeToggle", "afterToggle", "activeChange"] }, { kind: "directive", type: TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }] });
|
|
380
380
|
}
|
|
381
381
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, decorators: [{
|
|
382
382
|
type: Component,
|
|
383
|
-
args: [{ standalone: true, imports: [DynamicFormDirective, FieldsetModule], template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (
|
|
383
|
+
args: [{ standalone: true, imports: [DynamicFormDirective, FieldsetModule, TemplateDirective], template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (beforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (afterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n <ng-template sTemplate=\"body\">\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n </ng-template>\n</s-fieldset>\n\n" }]
|
|
384
384
|
}] });
|
|
385
385
|
|
|
386
386
|
class SectionComponent {
|