@praxisui/list 9.0.68-rc.3 → 10.0.0-rc.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 +38 -0
- package/ai/component-registry.json +239 -4
- package/fesm2022/praxisui-list.mjs +888 -95
- package/package.json +7 -6
- package/src/lib/praxis-list.json-api.md +143 -19
- package/types/praxisui-list.d.ts +82 -70
package/README.md
CHANGED
|
@@ -104,6 +104,15 @@ For HATEOAS records, the canonical `_links.self.href` is the preferred render id
|
|
|
104
104
|
|
|
105
105
|
The hosted list editor exposes **Configuration source** (`configPersistenceStrategy`). Choose **Page configuration** (`input-first`) for a composed page: saved individual list preferences must not replace the page document on reload. **Individual list preferences** preserves `local-first`; **Temporary configuration** uses `volatile`. The choice participates in Apply, Save and Reset alongside the child config, and does not silently replace an existing policy.
|
|
106
106
|
|
|
107
|
+
The standalone settings panel waits for its configured storage adapter before
|
|
108
|
+
closing on Save. While saving, repeated Save and close are blocked. A rejected
|
|
109
|
+
save retains the draft and shows a localized error so the user can retry; the
|
|
110
|
+
accepted `saved$` payload updates runtime without another storage write. A stale
|
|
111
|
+
response cannot close an editor whose draft or storage target changed. The panel
|
|
112
|
+
is bound to the List owner and closes without saving when that owner is destroyed. With
|
|
113
|
+
`volatile`, completion remains local. Adapter completion has the durability of the
|
|
114
|
+
configured adapter; an in-memory adapter does not imply remote persistence.
|
|
115
|
+
|
|
107
116
|
## Configuration Highlights
|
|
108
117
|
|
|
109
118
|
- Layout variants: `list`, `cards`, `tiles`.
|
|
@@ -139,6 +148,28 @@ Its validity is combined with raw JSON and document/query validation; visiting
|
|
|
139
148
|
another tab preserves the text, and Reset discards it explicitly. See
|
|
140
149
|
[Surface consumer validation](../praxis-core/docs/surface-draft-consumers-validation-2026-09-08.md).
|
|
141
150
|
|
|
151
|
+
## Page Builder Integration & Insertion Presets
|
|
152
|
+
|
|
153
|
+
`@praxisui/list` integrates directly with the visual palette of `@praxisui/page-builder`. Register its canonical metadata during app bootstrap:
|
|
154
|
+
|
|
155
|
+
```ts
|
|
156
|
+
import { providePraxisListMetadata } from '@praxisui/list';
|
|
157
|
+
|
|
158
|
+
export const appConfig: ApplicationConfig = {
|
|
159
|
+
providers: [
|
|
160
|
+
providePraxisListMetadata(),
|
|
161
|
+
],
|
|
162
|
+
};
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
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:
|
|
166
|
+
|
|
167
|
+
1. **Feed operacional (`operational-feed`)**: Real-time event and alert stream featuring `pill-soft` skin, status icons, timestamp metadata, and contextual severity chips.
|
|
168
|
+
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.
|
|
169
|
+
3. **Lista financeira de saldos (`financial-metrics`)**: Corporate balance and liquidity overview with `glass` skin, category subtitles, and formatted currency metric blocks.
|
|
170
|
+
|
|
171
|
+
Each preset preconfigures `configPersistenceStrategy: 'input-first'` and `enableCustomization: true`, and supplies representative starter data for immediate visual verification on the canvas.
|
|
172
|
+
|
|
142
173
|
## Public API Snapshot
|
|
143
174
|
|
|
144
175
|
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.
|
|
@@ -149,3 +180,10 @@ The root `@praxisui/list` entrypoint exports `PraxisList`, `PraxisListConfig`, l
|
|
|
149
180
|
- Live demo: https://praxis-ui-4e602.web.app
|
|
150
181
|
- Quickstart app: https://github.com/codexrodrigues/praxis-ui-quickstart
|
|
151
182
|
- API quickstart: https://github.com/codexrodrigues/praxis-api-quickstart-public
|
|
183
|
+
|
|
184
|
+
<!-- praxis-npm-catalog-links:start -->
|
|
185
|
+
## Official documentation and examples
|
|
186
|
+
|
|
187
|
+
- [Canonical technical overview: Overview](https://praxisui.dev/docs/components/praxis-list)
|
|
188
|
+
- [Praxis Angular public catalog](https://praxisui.dev/angular)
|
|
189
|
+
<!-- praxis-npm-catalog-links:end -->
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-
|
|
3
|
+
"generatedAt": "2026-10-13T14:47:21.726Z",
|
|
4
4
|
"packageName": "@praxisui/list",
|
|
5
|
-
"packageVersion": "
|
|
5
|
+
"packageVersion": "10.0.0-rc.10",
|
|
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"
|