@praxisui/core 1.0.0-beta.1 → 1.0.0-beta.11
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 +91 -21
- package/fesm2022/praxisui-core.mjs +332 -34
- package/fesm2022/praxisui-core.mjs.map +1 -1
- package/index.d.ts +257 -3
- package/package.json +12 -1
package/README.md
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @praxisui/core
|
|
2
2
|
|
|
3
3
|
> Biblioteca central com interfaces e serviços fundamentais para o Praxis UI Workspace
|
|
4
4
|
|
|
5
|
+
## 🔰 Exemplos / Quickstart
|
|
6
|
+
|
|
7
|
+
Para ver esta biblioteca em funcionamento em uma aplicação completa, utilize o projeto de exemplo (Quickstart):
|
|
8
|
+
|
|
9
|
+
- Repositório: https://github.com/codexrodrigues/praxis-ui-quickstart
|
|
10
|
+
- O Quickstart demonstra a integração das bibliotecas `@praxisui/*` em um app Angular, incluindo instalação, configuração e uso em telas reais.
|
|
11
|
+
|
|
5
12
|
## 🌟 Visão Geral
|
|
6
13
|
|
|
7
|
-
A biblioteca `@
|
|
14
|
+
A biblioteca `@praxisui/core` é o núcleo do Praxis UI Workspace, fornecendo interfaces robustas, serviços base e utilitários essenciais para todas as outras bibliotecas do ecossistema. Com a arquitetura unificada, oferece uma experiência de desenvolvimento consistente e type-safe.
|
|
8
15
|
|
|
9
16
|
### Concept Usage
|
|
10
17
|
|
|
11
|
-
- [Dynamic Component Rendering](
|
|
12
|
-
- [Headless UI & Design Systems](
|
|
13
|
-
- [Configuration‑driven development](
|
|
14
|
-
- [Declarative UI](
|
|
18
|
+
- [Dynamic Component Rendering](https://github.com/codexrodrigues/praxis/blob/main/docs/concepts/dynamic-component-rendering.md)
|
|
19
|
+
- [Headless UI & Design Systems](https://github.com/codexrodrigues/praxis/blob/main/docs/concepts/headless-ui-and-design-systems.md)
|
|
20
|
+
- [Configuration‑driven development](https://github.com/codexrodrigues/praxis/blob/main/docs/concepts/configuration-driven-development.md)
|
|
21
|
+
- [Declarative UI](https://github.com/codexrodrigues/praxis/blob/main/docs/concepts/declarative-ui.md)
|
|
15
22
|
|
|
16
23
|
## ✨ Características Principais
|
|
17
24
|
|
|
@@ -32,9 +39,12 @@ A biblioteca `@praxis/core` é o núcleo do Praxis UI Workspace, fornecendo inte
|
|
|
32
39
|
## 🚀 Instalação
|
|
33
40
|
|
|
34
41
|
```bash
|
|
35
|
-
npm install @
|
|
42
|
+
npm install @praxisui/core
|
|
36
43
|
```
|
|
37
44
|
|
|
45
|
+
Exemplo completo (app de referência)
|
|
46
|
+
- Quickstart: https://github.com/codexrodrigues/praxis-ui-quickstart
|
|
47
|
+
|
|
38
48
|
### Peer dependencies (Angular v20)
|
|
39
49
|
|
|
40
50
|
- `@angular/core` `^20.0.0`
|
|
@@ -48,7 +58,7 @@ npm install @praxis/core
|
|
|
48
58
|
```ts
|
|
49
59
|
import { Component } from '@angular/core';
|
|
50
60
|
import { MatIconModule } from '@angular/material/icon';
|
|
51
|
-
import { PraxisIconDirective } from '@
|
|
61
|
+
import { PraxisIconDirective } from '@praxisui/core';
|
|
52
62
|
|
|
53
63
|
@Component({
|
|
54
64
|
selector: 'app-icons-demo',
|
|
@@ -68,7 +78,7 @@ export class IconsDemoComponent {}
|
|
|
68
78
|
|
|
69
79
|
```ts
|
|
70
80
|
import { Component } from '@angular/core';
|
|
71
|
-
import { DynamicGridPageComponent, GridPageDefinition } from '@
|
|
81
|
+
import { DynamicGridPageComponent, GridPageDefinition } from '@praxisui/core';
|
|
72
82
|
|
|
73
83
|
@Component({
|
|
74
84
|
selector: 'app-grid-demo',
|
|
@@ -101,11 +111,71 @@ Observação: os IDs de widgets usados na página devem estar registrados via `C
|
|
|
101
111
|
|
|
102
112
|
## 📚 API Surface
|
|
103
113
|
|
|
104
|
-
- Exports públicos: consulte
|
|
114
|
+
- Exports públicos: consulte o arquivo
|
|
115
|
+
[`public-api.ts`](https://github.com/codexrodrigues/praxis/blob/main/frontend-libs/praxis-ui-workspace/projects/praxis-core/src/public-api.ts)
|
|
116
|
+
para a lista consolidada de serviços, tokens, modelos e utilitários disponíveis para importação.
|
|
117
|
+
|
|
118
|
+
## 🔎 Schema Viewer (para Showcases)
|
|
119
|
+
|
|
120
|
+
Para exibir os metadados e schemas usados por um exemplo (ex.: na aba “Schema” de um showcase), use o componente `SchemaViewerComponent` e (opcionalmente) injete o contexto via `SCHEMA_VIEWER_CONTEXT`.
|
|
121
|
+
|
|
122
|
+
```ts
|
|
123
|
+
import { Component, Provider } from '@angular/core';
|
|
124
|
+
import { PraxisTabs, TabsMetadata } from '@praxisui/tabs';
|
|
125
|
+
import { SchemaViewerComponent, SCHEMA_VIEWER_CONTEXT } from '@praxisui/core';
|
|
126
|
+
|
|
127
|
+
@Component({
|
|
128
|
+
standalone: true,
|
|
129
|
+
selector: 'app-tabs-showcase',
|
|
130
|
+
imports: [PraxisTabs, SchemaViewerComponent],
|
|
131
|
+
template: `
|
|
132
|
+
<!-- Aba Preview -->
|
|
133
|
+
<praxis-tabs [config]="tabs"></praxis-tabs>
|
|
134
|
+
|
|
135
|
+
<!-- Aba Schema -->
|
|
136
|
+
<praxis-schema-viewer [context]="schemaCtx"></praxis-schema-viewer>
|
|
137
|
+
`,
|
|
138
|
+
providers: [
|
|
139
|
+
{
|
|
140
|
+
provide: SCHEMA_VIEWER_CONTEXT,
|
|
141
|
+
useFactory: () => ({
|
|
142
|
+
componentId: 'praxis-tabs',
|
|
143
|
+
title: 'Tabs — Schema & Metadata',
|
|
144
|
+
rawConfig: {
|
|
145
|
+
group: { alignTabs: 'center', dynamicHeight: true },
|
|
146
|
+
tabs: [ { id: 't1', textLabel: 'Dados', content: [] } ],
|
|
147
|
+
} satisfies TabsMetadata,
|
|
148
|
+
}),
|
|
149
|
+
} as Provider,
|
|
150
|
+
],
|
|
151
|
+
})
|
|
152
|
+
export class TabsShowcaseComponent {
|
|
153
|
+
tabs: TabsMetadata = { group: { dynamicHeight: true }, tabs: [] };
|
|
154
|
+
schemaCtx = {
|
|
155
|
+
componentId: 'praxis-tabs',
|
|
156
|
+
rawConfig: this.tabs,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Campos opcionais do contexto (`SchemaViewerContext`):
|
|
162
|
+
- `rawConfig` (JSON usado pelo exemplo), `effectiveConfig` (se houver merge de defaults);
|
|
163
|
+
- `backendSchema` (OpenAPI/JSON Schema) e `schemaMeta` (path/operation/schemaType/schemaHash);
|
|
164
|
+
- `normalizedFields` (se já normalizado; caso contrário, o componente aplica `SchemaNormalizerService`).
|
|
105
165
|
|
|
106
166
|
## 🧩 Compatibilidade
|
|
107
167
|
|
|
108
|
-
- `@
|
|
168
|
+
- `@praxisui/core` `1.0.0-beta.x` → Angular `20.x`
|
|
169
|
+
|
|
170
|
+
## 📦 Publicação
|
|
171
|
+
|
|
172
|
+
- Pacote ESM, gerado via `ng-packagr`.
|
|
173
|
+
- Licença: Apache-2.0 (incluída no pacote).
|
|
174
|
+
- Repositório e issues: [GitHub](https://github.com/codexrodrigues/praxis).
|
|
175
|
+
|
|
176
|
+
## 📄 Licença
|
|
177
|
+
|
|
178
|
+
Apache-2.0 — veja o arquivo `LICENSE` incluído no pacote.
|
|
109
179
|
- Module format: `ESM2022`
|
|
110
180
|
|
|
111
181
|
## 📝 Interfaces Principais
|
|
@@ -485,7 +555,7 @@ class TableConfigService {
|
|
|
485
555
|
### Exemplo de Uso do Serviço
|
|
486
556
|
|
|
487
557
|
```typescript
|
|
488
|
-
import { TableConfigService } from '@
|
|
558
|
+
import { TableConfigService } from '@praxisui/core';
|
|
489
559
|
|
|
490
560
|
@Component({...})
|
|
491
561
|
export class MyComponent {
|
|
@@ -512,7 +582,7 @@ export class MyComponent {
|
|
|
512
582
|
### Configuração Padrão
|
|
513
583
|
|
|
514
584
|
```typescript
|
|
515
|
-
import { createDefaultTableConfig } from "@
|
|
585
|
+
import { createDefaultTableConfig } from "@praxisui/core";
|
|
516
586
|
|
|
517
587
|
// Criar configuração padrão
|
|
518
588
|
const defaultConfig = createDefaultTableConfig();
|
|
@@ -529,7 +599,7 @@ console.log(defaultConfig);
|
|
|
529
599
|
### Validação
|
|
530
600
|
|
|
531
601
|
```typescript
|
|
532
|
-
import { isValidTableConfig, isTableConfigV2 } from '@
|
|
602
|
+
import { isValidTableConfig, isTableConfigV2 } from '@praxisui/core';
|
|
533
603
|
|
|
534
604
|
// Validar configuração
|
|
535
605
|
const config = { columns: [...] };
|
|
@@ -546,7 +616,7 @@ if (isTableConfigV2(config)) {
|
|
|
546
616
|
### Manipulação de Configurações
|
|
547
617
|
|
|
548
618
|
```typescript
|
|
549
|
-
import { cloneTableConfig, mergeTableConfigs, getEssentialConfig } from "@
|
|
619
|
+
import { cloneTableConfig, mergeTableConfigs, getEssentialConfig } from "@praxisui/core";
|
|
550
620
|
|
|
551
621
|
// Clonar configuração
|
|
552
622
|
const clonedConfig = cloneTableConfig(originalConfig);
|
|
@@ -590,13 +660,13 @@ function mergeTableConfigs(base: TableConfig, override: Partial<TableConfig>): T
|
|
|
590
660
|
function getEssentialConfig(config: TableConfig): Partial<TableConfig>;
|
|
591
661
|
```
|
|
592
662
|
|
|
593
|
-
## 🧪 Testando com @
|
|
663
|
+
## 🧪 Testando com @praxisui/core
|
|
594
664
|
|
|
595
665
|
### Setup de Testes
|
|
596
666
|
|
|
597
667
|
```typescript
|
|
598
668
|
import { TestBed } from "@angular/core/testing";
|
|
599
|
-
import { TableConfigService } from "@
|
|
669
|
+
import { TableConfigService } from "@praxisui/core";
|
|
600
670
|
|
|
601
671
|
describe("TableConfigService", () => {
|
|
602
672
|
let service: TableConfigService;
|
|
@@ -626,7 +696,7 @@ describe("TableConfigService", () => {
|
|
|
626
696
|
### Testes de Helper Functions
|
|
627
697
|
|
|
628
698
|
```typescript
|
|
629
|
-
import { createDefaultTableConfig, isValidTableConfig, cloneTableConfig } from "@
|
|
699
|
+
import { createDefaultTableConfig, isValidTableConfig, cloneTableConfig } from "@praxisui/core";
|
|
630
700
|
|
|
631
701
|
describe("Helper Functions", () => {
|
|
632
702
|
it("should create valid default config", () => {
|
|
@@ -657,17 +727,17 @@ describe("Helper Functions", () => {
|
|
|
657
727
|
|
|
658
728
|
```typescript
|
|
659
729
|
// Antes
|
|
660
|
-
import { TableConfigV1, TableConfigV2, TableConfigUnified } from "@
|
|
730
|
+
import { TableConfigV1, TableConfigV2, TableConfigUnified } from "@praxisui/core";
|
|
661
731
|
|
|
662
732
|
// Depois
|
|
663
|
-
import { TableConfig } from "@
|
|
733
|
+
import { TableConfig } from "@praxisui/core";
|
|
664
734
|
```
|
|
665
735
|
|
|
666
736
|
2. **Serviços Simplificados**:
|
|
667
737
|
|
|
668
738
|
```typescript
|
|
669
739
|
// Antes
|
|
670
|
-
import { TableConfigAdapterService, TableConfigMigrationService } from "@
|
|
740
|
+
import { TableConfigAdapterService, TableConfigMigrationService } from "@praxisui/core";
|
|
671
741
|
|
|
672
742
|
// Depois
|
|
673
743
|
import { TableConfigService } from "@praxisui/core";
|