@praxisui/list 8.0.0-beta.11 → 8.0.0-beta.13

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
@@ -96,6 +96,7 @@ import { PraxisList } from '@praxisui/list';
96
96
  (itemClick)="onItem($event)"
97
97
  (actionClick)="onAction($event)"
98
98
  (selectionChange)="onSelection($event)"
99
+ (exportAction)="onExport($event)"
99
100
  />
100
101
  `,
101
102
  })
@@ -122,14 +123,31 @@ export class ListDemoComponent {
122
123
  { id: 'favorite', icon: 'favorite', label: 'Like' },
123
124
  { id: 'buy', icon: 'shopping_cart', kind: 'button', buttonVariant: 'stroked', label: 'Buy' },
124
125
  ],
126
+ export: {
127
+ enabled: true,
128
+ formats: ['csv', 'json'],
129
+ general: { scope: 'auto', includeFields: ['id', 'name', 'price'] },
130
+ },
125
131
  } satisfies import('@praxisui/list').PraxisListConfig;
126
132
 
127
133
  onItem(e: any) { console.log('itemClick', e); }
128
134
  onAction(e: any) { console.log('actionClick', e); }
129
135
  onSelection(e: any) { console.log('selectionChange', e); }
136
+ onExport(e: any) { console.log('exportAction', e); }
130
137
  }
131
138
  ```
132
139
 
140
+ ## Collection Export
141
+
142
+ `@praxisui/list` uses the shared collection export contract from `@praxisui/core`, the same platform surface used by table exports.
143
+
144
+ - `export.enabled` renders the export action menu.
145
+ - `export.formats` accepts `csv`, `json`, `excel`, `pdf`, and `print`.
146
+ - `export.general.scope` accepts `auto`, `selected`, `filtered`, `currentPage`, and `all`.
147
+ - Local CSV/JSON exports run in the browser with formula escaping from `PraxisCollectionExportService`.
148
+ - Remote `filtered`/`all` exports and advanced formats require a host-level `PRAXIS_COLLECTION_EXPORT_PROVIDER`.
149
+ - Deferred exports and provider failures surface visible feedback through snackbar and live-region status.
150
+
133
151
  ## Runtime Contract (Data Mode and Precedence)
134
152
 
135
153
  Effective data mode resolution follows `ListDataService.stream()`:
@@ -151,6 +169,8 @@ Decision matrix (runtime today):
151
169
 
152
170
  Important behavior:
153
171
  - pagination/search/sort controls from `ui.*` are rendered only when `dataSource.resourcePath` is defined.
172
+ - remote pagination uses Angular Material `mat-paginator` to keep the same paginator chrome and accessibility behavior used by the dynamic table.
173
+ - when `ui.showRange` is `false`, the Material range text is hidden but the remote footer still exposes the total count.
154
174
  - remote mode uses `GenericCrudService.filter(query, pageable)` and falls back to `getAll()` when `/filter` fails.
155
175
 
156
176
  ## Runtime Status Matrix (High-Impact Paths)
@@ -347,10 +367,10 @@ Outputs:
347
367
 
348
368
  - **Component ID:** `praxis-list`
349
369
  - **Config Schema:** `PraxisListConfig`
350
- - **Editable targets:** 20 target kinds: `itemTemplate`, `primaryText`, `secondaryText`, `avatar`, `badge`, `itemAction`, `emptyState`, `selection`, `layout`, `rowLayout`, `dataBinding`, `interaction`, `expansion`, `rules`, `meta`, `skin`, `toolbarUi`, `localization`, `accessibility`, `eventMapping`.
351
- - **Operation families:** 29 operations covering every path published in `LIST_AI_CAPABILITIES`, including metadata, local/remote data, layout, row layout, skin, selection, interaction/expansion, rules, executive template slots, features, skeleton, item actions, toolbar UI, i18n, accessibility, and declarative event mappings.
352
- - **Validation:** 30 deterministic validators cover field binding, stable action/rule/section IDs, destructive action removal, remote resource binding, local/remote precedence, enum support, row layout placement reachability, expansion schema safety, Json Logic, global actions, declared-only runtime warnings, and editor round-trip preservation.
353
- - **Examples/evals:** 30 fixtures cover every operation family, including title/subtitle binding, action creation/update/removal, status badge, selection mode, missing field rejection, skin, toolbar, accessibility, event mapping, row layout, expansion, data modes, i18n, empty state and conditional row styling.
370
+ - **Editable targets:** the manifest exposes explicit targets for template slots, text, avatar, badge, item actions, empty state, selection, layout, row layout, data binding, interaction, expansion, rules, metadata, skin, toolbar UI, collection export, localization, accessibility and declarative event mappings.
371
+ - **Operation families:** operations cover the required list authoring brief plus supported extensions for metadata, local/remote data, row layout, skin, interaction/expansion, conditional rules, executive template slots, features, skeleton, toolbar UI, export, i18n, accessibility and declarative event mappings.
372
+ - **Validation:** deterministic validators cover field binding, stable action/rule/section IDs, destructive action removal, remote resource binding, local/remote precedence, enum support, query/sort support, row layout placement reachability, expansion schema safety, Json Logic, global actions, declared-only runtime warnings and editor round-trip preservation.
373
+ - **Examples/evals:** fixtures cover every operation family in the manifest, including title/subtitle binding, action creation/update/removal, status badge, selection mode, missing field rejection, skin, toolbar, export, accessibility, event mapping, row layout, expansion, data modes, i18n, empty state and conditional row styling.
354
374
  - **Declared-only semantics:** fields documented as declared-only remain authorable only as config/editor round-trip fields and are guarded by `declared-only-runtime-warning`; the manifest does not claim runtime behavior that the component does not implement.
355
375
 
356
376
  ## Known limitations and mismatches