@tedi-design-system/angular 6.5.0-rc.1 → 6.5.0-rc.3

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.
Files changed (45) hide show
  1. package/fesm2022/tedi-design-system-angular-tedi.mjs +4507 -2799
  2. package/fesm2022/tedi-design-system-angular-tedi.mjs.map +1 -1
  3. package/package.json +2 -1
  4. package/tedi/components/buttons/collapse/collapse.component.d.ts +21 -5
  5. package/tedi/components/buttons/collapse/collapse.component.d.ts.map +1 -1
  6. package/tedi/components/buttons/collapse-button/collapse-button.component.d.ts +76 -0
  7. package/tedi/components/buttons/collapse-button/collapse-button.component.d.ts.map +1 -0
  8. package/tedi/components/buttons/index.d.ts +1 -0
  9. package/tedi/components/buttons/index.d.ts.map +1 -1
  10. package/tedi/components/content/index.d.ts +1 -0
  11. package/tedi/components/content/index.d.ts.map +1 -1
  12. package/tedi/components/content/table/index.d.ts +9 -0
  13. package/tedi/components/content/table/index.d.ts.map +1 -0
  14. package/tedi/components/content/table/row-span.utils.d.ts +10 -0
  15. package/tedi/components/content/table/row-span.utils.d.ts.map +1 -0
  16. package/tedi/components/content/table/table-columns-menu/index.d.ts +2 -0
  17. package/tedi/components/content/table/table-columns-menu/index.d.ts.map +1 -0
  18. package/tedi/components/content/table/table-columns-menu/table-columns-menu.component.d.ts +19 -0
  19. package/tedi/components/content/table/table-columns-menu/table-columns-menu.component.d.ts.map +1 -0
  20. package/tedi/components/content/table/table-header-button/index.d.ts +2 -0
  21. package/tedi/components/content/table/table-header-button/index.d.ts.map +1 -0
  22. package/tedi/components/content/table/table-header-button/table-header-button.component.d.ts +36 -0
  23. package/tedi/components/content/table/table-header-button/table-header-button.component.d.ts.map +1 -0
  24. package/tedi/components/content/table/table-toolbar/index.d.ts +2 -0
  25. package/tedi/components/content/table/table-toolbar/index.d.ts.map +1 -0
  26. package/tedi/components/content/table/table-toolbar/table-toolbar.component.d.ts +6 -0
  27. package/tedi/components/content/table/table-toolbar/table-toolbar.component.d.ts.map +1 -0
  28. package/tedi/components/content/table/table.component.d.ts +551 -0
  29. package/tedi/components/content/table/table.component.d.ts.map +1 -0
  30. package/tedi/components/content/table/table.context.d.ts +5 -0
  31. package/tedi/components/content/table/table.context.d.ts.map +1 -0
  32. package/tedi/components/content/table/table.persistence.d.ts +21 -0
  33. package/tedi/components/content/table/table.persistence.d.ts.map +1 -0
  34. package/tedi/components/content/table/table.types.d.ts +196 -0
  35. package/tedi/components/content/table/table.types.d.ts.map +1 -0
  36. package/tedi/components/helpers/empty-state/empty-state.component.d.ts +54 -0
  37. package/tedi/components/helpers/empty-state/empty-state.component.d.ts.map +1 -0
  38. package/tedi/components/helpers/empty-state/index.d.ts +2 -0
  39. package/tedi/components/helpers/empty-state/index.d.ts.map +1 -0
  40. package/tedi/components/helpers/index.d.ts +1 -0
  41. package/tedi/components/helpers/index.d.ts.map +1 -1
  42. package/tedi/components/overlay/dropdown/dropdown-item/dropdown-item.component.d.ts +14 -1
  43. package/tedi/components/overlay/dropdown/dropdown-item/dropdown-item.component.d.ts.map +1 -1
  44. package/tedi/services/translation/translations.d.ts +84 -0
  45. package/tedi/services/translation/translations.d.ts.map +1 -1
@@ -0,0 +1,551 @@
1
+ import { Injector, Signal, TemplateRef } from "@angular/core";
2
+ import { type CdkDragDrop } from "@angular/cdk/drag-drop";
3
+ import { type CellContext, type Column, type ColumnDef, type Row, type Table as TanstackTable } from "@tanstack/angular-table";
4
+ import { type CollapseButtonArrowType } from "../../buttons/collapse-button/collapse-button.component";
5
+ import { PopoverComponent } from "../../overlay/popover/popover.component";
6
+ import type { TableColumnMeta, TableExpandTrigger, TablePaginationOptions, TablePersistOptions, TableSelectionMode, TableSize, TableState, TediColumnDef, TediTableContextValue, TediTableFilterContext } from "./table.types";
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Per-slot visual config forwarded to a `tedi-pagination` instance rendered by
10
+ * the table. Mirrors the pagination component's inputs (defaults applied so the
11
+ * template binds plain values, not `T | undefined`).
12
+ */
13
+ interface ResolvedPaginationSlot {
14
+ boundaryCount: number;
15
+ siblingCount: number;
16
+ labels: TablePaginationOptions["labels"];
17
+ background: NonNullable<TablePaginationOptions["background"]>;
18
+ dividerPosition: NonNullable<TablePaginationOptions["dividerPosition"]>;
19
+ hideResults: NonNullable<TablePaginationOptions["hideResults"]>;
20
+ hidePageSize: NonNullable<TablePaginationOptions["hidePageSize"]>;
21
+ hidePager: NonNullable<TablePaginationOptions["hidePager"]>;
22
+ hideArrows: NonNullable<TablePaginationOptions["hideArrows"]>;
23
+ disableArrowsAtBoundary: boolean;
24
+ arrowVariant: NonNullable<TablePaginationOptions["arrowVariant"]>;
25
+ showArrowLabels: boolean;
26
+ previousIcon: NonNullable<TablePaginationOptions["previousIcon"]>;
27
+ nextIcon: NonNullable<TablePaginationOptions["nextIcon"]>;
28
+ showModalTitle: boolean;
29
+ }
30
+ export declare class TediTableComponent<TData> {
31
+ /** Stable identifier used for synthetic ids. */
32
+ readonly id: import("@angular/core").InputSignal<string | undefined>;
33
+ /** Row data. */
34
+ readonly data: import("@angular/core").InputSignal<TData[]>;
35
+ /** Column definitions. */
36
+ readonly columns: import("@angular/core").InputSignal<TediColumnDef<TData>[]>;
37
+ /** Visual size. @default 'medium' */
38
+ readonly size: import("@angular/core").InputSignal<TableSize>;
39
+ /** Caption rendered above the table. */
40
+ readonly caption: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
41
+ /**
42
+ * Alternating row backgrounds (zebra striping).
43
+ * @default false
44
+ */
45
+ readonly striped: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
46
+ /**
47
+ * Vertical separators between columns.
48
+ * @default false
49
+ */
50
+ readonly verticalBorders: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
51
+ /**
52
+ * Removes the table's outer border and corner radius.
53
+ * @default false
54
+ */
55
+ readonly borderless: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
56
+ /**
57
+ * Freezes the first column in place during horizontal scroll.
58
+ * @default false
59
+ */
60
+ readonly stickyFirstColumn: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
61
+ /**
62
+ * Pins `<thead>` to the top during vertical scroll. Requires `maxHeight` to
63
+ * be set so the table has a scroll container.
64
+ * @default false
65
+ */
66
+ readonly stickyHeader: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
67
+ /**
68
+ * Switches the table to `table-layout: fixed`, making column `size` /
69
+ * `minSize` / `maxSize` authoritative — cell content wraps inside the
70
+ * allotted width instead of stretching the column. With the default auto
71
+ * layout, browsers size columns to content and the widths are only hints.
72
+ * @default false
73
+ */
74
+ readonly fixedLayout: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
75
+ /**
76
+ * Constrains the table's height and wraps it in a vertically scrollable
77
+ * container. A number is treated as pixels; a string is used verbatim as a
78
+ * CSS length. Pair with `stickyHeader` to keep the header visible while
79
+ * scrolling.
80
+ * @default undefined
81
+ */
82
+ readonly maxHeight: import("@angular/core").InputSignal<string | number | undefined>;
83
+ /**
84
+ * Id of the row to render in the active/highlighted state. Use to mark the
85
+ * row whose detail is currently open elsewhere (e.g. a side panel).
86
+ * @default undefined
87
+ */
88
+ readonly activeRowId: import("@angular/core").InputSignal<string | undefined>;
89
+ /**
90
+ * Whether selected rows get a background highlight. Default `true`.
91
+ * Set to `false` when you want selection state for logic but not visual.
92
+ * @default true
93
+ */
94
+ readonly selectedRowHighlight: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
95
+ /**
96
+ * Forces the row hover background on (`true`) or off (`false`). When omitted,
97
+ * hover styling tracks whether rows are interactive — on when `interactive`
98
+ * is set or `expandTrigger` is `'row'`, off otherwise.
99
+ * @default undefined
100
+ */
101
+ readonly rowHover: import("@angular/core").InputSignal<boolean | undefined>;
102
+ /**
103
+ * Enables row selection and renders the selection column. Pass `true` to
104
+ * allow selecting any row, or a predicate `(row) => boolean` to gate which
105
+ * rows are selectable. Pair with `selectionMode` for checkbox vs radio.
106
+ * @default undefined
107
+ */
108
+ readonly enableRowSelection: import("@angular/core").InputSignal<boolean | ((row: Row<TData>) => boolean) | undefined>;
109
+ /**
110
+ * Whether row selection is multi- or single-row. `'multiple'` (default)
111
+ * renders a checkbox per row + a select-all checkbox in the header.
112
+ * `'single'` renders a radio per row (sharing one `name` so native HTML
113
+ * group behaviour auto-deselects siblings) and omits the header control —
114
+ * select-all is meaningless in single-select mode. Mirrors the React
115
+ * Table's `selectionMode` prop.
116
+ * @default 'multiple'
117
+ */
118
+ readonly selectionMode: import("@angular/core").InputSignal<TableSelectionMode>;
119
+ /**
120
+ * Forces TanStack's column-filter machinery on. Automatically enabled when
121
+ * any column opts into the built-in `filterable` shorthand, so set this
122
+ * explicitly only when wiring filters through `state` / `(stateChange)`
123
+ * without using `filterable` columns.
124
+ * @default false
125
+ */
126
+ readonly enableColumnFilters: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
127
+ /**
128
+ * Template rendered as an expandable detail row beneath each expandable row.
129
+ * Receives the TanStack `Row` as `$implicit` (`let-row`). Providing it
130
+ * auto-adds the expand column; pair with `getRowCanExpand` to gate which
131
+ * rows expand.
132
+ * @default undefined
133
+ */
134
+ readonly renderSubComponent: import("@angular/core").InputSignal<TemplateRef<{
135
+ $implicit: Row<TData>;
136
+ }> | undefined>;
137
+ /**
138
+ * Predicate deciding whether a given row can expand. When omitted, every row
139
+ * with a `renderSubComponent` / sub-rows is expandable.
140
+ * @default undefined
141
+ */
142
+ readonly getRowCanExpand: import("@angular/core").InputSignal<((row: Row<TData>) => boolean) | undefined>;
143
+ /**
144
+ * How an expandable row is toggled. `button` (default) — only the chevron
145
+ * button toggles. `row` — clicking anywhere on the row toggles. The chevron
146
+ * renders in the bordered `secondary` style regardless; use
147
+ * `expandButtonVariant` to change it.
148
+ * @default 'button'
149
+ */
150
+ readonly expandTrigger: import("@angular/core").InputSignal<TableExpandTrigger>;
151
+ /**
152
+ * Overrides the expand toggle button's arrow style. Defaults to the bordered
153
+ * `secondary` style; set `default` for the neutral (borderless) chevron.
154
+ * Only affects the icon-only button (i.e. when `expandButtonLabel` is unset).
155
+ * @default undefined
156
+ */
157
+ readonly expandButtonVariant: import("@angular/core").InputSignal<CollapseButtonArrowType | undefined>;
158
+ /**
159
+ * Renders a visible label next to the expand chevron instead of an icon-only
160
+ * button. Pass a single string to use the same label in both states, or an
161
+ * `{ open, close }` pair for distinct collapsed / expanded labels (`open` is
162
+ * shown while collapsed, `close` while expanded). When unset, the button is
163
+ * icon-only and its accessible name comes from the translated
164
+ * expand/collapse-row labels.
165
+ * @default undefined
166
+ */
167
+ readonly expandButtonLabel: import("@angular/core").InputSignal<string | {
168
+ open: string;
169
+ close: string;
170
+ } | undefined>;
171
+ /**
172
+ * Accessor returning a row's child rows, enabling hierarchical / tree data.
173
+ * Children render as nested sub-rows under their parent and expand via the
174
+ * same chevron.
175
+ * @default undefined
176
+ */
177
+ readonly getSubRows: import("@angular/core").InputSignal<((row: TData) => TData[] | undefined) | undefined>;
178
+ /**
179
+ * Enables pagination and configures the bottom paginator slot. This is also
180
+ * the source of truth for `pageSize` / `pageSizeOptions` — the top slot
181
+ * (if any) shares the same state. Pass `true` to enable with defaults,
182
+ * `false` / omit to disable entirely.
183
+ */
184
+ readonly pagination: import("@angular/core").InputSignal<boolean | TablePaginationOptions | undefined>;
185
+ /**
186
+ * Opt-in top paginator slot. Independent visual config from the bottom slot
187
+ * (different `hide*` toggles, divider position, labels, etc.) but shares
188
+ * page / page-size state with the bottom slot. Requires `pagination` to be
189
+ * truthy — if pagination as a feature is off, the top slot does not render.
190
+ * @default undefined
191
+ */
192
+ readonly paginationTop: import("@angular/core").InputSignal<boolean | TablePaginationOptions | undefined>;
193
+ /**
194
+ * Switch pagination to server-side mode: the table renders `data` as the
195
+ * current page as-is and does not slice it. Supply `pageCount` or `rowCount`.
196
+ * @default false
197
+ */
198
+ readonly manualPagination: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
199
+ /**
200
+ * Switch sorting to server-side mode: the table emits sort state via
201
+ * `(stateChange)` but does not reorder `data` itself.
202
+ * @default false
203
+ */
204
+ readonly manualSorting: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
205
+ /**
206
+ * Switch filtering to server-side mode: the table emits filter state via
207
+ * `(stateChange)` but does not filter `data` itself.
208
+ * @default false
209
+ */
210
+ readonly manualFiltering: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
211
+ /** Total page count for server-side pagination (`manualPagination`). */
212
+ readonly pageCount: import("@angular/core").InputSignal<number | undefined>;
213
+ /** Total row count for server-side pagination (`manualPagination`). */
214
+ readonly rowCount: import("@angular/core").InputSignal<number | undefined>;
215
+ /**
216
+ * Controlled state. When provided, the table is fully controlled — render the
217
+ * given slices and emit every change via `(stateChange)` for the consumer to
218
+ * apply back.
219
+ * @default undefined
220
+ */
221
+ readonly state: import("@angular/core").InputSignal<Partial<TableState> | undefined>;
222
+ /**
223
+ * Initial state for uncontrolled mode (seeds sorting / filters / pagination /
224
+ * selection etc. on first render). Ignored once `state` is provided.
225
+ * @default undefined
226
+ */
227
+ readonly defaultState: import("@angular/core").InputSignal<Partial<TableState> | undefined>;
228
+ /**
229
+ * Persist selected state slices to storage. `{ key, storage?, include? }` —
230
+ * defaults to persisting user-preference slices (`columnVisibility`,
231
+ * `columnOrder`, `rowOrder`, `columnSizing`).
232
+ * @default undefined
233
+ */
234
+ readonly persist: import("@angular/core").InputSignal<TablePersistOptions | undefined>;
235
+ /**
236
+ * Empty-state content shown when there are no rows — a string or a
237
+ * `TemplateRef`. Defaults to the translated `table.no-data` label.
238
+ * @default undefined
239
+ */
240
+ readonly placeholder: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
241
+ /**
242
+ * ARIA live-region role wrapping the empty-state placeholder — `'status'`
243
+ * (polite) or `'alert'` (assertive). Omit for no live region.
244
+ * @default undefined
245
+ */
246
+ readonly placeholderRole: import("@angular/core").InputSignal<"alert" | "status" | undefined>;
247
+ /**
248
+ * Adds clickable styling, role="button", and keyboard activation to rows.
249
+ * Subscribe to `rowClick` to react when a row is activated. Defaults to
250
+ * `false` — turn on when rows should behave like buttons.
251
+ * @default false
252
+ */
253
+ readonly interactive: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
254
+ /**
255
+ * Makes data rows reorderable via drag-and-drop. The consumer reorders the
256
+ * `data` array in `(rowDrop)` (typically with `moveItemInArray`) and passes
257
+ * the new array back via `[data]`. Pair with `table-layout: fixed` (via the
258
+ * `tedi-table--draggable-rows` host modifier added automatically) so the
259
+ * drag preview preserves cell widths.
260
+ * @default false
261
+ */
262
+ readonly draggableRows: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
263
+ /**
264
+ * Makes columns reorderable via drag-and-drop on the header row. Reorders
265
+ * the table's internal `columnOrder` state directly — no consumer wiring
266
+ * needed beyond persisting the state slice if desired.
267
+ * @default false
268
+ */
269
+ readonly draggableColumns: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
270
+ /**
271
+ * Emits the full merged table state whenever any slice changes (sorting,
272
+ * filters, pagination, selection, expansion, column visibility / order).
273
+ * Use with `state` for controlled mode or to persist externally.
274
+ */
275
+ readonly stateChange: import("@angular/core").OutputEmitterRef<TableState>;
276
+ /**
277
+ * Emits the activated row. Only fires when `interactive` is `true` (click or
278
+ * Enter/Space on a focused row).
279
+ */
280
+ readonly rowClick: import("@angular/core").OutputEmitterRef<Row<TData>>;
281
+ /**
282
+ * Fires when a row is dropped to a new position. `previousIndex` and
283
+ * `currentIndex` are normalised to **source `data` array** positions — even
284
+ * when the table is sorted, filtered, or paginated — so consumers can call
285
+ * `moveItemInArray(data, previousIndex, currentIndex)` directly and pass the
286
+ * reordered array back via `[data]`.
287
+ */
288
+ readonly rowDrop: import("@angular/core").OutputEmitterRef<CdkDragDrop<TData[], TData[], any>>;
289
+ protected readonly injector: Injector;
290
+ private readonly translation;
291
+ private readonly _hoveredRowId;
292
+ /**
293
+ * Id of the data row currently under the pointer, or `null`. Exposed so
294
+ * cell templates can react to hover (e.g. emphasise a badge while its row is
295
+ * hovered). Read it via a template reference: `#table` →
296
+ * `table.hoveredRowId()`. Also available through `TEDI_TABLE_CONTEXT`.
297
+ */
298
+ readonly hoveredRowId: Signal<string | null>;
299
+ private readonly internalId;
300
+ protected readonly resolvedId: Signal<string>;
301
+ protected readonly placeholderLabel: Signal<string>;
302
+ protected readonly rowDetailsLabel: Signal<string>;
303
+ protected readonly dragColumnLabel: Signal<string>;
304
+ protected readonly dragRowLabel: Signal<string>;
305
+ private readonly persistence;
306
+ protected readonly tableState: Signal<TableState>;
307
+ protected readonly SELECT_COLUMN_ID = "__select__";
308
+ protected readonly EXPAND_COLUMN_ID = "__expand__";
309
+ protected readonly DRAG_COLUMN_ID = "__drag__";
310
+ private readonly paginationOptions;
311
+ protected readonly paginationEnabled: Signal<boolean>;
312
+ protected readonly paginationPageSizeOptions: Signal<number[]>;
313
+ protected readonly resolvedBottomSlot: Signal<ResolvedPaginationSlot | null>;
314
+ protected readonly resolvedTopSlot: Signal<ResolvedPaginationSlot | null>;
315
+ /**
316
+ * Which slot the `[tediPaginationResults]` projection should be rendered in.
317
+ * Picks whichever paginator actually shows results; defaults to the bottom
318
+ * when both do, falls back to the top when bottom hides results.
319
+ */
320
+ protected readonly resultsRenderTarget: Signal<"top" | "bottom" | null>;
321
+ /**
322
+ * Captures a `<ng-template tediPaginationResults>` declared inside the
323
+ * `<tedi-table>` host. Read as a `TemplateRef` (the directive is a bare
324
+ * marker) and forwarded — projected as `<span tediPaginationResults>` — into
325
+ * whichever paginator slot is set to display results.
326
+ */
327
+ private readonly customResultsTemplateRef;
328
+ protected readonly customResultsTemplate: Signal<TemplateRef<any> | null>;
329
+ protected readonly topResultsTemplate: Signal<TemplateRef<any> | null>;
330
+ protected readonly bottomResultsTemplate: Signal<TemplateRef<any> | null>;
331
+ private readonly paginationHostClasses;
332
+ private readonly hasExpansion;
333
+ private readonly hasSelection;
334
+ /**
335
+ * True when any column has `filterable` truthy. The table forces TanStack's
336
+ * column-filter machinery on in this case so per-column `getCanFilter()`
337
+ * returns true and the trigger button renders — without forcing the
338
+ * legacy inline filter row.
339
+ */
340
+ private readonly hasFilterableColumns;
341
+ private readonly augmentedColumns;
342
+ private buildStateChangeHandlers;
343
+ private readonly defaultPagination;
344
+ private buildResolvedState;
345
+ protected readonly table: TanstackTable<TData>;
346
+ readonly contextValue: TediTableContextValue<TData>;
347
+ private trackTableInputs;
348
+ protected readonly hostClasses: Signal<string>;
349
+ protected readonly headerGroups: Signal<import("@tanstack/angular-table").HeaderGroup<TData>[]>;
350
+ protected readonly rows: Signal<Row<TData>[]>;
351
+ protected readonly leafColumns: Signal<Column<TData, unknown>[]>;
352
+ protected readonly leafColumnCount: Signal<number>;
353
+ protected readonly footerGroups: Signal<import("@tanstack/angular-table").HeaderGroup<TData>[]>;
354
+ protected readonly hasFooter: Signal<boolean>;
355
+ protected readonly headerRowCount: Signal<number>;
356
+ protected readonly totalDataRowCount: Signal<number>;
357
+ /**
358
+ * `aria-rowcount` / `aria-rowindex` only apply to genuine grid rows (role
359
+ * `row`). When `interactive` is on, each `<tr>` takes `role="button"`, which
360
+ * does not allow `aria-rowindex` — so the whole row-indexing scheme is
361
+ * disabled to avoid an invalid-ARIA violation.
362
+ */
363
+ protected readonly ariaRowIndexingEnabled: Signal<boolean>;
364
+ protected readonly ariaRowCount: Signal<number | null>;
365
+ protected readonly rowAriaIndexById: Signal<Map<string, number | null>>;
366
+ protected readonly paginationPage: Signal<number>;
367
+ protected readonly paginationPageSize: Signal<number>;
368
+ protected readonly paginationTotalItems: Signal<number>;
369
+ protected readonly paginationPageCount: Signal<number>;
370
+ protected readonly maxHeightStyle: Signal<string | null>;
371
+ protected readonly isAllPageRowsSelected: Signal<boolean>;
372
+ protected readonly isSomePageRowsSelected: Signal<boolean>;
373
+ constructor();
374
+ private applyPatch;
375
+ protected handleRowClick(row: Row<TData>): void;
376
+ protected rowExpandsOnClick(row: Row<TData>): boolean;
377
+ protected handleRowMouseEnter(row: Row<TData>): void;
378
+ protected handleRowMouseLeave(): void;
379
+ /**
380
+ * Consumer-authored sizing per column id, read from the *original* column
381
+ * defs (`augmentedColumns`) — TanStack merges its defaults
382
+ * (`size: 150`, `minSize: 20`, `maxSize: Number.MAX_SAFE_INTEGER`) into the
383
+ * resolved `column.columnDef`, so that copy can't tell "set" from "default".
384
+ */
385
+ private readonly authoredColumnSizing;
386
+ /**
387
+ * Rendered `width` (px) for a column's cells. Under `fixedLayout`, only
388
+ * explicitly-sized columns get a width so the unsized ones absorb the
389
+ * leftover space (otherwise fixed layout scales every column up to fill the
390
+ * table). In auto layout the (clamped) size is emitted as a hint for all.
391
+ */
392
+ protected headerCellWidth(column: {
393
+ id: string;
394
+ getSize: () => number;
395
+ }): number | null;
396
+ /** Consumer-set `min-width` (px); `null` when not set (TanStack's default
397
+ * `20` is not emitted as CSS). */
398
+ protected columnMinWidth(column: {
399
+ id: string;
400
+ }): number | null;
401
+ /** Consumer-set `max-width` (px); `null` when not set (TanStack's default
402
+ * `Number.MAX_SAFE_INTEGER` is not emitted as CSS). */
403
+ protected columnMaxWidth(column: {
404
+ id: string;
405
+ }): number | null;
406
+ protected handleRowKeydown(event: KeyboardEvent, row: Row<TData>): void;
407
+ protected handleRowDrop(event: CdkDragDrop<TData[]>): void;
408
+ protected handleColumnDrop(event: CdkDragDrop<unknown>): void;
409
+ protected handlePaginationPageChange(nextPage: number): void;
410
+ protected handlePaginationPageSizeChange(nextSize: number | undefined): void;
411
+ protected getColumnMeta(column: {
412
+ columnDef: {
413
+ meta?: unknown;
414
+ };
415
+ }): TableColumnMeta | undefined;
416
+ protected getHeaderAriaSort(column: ReturnType<TanstackTable<TData>["getAllLeafColumns"]>[number]): "ascending" | "descending" | "none" | null;
417
+ protected getHeaderLabel(column: ReturnType<TanstackTable<TData>["getAllLeafColumns"]>[number]): string | null;
418
+ protected resolveColumnLabel(column: ReturnType<TanstackTable<TData>["getAllLeafColumns"]>[number]): string;
419
+ protected filterLabel(column: ReturnType<TanstackTable<TData>["getAllLeafColumns"]>[number]): string;
420
+ protected filterPlaceholder(): string;
421
+ protected selectAllLabel(): string;
422
+ protected selectRowLabel(row: Row<TData>): string;
423
+ protected expandRowLabel(isOpen: boolean): string;
424
+ /** Whether the consumer opted the expand button into visible-label mode. */
425
+ protected readonly expandButtonHasLabel: Signal<boolean>;
426
+ /**
427
+ * Arrow style for the expand toggle button. Defaults to the bordered
428
+ * `secondary` style regardless of `expandTrigger`; honours
429
+ * `expandButtonVariant` when the consumer sets it.
430
+ */
431
+ protected readonly resolvedExpandVariant: Signal<CollapseButtonArrowType>;
432
+ /** Visible label shown while a row is collapsed (`open` action). */
433
+ protected readonly expandButtonOpenText: Signal<string | undefined>;
434
+ /** Visible label shown while a row is expanded (`close` action). */
435
+ protected readonly expandButtonCloseText: Signal<string | undefined>;
436
+ protected handleSelectAll(checked: boolean): void;
437
+ protected handleSelectRow(row: Row<TData>, checked: boolean): void;
438
+ protected handleExpandToggle(row: Row<TData>): void;
439
+ protected handleExpandKeydown(event: KeyboardEvent): void;
440
+ protected handleColumnFilter(column: ReturnType<TanstackTable<TData>["getAllLeafColumns"]>[number], value: string): void;
441
+ protected shouldRenderHeader(header: {
442
+ isPlaceholder: boolean;
443
+ column: {
444
+ columnDef: ColumnDef<TData> & {
445
+ columns?: unknown[];
446
+ };
447
+ parent?: unknown;
448
+ };
449
+ }, rowIndex: number): boolean;
450
+ protected getHeaderRowSpan(header: {
451
+ isPlaceholder: boolean;
452
+ column: {
453
+ columnDef: ColumnDef<TData> & {
454
+ columns?: unknown[];
455
+ };
456
+ parent?: unknown;
457
+ };
458
+ }, rowIndex: number): number | null;
459
+ protected isHeaderGroup(header: {
460
+ subHeaders: unknown[];
461
+ }): boolean;
462
+ protected getFilterValue(column: ReturnType<TanstackTable<TData>["getAllLeafColumns"]>[number]): string;
463
+ protected isString(value: unknown): value is string;
464
+ protected isNumber(value: unknown): value is number;
465
+ /**
466
+ * Returns true when the column opted into the built-in sort affordance
467
+ * (`sortable: true` on its `TediColumnDef`), TanStack reports it can sort
468
+ * (`enableSorting !== false`), and the rendered header content is a plain
469
+ * string / number. Custom header `TemplateRef`s and functions bow out of
470
+ * the shorthand and render via `flexRender` as-is.
471
+ */
472
+ protected shouldRenderSortableHeader(column: Column<TData, unknown>, content: unknown): boolean;
473
+ /**
474
+ * Material icon name reflecting the column's current sort state.
475
+ * `asc → arrow_upward`, `desc → arrow_downward`, otherwise `unfold_more`.
476
+ */
477
+ protected sortIcon(column: Column<TData, unknown>): string;
478
+ protected handleSortToggle(column: Column<TData, unknown>): void;
479
+ /**
480
+ * Per-column in-popover filter draft. Keyed by `column.id`. The signal
481
+ * carries the unapplied value while the popover is open; `Apply` calls
482
+ * `column.setFilterValue(draft())`, `Clear` resets both the draft and the
483
+ * applied value. Lazy-initialised so columns without `filterable` pay
484
+ * nothing.
485
+ */
486
+ private readonly filterDrafts;
487
+ /**
488
+ * Normalises `filterable: true | TableFilterOptions | undefined | false`
489
+ * into `TableFilterOptions | null`. `null` means the column did not opt in.
490
+ */
491
+ private resolveFilterOptions;
492
+ /**
493
+ * Typed accessor for the consumer-provided filter template — pulls
494
+ * `TediColumnDef.filterTemplate` off a TanStack `Column.columnDef` (whose
495
+ * static type is the base `ColumnDef`, so the property would otherwise
496
+ * read as `unknown` in strict templates).
497
+ */
498
+ protected filterTemplateFor(col: Column<TData, unknown>): TemplateRef<TediTableFilterContext<unknown, TData>> | undefined;
499
+ /**
500
+ * True when the column opted into the built-in filter affordance
501
+ * (`filterable: true | TableFilterOptions`) AND TanStack reports it can
502
+ * filter (`enableColumnFilter !== false`, etc.).
503
+ */
504
+ protected shouldRenderFilterButton(col: Column<TData, unknown>): boolean;
505
+ /** Whether the column currently has a filter applied. Drives the trigger's
506
+ * selected / filled state. */
507
+ protected filterIsActive(col: Column<TData, unknown>): boolean;
508
+ /** Translated aria-label for the filter trigger button — uses the column
509
+ * label (header text or `meta.label`). */
510
+ protected filterAriaLabel(col: ReturnType<TanstackTable<TData>["getAllLeafColumns"]>[number]): string;
511
+ protected filterApplyLabel(): string;
512
+ protected filterClearLabel(): string;
513
+ private getFilterDraft;
514
+ /**
515
+ * Called when the filter trigger button is clicked. If `clearOnClose` is
516
+ * set, the draft is reset to the currently-applied value every time the
517
+ * popover opens — otherwise the draft persists across opens until the user
518
+ * Applies or Clears.
519
+ */
520
+ protected handleFilterTriggerClick(col: Column<TData, unknown>): void;
521
+ /**
522
+ * Builds the per-column context object handed to the consumer's
523
+ * `filterTemplate`. Calling `setValue` writes to the draft; `apply` /
524
+ * `clear` commit the draft and close the popover.
525
+ */
526
+ /**
527
+ * Builds the per-column context object handed to the consumer's
528
+ * `filterTemplate`. `$implicit` is wired to the context itself so
529
+ * `<ng-template let-ctx>` resolves `ctx.value`, `ctx.setValue`,
530
+ * `ctx.apply()`, `ctx.clear()` and `ctx.column` without extra `let-*`
531
+ * destructuring.
532
+ */
533
+ protected filterContextFor(col: Column<TData, unknown>, popover: PopoverComponent): TediTableFilterContext<unknown, TData>;
534
+ protected handleFilterApply(col: Column<TData, unknown>, popover: PopoverComponent): void;
535
+ protected handleFilterClear(col: Column<TData, unknown>, popover: PopoverComponent): void;
536
+ /**
537
+ * Resolve `rowSpan` for a body cell.
538
+ * - `null` → render normal `<td>`
539
+ * - `0` → skip rendering (covered by a previous spanning cell)
540
+ * - `N>1` → emit `rowspan="N"`
541
+ */
542
+ protected resolveRowSpan(cell: {
543
+ column: {
544
+ columnDef: TediColumnDef<TData>;
545
+ };
546
+ }, cellContext: CellContext<TData, unknown>): number | null;
547
+ static ɵfac: i0.ɵɵFactoryDeclaration<TediTableComponent<any>, never>;
548
+ static ɵcmp: i0.ɵɵComponentDeclaration<TediTableComponent<any>, "tedi-table", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "verticalBorders": { "alias": "verticalBorders"; "required": false; "isSignal": true; }; "borderless": { "alias": "borderless"; "required": false; "isSignal": true; }; "stickyFirstColumn": { "alias": "stickyFirstColumn"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "fixedLayout": { "alias": "fixedLayout"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "activeRowId": { "alias": "activeRowId"; "required": false; "isSignal": true; }; "selectedRowHighlight": { "alias": "selectedRowHighlight"; "required": false; "isSignal": true; }; "rowHover": { "alias": "rowHover"; "required": false; "isSignal": true; }; "enableRowSelection": { "alias": "enableRowSelection"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "enableColumnFilters": { "alias": "enableColumnFilters"; "required": false; "isSignal": true; }; "renderSubComponent": { "alias": "renderSubComponent"; "required": false; "isSignal": true; }; "getRowCanExpand": { "alias": "getRowCanExpand"; "required": false; "isSignal": true; }; "expandTrigger": { "alias": "expandTrigger"; "required": false; "isSignal": true; }; "expandButtonVariant": { "alias": "expandButtonVariant"; "required": false; "isSignal": true; }; "expandButtonLabel": { "alias": "expandButtonLabel"; "required": false; "isSignal": true; }; "getSubRows": { "alias": "getSubRows"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "paginationTop": { "alias": "paginationTop"; "required": false; "isSignal": true; }; "manualPagination": { "alias": "manualPagination"; "required": false; "isSignal": true; }; "manualSorting": { "alias": "manualSorting"; "required": false; "isSignal": true; }; "manualFiltering": { "alias": "manualFiltering"; "required": false; "isSignal": true; }; "pageCount": { "alias": "pageCount"; "required": false; "isSignal": true; }; "rowCount": { "alias": "rowCount"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "defaultState": { "alias": "defaultState"; "required": false; "isSignal": true; }; "persist": { "alias": "persist"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "placeholderRole": { "alias": "placeholderRole"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "draggableRows": { "alias": "draggableRows"; "required": false; "isSignal": true; }; "draggableColumns": { "alias": "draggableColumns"; "required": false; "isSignal": true; }; }, { "stateChange": "stateChange"; "rowClick": "rowClick"; "rowDrop": "rowDrop"; }, ["customResultsTemplateRef"], ["tedi-table-toolbar", "tedi-table-columns-menu"], true, never>;
549
+ }
550
+ export {};
551
+ //# sourceMappingURL=table.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.component.d.ts","sourceRoot":"","sources":["../../../../../tedi/components/content/table/table.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ import type { TediTableContextValue } from "./table.types";
3
+ export declare const TEDI_TABLE_CONTEXT: InjectionToken<TediTableContextValue<unknown>>;
4
+ export declare function injectTediTableContext<TData = unknown>(): TediTableContextValue<TData>;
5
+ //# sourceMappingURL=table.context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.context.d.ts","sourceRoot":"","sources":["../../../../../tedi/components/content/table/table.context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,cAAc,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,eAAO,MAAM,kBAAkB,gDAE9B,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,KAAK,GAAG,OAAO,KACZ,qBAAqB,CAAC,KAAK,CAAC,CAQhC"}
@@ -0,0 +1,21 @@
1
+ import { type Signal } from "@angular/core";
2
+ import type { TablePersistOptions, TableState, TableStatePatch } from "./table.types";
3
+ export interface TablePersistenceController {
4
+ /** Merged state signal (internal ∪ controlled). Reactive. */
5
+ state: Signal<TableState>;
6
+ /** Apply a patch — updates internal state, persists, fires onStateChange. */
7
+ patch(next: TableStatePatch): void;
8
+ /** Replace the controlled slice. */
9
+ setControlled(controlled: Partial<TableState> | undefined): void;
10
+ /** Replace persist options. */
11
+ setPersist(persist: TablePersistOptions | undefined): void;
12
+ /** Replace onStateChange callback. */
13
+ setOnStateChange(cb: ((state: TableState) => void) | undefined): void;
14
+ }
15
+ export declare function createTablePersistence(options: {
16
+ persist?: TablePersistOptions;
17
+ controlled?: Partial<TableState>;
18
+ defaultState?: Partial<TableState>;
19
+ onStateChange?: (state: TableState) => void;
20
+ }): TablePersistenceController;
21
+ //# sourceMappingURL=table.persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.persistence.d.ts","sourceRoot":"","sources":["../../../../../tedi/components/content/table/table.persistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EACV,eAAe,EAChB,MAAM,eAAe,CAAC;AAiDvB,MAAM,WAAW,0BAA0B;IACzC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1B,6EAA6E;IAC7E,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,oCAAoC;IACpC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IACjE,+BAA+B;IAC/B,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,GAAG,IAAI,CAAC;IAC3D,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CACvE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CAC7C,GAAG,0BAA0B,CA0E7B"}