@praxisui/list 9.0.0-beta.6 → 9.0.0-beta.7

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/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@praxisui/list",
3
- "version": "9.0.0-beta.6",
3
+ "version": "9.0.0-beta.7",
4
4
  "description": "List components and helpers for Praxis UI.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
8
  "@angular/material": "^21.0.0",
9
- "@praxisui/dynamic-fields": "^9.0.0-beta.6",
9
+ "@praxisui/dynamic-fields": "^9.0.0-beta.7",
10
10
  "rxjs": ">=7 <9",
11
11
  "@angular/forms": "^21.0.0",
12
12
  "@angular/router": "^21.0.0",
13
- "@praxisui/ai": "^9.0.0-beta.6",
14
- "@praxisui/core": "^9.0.0-beta.6",
15
- "@praxisui/rich-content": "^9.0.0-beta.6",
16
- "@praxisui/settings-panel": "^9.0.0-beta.6"
13
+ "@praxisui/ai": "^9.0.0-beta.7",
14
+ "@praxisui/core": "^9.0.0-beta.7",
15
+ "@praxisui/rich-content": "^9.0.0-beta.7",
16
+ "@praxisui/settings-panel": "^9.0.0-beta.7"
17
17
  },
18
18
  "dependencies": {
19
19
  "tslib": "^2.3.0",
@@ -312,6 +312,10 @@ A integracao com host ocorre por `SettingsValueProvider`:
312
312
  | `layout.stickySectionHeader` | Active | Toggle dedicado. |
313
313
  | `layout.virtualScroll` | Active | Toggle dedicado (mesmo que runtime possa nao aplicar). |
314
314
  | `layout.pageSize` | Active | Numero inteiro >= 1. |
315
+ | `layout.rowLayout.type/columns/gap/itemAlignY/class/style` | Active | Editor guiado de colunas estaveis para listas corporativas. |
316
+ | `export.enabled/formats/general.*` | Active | Editor guiado de formatos, escopo, cabecalhos, limite, nome de arquivo, formatacao e campos incluidos. |
317
+ | `interaction.expandable/expandTrigger/expandMode/expandPlacement` | Active | Editor guiado de comportamento expansivel da linha. |
318
+ | `expansion.sections/rendering` | Active | Editor guiado para secoes inline e shell visual da expansao. |
315
319
  | `skin.type` | Active | Presets + selecao manual. |
316
320
  | `skin.gradient/radius/shadow/border/backdropBlur/class/inlineStyle` | Active | Edicao direta + presets. |
317
321
  | `selection.mode` | Active | `none/single/multiple`. |
@@ -336,7 +340,18 @@ A integracao com host ocorre por `SettingsValueProvider`:
336
340
  | `ui.showRange` | Active | Toggle dedicado. |
337
341
  | `i18n.locale/currency` | Active | Usado em formatacao de preview/runtime. |
338
342
  | `a11y.ariaLabel/ariaLabelledBy/highContrast/reduceMotion` | Active | Editavel no tab de acessibilidade. |
339
- | `events.itemClick/actionClick/selectionChange/loaded` | Active | Mapeamentos editaveis no tab de eventos. |
343
+ | `events.itemClick/actionClick/selectionChange/exportAction/loaded` | Active | Mapeamentos editaveis no tab de eventos. |
344
+
345
+ ### Coverage inventory for runtime/editor parity
346
+
347
+ | Area | Adherence | Current editor coverage | Recommended next step |
348
+ | --- | --- | --- | --- |
349
+ | `events.exportAction` | ja-suportado-so-ux | Campo visual no tab de eventos. | Manter coberto por spec focal de round-trip. |
350
+ | `layout.rowLayout` | ja-suportado-so-ux | Editor guiado cobre ativacao, preset corporativo, tipo, colunas, largura, alinhamento, gap e CSS avancado. | Evoluir depois com preview visual por slot e warnings inline para slots sem template. |
351
+ | `export` | ja-suportado-so-ux | Editor guiado cobre habilitacao, formatos, escopo, cabecalhos, limite, nome de arquivo, formatacao e campos incluidos. | Evoluir depois com preview do payload de exportacao e validacao visual de campo inexistente. |
352
+ | `interaction`/`expansion` | suportado-parcialmente | Editor guiado cobre interacao expansivel, secoes inline e rendering; `dataSource` remoto e `schemaContract` continuam JSON-only. | Evoluir fonte remota/schemaContract apenas com validacao de seguranca e prova runtime. |
353
+ | `rules.itemStyles`/`rules.slotOverrides` | suportado-parcialmente | Runtime e validacao aplicam regras condicionais; authoring visual dedicado ainda ausente. | Criar editor de regras com Json Logic assistido e preview de impacto por slot. |
354
+ | `dataSource.data` | ja-suportado-mal-nomeado-ou-mal-materializado | Round-trip por JSON, sem editor visual de dataset local. | Manter JSON-only para datasets grandes; considerar import/preview separado se houver demanda operacional. |
340
355
 
341
356
  ### Validacao Estrutural
342
357
 
@@ -429,9 +444,13 @@ ref.saved$.subscribe((payload) => {
429
444
  ### Known limitations and pending investigation
430
445
 
431
446
  1. Nao existe editor dedicado para `dataSource.data` (dataset local grande).
432
- 2. O editor preserva em JSON/config campos declared-only que podem nao ter efeito no runtime final, mas nao deve promove-los como controles visuais ativos.
433
- 3. `isDirty$` usa comparacao por snapshot JSON; mudancas de ordenacao de chaves/objetos podem gerar ruido em cenarios extremos.
434
- 4. Conversao automatica de `globalAction.payload` string para JSON e heuristica (so quando formato parece objeto/array).
447
+ 2. `rules` possui suporte runtime/capability maior do que a cobertura visual atual do editor; essa area deve evoluir por configurador guiado, nao por contrato paralelo.
448
+ 3. `layout.rowLayout` possui editor guiado basico, mas ainda nao tem preview visual por slot nem warnings inline dedicados para slots sem template.
449
+ 4. `export` possui editor guiado basico, mas ainda nao tem preview do payload final nem validacao visual dedicada para campo inexistente em `includeFields`.
450
+ 5. `expansion.dataSource` remoto e `expansion.schemaContract` permanecem JSON-only ate existir validacao visual e prova runtime especifica no componente.
451
+ 6. O editor preserva em JSON/config campos declared-only que podem nao ter efeito no runtime final, mas nao deve promove-los como controles visuais ativos.
452
+ 7. `isDirty$` usa comparacao por snapshot JSON; mudancas de ordenacao de chaves/objetos podem gerar ruido em cenarios extremos.
453
+ 8. Conversao automatica de `globalAction.payload` string para JSON e heuristica (so quando formato parece objeto/array).
435
454
 
436
455
  ### Source references
437
456
 
@@ -1142,6 +1142,7 @@ type NormalizedListConfig = Omit<PraxisListConfig, 'dataSource' | 'layout' | 'se
1142
1142
  stickySectionHeader?: boolean;
1143
1143
  virtualScroll?: boolean;
1144
1144
  pageSize?: number;
1145
+ rowLayout?: NonNullable<PraxisListConfig['layout']>['rowLayout'];
1145
1146
  };
1146
1147
  skin: {
1147
1148
  type: 'pill-soft' | 'gradient-tile' | 'glass' | 'elevated' | 'outline' | 'flat' | 'neumorphism' | 'custom';
@@ -1175,6 +1176,9 @@ type NormalizedListConfig = Omit<PraxisListConfig, 'dataSource' | 'layout' | 'se
1175
1176
  };
1176
1177
  type SkinType = NormalizedListConfig['skin']['type'];
1177
1178
  type SkinPreset = Exclude<SkinType, 'custom'>;
1179
+ type RowLayoutColumn = NonNullable<NonNullable<NonNullable<PraxisListConfig['layout']>['rowLayout']>['columns']>[number];
1180
+ type RowLayoutAlign = NonNullable<NonNullable<NonNullable<PraxisListConfig['layout']>['rowLayout']>['align']>;
1181
+ type ListExpansionRendering = NonNullable<NonNullable<PraxisListConfig['expansion']>['rendering']>;
1178
1182
  declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1179
1183
  config: PraxisListConfig;
1180
1184
  listId?: string;
@@ -1320,6 +1324,18 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1320
1324
  field?: string;
1321
1325
  dir?: 'asc' | 'desc';
1322
1326
  }>;
1327
+ readonly rowLayoutSlotOptions: ListRowLayoutSlot[];
1328
+ readonly rowLayoutAlignOptions: RowLayoutAlign[];
1329
+ readonly rowLayoutColumnAlignOptions: Array<NonNullable<RowLayoutColumn['align']>>;
1330
+ readonly rowLayoutJustifyOptions: Array<NonNullable<RowLayoutColumn['justify']>>;
1331
+ readonly exportFormatOptions: PraxisExportFormat[];
1332
+ readonly exportScopeOptions: PraxisExportScope[];
1333
+ readonly expandTriggerOptions: Array<NonNullable<NonNullable<PraxisListConfig['interaction']>['expandTrigger']>>;
1334
+ readonly expandModeOptions: Array<NonNullable<NonNullable<PraxisListConfig['interaction']>['expandMode']>>;
1335
+ readonly expandPlacementOptions: Array<NonNullable<NonNullable<PraxisListConfig['interaction']>['expandPlacement']>>;
1336
+ readonly expansionSectionTypeOptions: ListExpansionSectionType[];
1337
+ readonly expansionShellOptions: Array<NonNullable<ListExpansionRendering['shell']>>;
1338
+ readonly expansionColumnOptions: Array<NonNullable<ListExpansionRendering['columns']>>;
1323
1339
  mappingMetaFields: string[];
1324
1340
  mappingMetaSeparator: string;
1325
1341
  mappingMetaWrapSecondInParens: boolean;
@@ -1482,6 +1498,16 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1482
1498
  ngDoCheck(): void;
1483
1499
  reset(): void;
1484
1500
  onLayoutChanged(): void;
1501
+ rowLayoutEnabled(): boolean;
1502
+ onRowLayoutEnabledChange(enabled: boolean): void;
1503
+ applyCorporateRowLayoutPreset(): void;
1504
+ addRowLayoutColumn(): void;
1505
+ removeRowLayoutColumn(index: number): void;
1506
+ moveRowLayoutColumn(index: number, direction: -1 | 1): void;
1507
+ onRowLayoutChanged(): void;
1508
+ private ensureRowLayoutDraft;
1509
+ private defaultRowLayout;
1510
+ private nextRowLayoutSlot;
1485
1511
  onSelectionChanged(): void;
1486
1512
  onSkinGradientChanged(prop: 'from' | 'to' | 'angle', value: string | number): void;
1487
1513
  onSkinTypeChanged(type: SkinType): void;
@@ -1490,6 +1516,43 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1490
1516
  onQueryChanged(value: string): void;
1491
1517
  onPageSizeChange(value: any): void;
1492
1518
  onUiChanged(): void;
1519
+ exportEnabled(): boolean;
1520
+ onExportEnabledChange(enabled: boolean): void;
1521
+ onExportChanged(): void;
1522
+ getExportFormatsModel(): PraxisExportFormat[];
1523
+ getExportScopeModel(): PraxisExportScope;
1524
+ getExportIncludeHeadersModel(): boolean;
1525
+ getExportApplyFormattingModel(): boolean;
1526
+ getExportMaxRowsModel(): number | undefined;
1527
+ getExportDefaultFileNameModel(): string;
1528
+ onExportFormatsChange(formats: PraxisExportFormat[]): void;
1529
+ onExportScopeChange(scope: PraxisExportScope): void;
1530
+ onExportDefaultFileNameChange(value: string): void;
1531
+ onExportIncludeHeadersChange(value: boolean): void;
1532
+ onExportApplyFormattingChange(value: boolean): void;
1533
+ onExportMaxRowsChange(value: any): void;
1534
+ getExportIncludeFieldsText(): string;
1535
+ onExportIncludeFieldsTextChange(value: string): void;
1536
+ private ensureExportDraft;
1537
+ expansionEnabled(): boolean;
1538
+ onExpansionEnabledChange(enabled: boolean): void;
1539
+ onExpansionChanged(): void;
1540
+ getExpandTriggerModel(): NonNullable<NonNullable<PraxisListConfig['interaction']>['expandTrigger']>;
1541
+ getExpandModeModel(): NonNullable<NonNullable<PraxisListConfig['interaction']>['expandMode']>;
1542
+ getExpandPlacementModel(): NonNullable<NonNullable<PraxisListConfig['interaction']>['expandPlacement']>;
1543
+ onExpansionInteractionChanged(prop: 'expandTrigger' | 'expandMode' | 'expandPlacement', value: string): void;
1544
+ getExpansionShellModel(): NonNullable<ListExpansionRendering['shell']>;
1545
+ getExpansionColumnsModel(): NonNullable<ListExpansionRendering['columns']>;
1546
+ getExpansionGapModel(): string;
1547
+ getExpansionPaddingModel(): string;
1548
+ onExpansionRenderingChanged(prop: 'shell' | 'columns' | 'gap' | 'padding', value: string | number): void;
1549
+ addExpansionSection(): void;
1550
+ removeExpansionSection(index: number): void;
1551
+ moveExpansionSection(index: number, direction: -1 | 1): void;
1552
+ onExpansionSectionShowIfChanged(section: ListExpansionSectionDef, raw: string): void;
1553
+ getExpansionSectionShowIfText(section: ListExpansionSectionDef): string;
1554
+ private ensureExpansionDraft;
1555
+ private defaultExpansionSection;
1493
1556
  onSkeletonChanged(value: any): void;
1494
1557
  addUiSortRow(): void;
1495
1558
  removeUiSortRow(i: number): void;