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

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.8",
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.8",
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.8",
14
+ "@praxisui/core": "^9.0.0-beta.8",
15
+ "@praxisui/rich-content": "^9.0.0-beta.8",
16
+ "@praxisui/settings-panel": "^9.0.0-beta.8"
17
17
  },
18
18
  "dependencies": {
19
19
  "tslib": "^2.3.0",
@@ -312,6 +312,11 @@ 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. |
319
+ | `rules.itemStyles/slotOverrides` | Active | Editor guiado basico para Json Logic, classe, estilo, template de slot, ocultacao e primeiro `effects[]` canonico. |
315
320
  | `skin.type` | Active | Presets + selecao manual. |
316
321
  | `skin.gradient/radius/shadow/border/backdropBlur/class/inlineStyle` | Active | Edicao direta + presets. |
317
322
  | `selection.mode` | Active | `none/single/multiple`. |
@@ -336,7 +341,18 @@ A integracao com host ocorre por `SettingsValueProvider`:
336
341
  | `ui.showRange` | Active | Toggle dedicado. |
337
342
  | `i18n.locale/currency` | Active | Usado em formatacao de preview/runtime. |
338
343
  | `a11y.ariaLabel/ariaLabelledBy/highContrast/reduceMotion` | Active | Editavel no tab de acessibilidade. |
339
- | `events.itemClick/actionClick/selectionChange/loaded` | Active | Mapeamentos editaveis no tab de eventos. |
344
+ | `events.itemClick/actionClick/selectionChange/exportAction/loaded` | Active | Mapeamentos editaveis no tab de eventos. |
345
+
346
+ ### Coverage inventory for runtime/editor parity
347
+
348
+ | Area | Adherence | Current editor coverage | Recommended next step |
349
+ | --- | --- | --- | --- |
350
+ | `events.exportAction` | ja-suportado-so-ux | Campo visual no tab de eventos. | Manter coberto por spec focal de round-trip. |
351
+ | `layout.rowLayout` | ja-suportado-so-ux | Editor guiado cobre ativacao, preset corporativo, tipo, colunas, largura, alinhamento, gap, CSS avancado e warnings inline para slots sem materializacao. | Evoluir depois com preview visual por slot. |
352
+ | `export` | ja-suportado-so-ux | Editor guiado cobre habilitacao, formatos, escopo, cabecalhos, limite, nome de arquivo, formatacao, campos incluidos e warning para campo inexistente quando o schema esta carregado. | Evoluir depois com preview do payload de exportacao. |
353
+ | `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. |
354
+ | `rules.itemStyles`/`rules.slotOverrides` | ja-suportado-so-ux | Editor guiado cobre condicao Json Logic, estilo de item, override de slot, template basico, ocultacao e primeira materializacao canonica `effects[0]`. | Evoluir depois com builder visual de Json Logic, preview por item e suporte multi-effect se o runtime passar a consumir mais de um efeito. |
355
+ | `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
356
 
341
357
  ### Validacao Estrutural
342
358
 
@@ -429,9 +445,13 @@ ref.saved$.subscribe((payload) => {
429
445
  ### Known limitations and pending investigation
430
446
 
431
447
  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).
448
+ 2. `rules` possui editor guiado basico com `effects[0]`, mas ainda nao tem builder visual de Json Logic, preview de impacto por item ou authoring multi-effect. O runtime atualmente materializa o primeiro efeito valido.
449
+ 3. `layout.rowLayout` possui editor guiado com warnings inline para slots sem materializacao, mas ainda nao tem preview visual por slot.
450
+ 4. `export` possui editor guiado com warning de `includeFields` desconhecido quando o schema esta carregado, mas ainda nao tem preview do payload final.
451
+ 5. `expansion.dataSource` remoto e `expansion.schemaContract` permanecem JSON-only ate existir validacao visual e prova runtime especifica no componente.
452
+ 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.
453
+ 7. `isDirty$` usa comparacao por snapshot JSON; mudancas de ordenacao de chaves/objetos podem gerar ruido em cenarios extremos.
454
+ 8. Conversao automatica de `globalAction.payload` string para JSON e heuristica (so quando formato parece objeto/array).
435
455
 
436
456
  ### Source references
437
457
 
@@ -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,21 @@ 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 rowLayoutStructuralSlots: Set<ListRowLayoutSlot>;
1332
+ readonly exportFormatOptions: PraxisExportFormat[];
1333
+ readonly exportScopeOptions: PraxisExportScope[];
1334
+ readonly expandTriggerOptions: Array<NonNullable<NonNullable<PraxisListConfig['interaction']>['expandTrigger']>>;
1335
+ readonly expandModeOptions: Array<NonNullable<NonNullable<PraxisListConfig['interaction']>['expandMode']>>;
1336
+ readonly expandPlacementOptions: Array<NonNullable<NonNullable<PraxisListConfig['interaction']>['expandPlacement']>>;
1337
+ readonly expansionSectionTypeOptions: ListExpansionSectionType[];
1338
+ readonly expansionShellOptions: Array<NonNullable<ListExpansionRendering['shell']>>;
1339
+ readonly expansionColumnOptions: Array<NonNullable<ListExpansionRendering['columns']>>;
1340
+ readonly ruleSlotOptions: ListSlotOverrideRule['slot'][];
1341
+ readonly ruleTemplateTypeOptions: TemplateType[];
1323
1342
  mappingMetaFields: string[];
1324
1343
  mappingMetaSeparator: string;
1325
1344
  mappingMetaWrapSecondInParens: boolean;
@@ -1482,6 +1501,18 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1482
1501
  ngDoCheck(): void;
1483
1502
  reset(): void;
1484
1503
  onLayoutChanged(): void;
1504
+ rowLayoutEnabled(): boolean;
1505
+ onRowLayoutEnabledChange(enabled: boolean): void;
1506
+ applyCorporateRowLayoutPreset(): void;
1507
+ addRowLayoutColumn(): void;
1508
+ removeRowLayoutColumn(index: number): void;
1509
+ moveRowLayoutColumn(index: number, direction: -1 | 1): void;
1510
+ onRowLayoutChanged(): void;
1511
+ rowLayoutColumnWarning(column: RowLayoutColumn): string;
1512
+ private rowLayoutSlotHasMaterialization;
1513
+ private ensureRowLayoutDraft;
1514
+ private defaultRowLayout;
1515
+ private nextRowLayoutSlot;
1485
1516
  onSelectionChanged(): void;
1486
1517
  onSkinGradientChanged(prop: 'from' | 'to' | 'angle', value: string | number): void;
1487
1518
  onSkinTypeChanged(type: SkinType): void;
@@ -1490,6 +1521,76 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1490
1521
  onQueryChanged(value: string): void;
1491
1522
  onPageSizeChange(value: any): void;
1492
1523
  onUiChanged(): void;
1524
+ exportEnabled(): boolean;
1525
+ onExportEnabledChange(enabled: boolean): void;
1526
+ onExportChanged(): void;
1527
+ getExportFormatsModel(): PraxisExportFormat[];
1528
+ getExportScopeModel(): PraxisExportScope;
1529
+ getExportIncludeHeadersModel(): boolean;
1530
+ getExportApplyFormattingModel(): boolean;
1531
+ getExportMaxRowsModel(): number | undefined;
1532
+ getExportDefaultFileNameModel(): string;
1533
+ onExportFormatsChange(formats: PraxisExportFormat[]): void;
1534
+ onExportScopeChange(scope: PraxisExportScope): void;
1535
+ onExportDefaultFileNameChange(value: string): void;
1536
+ onExportIncludeHeadersChange(value: boolean): void;
1537
+ onExportApplyFormattingChange(value: boolean): void;
1538
+ onExportMaxRowsChange(value: any): void;
1539
+ getExportIncludeFieldsText(): string;
1540
+ getExportIncludeFieldsWarning(): string;
1541
+ getExportUnknownIncludeFields(): string[];
1542
+ onExportIncludeFieldsTextChange(value: string): void;
1543
+ private ensureExportDraft;
1544
+ expansionEnabled(): boolean;
1545
+ onExpansionEnabledChange(enabled: boolean): void;
1546
+ onExpansionChanged(): void;
1547
+ getExpandTriggerModel(): NonNullable<NonNullable<PraxisListConfig['interaction']>['expandTrigger']>;
1548
+ getExpandModeModel(): NonNullable<NonNullable<PraxisListConfig['interaction']>['expandMode']>;
1549
+ getExpandPlacementModel(): NonNullable<NonNullable<PraxisListConfig['interaction']>['expandPlacement']>;
1550
+ onExpansionInteractionChanged(prop: 'expandTrigger' | 'expandMode' | 'expandPlacement', value: string): void;
1551
+ getExpansionShellModel(): NonNullable<ListExpansionRendering['shell']>;
1552
+ getExpansionColumnsModel(): NonNullable<ListExpansionRendering['columns']>;
1553
+ getExpansionGapModel(): string;
1554
+ getExpansionPaddingModel(): string;
1555
+ onExpansionRenderingChanged(prop: 'shell' | 'columns' | 'gap' | 'padding', value: string | number): void;
1556
+ addExpansionSection(): void;
1557
+ removeExpansionSection(index: number): void;
1558
+ moveExpansionSection(index: number, direction: -1 | 1): void;
1559
+ onExpansionSectionShowIfChanged(section: ListExpansionSectionDef, raw: string): void;
1560
+ getExpansionSectionShowIfText(section: ListExpansionSectionDef): string;
1561
+ private ensureExpansionDraft;
1562
+ private defaultExpansionSection;
1563
+ addItemStyleRule(): void;
1564
+ removeItemStyleRule(index: number): void;
1565
+ addSlotOverrideRule(): void;
1566
+ removeSlotOverrideRule(index: number): void;
1567
+ onRulesChanged(): void;
1568
+ getRuleConditionText(rule: {
1569
+ condition?: JsonLogicExpression | null;
1570
+ }): string;
1571
+ onRuleConditionChanged(rule: {
1572
+ condition?: JsonLogicExpression | null;
1573
+ }, raw: string): void;
1574
+ getItemStyleEffect(rule: ListItemStyleRule): ListItemStyleEffect | undefined;
1575
+ ensureItemStyleEffect(rule: ListItemStyleRule): void;
1576
+ clearItemStyleEffects(rule: ListItemStyleRule): void;
1577
+ getSlotOverrideEffect(rule: ListSlotOverrideRule): ListSlotOverrideEffect | undefined;
1578
+ ensureSlotOverrideEffect(rule: ListSlotOverrideRule): void;
1579
+ clearSlotOverrideEffects(rule: ListSlotOverrideRule): void;
1580
+ getSlotOverrideTemplateExpr(rule: {
1581
+ template?: TemplateDef;
1582
+ }): string;
1583
+ onSlotOverrideTemplateExprChanged(rule: {
1584
+ template?: TemplateDef;
1585
+ }, expr: string): void;
1586
+ getSlotOverrideTemplateType(rule: {
1587
+ template?: TemplateDef;
1588
+ }): TemplateType;
1589
+ onSlotOverrideTemplateTypeChanged(rule: {
1590
+ template?: TemplateDef;
1591
+ }, type: TemplateType): void;
1592
+ private defaultItemStyleRule;
1593
+ private defaultSlotOverrideRule;
1493
1594
  onSkeletonChanged(value: any): void;
1494
1595
  addUiSortRow(): void;
1495
1596
  removeUiSortRow(i: number): void;