@praxisui/core 0.0.1 → 1.0.0-beta.10
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 +81 -21
- package/fesm2022/praxisui-core.mjs +290 -31
- 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,17 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @praxisui/core
|
|
2
2
|
|
|
3
3
|
> Biblioteca central com interfaces e serviços fundamentais para o Praxis UI Workspace
|
|
4
4
|
|
|
5
5
|
## 🌟 Visão Geral
|
|
6
6
|
|
|
7
|
-
A biblioteca `@
|
|
7
|
+
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
8
|
|
|
9
9
|
### Concept Usage
|
|
10
10
|
|
|
11
|
-
- [Dynamic Component Rendering](
|
|
12
|
-
- [Headless UI & Design Systems](
|
|
13
|
-
- [Configuration‑driven development](
|
|
14
|
-
- [Declarative UI](
|
|
11
|
+
- [Dynamic Component Rendering](https://github.com/codexrodrigues/praxis/blob/main/docs/concepts/dynamic-component-rendering.md)
|
|
12
|
+
- [Headless UI & Design Systems](https://github.com/codexrodrigues/praxis/blob/main/docs/concepts/headless-ui-and-design-systems.md)
|
|
13
|
+
- [Configuration‑driven development](https://github.com/codexrodrigues/praxis/blob/main/docs/concepts/configuration-driven-development.md)
|
|
14
|
+
- [Declarative UI](https://github.com/codexrodrigues/praxis/blob/main/docs/concepts/declarative-ui.md)
|
|
15
15
|
|
|
16
16
|
## ✨ Características Principais
|
|
17
17
|
|
|
@@ -32,7 +32,7 @@ A biblioteca `@praxis/core` é o núcleo do Praxis UI Workspace, fornecendo inte
|
|
|
32
32
|
## 🚀 Instalação
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
npm install @
|
|
35
|
+
npm install @praxisui/core
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
### Peer dependencies (Angular v20)
|
|
@@ -48,7 +48,7 @@ npm install @praxis/core
|
|
|
48
48
|
```ts
|
|
49
49
|
import { Component } from '@angular/core';
|
|
50
50
|
import { MatIconModule } from '@angular/material/icon';
|
|
51
|
-
import { PraxisIconDirective } from '@
|
|
51
|
+
import { PraxisIconDirective } from '@praxisui/core';
|
|
52
52
|
|
|
53
53
|
@Component({
|
|
54
54
|
selector: 'app-icons-demo',
|
|
@@ -68,7 +68,7 @@ export class IconsDemoComponent {}
|
|
|
68
68
|
|
|
69
69
|
```ts
|
|
70
70
|
import { Component } from '@angular/core';
|
|
71
|
-
import { DynamicGridPageComponent, GridPageDefinition } from '@
|
|
71
|
+
import { DynamicGridPageComponent, GridPageDefinition } from '@praxisui/core';
|
|
72
72
|
|
|
73
73
|
@Component({
|
|
74
74
|
selector: 'app-grid-demo',
|
|
@@ -101,11 +101,71 @@ Observação: os IDs de widgets usados na página devem estar registrados via `C
|
|
|
101
101
|
|
|
102
102
|
## 📚 API Surface
|
|
103
103
|
|
|
104
|
-
- Exports públicos: consulte
|
|
104
|
+
- Exports públicos: consulte o arquivo
|
|
105
|
+
[`public-api.ts`](https://github.com/codexrodrigues/praxis/blob/main/frontend-libs/praxis-ui-workspace/projects/praxis-core/src/public-api.ts)
|
|
106
|
+
para a lista consolidada de serviços, tokens, modelos e utilitários disponíveis para importação.
|
|
107
|
+
|
|
108
|
+
## 🔎 Schema Viewer (para Showcases)
|
|
109
|
+
|
|
110
|
+
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`.
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
import { Component, Provider } from '@angular/core';
|
|
114
|
+
import { PraxisTabs, TabsMetadata } from '@praxisui/tabs';
|
|
115
|
+
import { SchemaViewerComponent, SCHEMA_VIEWER_CONTEXT } from '@praxisui/core';
|
|
116
|
+
|
|
117
|
+
@Component({
|
|
118
|
+
standalone: true,
|
|
119
|
+
selector: 'app-tabs-showcase',
|
|
120
|
+
imports: [PraxisTabs, SchemaViewerComponent],
|
|
121
|
+
template: `
|
|
122
|
+
<!-- Aba Preview -->
|
|
123
|
+
<praxis-tabs [config]="tabs"></praxis-tabs>
|
|
124
|
+
|
|
125
|
+
<!-- Aba Schema -->
|
|
126
|
+
<praxis-schema-viewer [context]="schemaCtx"></praxis-schema-viewer>
|
|
127
|
+
`,
|
|
128
|
+
providers: [
|
|
129
|
+
{
|
|
130
|
+
provide: SCHEMA_VIEWER_CONTEXT,
|
|
131
|
+
useFactory: () => ({
|
|
132
|
+
componentId: 'praxis-tabs',
|
|
133
|
+
title: 'Tabs — Schema & Metadata',
|
|
134
|
+
rawConfig: {
|
|
135
|
+
group: { alignTabs: 'center', dynamicHeight: true },
|
|
136
|
+
tabs: [ { id: 't1', textLabel: 'Dados', content: [] } ],
|
|
137
|
+
} satisfies TabsMetadata,
|
|
138
|
+
}),
|
|
139
|
+
} as Provider,
|
|
140
|
+
],
|
|
141
|
+
})
|
|
142
|
+
export class TabsShowcaseComponent {
|
|
143
|
+
tabs: TabsMetadata = { group: { dynamicHeight: true }, tabs: [] };
|
|
144
|
+
schemaCtx = {
|
|
145
|
+
componentId: 'praxis-tabs',
|
|
146
|
+
rawConfig: this.tabs,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Campos opcionais do contexto (`SchemaViewerContext`):
|
|
152
|
+
- `rawConfig` (JSON usado pelo exemplo), `effectiveConfig` (se houver merge de defaults);
|
|
153
|
+
- `backendSchema` (OpenAPI/JSON Schema) e `schemaMeta` (path/operation/schemaType/schemaHash);
|
|
154
|
+
- `normalizedFields` (se já normalizado; caso contrário, o componente aplica `SchemaNormalizerService`).
|
|
105
155
|
|
|
106
156
|
## 🧩 Compatibilidade
|
|
107
157
|
|
|
108
|
-
- `@
|
|
158
|
+
- `@praxisui/core` `1.0.0-beta.x` → Angular `20.x`
|
|
159
|
+
|
|
160
|
+
## 📦 Publicação
|
|
161
|
+
|
|
162
|
+
- Pacote ESM, gerado via `ng-packagr`.
|
|
163
|
+
- Licença: Apache-2.0 (incluída no pacote).
|
|
164
|
+
- Repositório e issues: [GitHub](https://github.com/codexrodrigues/praxis).
|
|
165
|
+
|
|
166
|
+
## 📄 Licença
|
|
167
|
+
|
|
168
|
+
Apache-2.0 — veja o arquivo `LICENSE` incluído no pacote.
|
|
109
169
|
- Module format: `ESM2022`
|
|
110
170
|
|
|
111
171
|
## 📝 Interfaces Principais
|
|
@@ -485,7 +545,7 @@ class TableConfigService {
|
|
|
485
545
|
### Exemplo de Uso do Serviço
|
|
486
546
|
|
|
487
547
|
```typescript
|
|
488
|
-
import { TableConfigService } from '@
|
|
548
|
+
import { TableConfigService } from '@praxisui/core';
|
|
489
549
|
|
|
490
550
|
@Component({...})
|
|
491
551
|
export class MyComponent {
|
|
@@ -512,7 +572,7 @@ export class MyComponent {
|
|
|
512
572
|
### Configuração Padrão
|
|
513
573
|
|
|
514
574
|
```typescript
|
|
515
|
-
import { createDefaultTableConfig } from "@
|
|
575
|
+
import { createDefaultTableConfig } from "@praxisui/core";
|
|
516
576
|
|
|
517
577
|
// Criar configuração padrão
|
|
518
578
|
const defaultConfig = createDefaultTableConfig();
|
|
@@ -529,7 +589,7 @@ console.log(defaultConfig);
|
|
|
529
589
|
### Validação
|
|
530
590
|
|
|
531
591
|
```typescript
|
|
532
|
-
import { isValidTableConfig, isTableConfigV2 } from '@
|
|
592
|
+
import { isValidTableConfig, isTableConfigV2 } from '@praxisui/core';
|
|
533
593
|
|
|
534
594
|
// Validar configuração
|
|
535
595
|
const config = { columns: [...] };
|
|
@@ -546,7 +606,7 @@ if (isTableConfigV2(config)) {
|
|
|
546
606
|
### Manipulação de Configurações
|
|
547
607
|
|
|
548
608
|
```typescript
|
|
549
|
-
import { cloneTableConfig, mergeTableConfigs, getEssentialConfig } from "@
|
|
609
|
+
import { cloneTableConfig, mergeTableConfigs, getEssentialConfig } from "@praxisui/core";
|
|
550
610
|
|
|
551
611
|
// Clonar configuração
|
|
552
612
|
const clonedConfig = cloneTableConfig(originalConfig);
|
|
@@ -590,13 +650,13 @@ function mergeTableConfigs(base: TableConfig, override: Partial<TableConfig>): T
|
|
|
590
650
|
function getEssentialConfig(config: TableConfig): Partial<TableConfig>;
|
|
591
651
|
```
|
|
592
652
|
|
|
593
|
-
## 🧪 Testando com @
|
|
653
|
+
## 🧪 Testando com @praxisui/core
|
|
594
654
|
|
|
595
655
|
### Setup de Testes
|
|
596
656
|
|
|
597
657
|
```typescript
|
|
598
658
|
import { TestBed } from "@angular/core/testing";
|
|
599
|
-
import { TableConfigService } from "@
|
|
659
|
+
import { TableConfigService } from "@praxisui/core";
|
|
600
660
|
|
|
601
661
|
describe("TableConfigService", () => {
|
|
602
662
|
let service: TableConfigService;
|
|
@@ -626,7 +686,7 @@ describe("TableConfigService", () => {
|
|
|
626
686
|
### Testes de Helper Functions
|
|
627
687
|
|
|
628
688
|
```typescript
|
|
629
|
-
import { createDefaultTableConfig, isValidTableConfig, cloneTableConfig } from "@
|
|
689
|
+
import { createDefaultTableConfig, isValidTableConfig, cloneTableConfig } from "@praxisui/core";
|
|
630
690
|
|
|
631
691
|
describe("Helper Functions", () => {
|
|
632
692
|
it("should create valid default config", () => {
|
|
@@ -657,17 +717,17 @@ describe("Helper Functions", () => {
|
|
|
657
717
|
|
|
658
718
|
```typescript
|
|
659
719
|
// Antes
|
|
660
|
-
import { TableConfigV1, TableConfigV2, TableConfigUnified } from "@
|
|
720
|
+
import { TableConfigV1, TableConfigV2, TableConfigUnified } from "@praxisui/core";
|
|
661
721
|
|
|
662
722
|
// Depois
|
|
663
|
-
import { TableConfig } from "@
|
|
723
|
+
import { TableConfig } from "@praxisui/core";
|
|
664
724
|
```
|
|
665
725
|
|
|
666
726
|
2. **Serviços Simplificados**:
|
|
667
727
|
|
|
668
728
|
```typescript
|
|
669
729
|
// Antes
|
|
670
|
-
import { TableConfigAdapterService, TableConfigMigrationService } from "@
|
|
730
|
+
import { TableConfigAdapterService, TableConfigMigrationService } from "@praxisui/core";
|
|
671
731
|
|
|
672
732
|
// Depois
|
|
673
733
|
import { TableConfigService } from "@praxisui/core";
|