@praxisui/list 9.0.17 → 9.0.19

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 CHANGED
@@ -91,7 +91,7 @@ In remote mode, search, sort and export share a collection toolbar above the ite
91
91
  - `config: PraxisListConfig`: list/card/tile configuration.
92
92
  - `listId: string`: required stable id for persisted configuration.
93
93
  - `componentInstanceId?: string`: disambiguates repeated instances on the same route.
94
- - `configPersistenceStrategy: 'local-first' | 'input-first'`: config restore precedence.
94
+ - `configPersistenceStrategy: 'local-first' | 'input-first' | 'volatile'`: config restore precedence; `volatile` disables configuration reads and writes for ephemeral previews.
95
95
  - `queryContext?: PraxisDataQueryContext`: runtime query context projected into remote data.
96
96
  - `form?: FormGroup`: external form context for selection/form bindings.
97
97
  - `enableCustomization: boolean`: opens editor and semantic assistant affordances.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-08-24T20:08:13.959Z",
3
+ "generatedAt": "2026-08-25T03:30:16.706Z",
4
4
  "packageName": "@praxisui/list",
5
- "packageVersion": "9.0.17",
5
+ "packageVersion": "9.0.19",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 1,
@@ -31,9 +31,9 @@
31
31
  },
32
32
  {
33
33
  "name": "configPersistenceStrategy",
34
- "type": "'local-first' | 'input-first'",
34
+ "type": "'local-first' | 'input-first' | 'volatile'",
35
35
  "required": false,
36
- "description": "Define se a configuração local persistida ou a configuração recebida por input tem precedência na hidratação.",
36
+ "description": "Define a precedência da hidratação; volatile desabilita leitura e gravação de configuração para previews efêmeros.",
37
37
  "default": "local-first"
38
38
  },
39
39
  {
@@ -8785,9 +8785,9 @@
8785
8785
  {
8786
8786
  "chunkIndex": 0,
8787
8787
  "chunkKind": "summary",
8788
- "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')\n - queryContext (PraxisDataQueryContext | null)\n - form (FormGroup)\n - enableCustomization (boolean)\nOutputs:\n - itemClick (ListItemEvent)\n - actionClick (ListActionEvent)\n - selectionChange (ListSelectionEvent)\n",
8788
+ "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 - itemClick (ListItemEvent)\n - actionClick (ListActionEvent)\n - selectionChange (ListSelectionEvent)\n",
8789
8789
  "sourcePointer": "projects/praxis-list/src/lib/praxis-list.metadata.ts",
8790
- "contentHash": "2517f19d442043072650cb9fa6a34568726535c778f0a4bbbc93d0b01b5df08a",
8790
+ "contentHash": "f589cb2341d7a23ed3df996c9d11ffb8902a62747c54cf3c16187b503ab0df9a",
8791
8791
  "sourceKind": "component_definition",
8792
8792
  "sourceId": "praxis-list",
8793
8793
  "corpusVersion": "1.0.0"
@@ -14584,6 +14584,9 @@ class PraxisList {
14584
14584
  }
14585
14585
  }
14586
14586
  storageKey() {
14587
+ if (this.configPersistenceStrategy === 'volatile') {
14588
+ return null;
14589
+ }
14587
14590
  const id = this.componentKeyId();
14588
14591
  return id ? `praxis-list-config-${id}` : null;
14589
14592
  }
@@ -15831,6 +15834,87 @@ const PRAXIS_LIST_COMPONENT_METADATA = {
15831
15834
  componentId: 'praxis-list',
15832
15835
  source: 'PRAXIS_LIST_AUTHORING_MANIFEST',
15833
15836
  },
15837
+ runtimeProfiles: [
15838
+ {
15839
+ id: 'public-local-volatile',
15840
+ audience: 'public-untrusted',
15841
+ description: 'Lista efêmera com dados inline e sem efeitos externos.',
15842
+ constraints: [
15843
+ { path: 'config.dataSource.data', operator: 'array' },
15844
+ { path: 'config.dataSource.resourcePath', operator: 'absent-or-empty' },
15845
+ { path: 'configPersistenceStrategy', operator: 'equals', value: 'volatile' },
15846
+ { path: 'enableCustomization', operator: 'not-true' },
15847
+ { path: 'config.actions', operator: 'empty-array-or-absent' },
15848
+ { path: 'config.expansion', operator: 'absent-or-empty' },
15849
+ { path: 'config.export.enabled', operator: 'not-true' },
15850
+ {
15851
+ path: 'config.templating.leading.type',
15852
+ operator: 'none-of',
15853
+ values: ['image', 'html', 'component', 'slot'],
15854
+ },
15855
+ {
15856
+ path: 'config.templating.primary.type',
15857
+ operator: 'none-of',
15858
+ values: ['image', 'html', 'component', 'slot'],
15859
+ },
15860
+ {
15861
+ path: 'config.templating.secondary.type',
15862
+ operator: 'none-of',
15863
+ values: ['image', 'html', 'component', 'slot'],
15864
+ },
15865
+ {
15866
+ path: 'config.templating.trailing.type',
15867
+ operator: 'none-of',
15868
+ values: ['image', 'html', 'component', 'slot'],
15869
+ },
15870
+ ],
15871
+ effects: [],
15872
+ },
15873
+ {
15874
+ id: 'public-resource-read',
15875
+ audience: 'public-untrusted',
15876
+ description: 'Leitura de recurso público, condicionada a capabilities do backend.',
15877
+ constraints: [
15878
+ { path: 'config.dataSource.data', operator: 'absent-or-empty' },
15879
+ { path: 'config.dataSource.resourcePath', operator: 'present' },
15880
+ { path: 'configPersistenceStrategy', operator: 'equals', value: 'volatile' },
15881
+ { path: 'enableCustomization', operator: 'not-true' },
15882
+ { path: 'config.actions', operator: 'empty-array-or-absent' },
15883
+ { path: 'config.expansion', operator: 'absent-or-empty' },
15884
+ { path: 'config.export.enabled', operator: 'not-true' },
15885
+ {
15886
+ path: 'config.templating.leading.type',
15887
+ operator: 'none-of',
15888
+ values: ['image', 'html', 'component', 'slot'],
15889
+ },
15890
+ {
15891
+ path: 'config.templating.primary.type',
15892
+ operator: 'none-of',
15893
+ values: ['image', 'html', 'component', 'slot'],
15894
+ },
15895
+ {
15896
+ path: 'config.templating.secondary.type',
15897
+ operator: 'none-of',
15898
+ values: ['image', 'html', 'component', 'slot'],
15899
+ },
15900
+ {
15901
+ path: 'config.templating.trailing.type',
15902
+ operator: 'none-of',
15903
+ values: ['image', 'html', 'component', 'slot'],
15904
+ },
15905
+ ],
15906
+ effects: [
15907
+ {
15908
+ kind: 'resource-read',
15909
+ resourcePath: 'config.dataSource.resourcePath',
15910
+ operations: [
15911
+ { operationId: 'filter', method: 'POST', pathSuffix: 'filter', role: 'primary' },
15912
+ { operationId: 'all', method: 'GET', pathSuffix: 'all', role: 'fallback' },
15913
+ ],
15914
+ },
15915
+ ],
15916
+ },
15917
+ ],
15834
15918
  configEditor: {
15835
15919
  component: PraxisListWidgetConfigEditor,
15836
15920
  title: 'Configure list',
@@ -15839,7 +15923,7 @@ const PRAXIS_LIST_COMPONENT_METADATA = {
15839
15923
  { name: 'config', type: 'PraxisListConfig', description: 'Configuração da lista (fonte de dados, layout, seleção, templates, ações)' },
15840
15924
  { name: 'listId', type: 'string', description: 'Identificador da lista (obrigatório para persistência)' },
15841
15925
  { name: 'componentInstanceId', type: 'string', description: 'Identificador opcional para múltiplas instâncias na mesma rota' },
15842
- { name: 'configPersistenceStrategy', type: "'local-first' | 'input-first'", default: 'local-first', description: 'Define se a configuração local persistida ou a configuração recebida por input tem precedência na hidratação.' },
15926
+ { name: 'configPersistenceStrategy', type: "'local-first' | 'input-first' | 'volatile'", default: 'local-first', description: 'Define a precedência da hidratação; volatile desabilita leitura e gravação de configuração para previews efêmeros.' },
15843
15927
  { name: 'queryContext', type: 'PraxisDataQueryContext | null', description: 'Contexto runtime declarativo para filtros, ordenação e paginação sem persistir na configuração autorada.' },
15844
15928
  { name: 'form', type: 'FormGroup', description: 'FormGroup opcional quando integrado a formulários' },
15845
15929
  { name: 'enableCustomization', type: 'boolean', description: 'Input canônico para habilitar customização runtime, editor e AI assistant' },
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@praxisui/list",
3
- "version": "9.0.17",
3
+ "version": "9.0.19",
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.17",
9
+ "@praxisui/dynamic-fields": "^9.0.19",
10
10
  "rxjs": ">=7 <9",
11
11
  "@angular/forms": "^21.0.0",
12
12
  "@angular/router": "^21.0.0",
13
- "@praxisui/ai": "^9.0.17",
14
- "@praxisui/core": "^9.0.17",
15
- "@praxisui/rich-content": "^9.0.17",
16
- "@praxisui/settings-panel": "^9.0.17"
13
+ "@praxisui/ai": "^9.0.19",
14
+ "@praxisui/core": "^9.0.19",
15
+ "@praxisui/rich-content": "^9.0.19",
16
+ "@praxisui/settings-panel": "^9.0.19"
17
17
  },
18
18
  "dependencies": {
19
19
  "tslib": "^2.3.0",
@@ -171,6 +171,7 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
171
171
  | Binding/Path | Type | Required | Source | Runtime normalization | Notes |
172
172
  | --------------------- | -------------------------------- | ------------- | --------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------- |
173
173
  | `config` | `PraxisListConfig` | Yes (logical) | component-input | convertido para `ListAuthoringDocument` antes do apply plan | Config projetada de runtime; a autoria canônica é `ListAuthoringDocument`. |
174
+ | `configPersistenceStrategy` | `'local-first' \| 'input-first' \| 'volatile'` | No | component-input | `volatile` elimina a chave de storage | Use `volatile` em previews efêmeros que não podem ler nem gravar configuração. |
174
175
  | `listId` | `string` | Yes | component-input | component key builder | Necessário para escopo de persistência. |
175
176
  | `componentInstanceId` | `string \| undefined` | No | component-input | component key scoping | Evita colisão entre instâncias da mesma lista. |
176
177
  | `form` | `FormGroup \| null \| undefined` | No | component-input | selection adapter | Integra seleção com controle externo quando configurado. |
@@ -482,7 +482,7 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
482
482
  config: PraxisListConfig;
483
483
  listId: string;
484
484
  componentInstanceId?: string;
485
- configPersistenceStrategy: 'local-first' | 'input-first';
485
+ configPersistenceStrategy: 'local-first' | 'input-first' | 'volatile';
486
486
  private runtimeQueryContext?;
487
487
  set queryContext(value: PraxisDataQueryContext | null | undefined);
488
488
  get queryContext(): PraxisDataQueryContext | null | undefined;