@frame-kit/ui-ng 0.2.5 → 0.2.6

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@frame-kit/ui-ng",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "Style-agnostic, token-driven Angular UI component library for FrameKit.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -309,10 +309,7 @@ declare class DataTableComponent<T = unknown> {
309
309
  */
310
310
  private readonly groupCoordinator;
311
311
  constructor();
312
- /**
313
- * The group heading to emit before a row, or null when the row continues the
314
- * group above it. The first row always opens its group.
315
- */
312
+ /** The group heading to open before this row, if it starts a new group. */
316
313
  groupHeadingFor(row: T, index: number): string | null;
317
314
  /** Resolves the display value for a cell given its column definition and row data. */
318
315
  getCellValue(column: ColumnDef<T>, row: T): unknown;
@@ -478,6 +475,14 @@ declare class DataTableStackComponent<T = unknown> {
478
475
  readonly config: _angular_core.InputSignal<TableConfig<T> | null>;
479
476
  /** TrackBy function used by the `@for` loop over rows. */
480
477
  readonly trackByFn: _angular_core.InputSignal<(index: number, row: T) => unknown>;
478
+ /**
479
+ * Template rendered inside a group heading. Mirrors the semantic-table path
480
+ * so a grouped table looks grouped at every viewport.
481
+ */
482
+ readonly groupHeadingRenderer: _angular_core.InputSignal<TemplateRef<{
483
+ $implicit: string;
484
+ row: T;
485
+ }> | null>;
481
486
  /** Mirrors the host table's `rowSelection` input to show checkboxes on each card. */
482
487
  readonly rowSelection: _angular_core.InputSignal<boolean>;
483
488
  /** Currently selected row keys forwarded from the host table engine. */
@@ -488,6 +493,8 @@ declare class DataTableStackComponent<T = unknown> {
488
493
  readonly selectionDisabled: _angular_core.InputSignal<SelectionDisabled<T>>;
489
494
  /** Accessible label for each card's selection checkbox. */
490
495
  readonly selectionLabel: _angular_core.InputSignal<string>;
496
+ /** The group heading to open before this card, if it starts a new group. */
497
+ groupHeadingFor(row: T, index: number): string | null;
491
498
  /** Fires when the user clicks a card row, emitting the row context. */
492
499
  readonly rowClick: _angular_core.OutputEmitterRef<TableRowContext<T>>;
493
500
  /** Fires when the user toggles a card's selection checkbox, bubbling up to the host. */
@@ -507,7 +514,7 @@ declare class DataTableStackComponent<T = unknown> {
507
514
  isRowSelectionDisabled(row: T): boolean;
508
515
  private getSelectionKey;
509
516
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableStackComponent<any>, never>;
510
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableStackComponent<any>, "fk-data-table-stack", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "selectedKeys": { "alias": "selectedKeys"; "required": false; "isSignal": true; }; "getRowId": { "alias": "getRowId"; "required": false; "isSignal": true; }; "selectionDisabled": { "alias": "selectionDisabled"; "required": false; "isSignal": true; }; "selectionLabel": { "alias": "selectionLabel"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; "toggleRow": "toggleRow"; }, never, never, true, never>;
517
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableStackComponent<any>, "fk-data-table-stack", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "groupHeadingRenderer": { "alias": "groupHeadingRenderer"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "selectedKeys": { "alias": "selectedKeys"; "required": false; "isSignal": true; }; "getRowId": { "alias": "getRowId"; "required": false; "isSignal": true; }; "selectionDisabled": { "alias": "selectionDisabled"; "required": false; "isSignal": true; }; "selectionLabel": { "alias": "selectionLabel"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; "toggleRow": "toggleRow"; }, never, never, true, never>;
511
518
  }
512
519
 
513
520
  export { ColumnResizeDirective, DEFAULT_TABLE_CONFIG, DataTableComponent, DataTableGroupComponent, DataTableGroupCoordinator, DataTableStackComponent, ResponsiveStrategyService, TableEngineService, VirtualizationEngineService };
@@ -262,6 +262,9 @@ For a heading richer than the key, pass a template:
262
262
  <ng-template #dayHeading let-key let-row="row"> {{ key }} <span class="muted">{{ row.created_at | date }}</span> </ng-template>
263
263
  ```
264
264
 
265
+ Headings render on both the semantic-table and stack (small-viewport) paths, so
266
+ a grouped table stays grouped at every width.
267
+
265
268
  > **Grouping and virtualization are mutually exclusive.** Virtual scrolling
266
269
  > positions rows by multiplying an index by `rowHeight`, and a heading is not
267
270
  > that tall. Setting `groupBy` turns virtualization off rather than misplacing