@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.
|
|
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.
|
|
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.
|
|
14
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
15
|
-
"@praxisui/rich-content": "^9.0.0-beta.
|
|
16
|
-
"@praxisui/settings-panel": "^9.0.0-beta.
|
|
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.
|
|
433
|
-
3. `
|
|
434
|
-
4.
|
|
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
|
|
package/types/praxisui-list.d.ts
CHANGED
|
@@ -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;
|