@praxisui/list 10.0.0-rc.3 → 10.0.0-rc.31
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 +30 -2
- package/ai/component-registry.json +239 -4
- package/fesm2022/praxisui-list.mjs +1644 -138
- package/package.json +7 -6
- package/src/lib/praxis-list.json-api.md +143 -19
- package/types/praxisui-list.d.ts +175 -71
package/README.md
CHANGED
|
@@ -116,8 +116,9 @@ configured adapter; an in-memory adapter does not imply remote persistence.
|
|
|
116
116
|
## Configuration Highlights
|
|
117
117
|
|
|
118
118
|
- Layout variants: `list`, `cards`, `tiles`.
|
|
119
|
-
- Runtime-active layout fields include `lines`, `dividers`, `groupBy`, `pageSize`, `density` and `
|
|
120
|
-
- Templating slots include `leading`, `primary`, `secondary`, `meta`, `trailing`, `features`, `sectionHeader` and `emptyState
|
|
119
|
+
- Runtime-active layout fields include `lines`, `dividers`, `groupBy`, `pageSize`, `density`, `model`, `cardColumns` (`'auto' | 1 | 2 | 3 | 4`), `cardMinWidth` and `cardMinHeight`.
|
|
120
|
+
- Templating slots include `leading`, `primary`, `secondary`, `meta`, `trailing`, `features`, `sectionHeader` and `emptyState`, with `templating.statusPosition` (`'inline' | 'top-right'`) for card/tile status badges.
|
|
121
|
+
- Item style rules (`rules.itemStyles[]`) support semantic `tone` (`'neutral' | 'primary' | 'success' | 'warning' | 'danger' | 'muted'`), materializing M3 token classes (`.pdx-list-item--<tone>`) without requiring raw CSS.
|
|
121
122
|
- Leading images delegated to Rich Content stay within their reserved track and retain their aspect ratio. Skin overrides are rendered in an instance-scoped style element, using the supplied CSP nonce; updates replace that element's content and destruction removes it. Appearance presets wrap within narrow editors.
|
|
122
123
|
- In `layout.rowLayout`, canonical semantic slots keep the configured desktop grid and reflow into ordered, non-overlapping rows at narrow viewports; extended operational slots stack without requiring host CSS.
|
|
123
124
|
- Template expressions use `${item.field}`. Currency/date/number templates can use config i18n defaults.
|
|
@@ -148,10 +149,37 @@ Its validity is combined with raw JSON and document/query validation; visiting
|
|
|
148
149
|
another tab preserves the text, and Reset discards it explicitly. See
|
|
149
150
|
[Surface consumer validation](../praxis-core/docs/surface-draft-consumers-validation-2026-09-08.md).
|
|
150
151
|
|
|
152
|
+
## Page Builder Integration & Insertion Presets
|
|
153
|
+
|
|
154
|
+
`@praxisui/list` integrates directly with the visual palette of `@praxisui/page-builder`. Register its canonical metadata during app bootstrap:
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
import { providePraxisListMetadata } from '@praxisui/list';
|
|
158
|
+
|
|
159
|
+
export const appConfig: ApplicationConfig = {
|
|
160
|
+
providers: [
|
|
161
|
+
providePraxisListMetadata(),
|
|
162
|
+
],
|
|
163
|
+
};
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
When opened in the Page Builder, the component palette discovers `praxis-list` and exposes three structured canonical insertion presets (`PRAXIS_LIST_INSERTION_PRESETS`), enabling 1-click drag-and-drop authoring:
|
|
167
|
+
|
|
168
|
+
1. **Feed operacional (`operational-feed`)**: Real-time event and alert stream featuring `pill-soft` skin, status icons, timestamp metadata, and contextual severity chips.
|
|
169
|
+
2. **Catálogo com avatares (`avatar-catalog`)**: Executive personnel or asset card directory with `elevated` skin, single selection, avatar/photo icons, role/department secondary text, and status badges.
|
|
170
|
+
3. **Lista financeira de saldos (`financial-metrics`)**: Corporate balance and liquidity overview with `glass` skin, category subtitles, and formatted currency metric blocks.
|
|
171
|
+
|
|
172
|
+
Each preset preconfigures `configPersistenceStrategy: 'input-first'` and `enableCustomization: true`, and supplies representative starter data for immediate visual verification on the canvas.
|
|
173
|
+
|
|
174
|
+
In the visual editor (`Data` tab), the data source summary displays the active resolution mode (**Local / sample data**, **Remote resource (API)**, or **No data source configured**). When a preset or authored list includes `dataSource.data`, those local rows take precedence over `dataSource.resourcePath`. Clicking **Use remote resource (remove local data)** clears `dataSource.data` so the configured `resourcePath` becomes active and loads its schema fields; during the same editing session, **Restore local data** can recover the stashed sample rows before saving, while **Reset** reverts the editor to its initial configuration snapshot.
|
|
175
|
+
|
|
151
176
|
## Public API Snapshot
|
|
152
177
|
|
|
153
178
|
The root `@praxisui/list` entrypoint exports `PraxisList`, `PraxisListConfig`, list data services, templating/rich-content/selection adapters, metadata provider, list i18n helpers, AI capabilities, `PRAXIS_LIST_AUTHORING_MANIFEST` and `PraxisListDocPageComponent`. It also preserves the public editor classes `PraxisListConfigEditor` and `PraxisListWidgetConfigEditor`, and the types `PraxisListWidgetEditorInputs` and `PraxisListWidgetEditorValue`. Hosts can import these names directly from `@praxisui/list`; generic authoring hosts should resolve the configured editor through component metadata.
|
|
154
179
|
|
|
180
|
+
Compact list, card and tile presenters delegated to `PraxisRichContent` use its existing `layout="inline"`: row slots, leading/primary/secondary content, metadata, trailing/status badges and features retain their intrinsic content width. Empty-state regions, section headers and rich-content expansion documents keep block rendering. Keep this distinction in the canonical List renderer; do not compensate with consumer CSS or remove Rich Content document containment. A rendered badge label needs a nonzero visible box: DOM text alone does not prove that a compact presenter is readable. Validate these compositions in their real desktop and narrow Dialog/list hosts.
|
|
181
|
+
|
|
182
|
+
|
|
155
183
|
## Official Links
|
|
156
184
|
|
|
157
185
|
- Documentation: https://praxisui.dev/components/list
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-10-
|
|
3
|
+
"generatedAt": "2026-10-16T17:45:27.774Z",
|
|
4
4
|
"packageName": "@praxisui/list",
|
|
5
|
-
"packageVersion": "10.0.0-rc.
|
|
5
|
+
"packageVersion": "10.0.0-rc.31",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -488,6 +488,241 @@
|
|
|
488
488
|
"componentId": "praxis-list",
|
|
489
489
|
"source": "PRAXIS_LIST_AUTHORING_MANIFEST"
|
|
490
490
|
},
|
|
491
|
+
"insertionPresets": [
|
|
492
|
+
{
|
|
493
|
+
"id": "operational-feed",
|
|
494
|
+
"label": "Feed operacional",
|
|
495
|
+
"description": "Feed de alertas e eventos em tempo real com status, timestamp e chips contextuais.",
|
|
496
|
+
"icon": "notifications_active",
|
|
497
|
+
"inputs": {
|
|
498
|
+
"configPersistenceStrategy": "input-first",
|
|
499
|
+
"enableCustomization": true,
|
|
500
|
+
"config": {
|
|
501
|
+
"id": "operational-feed-list",
|
|
502
|
+
"layout": {
|
|
503
|
+
"variant": "list",
|
|
504
|
+
"density": "comfortable",
|
|
505
|
+
"dividers": "between"
|
|
506
|
+
},
|
|
507
|
+
"skin": {
|
|
508
|
+
"type": "pill-soft"
|
|
509
|
+
},
|
|
510
|
+
"templating": {
|
|
511
|
+
"leading": {
|
|
512
|
+
"type": "icon",
|
|
513
|
+
"expr": "${item.icon}"
|
|
514
|
+
},
|
|
515
|
+
"primary": {
|
|
516
|
+
"type": "text",
|
|
517
|
+
"expr": "${item.title}"
|
|
518
|
+
},
|
|
519
|
+
"secondary": {
|
|
520
|
+
"type": "text",
|
|
521
|
+
"expr": "${item.timestamp} · ${item.source}"
|
|
522
|
+
},
|
|
523
|
+
"trailing": {
|
|
524
|
+
"type": "chip",
|
|
525
|
+
"expr": "${item.severity}",
|
|
526
|
+
"variant": "filled"
|
|
527
|
+
}
|
|
528
|
+
},
|
|
529
|
+
"dataSource": {
|
|
530
|
+
"data": [
|
|
531
|
+
{
|
|
532
|
+
"id": "evt-101",
|
|
533
|
+
"title": "Anomalia detectada em perímetro de segurança",
|
|
534
|
+
"timestamp": "10:42",
|
|
535
|
+
"source": "Sentinela Delta",
|
|
536
|
+
"severity": "Crítica",
|
|
537
|
+
"icon": "warning"
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
"id": "evt-102",
|
|
541
|
+
"title": "Sobrecarga de energia no reator auxiliar",
|
|
542
|
+
"timestamp": "10:15",
|
|
543
|
+
"source": "Subestação Sul",
|
|
544
|
+
"severity": "Atenção",
|
|
545
|
+
"icon": "bolt"
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"id": "evt-103",
|
|
549
|
+
"title": "Sincronização de nós táticos concluída",
|
|
550
|
+
"timestamp": "09:50",
|
|
551
|
+
"source": "Comunicação Central",
|
|
552
|
+
"severity": "Informativo",
|
|
553
|
+
"icon": "info"
|
|
554
|
+
}
|
|
555
|
+
]
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
},
|
|
559
|
+
"shell": {
|
|
560
|
+
"kind": "dashboard-card",
|
|
561
|
+
"title": "Feed de Alertas",
|
|
562
|
+
"appearance": {
|
|
563
|
+
"body": {
|
|
564
|
+
"padding": "12px"
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"id": "avatar-catalog",
|
|
571
|
+
"label": "Catálogo com avatares",
|
|
572
|
+
"description": "Lista executiva de integrantes ou ativos com foto/avatar, cargo, departamento e badges.",
|
|
573
|
+
"icon": "badge",
|
|
574
|
+
"inputs": {
|
|
575
|
+
"configPersistenceStrategy": "input-first",
|
|
576
|
+
"enableCustomization": true,
|
|
577
|
+
"config": {
|
|
578
|
+
"id": "avatar-catalog-list",
|
|
579
|
+
"layout": {
|
|
580
|
+
"variant": "cards",
|
|
581
|
+
"density": "comfortable",
|
|
582
|
+
"lines": 2
|
|
583
|
+
},
|
|
584
|
+
"skin": {
|
|
585
|
+
"type": "elevated"
|
|
586
|
+
},
|
|
587
|
+
"selection": {
|
|
588
|
+
"mode": "single",
|
|
589
|
+
"return": "item"
|
|
590
|
+
},
|
|
591
|
+
"templating": {
|
|
592
|
+
"leading": {
|
|
593
|
+
"type": "icon",
|
|
594
|
+
"expr": "account_circle"
|
|
595
|
+
},
|
|
596
|
+
"primary": {
|
|
597
|
+
"type": "text",
|
|
598
|
+
"expr": "${item.name}"
|
|
599
|
+
},
|
|
600
|
+
"secondary": {
|
|
601
|
+
"type": "text",
|
|
602
|
+
"expr": "${item.role} · ${item.department}"
|
|
603
|
+
},
|
|
604
|
+
"meta": {
|
|
605
|
+
"type": "chip",
|
|
606
|
+
"expr": "${item.status}",
|
|
607
|
+
"variant": "outlined"
|
|
608
|
+
}
|
|
609
|
+
},
|
|
610
|
+
"dataSource": {
|
|
611
|
+
"data": [
|
|
612
|
+
{
|
|
613
|
+
"id": "emp-01",
|
|
614
|
+
"name": "Ana Silva",
|
|
615
|
+
"role": "Coordenadora de Projetos",
|
|
616
|
+
"department": "Operações",
|
|
617
|
+
"status": "Ativo"
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"id": "emp-02",
|
|
621
|
+
"name": "Carlos Mendes",
|
|
622
|
+
"role": "Analista de Sistemas",
|
|
623
|
+
"department": "Tecnologia",
|
|
624
|
+
"status": "Em Atendimento"
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"id": "emp-03",
|
|
628
|
+
"name": "Mariana Costa",
|
|
629
|
+
"role": "Especialista em Logística",
|
|
630
|
+
"department": "Suprimentos",
|
|
631
|
+
"status": "Disponível"
|
|
632
|
+
}
|
|
633
|
+
]
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
},
|
|
637
|
+
"shell": {
|
|
638
|
+
"kind": "dashboard-card",
|
|
639
|
+
"title": "Catálogo de Integrantes",
|
|
640
|
+
"appearance": {
|
|
641
|
+
"body": {
|
|
642
|
+
"padding": "12px"
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"id": "financial-metrics",
|
|
649
|
+
"label": "Lista financeira de saldos",
|
|
650
|
+
"description": "Visão executiva de contas, saldos e limites com formatação monetária e indicadores.",
|
|
651
|
+
"icon": "account_balance_wallet",
|
|
652
|
+
"inputs": {
|
|
653
|
+
"configPersistenceStrategy": "input-first",
|
|
654
|
+
"enableCustomization": true,
|
|
655
|
+
"config": {
|
|
656
|
+
"id": "financial-metrics-list",
|
|
657
|
+
"layout": {
|
|
658
|
+
"variant": "tiles",
|
|
659
|
+
"density": "comfortable"
|
|
660
|
+
},
|
|
661
|
+
"skin": {
|
|
662
|
+
"type": "glass"
|
|
663
|
+
},
|
|
664
|
+
"templating": {
|
|
665
|
+
"leading": {
|
|
666
|
+
"type": "icon",
|
|
667
|
+
"expr": "account_balance_wallet"
|
|
668
|
+
},
|
|
669
|
+
"primary": {
|
|
670
|
+
"type": "text",
|
|
671
|
+
"expr": "${item.accountName}"
|
|
672
|
+
},
|
|
673
|
+
"secondary": {
|
|
674
|
+
"type": "text",
|
|
675
|
+
"expr": "${item.category} · Conta ${item.accountNumber}"
|
|
676
|
+
},
|
|
677
|
+
"trailing": {
|
|
678
|
+
"type": "metric",
|
|
679
|
+
"props": {
|
|
680
|
+
"metric": {
|
|
681
|
+
"valueExpr": "${item.balance}",
|
|
682
|
+
"tone": "primary",
|
|
683
|
+
"layout": "value-only"
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
},
|
|
688
|
+
"dataSource": {
|
|
689
|
+
"data": [
|
|
690
|
+
{
|
|
691
|
+
"id": "acc-01",
|
|
692
|
+
"accountName": "Fundo Operacional Alfa",
|
|
693
|
+
"category": "Operações",
|
|
694
|
+
"accountNumber": "4482-1",
|
|
695
|
+
"balance": "R$ 1.450.000,00"
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
"id": "acc-02",
|
|
699
|
+
"accountName": "Reserva Estratégica de Emergência",
|
|
700
|
+
"category": "Tesouraria",
|
|
701
|
+
"accountNumber": "9920-5",
|
|
702
|
+
"balance": "R$ 820.000,00"
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
"id": "acc-03",
|
|
706
|
+
"accountName": "Folha de Prontidão e Benefícios",
|
|
707
|
+
"category": "Recursos Humanos",
|
|
708
|
+
"accountNumber": "3310-8",
|
|
709
|
+
"balance": "R$ 390.000,00"
|
|
710
|
+
}
|
|
711
|
+
]
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
},
|
|
715
|
+
"shell": {
|
|
716
|
+
"kind": "dashboard-card",
|
|
717
|
+
"title": "Saldos e Disponibilidades",
|
|
718
|
+
"appearance": {
|
|
719
|
+
"body": {
|
|
720
|
+
"padding": "12px"
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
],
|
|
491
726
|
"source": "projects/praxis-list/src/lib/praxis-list.metadata.ts",
|
|
492
727
|
"exportName": "PRAXIS_LIST_COMPONENT_METADATA",
|
|
493
728
|
"componentCapabilities": [
|
|
@@ -9066,9 +9301,9 @@
|
|
|
9066
9301
|
{
|
|
9067
9302
|
"chunkIndex": 0,
|
|
9068
9303
|
"chunkKind": "summary",
|
|
9069
|
-
"content": "Component ID: praxis-list\nSelector: praxis-list\nFriendly Name: Praxis List\nDescription: Lista com suporte a seleção (single/multiple), agrupamento e templates.\nLib/Package: @praxisui/list\nTags: widget, list, lista, selection, configurable\nInputs:\n - config (PraxisListConfig)\n - listId (string)\n - componentInstanceId (string)\n - configPersistenceStrategy ('local-first' | 'input-first' | 'volatile')\n - queryContext (PraxisDataQueryContext | null)\n - form (FormGroup)\n - enableCustomization (boolean)\nOutputs:\n - configPatchChange ({ inputPatch: { config: PraxisListConfig } })\n - itemClick (ListItemEvent)\n - actionClick (ListActionEvent)\n - selectionChange (ListSelectionEvent)\n",
|
|
9304
|
+
"content": "Component ID: praxis-list\nSelector: praxis-list\nFriendly Name: Praxis List\nDescription: Lista com suporte a seleção (single/multiple), agrupamento e templates.\nLib/Package: @praxisui/list\nTags: widget, list, lista, selection, configurable\nInputs:\n - config (PraxisListConfig)\n - listId (string)\n - componentInstanceId (string)\n - configPersistenceStrategy ('local-first' | 'input-first' | 'volatile')\n - queryContext (PraxisDataQueryContext | null)\n - form (FormGroup)\n - enableCustomization (boolean)\nOutputs:\n - configPatchChange ({ inputPatch: { config: PraxisListConfig } })\n - itemClick (ListItemEvent)\n - actionClick (ListActionEvent)\n - selectionChange (ListSelectionEvent)\nInsertion Presets:\n - operational-feed: Feed operacional - Feed de alertas e eventos em tempo real com status, timestamp e chips contextuais.\n - avatar-catalog: Catálogo com avatares - Lista executiva de integrantes ou ativos com foto/avatar, cargo, departamento e badges.\n - financial-metrics: Lista financeira de saldos - Visão executiva de contas, saldos e limites com formatação monetária e indicadores.\n",
|
|
9070
9305
|
"sourcePointer": "projects/praxis-list/src/lib/praxis-list.metadata.ts",
|
|
9071
|
-
"contentHash": "
|
|
9306
|
+
"contentHash": "c57e358dddfd21ae247e6b7e37f3c671eef5278d9ca14a21124a293e030e9e69",
|
|
9072
9307
|
"sourceKind": "component_definition",
|
|
9073
9308
|
"sourceId": "praxis-list",
|
|
9074
9309
|
"corpusVersion": "1.0.0"
|