@slotted/angular 0.1.0-beta.5 → 0.1.0-beta.7

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 (57) hide show
  1. package/docs/menu.json +12 -0
  2. package/docs/menu.md +2 -0
  3. package/docs/segmented-control.json +7 -11
  4. package/docs/segmented-control.md +1 -1
  5. package/docs/side-navigation.json +1 -0
  6. package/docs/side-navigation.md +1 -1
  7. package/docs/table.examples.md +2 -2
  8. package/docs/table.json +2 -2
  9. package/docs/tabs.json +4 -1
  10. package/docs/tabs.md +1 -1
  11. package/fesm2022/slotted-angular-action-bar.mjs +1 -1
  12. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  13. package/fesm2022/slotted-angular-app-shell.mjs +2 -2
  14. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  15. package/fesm2022/slotted-angular-button.mjs +12 -12
  16. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  17. package/fesm2022/slotted-angular-chart.mjs +2 -2
  18. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  19. package/fesm2022/slotted-angular-color-picker.mjs +1 -1
  20. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  21. package/fesm2022/slotted-angular-column-manager.mjs +1 -1
  22. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  23. package/fesm2022/slotted-angular-dashboard-grid.mjs +1 -1
  24. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  25. package/fesm2022/slotted-angular-data-grid.mjs +2 -2
  26. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  27. package/fesm2022/slotted-angular-data-list.mjs +1 -1
  28. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  29. package/fesm2022/slotted-angular-event-calendar.mjs +1 -1
  30. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  31. package/fesm2022/slotted-angular-filter-bar.mjs +1 -1
  32. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  33. package/fesm2022/slotted-angular-kbd.mjs +4 -4
  34. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  35. package/fesm2022/slotted-angular-menu.mjs +12 -4
  36. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  37. package/fesm2022/slotted-angular-saved-views.mjs +1 -1
  38. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  39. package/fesm2022/slotted-angular-segmented-control.mjs +2 -2
  40. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  41. package/fesm2022/slotted-angular-side-navigation.mjs +2 -2
  42. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  43. package/fesm2022/slotted-angular-split-button.mjs +4 -4
  44. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  45. package/fesm2022/slotted-angular-stat-card.mjs +2 -2
  46. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  47. package/fesm2022/slotted-angular-table.mjs +3 -1
  48. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  49. package/fesm2022/slotted-angular-tabs.mjs +2 -2
  50. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  51. package/fesm2022/slotted-angular-toolbar.mjs +1 -1
  52. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  53. package/package.json +3 -3
  54. package/types/slotted-angular-menu.d.ts +11 -2
  55. package/types/slotted-angular-menu.d.ts.map +1 -1
  56. package/types/slotted-angular-table.d.ts +3 -1
  57. package/types/slotted-angular-table.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-table.mjs","sources":["../../table/src/table-defaults.ts","../../table/src/table.ts","../../table/src/table-content.ts","../../table/src/table-parts.ts","../../table/src/table-filter.ts","../../table/src/slotted-angular-table.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** How much of a frame the set is given. The vocabulary `description-list` set. */\nexport type TableVariant = 'plain' | 'ruled' | 'framed';\n\n/**\n * Whether the first and the last column keep the cell's inset on their outer\n * side. `flush` reaches `plain` and `ruled` only: a `framed` table keeps the\n * inset, because its text stands against a border.\n */\nexport type TableEdges = 'inset' | 'flush';\n\n/**\n * Whether the browser sizes the columns from their content or from what the\n * table states. `fixed` is what makes a stated width hold and a truncated cell\n * truncate at all.\n */\nexport type TableLayout = 'auto' | 'fixed';\n\nexport type TableSelectionMode = 'none' | 'single' | 'multiple';\n\n/**\n * What a sticky header stays inside: the family's own scroller, or whatever\n * scrolls outside it — the page, an app shell, a scroll area.\n */\nexport type TableStickyTo = 'scroll' | 'page';\n\n/** Which edge a cell's content stands on, resolved logically. */\nexport type TableAlign = 'start' | 'center' | 'end';\n\n/** What a value longer than its column does. None of the three removes it. */\nexport type TableText = 'wrap' | 'truncate' | 'nowrap';\n\n/** Which edge a column is pinned to while the table scrolls past it. */\nexport type TableSticky = 'start' | 'end';\n\nexport type TableSortDirection = 'ascending' | 'descending';\n\n/**\n * Which column the rows are ordered by, and which way. The family holds it and\n * reorders nothing: the rows are the consumer's own, written in the template,\n * so the consumer applies the descriptor to its own array or its own query.\n */\nexport interface TableSortDescriptor {\n column: string;\n direction: TableSortDirection;\n}\n\nexport type TableSortReason = 'pointer' | 'keyboard' | 'clear' | 'programmatic';\nexport type TableSelectionReason = 'pointer' | 'keyboard' | 'select' | 'clear' | 'programmatic';\nexport type TableExpandedReason = 'pointer' | 'keyboard' | 'programmatic';\n\nexport interface TableDefaults {\n cellAlign: TableAlign;\n columns: number;\n edges: TableEdges;\n layout: TableLayout;\n selectionMode: TableSelectionMode;\n stickyFooter: boolean;\n stickyHeader: boolean;\n stickyTo: TableStickyTo;\n striped: boolean;\n variant: TableVariant;\n}\n\nconst FALLBACK: TableDefaults = {\n cellAlign: 'center',\n columns: 1,\n edges: 'inset',\n layout: 'auto',\n selectionMode: 'none',\n stickyFooter: false,\n stickyHeader: false,\n stickyTo: 'scroll',\n striped: false,\n variant: 'ruled',\n};\n\nexport const TABLE_DEFAULTS = new InjectionToken<TableDefaults>('slotted table defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its tables are framed and how they select,\n * rather than repeating the same inputs on every listing screen. A table that\n * states any of them itself still wins. Its words come from the language in\n * force (`provideSlotted`).\n */\nexport function provideTableDefaults(defaults: Partial<TableDefaults>) {\n return {\n provide: TABLE_DEFAULTS,\n useFactory: (): TableDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectTableDefaults(): TableDefaults {\n return inject(TABLE_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlTableIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-table-${this.count}`;\n }\n}\n","import { nextSelection } from '@slotted/core/collection';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { tableMessages, type PartialMessages, type TableMessages } from '@slotted/core/i18n';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\n\nimport {\n injectTableDefaults,\n SlTableIdFactory,\n type TableAlign,\n type TableEdges,\n type TableLayout,\n type TableSelectionMode,\n type TableSelectionReason,\n type TableSortDescriptor,\n type TableStickyTo,\n type TableVariant,\n} from './table-defaults';\n\nexport type {\n TableAlign,\n TableDefaults,\n TableEdges,\n TableExpandedReason,\n TableLayout,\n TableSelectionMode,\n TableSelectionReason,\n TableSortDescriptor,\n TableSortDirection,\n TableSortReason,\n TableSticky,\n TableStickyTo,\n TableText,\n TableVariant,\n} from './table-defaults';\n\n/** Every selectable row, in the order the body renders them. */\nexport const TABLE_ROW_SELECTOR = '[data-part=\"body\"] > [data-part=\"row\"][data-value]';\n\n/**\n * A table of moderate data: the platform's own structure, with sorting,\n * selection, expansion and a place for a paging control.\n *\n * **The role is `table`, not `grid`.** The APG is explicit — a table \"is not an\n * interactive widget. Thus, its cells are not focusable or selectable\" — so\n * every control inside it is its own tab stop and the family binds no key of\n * its own. `data-grid` is the composite widget with a cell cursor.\n *\n * **The family holds the sort and reorders nothing.** The rows are the\n * consumer's own, written with `@for` over their own array; reordering them\n * would mean owning the data, which is the line between this family and\n * `data-grid`.\n *\n * **The selection is a form value.** A bulk-action screen is a reactive form\n * rather than a component with a callback, which no surveyed Angular table\n * offers.\n */\n@Component({\n selector: 'div[slTable]',\n standalone: true,\n exportAs: 'slTable',\n template: '<ng-content />',\n styleUrls: [\n '../../../styles/src/table/table.css',\n '../../../styles/src/checkbox/checkbox.css',\n '../../../styles/src/visually-hidden/visually-hidden.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTable), multi: true }],\n host: {\n 'data-ui': 'table',\n 'data-part': 'root',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-edges]': 'resolvedEdges()',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-cell-align]': 'resolvedCellAlign()',\n '[attr.data-striped]': \"resolvedStriped() ? '' : null\",\n '[attr.data-sticky-header]': \"resolvedStickyHeader() ? '' : null\",\n '[attr.data-sticky-footer]': \"resolvedStickyFooter() ? '' : null\",\n '[attr.data-sticky-to]': 'resolvedStickyTo()',\n '[attr.data-loading]': \"loading() ? '' : null\",\n },\n})\nexport class SlTable implements ControlValueAccessor {\n /** Which column the rows are ordered by. Two-way, so a template binds it. */\n readonly sort = model<TableSortDescriptor | null>(null);\n /** The chosen rows, in the collection's own order. */\n readonly value = model<readonly string[]>([]);\n /** The rows whose detail is open. */\n readonly expanded = model<readonly string[]>([]);\n\n readonly variant = input<TableVariant | undefined>(undefined);\n /**\n * Whether the first and the last column keep the cell's inset on their outer\n * side. `flush` lines a `plain` or `ruled` table's text up with the heading\n * around it; a `framed` table ignores it.\n */\n readonly edges = input<TableEdges | undefined>(undefined);\n readonly layout = input<TableLayout | undefined>(undefined);\n readonly selectionMode = input<TableSelectionMode | undefined>(undefined);\n /**\n * Where every cell's content sits in a row as tall as its tallest cell. A\n * cell states `blockAlign` to answer differently.\n */\n readonly cellAlign = input<TableAlign | undefined>(undefined);\n readonly striped = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n readonly stickyHeader = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * Holds the summary rows against the bottom of the same box the header is\n * held against the top of, so a total does not scroll out of the view that\n * exists to show it. It pins the `tfoot` and not the footer bar, which is\n * outside the scroller and never leaves.\n */\n readonly stickyFooter = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * What the sticky header stays inside. `page` releases the family's own\n * scroll container, so the table can no longer scroll sideways in its frame.\n */\n readonly stickyTo = input<TableStickyTo | undefined>(undefined);\n /**\n * How many columns the table renders. The spanning parts — the detail row,\n * the empty cell, the skeleton rows — need the number, and reading it from\n * the DOM would be nothing on the server and a count on the client.\n */\n readonly columns = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n /** A refresh over rows already shown: `aria-busy`, and nothing moves. */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * selection, expansion and sort words, the scrolling region's name and every\n * word of the column filters.\n */\n readonly messages = input<PartialMessages<TableMessages> | undefined>(undefined);\n\n /** One output per transition, each carrying the reason and the event. */\n readonly sortChangeRequest = output<ChangeRequest<TableSortDescriptor | null>>();\n readonly valueChangeRequest = output<ChangeRequest<readonly string[]>>();\n readonly expandedChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n private readonly defaults = injectTableDefaults();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly id = inject(SlTableIdFactory).next();\n\n /** Where a range starts: the row of the last press that held no modifier. */\n private anchor: string | undefined = undefined;\n private touched: (() => void) | undefined = undefined;\n private notify: ((value: readonly string[]) => void) | undefined = undefined;\n private readonly formDisabled = signal(false);\n\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedEdges = computed(() => this.edges() ?? this.defaults.edges);\n readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout);\n readonly resolvedCellAlign = computed(() => this.cellAlign() ?? this.defaults.cellAlign);\n readonly resolvedMode = computed(() => this.selectionMode() ?? this.defaults.selectionMode);\n readonly resolvedStriped = computed(() => this.striped() ?? this.defaults.striped);\n readonly resolvedStickyHeader = computed(() => this.stickyHeader() ?? this.defaults.stickyHeader);\n readonly resolvedStickyFooter = computed(() => this.stickyFooter() ?? this.defaults.stickyFooter);\n readonly resolvedStickyTo = computed(() => this.stickyTo() ?? this.defaults.stickyTo);\n readonly resolvedColumns = computed(() => this.columns() ?? this.defaults.columns);\n /** The family's words in the language in force, with this table's `messages` laid over them. */\n readonly t = injectMessages(tableMessages, this.messages);\n\n isSelected(key: string) {\n return this.value().includes(key);\n }\n\n isExpanded(key: string) {\n return this.expanded().includes(key);\n }\n\n /**\n * Every selectable row's value, read out of the DOM at the moment it is\n * needed rather than kept in a registry. A registry holds the order rows were\n * created in, and a sorted table renders the same rows in a new order without\n * destroying one of them — so the range and the select-all would run against\n * the order before the sort.\n */\n rows(): readonly string[] {\n return [...this.host.nativeElement.querySelectorAll(TABLE_ROW_SELECTOR)]\n .filter((row) => !row.hasAttribute('data-disabled'))\n .map((row) => row.getAttribute('data-value') ?? '');\n }\n\n requestSort(column: string, source: Event | undefined) {\n /**\n * Ascending, descending, then none — the third state Material and Ant both\n * ship and Carbon does not. A reader who sorted a column by accident has no\n * other way back.\n */\n const held = this.sort();\n const next: TableSortDescriptor | null =\n held?.column !== column\n ? { column, direction: 'ascending' }\n : held.direction === 'ascending'\n ? { column, direction: 'descending' }\n : null;\n\n const state = createControllable<TableSortDescriptor | null>({\n initial: held,\n equals: (a, b) => a?.column === b?.column && a?.direction === b?.direction,\n onRequest: (request) => this.sortChangeRequest.emit(request),\n });\n const moved = state.request(next, next === null ? 'clear' : 'pointer', source);\n\n /**\n * `aria-sort` is a property, and a property that changes silently is a\n * change no reader hears. None of the six surveyed implementations says it.\n */\n const heading = (source?.currentTarget as HTMLElement | null)?.textContent?.trim() ?? column;\n const said =\n next === null\n ? this.t('sortCleared', { column: heading })\n : next.direction === 'ascending'\n ? this.t('sortedAscending', { column: heading })\n : this.t('sortedDescending', { column: heading });\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(said);\n\n if (moved) this.sort.set(next);\n }\n\n toggleSelected(key: string, options: { range: boolean; source: Event | undefined }) {\n const result = nextSelection({\n action: options.range && this.resolvedMode() === 'multiple' ? 'range' : 'toggle',\n anchor: this.anchor,\n behavior: 'toggle',\n key,\n keys: this.rows(),\n mode: this.resolvedMode(),\n selected: this.value(),\n });\n if (!options.range) this.anchor = key;\n this.requestValue(result.selected, options.range ? 'select' : 'pointer', options.source);\n }\n\n toggleSelectAll(source: Event | undefined) {\n const result = nextSelection({\n action: 'all',\n keys: this.rows(),\n mode: this.resolvedMode(),\n selected: this.value(),\n });\n this.requestValue(result.selected, result.selected.length === 0 ? 'clear' : 'select', source);\n }\n\n toggleExpanded(key: string, source: Event | undefined) {\n const held = this.expanded();\n const next = held.includes(key) ? held.filter((open) => open !== key) : [...held, key];\n const state = createControllable<readonly string[]>({\n initial: held,\n equals: (a, b) => a.length === b.length && a.every((open, index) => open === b[index]),\n onRequest: (request) => this.expandedChangeRequest.emit(request),\n });\n if (state.request(next, 'pointer', source)) this.expanded.set(next);\n }\n\n /** The form's own value is the selection, which is what a bulk action acts on. */\n writeValue(value: readonly string[] | null | undefined) {\n this.value.set(value ?? []);\n }\n\n registerOnChange(fn: (value: readonly string[]) => void) {\n this.notify = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.touched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n readonly disabledByForm = computed(() => this.formDisabled());\n\n private requestValue(\n next: readonly string[],\n reason: TableSelectionReason,\n source: Event | undefined,\n ) {\n const state = createControllable<readonly string[]>({\n initial: this.value(),\n equals: (a, b) => a.length === b.length && a.every((key, index) => key === b[index]),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return;\n this.value.set(next);\n this.notify?.(next);\n this.touched?.();\n }\n}\n","import { createFocusOrigin } from '@slotted/core/focus';\nimport { createScrollAffordance } from '@slotted/core/overflow';\nimport type { OverflowState, ScrollAffordanceHandle } from '@slotted/core/overflow';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlTable } from './table';\n\n/**\n * The scroller and the table it holds.\n *\n * Two elements and one component, because neither is a decision a consumer\n * makes: the `table` carries the semantics and the host carries the overflow.\n * Angular pays one element for the host and draws the other in its template,\n * which is the same division `checkbox` records.\n *\n * **The region wiring is written only while the table overflows.** `role`,\n * `tabindex` and a name arrive together, measured by `@slotted/core/overflow` —\n * the rule `prose` set. A tab stop on a table that fits makes a reader press Tab\n * for nothing, and a wide table with no tab stop is unreachable without a\n * pointer. Nothing is measured until the first render after mount, so the\n * server renders a plain scroller and hydration finds the same DOM.\n *\n * **The host's `aria-label` names the table.** An instance with no caption\n * names itself with it, and the template writes it on the `table`, the\n * element whose name it is. The region takes the catalog's name, or\n * `scrollLabel`.\n */\n@Component({\n selector: 'div[slTableContent]',\n standalone: true,\n exportAs: 'slTableContent',\n template: `<table\n data-part=\"table\"\n [attr.aria-label]=\"tableLabel\"\n [attr.aria-busy]=\"table.loading() ? 'true' : null\"\n [attr.aria-rowcount]=\"totalRowCount() ?? null\"\n >\n <ng-content />\n </table>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'scroll',\n '[attr.data-overflowing]': \"state().overflowing ? '' : null\",\n '[attr.data-at-start]': \"state().overflowing && state().atStart ? '' : null\",\n '[attr.data-at-end]': \"state().overflowing && state().atEnd ? '' : null\",\n '[attr.role]': \"state().overflowing ? 'region' : null\",\n '[attr.tabindex]': \"state().overflowing ? '0' : null\",\n '[attr.aria-label]': 'regionLabel()',\n '[attr.aria-labelledby]': 'regionLabelledBy()',\n },\n})\nexport class SlTableContent {\n /**\n * The total number of rows behind a paged or filtered table. Written as\n * `aria-rowcount`, with `aria-rowindex` on every row, and only then: the\n * practice requires the pair exactly when the DOM is not the whole set.\n */\n readonly totalRowCount = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n /** The name the region takes while it overflows, over the catalog's. */\n readonly scrollLabel = input<string | undefined>(undefined);\n /** The element that names it instead, which is usually the caption. */\n readonly scrollLabelledBy = input<string | undefined>(undefined);\n\n readonly table = inject(SlTable);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n /** The host's own `aria-label`: the table's name, moved onto the `table`. */\n protected readonly tableLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private affordance: ScrollAffordanceHandle | null = null;\n\n readonly state = signal<OverflowState>({ overflowing: false, atStart: true, atEnd: true });\n\n readonly regionLabel = computed(() =>\n this.state().overflowing && this.scrollLabelledBy() === undefined\n ? (this.scrollLabel() ?? this.table.t('scroll'))\n : null,\n );\n\n readonly regionLabelledBy = computed(() =>\n this.state().overflowing ? (this.scrollLabelledBy() ?? null) : null,\n );\n\n constructor() {\n /** A click on a cell focuses the scroller; its ring is for the keyboard (`createFocusOrigin`). */\n afterNextRender(() => {\n const origin = createFocusOrigin(this.host.nativeElement);\n this.destroyRef.onDestroy(origin.destroy);\n });\n\n afterNextRender(() => {\n /**\n * Nothing is measured under `stickyTo=\"page\"`: the family has released its\n * own scroll container so the header can stick to what scrolls outside it,\n * and a box that does not scroll has no overflow to answer and no tab stop\n * to earn.\n */\n if (this.table.resolvedStickyTo() === 'page') return;\n\n const handle = createScrollAffordance(this.host.nativeElement, {\n onChange: (next) => this.state.set(next),\n });\n this.affordance = handle;\n this.state.set(handle.state());\n });\n\n this.destroyRef.onDestroy(() => {\n this.affordance?.destroy();\n this.affordance = null;\n });\n }\n\n /** Brings one row into view by the shortest movement that does it. */\n scrollToRow(value: string) {\n const row = this.host.nativeElement.querySelector(\n `[data-part=\"row\"][data-value=\"${CSS.escape(value)}\"]`,\n );\n if (row !== null) this.affordance?.reveal(row);\n }\n\n /** Measures again, after rows arrive or a column changes width. */\n refresh() {\n this.affordance?.refresh();\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n numberAttribute,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { isRowAction } from '@slotted/core/pointer-intent';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\nimport {\n SlTooltip,\n SlTooltipContent,\n SlTooltipLayer,\n SlTooltipTrigger,\n provideTooltipDefaults,\n} from '@slotted/angular/tooltip';\n\nimport { SlTable } from './table';\nimport type { TableAlign, TableSticky, TableText } from './table-defaults';\n\n/**\n * The axes every cell answers, written once. `numeric` and `align` are two facts\n * rather than one axis: a number is set in tabular figures whichever way it is\n * aligned, and a right-aligned label is not a number.\n */\n@Directive({\n standalone: true,\n host: {\n '[attr.data-align]': 'align() ?? null',\n '[attr.data-block-align]': 'blockAlign() ?? null',\n '[attr.data-numeric]': \"numeric() ? '' : null\",\n '[attr.data-text]': 'text() ?? null',\n '[attr.data-sticky]': 'sticky() ?? null',\n '[style.--slotted-table-sticky-inset]': 'stickyOffset() ?? null',\n },\n})\nexport class SlTableCellAxes {\n readonly align = input<TableAlign | undefined>(undefined);\n /**\n * Where this cell's content sits in a row as tall as its tallest cell. The\n * table states it once through `cellAlign`; this overrides it for the one\n * cell that wants the other answer.\n */\n readonly blockAlign = input<TableAlign | undefined>(undefined);\n readonly numeric = input(false, { transform: booleanAttribute });\n readonly text = input<TableText | undefined>(undefined);\n readonly sticky = input<TableSticky | undefined>(undefined);\n /**\n * Where a pinned column stops, as a CSS length. Nought unless stated: two\n * columns pinned to the same edge need the second to know how wide the first\n * is, and the family states that rather than measuring it — measuring would\n * mean reading the layout during change detection.\n */\n readonly stickyOffset = input<string | undefined>(undefined);\n}\n\n/**\n * The table's name, and the element the platform already associates with it. A\n * `caption` is the accessible name whether it is read or hidden, so the family\n * writes no `aria-labelledby` restating what the browser states.\n */\n@Directive({\n selector: 'caption[slTableCaption]',\n standalone: true,\n exportAs: 'slTableCaption',\n host: { 'data-part': 'caption' },\n})\nexport class SlTableCaption {}\n\n@Directive({\n selector: 'thead[slTableHead]',\n standalone: true,\n exportAs: 'slTableHead',\n host: { 'data-part': 'head' },\n})\nexport class SlTableHead {}\n\n@Directive({\n selector: 'tbody[slTableBody]',\n standalone: true,\n exportAs: 'slTableBody',\n host: { 'data-part': 'body' },\n})\nexport class SlTableBody {}\n\n/**\n * The `tfoot`, which the HTML Standard calls the column summaries of the table.\n * It is not `slTableFooter`, which is the bar outside the table holding the\n * consumer's own controls.\n */\n@Directive({\n selector: 'tfoot[slTableSummary]',\n standalone: true,\n exportAs: 'slTableSummary',\n host: { 'data-part': 'summary' },\n})\nexport class SlTableSummary {}\n\n/**\n * The bar under the table and inside its frame, where a paged listing puts its\n * control. It is a sibling of the scroller rather than a child, so a table\n * scrolled sideways does not take its pagination with it.\n */\n@Directive({\n selector: 'div[slTableFooter]',\n standalone: true,\n exportAs: 'slTableFooter',\n host: { 'data-part': 'footer' },\n})\nexport class SlTableFooter {}\n\n/**\n * One record. It carries `data-selected` and `data-expanded` for the stylesheet\n * and `data-value` for the range and the select-all, which read the rows out of\n * the DOM at the moment they act.\n *\n * A row is not selectable under the `table` role, so it carries no\n * `aria-selected`: the state is painted here and announced by the checkbox.\n */\n@Directive({\n selector: 'tr[slTableRow]',\n standalone: true,\n exportAs: 'slTableRow',\n host: {\n 'data-part': 'row',\n '[attr.data-value]': 'value() ?? null',\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.data-expanded]': \"expanded() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.aria-rowindex]': 'rowIndex() ?? null',\n '[attr.aria-current]': \"current() ? 'true' : null\",\n '[attr.data-current]': \"current() ? '' : null\",\n '[attr.data-interactive]': \"interactive() ? '' : null\",\n '(click)': 'onClick($event)',\n },\n})\nexport class SlTableRow {\n /** The row's key, required wherever selection or expansion is on. */\n readonly value = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * The row the page is showing elsewhere — the record open in a detail pane\n * beside the table. Written as `aria-current=\"true\"`; it is not the\n * selection, which the checkbox owns.\n */\n readonly current = input(false, { transform: booleanAttribute });\n /**\n * Paints the row as a thing the pointer can press. Stated beside `(action)`,\n * because an output does not say whether anything listens to it.\n */\n readonly interactive = input(false, { transform: booleanAttribute });\n /**\n * A click anywhere in the row that does not land on a control of its own — a\n * link, a button, a field, a label. The row takes no tab stop: the keyboard\n * reaches the record through the first link or button in it.\n */\n readonly action = output<MouseEvent>();\n /**\n * The row's position in the whole set, one-based, written only where the\n * table states a total: the practice warns that setting `aria-rowindex` on\n * some rows and not others has devastating effects on assistive technology.\n */\n readonly rowIndex = input<number | undefined, number | string | undefined>(undefined, {\n transform: (index) => (index === undefined ? undefined : numberAttribute(index)),\n });\n\n readonly table = inject(SlTable);\n\n readonly selected = computed(() => {\n const key = this.value();\n return key !== undefined && this.table.isSelected(key);\n });\n\n readonly expanded = computed(() => {\n const key = this.value();\n return key !== undefined && this.table.isExpanded(key);\n });\n\n readonly detailId = computed(() => `${this.table.id}-detail-${this.value() ?? ''}`);\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected onClick(event: MouseEvent) {\n if (event.defaultPrevented || this.disabled()) return;\n if (isRowAction(this.host.nativeElement, event.target)) this.action.emit(event);\n }\n}\n\n/**\n * A column's name. `scope=\"col\"` is what makes a screen reader repeat it for\n * every cell under it, and `aria-sort` is written here and on no other header.\n *\n * A name cut by its own box — `text=\"truncate\"` on a column with no room —\n * reads `Op…` to the eye while the whole of it is still what a screen reader\n * repeats under every cell. The hint closes that gap: it opens only while the\n * name is measured as cut, which a header that wraps or fits never is, and it\n * is shown rather than read — `describes=\"none\"`, because the header already\n * states the words.\n */\n@Component({\n selector: 'th[slTableColumnHeader]',\n standalone: true,\n exportAs: 'slTableColumnHeader',\n imports: [SlTooltipContent, SlTooltipLayer],\n template: `<ng-content />\n <ng-template slTooltipLayer>\n <div slTooltipContent>{{ hint() }}</div>\n </ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n SlTooltip,\n SlTooltipTrigger,\n ],\n providers: [\n provideTooltipDefaults({\n describes: 'none',\n openOn: 'hover',\n side: 'bottom',\n whenClipped: true,\n }),\n ],\n host: {\n 'data-part': 'column-header',\n '[attr.scope]': \"scope() ?? 'col'\",\n '[attr.aria-sort]': 'ariaSort()',\n },\n})\nexport class SlTableColumnHeader {\n /** The column's own key, which the sort descriptor names. */\n readonly column = input<string | undefined>(undefined);\n readonly scope = input<string | undefined>(undefined);\n\n private readonly table = inject(SlTable);\n private readonly tooltip = inject(SlTooltip);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n readonly ariaSort = computed(() => {\n const sort = this.table.sort();\n return sort !== null && sort.column === this.column() ? sort.direction : null;\n });\n\n /** The words the header itself holds, read when the hint is about to show them. */\n protected readonly hint = computed(() =>\n this.tooltip.isOpen() ? (this.native.textContent ?? '').trim() : '',\n );\n}\n\n/**\n * The cell that identifies the record, which a screen reader repeats in each of\n * the cells beside it. It states no colour of its own, so a selected record's\n * name turns with the row and a disabled one dims with it.\n */\n@Directive({\n selector: 'th[slTableRowHeader]',\n standalone: true,\n exportAs: 'slTableRowHeader',\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n ],\n host: { 'data-part': 'row-header', '[attr.scope]': \"scope() ?? 'row'\" },\n})\nexport class SlTableRowHeader {\n readonly scope = input<string | undefined>(undefined);\n}\n\n@Directive({\n selector: 'td[slTableCell]',\n standalone: true,\n exportAs: 'slTableCell',\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n ],\n host: { 'data-part': 'cell' },\n})\nexport class SlTableCell {}\n\n/**\n * The column's name wrapped in a button, which is what the APG's own sortable\n * example does. The cycle is ascending, descending, then none.\n *\n * The consumer's own listener runs as well: this is a listener on the host, so\n * both fire and a consumer who calls `preventDefault()` keeps the sort still.\n */\n@Component({\n selector: 'button[slTableSort]',\n standalone: true,\n exportAs: 'slTableSort',\n imports: [SlGlyph, SlIcon],\n /* The direction mark follows the name: one chevron the stylesheet turns over\n for ascending and shows, muted, under the pointer on an unsorted column. */\n template: `<ng-content /><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-part': 'sort',\n type: 'button',\n '(click)': 'press($event)',\n },\n})\nexport class SlTableSort {\n /** Overrides the column the header states, where a header holds two. */\n readonly column = input<string | undefined>(undefined);\n\n private readonly table = inject(SlTable);\n private readonly header = inject(SlTableColumnHeader, { optional: true });\n\n press(event: Event) {\n if (event.defaultPrevented) return;\n const key = this.column() ?? this.header?.column();\n if (key === undefined) return;\n this.table.requestSort(key, event);\n }\n}\n\n/**\n * The slot beside a column's name for the controls it carries: a filter\n * trigger, a column menu, a help hint. The family holds the place and the\n * geometry; what a filter means is the consumer's query.\n */\n@Directive({\n selector: 'span[slTableColumnActions]',\n standalone: true,\n exportAs: 'slTableColumnActions',\n host: { 'data-part': 'column-actions' },\n})\nexport class SlTableColumnActions {}\n\n/**\n * A row's own checkbox, in the cell the family lays out. The control is\n * `checkbox`'s: the cell is this family's and the chooser is not, which is the\n * division `list-item` recorded. Its name is a visually hidden label rather\n * than an `aria-label` on the wrapper, because the wrapper is not the control.\n *\n * `Shift` while pressing selects every row from the anchor to this one.\n */\n@Component({\n selector: 'td[slTableSelect]',\n standalone: true,\n exportAs: 'slTableSelect',\n imports: [SlCheckbox],\n template: `<span\n slCheckbox\n [checked]=\"checked()\"\n [disabled]=\"row.disabled()\"\n (click)=\"press($event)\"\n >\n <span data-ui=\"visually-hidden\" data-part=\"root\">{{ name() }}</span>\n </span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n ],\n host: { 'data-part': 'selection' },\n})\nexport class SlTableSelect {\n /** The row this checkbox chooses. Read from the row when it is not stated. */\n readonly value = input<string | undefined>(undefined);\n\n readonly table = inject(SlTable);\n readonly row = inject(SlTableRow);\n\n readonly key = computed(() => this.value() ?? this.row.value());\n readonly checked = computed(() => {\n const key = this.key();\n return key !== undefined && this.table.isSelected(key);\n });\n readonly name = computed(() => {\n const key = this.key();\n return this.table.t('selectRow', { row: key ?? '' }).trim();\n });\n\n press(event: MouseEvent) {\n const key = this.key();\n if (key === undefined || this.row.disabled()) return;\n this.table.toggleSelected(key, { range: event.shiftKey, source: event });\n }\n}\n\n/**\n * The header's checkbox. It covers the rows in the DOM, is indeterminate while\n * some of them are selected, and states the count it covers in its own name — a\n * selection over a whole result set is a decision only the consumer's query can\n * make.\n */\n@Component({\n selector: 'th[slTableSelectAll]',\n standalone: true,\n exportAs: 'slTableSelectAll',\n imports: [SlCheckbox],\n template: `<span\n slCheckbox\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n (click)=\"press($event)\"\n >\n <span data-ui=\"visually-hidden\" data-part=\"root\">{{ name() }}</span>\n </span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n ],\n host: { 'data-part': 'selection', scope: 'col' },\n})\nexport class SlTableSelectAll {\n readonly table = inject(SlTable);\n\n readonly checked = computed(() => {\n const chosen = this.table.value().length;\n return chosen > 0 && chosen === this.table.rows().length;\n });\n\n readonly indeterminate = computed(() => {\n const chosen = this.table.value().length;\n return chosen > 0 && chosen < this.table.rows().length;\n });\n\n readonly name = computed(() => {\n return this.table.t('selectAll', { count: this.table.value().length });\n });\n\n press(event: MouseEvent) {\n this.table.toggleSelectAll(event);\n }\n}\n\n/**\n * The Disclosure pattern, borrowed whole: a `button` carrying `aria-expanded`\n * and naming the row it opens.\n */\n@Component({\n selector: 'button[slTableExpander]',\n standalone: true,\n exportAs: 'slTableExpander',\n imports: [SlGlyph, SlIcon],\n /* The chevron is drawn unless the consumer wrote content of their own. */\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"chevron-right\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-part': 'expander',\n type: 'button',\n '[attr.aria-expanded]': 'row.expanded()',\n '[attr.aria-controls]': 'row.expanded() ? row.detailId() : null',\n '[attr.aria-label]': 'name()',\n '(click)': 'press($event)',\n },\n})\nexport class SlTableExpander {\n readonly value = input<string | undefined>(undefined);\n\n readonly table = inject(SlTable);\n readonly row = inject(SlTableRow);\n\n readonly name = computed(() => {\n return this.row.expanded() ? this.table.t('collapse') : this.table.t('expand');\n });\n\n press(event: Event) {\n if (event.defaultPrevented) return;\n const key = this.value() ?? this.row.value();\n if (key === undefined) return;\n this.table.toggleExpanded(key, event);\n }\n}\n\n/**\n * One row holding one cell that spans the table.\n *\n * **The consumer writes the `@if`.** Angular's own control flow is what keeps a\n * closed detail out of the DOM entirely, and a component whose host is the `tr`\n * cannot remove that `tr` from inside itself — an empty row is a row a screen\n * reader still counts. React returns `null` from the component instead, and the\n * two reach the same DOM; the asymmetry is the frameworks', not the family's.\n */\n@Component({\n selector: 'tr[slTableDetail]',\n standalone: true,\n exportAs: 'slTableDetail',\n template: `<td [attr.colspan]=\"span()\" data-part=\"cell\"><ng-content /></td>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'detail', '[attr.id]': 'detailId()' },\n})\nexport class SlTableDetail {\n /** The row the detail belongs to. */\n readonly value = input.required<string>();\n /** How many columns the detail spans. Defaults to the table's own count. */\n readonly colSpan = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n\n private readonly table = inject(SlTable);\n\n readonly span = computed(() => this.colSpan() ?? this.table.resolvedColumns());\n readonly detailId = computed(() => `${this.table.id}-detail-${this.value()}`);\n}\n\n/** Marks what stands at the end of a group's band: its total or net. */\n@Directive({\n selector: '[slTableGroupRowEnd]',\n standalone: true,\n})\nexport class SlTableGroupRowEnd {}\n\n/**\n * The band that opens a group of rows — a day of a ledger, with its net at the\n * end. One header cell spans every column; `scope=\"rowgroup\"` names the rows\n * of the `tbody` it opens, so a ledger writes one body per group.\n */\n@Component({\n selector: 'tr[slTableGroupRow]',\n standalone: true,\n exportAs: 'slTableGroupRow',\n template: `<th [attr.colspan]=\"span()\" data-part=\"group-header\" scope=\"rowgroup\">\n <div data-part=\"group-content\">\n <span data-part=\"group-start\"><ng-content /></span>\n @if (end()) {\n <span data-part=\"group-end\"><ng-content select=\"[slTableGroupRowEnd]\" /></span>\n }\n </div>\n </th>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'group-row', '[attr.data-sticky]': \"sticky() ? '' : null\" },\n})\nexport class SlTableGroupRow {\n /** How many columns the band spans. Defaults to the table's own count. */\n readonly colSpan = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n /** Holds the band under the header while its rows scroll past. */\n readonly sticky = input(false, { transform: booleanAttribute });\n\n private readonly table = inject(SlTable);\n\n protected readonly end = contentChild(SlTableGroupRowEnd);\n readonly span = computed(() => this.colSpan() ?? this.table.resolvedColumns());\n}\n\n/**\n * What is shown when there is nothing. It takes a `result-state`, whose status\n * axis already separates an empty set from a set a filter emptied.\n */\n@Directive({\n selector: 'td[slTableEmpty]',\n standalone: true,\n exportAs: 'slTableEmpty',\n host: { 'data-part': 'empty', '[attr.colspan]': 'span()' },\n})\nexport class SlTableEmpty {\n readonly colSpan = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n\n private readonly table = inject(SlTable);\n\n readonly span = computed(() => this.colSpan() ?? this.table.resolvedColumns());\n}\n\n/**\n * The skeleton rows of a first load: the table's shape before its content. A\n * refresh over rows already read is the other state and is not this one —\n * `loading` on the table dims the body and moves nothing.\n */\n@Component({\n selector: 'tbody[slTableLoader]',\n standalone: true,\n exportAs: 'slTableLoader',\n imports: [SlSkeleton],\n template: `@for (row of skeleton(); track row) {\n <tr data-part=\"row\">\n @for (cell of cells(); track cell) {\n <td data-part=\"cell\">\n <span slSkeleton loading inlineSize=\"100%\"></span>\n </td>\n }\n </tr>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'loader', 'aria-hidden': 'true' },\n})\nexport class SlTableLoader {\n /** How many skeleton rows a first load draws. */\n readonly skeletonRows = input(5, { transform: numberAttribute });\n\n private readonly table = inject(SlTable);\n\n readonly skeleton = computed(() =>\n Array.from({ length: this.skeletonRows() }, (_row, index) => index),\n );\n readonly cells = computed(() =>\n Array.from({ length: this.table.resolvedColumns() }, (_cell, index) => index),\n );\n}\n\n/** Every part of the family, for a template that imports the set at once. */\nexport const SL_TABLE_PARTS = [\n SlTableBody,\n SlTableCaption,\n SlTableCell,\n SlTableColumnActions,\n SlTableColumnHeader,\n SlTableDetail,\n SlTableEmpty,\n SlTableExpander,\n SlTableFooter,\n SlTableGroupRow,\n SlTableGroupRowEnd,\n SlTableHead,\n SlTableLoader,\n SlTableRow,\n SlTableRowHeader,\n SlTableSelect,\n SlTableSelectAll,\n SlTableSort,\n SlTableSummary,\n] as const;\n","import { createFilter } from '@slotted/core/collection';\nimport {\n isPlainDate,\n isPlainDateTime,\n isPlainTime,\n parseISODate,\n parseISODateTime,\n parseISOTime,\n toISODate,\n toISOTime,\n} from '@slotted/core/date';\nimport type { PlainDate, PlainDateTime, PlainTime, TimeGranularity } from '@slotted/core/date';\nimport {\n defaultOperator as kindDefaultOperator,\n describeFilter,\n emptyFilter,\n isConditionActive,\n isFilterActive,\n normalizeFilter,\n operandCount,\n operatorsFor,\n serializeFilter,\n withCondition,\n withJoin,\n} from '@slotted/core/filter';\nimport type {\n BooleanFilter,\n DateFilter,\n DateTimeFilter,\n FilterCondition,\n FilterDescriptor,\n FilterJoin,\n FilterKind,\n FilterOperator,\n NumberFilter,\n SetFilter,\n TextFilter,\n TimeFilter,\n} from '@slotted/core/filter';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlDatePicker } from '@slotted/angular/date-picker';\nimport { SlDateRangePicker, SlDateRangePickerPresets } from '@slotted/angular/date-range-picker';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport {\n SlDateTimeRangePicker,\n SlDateTimeRangePickerPresets,\n} from '@slotted/angular/datetime-range-picker';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport {\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { SlRadio, SlRadioGroup } from '@slotted/angular/radio-group';\nimport { SlSelect, SlSelectItem } from '@slotted/angular/select';\nimport { SlTagsInput } from '@slotted/angular/tags-input';\nimport { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';\nimport { SlTimePicker } from '@slotted/angular/time-picker';\nimport { SlTimeRangePicker, SlTimeRangePickerPresets } from '@slotted/angular/time-range-picker';\n\nimport { SlTable } from './table';\nimport { SlTableColumnHeader } from './table-parts';\n\n/** One value a column can be filtered to. */\nexport interface TableFilterOption {\n /** The value the consumer's query matches. It is what the state holds. */\n value: string;\n /** What the reader sees, when it is not the value itself. */\n label?: string;\n /**\n * How many records carry it. Optional and the consumer's own: how many rows a\n * value has is a fact about the query, not about the column.\n */\n count?: number;\n}\n\nexport type TableFilterReason = 'pointer' | 'keyboard' | 'clear' | 'programmatic';\n\ntype Condition = FilterCondition<string, unknown>;\n\n/** What the operand template is handed, once per condition. */\nexport interface TableFilterOperandContext {\n /** Applies the draft, which is what `Enter` in the family's own field does. */\n apply: () => void;\n condition: Condition;\n /** The name the family would have given each field. */\n label: (slot: 0 | 1) => string;\n /** Writes one operand back into the draft. */\n set: (slot: 0 | 1, value: unknown) => void;\n /**\n * Writes both operands of a range at once, for a control that holds both.\n * Two calls to `set` from one event would each read the draft the other did\n * not write.\n */\n setBoth: (value: unknown, end: unknown) => void;\n /** Which operands this operator takes: none, the first, or both. */\n slots: readonly (0 | 1)[];\n}\n\n/**\n * Everything the five filters share: the draft, the conditions, the join, the\n * announcements and the request that carries a reason. What each of them adds\n * is its kind, its own typed `value`, and the control inside `filter-operand`.\n *\n * The panel edits a **draft**. Nothing reaches the consumer until Apply, and\n * Escape or a press outside restores the descriptor the panel opened with. The\n * family applies nothing: it reports the descriptor, and\n * `createFilterPredicate` in `@slotted/core/filter` is what a consumer applies\n * to its own rows.\n */\n@Directive()\nexport abstract class SlTableFilterBase {\n /** Which vocabulary this column's conditions are written in. */\n abstract readonly kind: FilterKind;\n /** The committed descriptor, read from the component's own typed model. */\n protected abstract readValue(): FilterDescriptor | null;\n /** Writes it back into that model. */\n protected abstract writeValue(next: FilterDescriptor | null): void;\n\n /**\n * The operators this column offers, narrowing the kind's own list. Declared\n * once here rather than per component: the narrow operator type is the one\n * thing a shared base cannot keep, and the value — which is what a consumer\n * reads — stays exact on each of the five.\n */\n readonly operators = input<readonly string[] | undefined>(undefined);\n /** Which one the panel opens on. The kind's own default unless stated. */\n readonly defaultOperator = input<string | undefined>(undefined);\n /**\n * How many conditions the panel offers, which is AG Grid's\n * `maxNumConditions`. The second appears once the first is complete.\n */\n readonly conditions = input(2, { transform: numberAttribute });\n /**\n * The column's name in the trigger's own name. Read from the column header\n * around it when it is not stated.\n */\n readonly columnLabel = input<string | undefined>(undefined);\n /**\n * The trigger's whole accessible name, replacing the one the catalog writes.\n * It is the trigger's `aria-label`, which no other input reaches.\n */\n readonly label = input<string | undefined>(undefined);\n /**\n * Whether the panel is drawn at the end of the document. On by default, and\n * that is not a preference: a framed table clips its own overflow, so an\n * unportalled panel is cut off at the frame's edge — read on the Angular\n * reference page, where the join and both actions were simply not there. The\n * React binding takes `popover`'s own default, which is the same answer.\n */\n readonly portal = input(true, { transform: booleanAttribute });\n\n /** The request behind every committed change, with the reason it carries. */\n readonly valueChangeRequest = output<ChangeRequest<FilterDescriptor | null>>();\n\n readonly table = inject(SlTable);\n private readonly header = inject(SlTableColumnHeader, { optional: true });\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly open = model(false);\n readonly draft = signal<FilterDescriptor>(emptyFilter('text'));\n\n /** The table's words, which the panel speaks in. */\n readonly t = this.table.t;\n\n protected readonly start = computed(\n () => this.defaultOperator() ?? (kindDefaultOperator(this.kind) as string),\n );\n\n readonly offered = computed(\n () => this.operators() ?? (operatorsFor(this.kind) as readonly string[]),\n );\n\n private readonly format = {\n join: (join: FilterJoin) => this.t(`filterJoins.${join}`),\n operator: (operator: FilterOperator) => this.t(`filterOperators.${operator}`),\n };\n\n operatorName(operator: string) {\n return this.format.operator(operator as FilterOperator);\n }\n\n /** Every operator as a labelled option, so the closed chooser names its own. */\n readonly operatorItems = computed(() =>\n this.offered().map((operator) => ({ label: this.operatorName(operator), value: operator })),\n );\n\n joinName(join: FilterJoin) {\n return this.format.join(join);\n }\n\n readonly filtered = computed(() => isFilterActive(this.readValue()));\n\n readonly name = computed(() => {\n const stated = this.label();\n if (stated !== undefined) return stated;\n const column = this.columnName();\n const committed = this.readValue();\n return isFilterActive(committed)\n ? this.t('filterApplied', { column, filter: describeFilter(committed, this.format) })\n : this.t('filterColumn', { column }).trim();\n });\n\n /** One condition, or the two the panel can hold. */\n readonly rows = computed<readonly Condition[]>(() => {\n const draft = this.draft();\n const first = draft.conditions[0] ?? { operator: this.start() };\n /* AG Grid's own reveal: the second appears once the first is complete. A\n button would be one more word to translate before the common case, and an\n empty second row is noise in every panel that never needs it. */\n if (this.allowed() < 2 || !isConditionActive(this.kind, first)) return [first];\n return [first, draft.conditions[1] ?? { operator: this.start() }];\n });\n\n protected allowed() {\n return this.conditions();\n }\n\n readonly hasSecond = computed(() => this.rows().length === 2);\n\n /**\n * Whether the operand template draws one control for both ends of a range,\n * written as `data-range` on `filter-operand` so the two-column operand grid\n * collapses to one. The date, time and date-time filters say yes.\n */\n protected rangeOperand(): boolean {\n return false;\n }\n\n /** Which of a kind's operands is drawn, written as `data-operand`. */\n operandName(): string | null {\n return null;\n }\n\n /** `data-range`, for the condition whose operator takes two operands. */\n rangeMark(condition: Condition): '' | null {\n return this.rangeOperand() && this.slotsOf(condition).length === 2 ? '' : null;\n }\n\n slotsOf(condition: Condition): readonly (0 | 1)[] {\n const operands = operandCount(condition.operator as FilterOperator);\n return operands === 0 ? [] : operands === 1 ? [0] : [0, 1];\n }\n\n operandLabel(condition: Condition, slot: 0 | 1) {\n if (operandCount(condition.operator as FilterOperator) < 2) return this.t('filterValue');\n return slot === 0 ? this.t('filterFrom') : this.t('filterTo');\n }\n\n context(index: number): TableFilterOperandContext {\n const condition = this.rows()[index] ?? { operator: this.start() };\n return {\n apply: () => this.applyDraft(null, 'keyboard'),\n condition,\n label: (slot) => this.operandLabel(condition, slot),\n set: (slot, value) => this.setOperand(index, slot, value),\n setBoth: (value, end) => this.setOperands(index, value, end),\n slots: this.slotsOf(condition),\n };\n }\n\n announce(message: string) {\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message);\n }\n\n /**\n * Opens and closes, and resets the draft either way: the draft starts from\n * what is committed every time the panel opens, and closing puts it back —\n * closing is cancelling, and Apply closes the panel itself after committing.\n */\n toggle(next: boolean) {\n this.open.set(next);\n this.draft.set(this.readValue() ?? this.blank());\n }\n\n protected blank(): FilterDescriptor {\n return emptyFilter(this.kind, this.start() as never) as FilterDescriptor;\n }\n\n setOperator(index: number, operator: string) {\n const condition = this.rows()[index] ?? { operator: this.start() };\n const before = operandCount(condition.operator as FilterOperator);\n const after = operandCount(operator as FilterOperator);\n\n /* An operand the new operator still takes survives the change: a reader who\n typed a value and then chose a different comparison meant to keep it. */\n const next: Condition = {\n operator,\n ...(after >= 1 && before >= 1 ? { value: condition.value } : {}),\n ...(after === 2 && before === 2 ? { end: condition.end } : {}),\n };\n\n this.draft.set(withCondition(this.draft(), index, next as never));\n /* The panel grows a field or loses two. Announced, because a form that\n changes shape under a reader who cannot see it says nothing otherwise. */\n if (after !== before) {\n this.announce(\n this.t('filterOperands', { operator: this.operatorName(operator), count: after }),\n );\n }\n }\n\n setOperand(index: number, slot: 0 | 1, operand: unknown) {\n const condition = this.rows()[index] ?? { operator: this.start() };\n const wasActive = isConditionActive(this.kind, condition);\n const next: Condition =\n slot === 0 ? { ...condition, value: operand } : { ...condition, end: operand };\n\n this.draft.set(withCondition(this.draft(), index, next as never));\n if (index === 0 && this.allowed() >= 2 && !wasActive && isConditionActive(this.kind, next)) {\n this.announce(this.t('filterConditionAdded'));\n }\n }\n\n setOperands(index: number, value: unknown, end: unknown) {\n const condition = this.rows()[index] ?? { operator: this.start() };\n const wasActive = isConditionActive(this.kind, condition);\n const next: Condition = { ...condition, value, end };\n\n this.draft.set(withCondition(this.draft(), index, next as never));\n if (index === 0 && this.allowed() >= 2 && !wasActive && isConditionActive(this.kind, next)) {\n this.announce(this.t('filterConditionAdded'));\n }\n }\n\n setJoin(join: string) {\n this.draft.set(withJoin(this.draft(), join as FilterJoin));\n }\n\n /**\n * Named for what it does rather than `apply`, which reads as\n * `Function.prototype.apply` to a linter and to the next reader after it.\n */\n applyDraft(source: unknown, reason: TableFilterReason = 'pointer') {\n const next = normalizeFilter(this.draft());\n this.request(next, reason, source);\n const column = this.columnName();\n this.announce(\n next\n ? this.t('filterApplied', { column, filter: describeFilter(next, this.format) })\n : this.t('filterCleared', { column }),\n );\n this.open.set(false);\n }\n\n clear(source: unknown) {\n this.draft.set(this.blank());\n this.announce(this.t('filterCleared', { column: this.columnName() }));\n this.request(null, 'clear', source);\n this.open.set(false);\n }\n\n readonly canClear = computed(() => isFilterActive(this.draft()));\n\n private columnName() {\n return this.columnLabel() ?? this.header?.column() ?? '';\n }\n\n private request(next: FilterDescriptor | null, reason: TableFilterReason, source: unknown) {\n const state = createControllable<FilterDescriptor | null>({\n initial: this.readValue(),\n /* Two descriptors are the same filter when they serialise the same. */\n equals: (a, b) => serializeFilter(a) === serializeFilter(b),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.writeValue(next);\n }\n}\n\n/**\n * The panel every kind shares, drawn around an operand its owner projects.\n *\n * The operand is an `ng-template` rather than projected content, because it is\n * rendered once per condition: content would be built once and then belong to\n * whichever condition asked for it first.\n */\n@Component({\n selector: 'span[slTableFilterShell]',\n standalone: true,\n exportAs: 'slTableFilterShell',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlRadio,\n SlRadioGroup,\n SlSelect,\n SlSelectItem,\n ],\n template: `<ng-container\n slPopover\n [portal]=\"owner().portal()\"\n [open]=\"owner().open()\"\n (openChange)=\"owner().toggle($event)\"\n >\n <button\n slPopoverTrigger\n type=\"button\"\n data-part=\"filter\"\n [attr.data-filtered]=\"owner().filtered() ? '' : null\"\n [attr.aria-label]=\"owner().name()\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M22 3H2l8 9.46V19l4 2v-8.54L22 3z\" />\n </svg>\n </button>\n\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"owner().name()\">\n <!-- The parts are on this family's own element rather than on the\n popover's: slPopoverContent names its own identity, and a second\n data-ui on the same element is one of them lost — the surface, the\n radius and the shadow all came off the panel. -->\n <div data-ui=\"table\" data-part=\"filter-panel\" [attr.data-kind]=\"owner().kind\">\n @for (row of owner().rows(); track $index) {\n @if ($index === 1) {\n <div data-part=\"filter-join\">\n <span data-label>{{ owner().t('filterJoin') }}</span>\n <div\n slRadioGroup\n orientation=\"horizontal\"\n size=\"sm\"\n [attr.aria-label]=\"owner().t('filterJoin')\"\n [value]=\"owner().draft().join\"\n (valueChange)=\"owner().setJoin($event.value ?? 'and')\"\n >\n <div slRadio value=\"and\">{{ owner().joinName('and') }}</div>\n <div slRadio value=\"or\">{{ owner().joinName('or') }}</div>\n </div>\n </div>\n }\n\n <div data-part=\"filter-condition\" [attr.data-operands]=\"owner().slotsOf(row).length\">\n <div data-part=\"filter-operator\">\n <!-- items names every operator for the closed control: without\n it the trigger falls back to the value itself and a reader\n sees the raw between the engine speaks. -->\n <sl-select\n size=\"sm\"\n [fullWidth]=\"true\"\n [items]=\"owner().operatorItems()\"\n [attr.aria-label]=\"owner().t('filterOperator')\"\n [value]=\"row.operator\"\n (valueChange)=\"owner().setOperator($index, $any($event))\"\n >\n @for (operator of owner().offered(); track operator) {\n <sl-select-item [value]=\"operator\">\n {{ owner().operatorName(operator) }}\n </sl-select-item>\n }\n </sl-select>\n </div>\n\n @if (owner().slotsOf(row).length > 0) {\n <div\n data-part=\"filter-operand\"\n [attr.data-kind]=\"owner().kind\"\n [attr.data-operand]=\"owner().operandName()\"\n [attr.data-range]=\"owner().rangeMark(row)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"operand()\"\n [ngTemplateOutletContext]=\"{ $implicit: owner().context($index) }\"\n />\n </div>\n }\n </div>\n }\n\n <div data-part=\"filter-actions\">\n <button\n slButton\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n [disabled]=\"!owner().canClear()\"\n (click)=\"owner().clear($event)\"\n >\n {{ owner().t('filterClear') }}\n </button>\n <button slButton type=\"button\" size=\"sm\" (click)=\"owner().applyDraft($event)\">\n {{ owner().t('filterApply') }}\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableFilterShell {\n /** The filter this shell draws for. */\n readonly owner = input.required<SlTableFilterBase>({ alias: 'slTableFilterShell' });\n /** The control inside `filter-operand`, rendered once per condition. */\n readonly operand = input.required<TemplateRef<{ $implicit: TableFilterOperandContext }>>();\n}\n\n/** A column of words. Its comparisons are the collator's, never a fold. */\n@Component({\n selector: 'span[slTableTextFilter]',\n exportAs: 'slTableTextFilter',\n imports: [SlTableFilterShell, SlTextField, SlTextFieldInput],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @for (slot of context.slots; track slot) {\n <div slTextField size=\"sm\">\n <input\n slTextFieldInput\n [value]=\"$any(slot === 0 ? context.condition.value : context.condition.end) ?? ''\"\n [attr.aria-label]=\"context.label(slot)\"\n [attr.placeholder]=\"context.label(slot)\"\n (input)=\"context.set(slot, $any($event.target).value)\"\n (keydown.enter)=\"context.apply()\"\n />\n </div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableTextFilter extends SlTableFilterBase {\n override readonly kind = 'text' as const;\n /** The filter the column holds. Two-way, so a template binds it. */\n readonly value = model<TextFilter | null>(null);\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as TextFilter | null);\n }\n}\n\n/** A column of quantities. The operand parses in the reader's own locale. */\n@Component({\n selector: 'span[slTableNumberFilter]',\n exportAs: 'slTableNumberFilter',\n imports: [SlTableFilterShell, SlNumberField, SlNumberFieldInput],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @for (slot of context.slots; track slot) {\n <div slNumberField size=\"sm\">\n <input\n slNumberFieldInput\n [value]=\"$any(slot === 0 ? context.condition.value : context.condition.end) ?? null\"\n [locale]=\"locale()\"\n [attr.aria-label]=\"context.label(slot)\"\n [attr.placeholder]=\"context.label(slot)\"\n (valueChange)=\"context.set(slot, $event.value)\"\n (keydown.enter)=\"context.apply()\"\n />\n </div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableNumberFilter extends SlTableFilterBase {\n override readonly kind = 'number' as const;\n readonly value = model<NumberFilter | null>(null);\n /** BCP 47, for the operand's own parsing. Defaults to the runtime's. */\n readonly locale = input<string | undefined>(undefined);\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as NumberFilter | null);\n }\n}\n\n/**\n * A column of days. The operand is the whole date picker — the segmented field\n * and the calendar behind it — rather than the field alone: every surveyed\n * implementation that filters a date column offers a grid to point at, and a\n * reader who has to type a date they could have pointed at is the one thing a\n * date filter exists to spare them. The calendar opens a layer inside the\n * panel's layer, which `dismissable-layer` already stacks for the operator\n * chooser beside it.\n *\n * `between` is one `date-range-picker` rather than two pickers: it says the\n * run's length while it is drawn, takes the ends in either order and carries\n * the application's own presets. The descriptor holds the ISO days the\n * pickers produce, never a `Date`, and is the same object either way.\n */\n@Component({\n selector: 'span[slTableDateFilter]',\n exportAs: 'slTableDateFilter',\n imports: [\n NgTemplateOutlet,\n SlTableFilterShell,\n SlDatePicker,\n SlDateRangePicker,\n SlDateRangePickerPresets,\n ],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @if (context.slots.length === 2) {\n <div\n slDateRangePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [messages]=\"{ start: context.label(0), end: context.label(1) }\"\n [value]=\"range(context.condition)\"\n (valueChange)=\"context.setBoth(iso($event.value?.start), iso($event.value?.end))\"\n (keydown.enter)=\"context.apply()\"\n >\n @if (presets(); as presetsTemplate) {\n <div slDateRangePickerPresets>\n <ng-container [ngTemplateOutlet]=\"presetsTemplate\" />\n </div>\n }\n </div>\n } @else {\n <div\n slDatePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [value]=\"day(context.condition.value)\"\n [attr.aria-label]=\"context.label(0)\"\n (valueChange)=\"context.set(0, iso($event.value))\"\n (keydown.enter)=\"context.apply()\"\n ></div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableDateFilter extends SlTableFilterBase {\n override readonly kind = 'date' as const;\n readonly value = model<DateFilter | null>(null);\n /** BCP 47. Decides the operand's field order and separators. */\n readonly locale = input<string | undefined>(undefined);\n /**\n * The application's own ranges — this week, this month — as\n * `slDateRangePickerPreset` buttons in a template, offered inside the range\n * picker `between` draws. The descriptor still receives two ISO days.\n */\n readonly presets = input<TemplateRef<unknown> | undefined>(undefined);\n\n protected override rangeOperand() {\n return true;\n }\n\n /** The descriptor's ISO day as the field's own value, and back. */\n day(value: unknown): PlainDate | null {\n return value ? parseISODate(String(value)) : null;\n }\n\n iso(value: unknown) {\n return isPlainDate(value) ? toISODate(value) : null;\n }\n\n range(condition: Condition): { start: PlainDate | null; end: PlainDate | null } {\n return { start: this.day(condition.value), end: this.day(condition.end) };\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as DateFilter | null);\n }\n}\n\n/** `HH` and `HH:MM` are prefixes the engine accepts and the field cannot read. */\nfunction timeOf(text: unknown): PlainTime | null {\n if (!text) return null;\n const written = String(text);\n return parseISOTime(/^\\d{2}$/.test(written) ? `${written}:00` : written);\n}\n\n/** A day, or a day and an hour, padded to the `T…:MM` the field reads. */\nfunction dateTimeOf(text: unknown): PlainDateTime | null {\n if (!text) return null;\n const written = String(text);\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(written)) return parseISODateTime(`${written}T00:00`);\n if (/^\\d{4}-\\d{2}-\\d{2}T\\d{2}$/.test(written)) return parseISODateTime(`${written}:00`);\n return parseISODateTime(written);\n}\n\n/**\n * A column of times of day. The operand is `time-picker` — the segmented field\n * and the list behind it — at the column's own granularity, which decides the\n * precision the descriptor is written at and the engine compares at: a picker\n * writing minutes produces `09:14`, and `is 09:14` then matches every second\n * of that minute.\n *\n * `between` is one `time-range-picker` rather than two pickers: it says the\n * run's length while it is drawn, its end list refuses the times before the\n * start, and it carries the application's presets. The descriptor is\n * unchanged. A pair whose start is later than its end is the overnight window\n * to the engine and `order` to the picker; the pair reaches the descriptor\n * either way, and the picker's `wrap`, pending in `docs/process/build-order.md`, is\n * what lifts the mark. No `(keydown.enter)` on the range picker: its frame\n * is a button, and `Enter` on it opens the picker.\n */\n@Component({\n selector: 'span[slTableTimeFilter]',\n exportAs: 'slTableTimeFilter',\n imports: [\n NgTemplateOutlet,\n SlTableFilterShell,\n SlTimePicker,\n SlTimeRangePicker,\n SlTimeRangePickerPresets,\n ],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @if (context.slots.length === 2) {\n <div\n slTimeRangePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [hourCycle]=\"hourCycle()\"\n [granularity]=\"granularity()\"\n [step]=\"step()\"\n [options]=\"options()\"\n [min]=\"timeOf(min())\"\n [max]=\"timeOf(max())\"\n [messages]=\"{ start: context.label(0), end: context.label(1) }\"\n [value]=\"range(context.condition)\"\n (valueChange)=\"context.setBoth(iso($event.value?.start), iso($event.value?.end))\"\n >\n @if (presets(); as presetsTemplate) {\n <div slTimeRangePickerPresets>\n <ng-container [ngTemplateOutlet]=\"presetsTemplate\" />\n </div>\n }\n </div>\n } @else {\n <div\n slTimePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [hourCycle]=\"hourCycle()\"\n [granularity]=\"granularity()\"\n [step]=\"step()\"\n [options]=\"options()\"\n [min]=\"timeOf(min())\"\n [max]=\"timeOf(max())\"\n [value]=\"timeOf(context.condition.value)\"\n [attr.aria-label]=\"context.label(0)\"\n (valueChange)=\"context.set(0, iso($event.value))\"\n (keydown.enter)=\"context.apply()\"\n ></div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableTimeFilter extends SlTableFilterBase {\n override readonly kind = 'time' as const;\n readonly value = model<TimeFilter | null>(null);\n /** BCP 47. Decides the operand's hour cycle and separators. */\n readonly locale = input<string | undefined>(undefined);\n /** Twelve or twenty-four hours, overriding what the locale says. */\n readonly hourCycle = input<12 | 24 | undefined>(undefined);\n /** The last unit the operand writes. Minute unless stated. */\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n /** The list's step, in seconds. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n /** The list's own entries, replacing the step. */\n readonly options = input<readonly PlainTime[] | undefined>(undefined);\n /** The earliest time the operand accepts, as ISO time text. */\n readonly min = input<string | undefined>(undefined);\n /** The latest, as ISO time text. */\n readonly max = input<string | undefined>(undefined);\n /**\n * The application's own windows — the morning shift, the night shift — as\n * `slTimeRangePickerPreset` buttons in a template, offered inside the range\n * picker `between` draws. The descriptor still receives two ISO times.\n */\n readonly presets = input<TemplateRef<unknown> | undefined>(undefined);\n\n protected override rangeOperand() {\n return true;\n }\n\n timeOf(value: unknown): PlainTime | undefined {\n return timeOf(value) ?? undefined;\n }\n\n iso(value: unknown) {\n return isPlainTime(value) ? toISOTime(value, this.granularity() ?? 'minute') : null;\n }\n\n range(condition: Condition): { start: PlainTime | null; end: PlainTime | null } {\n return { start: timeOf(condition.value), end: timeOf(condition.end) };\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as TimeFilter | null);\n }\n}\n\n/**\n * A column of dates with times. The operand is `datetime-picker`, the\n * seven-segment field and the two surfaces behind it. A value with one half\n * missing reaches the draft as no operand at all, so the condition stays\n * inactive until both halves exist — the engine's one rule for a missing\n * operand, and the reason Apply reports nothing for a date without a time.\n *\n * `between` is one `datetime-range-picker`: the run's length said while it is\n * drawn, the dates ordered with each time kept on its end, and the\n * application's presets. No `(keydown.enter)` on it: the frame is a button,\n * and `Enter` on it opens the picker.\n */\n@Component({\n selector: 'span[slTableDateTimeFilter]',\n exportAs: 'slTableDateTimeFilter',\n imports: [\n NgTemplateOutlet,\n SlTableFilterShell,\n SlDateTimePicker,\n SlDateTimeRangePicker,\n SlDateTimeRangePickerPresets,\n ],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @if (context.slots.length === 2) {\n <div\n slDateTimeRangePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [timeZone]=\"timeZone()\"\n [hourCycle]=\"hourCycle()\"\n [granularity]=\"granularity()\"\n [step]=\"step()\"\n [min]=\"dateTimeOf(min())\"\n [max]=\"dateTimeOf(max())\"\n [messages]=\"{ start: context.label(0), end: context.label(1) }\"\n [value]=\"range(context.condition)\"\n (valueChange)=\"context.setBoth(iso($event.value?.start), iso($event.value?.end))\"\n >\n @if (presets(); as presetsTemplate) {\n <div slDateTimeRangePickerPresets>\n <ng-container [ngTemplateOutlet]=\"presetsTemplate\" />\n </div>\n }\n </div>\n } @else {\n <div\n slDateTimePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [timeZone]=\"timeZone()\"\n [hourCycle]=\"hourCycle()\"\n [granularity]=\"granularity()\"\n [step]=\"step()\"\n [min]=\"dateTimeOf(min())\"\n [max]=\"dateTimeOf(max())\"\n [value]=\"dateTimeOf(context.condition.value)\"\n [attr.aria-label]=\"context.label(0)\"\n (valueChange)=\"context.set(0, iso($event.value))\"\n (keydown.enter)=\"context.apply()\"\n ></div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableDateTimeFilter extends SlTableFilterBase {\n override readonly kind = 'datetime' as const;\n readonly value = model<DateTimeFilter | null>(null);\n /** BCP 47. Decides the operand's field order and separators. */\n readonly locale = input<string | undefined>(undefined);\n /** The zone \"now\" is read in. Defaults to the runtime's. */\n readonly timeZone = input<string | undefined>(undefined);\n /** Twelve or twenty-four hours, overriding what the locale says. */\n readonly hourCycle = input<12 | 24 | undefined>(undefined);\n /** The last unit the operand writes. Minute unless stated. */\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n /** The list's step, in seconds. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n /** The earliest date-time the operand accepts, as ISO date-time text. */\n readonly min = input<string | undefined>(undefined);\n /** The latest, as ISO date-time text. */\n readonly max = input<string | undefined>(undefined);\n /**\n * The application's own windows — the last 24 hours, this week — as\n * `slDateTimeRangePickerPreset` buttons in a template, offered inside the\n * range picker `between` draws. The descriptor still receives two ISO\n * date-times.\n */\n readonly presets = input<TemplateRef<unknown> | undefined>(undefined);\n\n protected override rangeOperand() {\n return true;\n }\n\n dateTimeOf(value: unknown): PlainDateTime | undefined {\n return dateTimeOf(value) ?? undefined;\n }\n\n range(condition: Condition): { start: PlainDateTime | null; end: PlainDateTime | null } {\n return { start: dateTimeOf(condition.value), end: dateTimeOf(condition.end) };\n }\n\n iso(value: unknown) {\n return isPlainDateTime(value)\n ? `${toISODate(value.date)}T${toISOTime(value.time, this.granularity() ?? 'minute')}`\n : null;\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as DateTimeFilter | null);\n }\n}\n\n/**\n * A column of yes and no. Three answers rather than two: the third is not being\n * filtered at all, which is what Clear leaves and what an empty draft is.\n */\n@Component({\n selector: 'span[slTableBooleanFilter]',\n exportAs: 'slTableBooleanFilter',\n imports: [SlTableFilterShell, SlRadio, SlRadioGroup],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n <div\n slRadioGroup\n orientation=\"horizontal\"\n size=\"sm\"\n [attr.aria-label]=\"context.label(0)\"\n [value]=\"answer(context.condition.value)\"\n (valueChange)=\"context.set(0, $event.value === 'true')\"\n >\n <div slRadio value=\"true\">{{ t('true') }}</div>\n <div slRadio value=\"false\">{{ t('false') }}</div>\n </div>\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableBooleanFilter extends SlTableFilterBase {\n override readonly kind = 'boolean' as const;\n readonly value = model<BooleanFilter | null>(null);\n\n answer(value: unknown) {\n return value === undefined || value === null ? '' : String(value);\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as BooleanFilter | null);\n }\n}\n\n/**\n * A column filtered to values the consumer named: the list, its search and the\n * checkbox that covers what the search left.\n *\n * One condition, and the design says why: `anyOf A and anyOf B` is\n * `anyOf (A ∩ B)`, so every pair of set conditions collapses to a single list.\n */\n@Component({\n selector: 'span[slTableSetFilter]',\n exportAs: 'slTableSetFilter',\n imports: [SlTableFilterShell, SlCheckbox, SlTagsInput, SlTextField, SlTextFieldInput],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operandTemplate\"></span>\n <!-- The template is not named operand: that is the input that says which\n of the two operands is drawn, and a template variable of the same name\n would shadow it in every binding below. -->\n <ng-template #operandTemplate let-context>\n @if (operand() === 'tags') {\n <!-- The chosen values as chips, for a list too long to tick. With\n options, a typed value outside them is refused and announced by\n tags-input's own validation, and the options are a datalist:\n native completion in every engine, with no second listbox inside\n the panel. Enter with pending text commits a chip, which is\n tags-input's key; Enter on an empty field applies, which is the\n panel's. -->\n <sl-tags-input\n size=\"sm\"\n [fullWidth]=\"true\"\n [attr.aria-label]=\"context.label(0)\"\n [formatLabel]=\"optionLabel\"\n [list]=\"constrained() ? listId : undefined\"\n [validateValue]=\"constrained() ? known : undefined\"\n [invalidValues]=\"constrained() ? 'refuse' : undefined\"\n [value]=\"chosen(context)\"\n (valueChange)=\"context.set(0, $event)\"\n (keydown.enter)=\"applyOnEmpty($event, context)\"\n ></sl-tags-input>\n @if (constrained()) {\n <datalist [id]=\"listId\">\n @for (option of options(); track option.value) {\n <option [value]=\"option.value\">{{ option.label ?? option.value }}</option>\n }\n </datalist>\n }\n } @else {\n @if (searching()) {\n <div data-part=\"filter-search\">\n <div slTextField size=\"sm\" clearable>\n <input\n slTextFieldInput\n [value]=\"query()\"\n [attr.aria-label]=\"t('filterSearch')\"\n [attr.placeholder]=\"t('filterSearch')\"\n (input)=\"search($event)\"\n />\n </div>\n </div>\n }\n\n @if (shown().length === 0) {\n <p data-part=\"filter-empty\">{{ t('filterEmpty') }}</p>\n } @else {\n <div data-part=\"filter-list\">\n <div data-part=\"filter-option\" data-covering>\n <span\n slCheckbox\n [checked]=\"allCovered(context)\"\n [indeterminate]=\"someCovered(context)\"\n (checkedChange)=\"coverAll(context, !allCovered(context))\"\n >\n {{ t('filterSelectAll') }}\n </span>\n <span data-count>{{ shown().length }}</span>\n </div>\n\n @for (option of shown(); track option.value) {\n <div data-part=\"filter-option\">\n <span\n slCheckbox\n [checked]=\"chosen(context).includes(option.value)\"\n (checkedChange)=\"hold(context, option.value, $event.value)\"\n >\n {{ option.label ?? option.value }}\n </span>\n @if (option.count !== undefined) {\n <span data-count>{{ option.count }}</span>\n }\n </div>\n }\n </div>\n }\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableSetFilter extends SlTableFilterBase {\n override readonly kind = 'set' as const;\n readonly value = model<SetFilter | null>(null);\n /**\n * How the values are chosen. `list` is the search, the covering checkbox and\n * the values; `tags` is `tags-input`, for a list too long to tick — the\n * chosen values are chips, and `options` become a datalist of suggestions\n * and the set a typed value must belong to. The descriptor is the same list\n * either way.\n */\n readonly operand = input<'list' | 'tags'>('list');\n /**\n * The values this column can be filtered to, and optionally their counts.\n * Optional with `tags`, where a column may hold more values than a page\n * knows; without it any typed value is admitted.\n */\n readonly options = input<readonly TableFilterOption[]>([]);\n /**\n * Whether the panel carries a search. Unstated, it appears once there are\n * `searchThreshold` values.\n */\n readonly searchable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /** How many values bring the search with them. Eight unless stated. */\n readonly searchThreshold = input(8, { transform: numberAttribute });\n\n readonly query = signal('');\n readonly listId = `sl-table-filter-options-${Math.random().toString(36).slice(2, 8)}`;\n\n override operandName() {\n return this.operand();\n }\n\n /** Whether a typed value has to be one of the options. */\n readonly constrained = computed(() => this.operand() === 'tags' && this.options().length > 0);\n\n private readonly byValue = computed(\n () => new Map(this.options().map((option) => [option.value, option])),\n );\n\n /** The chip's text for a value, and the judgement on a typed one. */\n readonly optionLabel = (value: string) => this.byValue().get(value)?.label ?? value;\n readonly known = (text: string) => this.byValue().has(text);\n\n applyOnEmpty(event: Event, context: TableFilterOperandContext) {\n const input = event.target as HTMLInputElement | null;\n if (!event.defaultPrevented && input?.value === '') context.apply();\n }\n\n /**\n * The collator `combobox` filters its own options with, rather than a fold\n * that strips combining marks: `normalize('NFD')` is an English answer\n * wearing a Unicode one — it turns `ø` into `ø` and leaves `ß` alone.\n */\n private readonly compare = createFilter({ sensitivity: 'base' });\n\n /** Two set conditions collapse to one list, so the panel offers one. */\n protected override allowed() {\n return 1;\n }\n\n /** What the search left. The covering checkbox answers for exactly this. */\n readonly shown = computed(() => {\n const query = this.query();\n const options = this.options();\n if (query === '') return options;\n return options.filter((option) => this.compare.contains(option.label ?? option.value, query));\n });\n\n readonly searching = computed(\n () => this.searchable() ?? this.options().length >= this.searchThreshold(),\n );\n\n chosen(context: TableFilterOperandContext): readonly string[] {\n return (context.condition.value as readonly string[] | null) ?? [];\n }\n\n private covered(context: TableFilterOperandContext) {\n const chosen = this.chosen(context);\n return this.shown().filter((option) => chosen.includes(option.value)).length;\n }\n\n allCovered(context: TableFilterOperandContext) {\n const covered = this.covered(context);\n return covered > 0 && covered === this.shown().length;\n }\n\n someCovered(context: TableFilterOperandContext) {\n const covered = this.covered(context);\n return covered > 0 && covered < this.shown().length;\n }\n\n search(event: Event) {\n this.query.set((event.target as HTMLInputElement).value);\n /* A list that shortens under a reader who cannot see it says nothing. */\n this.announce(this.t('filterMatches', { count: this.shown().length }));\n }\n\n hold(context: TableFilterOperandContext, value: string, next: boolean) {\n const chosen = this.chosen(context);\n context.set(0, next ? [...chosen, value] : chosen.filter((held) => held !== value));\n }\n\n coverAll(context: TableFilterOperandContext, next: boolean) {\n const visible = this.shown().map((option) => option.value);\n const chosen = this.chosen(context);\n context.set(\n 0,\n next\n ? [...new Set([...chosen, ...visible])]\n : chosen.filter((held) => !visible.includes(held)),\n );\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as SetFilter | null);\n }\n}\n\nexport type {\n BooleanOperator,\n DateOperator,\n DateTimeOperator,\n NumberOperator,\n SetOperator,\n TextOperator,\n TimeOperator,\n} from '@slotted/core/filter';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["kindDefaultOperator"],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-table.mjs","sources":["../../table/src/table-defaults.ts","../../table/src/table.ts","../../table/src/table-content.ts","../../table/src/table-parts.ts","../../table/src/table-filter.ts","../../table/src/slotted-angular-table.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** How much of a frame the set is given. The vocabulary `description-list` set. */\nexport type TableVariant = 'plain' | 'ruled' | 'framed';\n\n/**\n * Whether the first and the last column keep the cell's inset on their outer\n * side. `flush` reaches `plain` and `ruled` only: a `framed` table keeps the\n * inset, because its text stands against a border.\n */\nexport type TableEdges = 'inset' | 'flush';\n\n/**\n * Whether the browser sizes the columns from their content or from what the\n * table states. `fixed` is what makes a stated width hold and a truncated cell\n * truncate at all.\n */\nexport type TableLayout = 'auto' | 'fixed';\n\nexport type TableSelectionMode = 'none' | 'single' | 'multiple';\n\n/**\n * What a sticky header stays inside: the family's own scroller, or whatever\n * scrolls outside it — the page, an app shell, a scroll area.\n */\nexport type TableStickyTo = 'scroll' | 'page';\n\n/** Which edge a cell's content stands on, resolved logically. */\nexport type TableAlign = 'start' | 'center' | 'end';\n\n/** What a value longer than its column does. None of the three removes it. */\nexport type TableText = 'wrap' | 'truncate' | 'nowrap';\n\n/** Which edge a column is pinned to while the table scrolls past it. */\nexport type TableSticky = 'start' | 'end';\n\nexport type TableSortDirection = 'ascending' | 'descending';\n\n/**\n * Which column the rows are ordered by, and which way. The family holds it and\n * reorders nothing: the rows are the consumer's own, written in the template,\n * so the consumer applies the descriptor to its own array or its own query.\n */\nexport interface TableSortDescriptor {\n column: string;\n direction: TableSortDirection;\n}\n\nexport type TableSortReason = 'pointer' | 'keyboard' | 'clear' | 'programmatic';\nexport type TableSelectionReason = 'pointer' | 'keyboard' | 'select' | 'clear' | 'programmatic';\nexport type TableExpandedReason = 'pointer' | 'keyboard' | 'programmatic';\n\nexport interface TableDefaults {\n cellAlign: TableAlign;\n columns: number;\n edges: TableEdges;\n layout: TableLayout;\n selectionMode: TableSelectionMode;\n stickyFooter: boolean;\n stickyHeader: boolean;\n stickyTo: TableStickyTo;\n striped: boolean;\n variant: TableVariant;\n}\n\nconst FALLBACK: TableDefaults = {\n cellAlign: 'center',\n columns: 1,\n edges: 'inset',\n layout: 'auto',\n selectionMode: 'none',\n stickyFooter: false,\n stickyHeader: false,\n stickyTo: 'scroll',\n striped: false,\n variant: 'ruled',\n};\n\nexport const TABLE_DEFAULTS = new InjectionToken<TableDefaults>('slotted table defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its tables are framed and how they select,\n * rather than repeating the same inputs on every listing screen. A table that\n * states any of them itself still wins. Its words come from the language in\n * force (`provideSlotted`).\n */\nexport function provideTableDefaults(defaults: Partial<TableDefaults>) {\n return {\n provide: TABLE_DEFAULTS,\n useFactory: (): TableDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectTableDefaults(): TableDefaults {\n return inject(TABLE_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlTableIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-table-${this.count}`;\n }\n}\n","import { nextSelection } from '@slotted/core/collection';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { tableMessages, type PartialMessages, type TableMessages } from '@slotted/core/i18n';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\n\nimport {\n injectTableDefaults,\n SlTableIdFactory,\n type TableAlign,\n type TableEdges,\n type TableLayout,\n type TableSelectionMode,\n type TableSelectionReason,\n type TableSortDescriptor,\n type TableStickyTo,\n type TableVariant,\n} from './table-defaults';\n\nexport type {\n TableAlign,\n TableDefaults,\n TableEdges,\n TableExpandedReason,\n TableLayout,\n TableSelectionMode,\n TableSelectionReason,\n TableSortDescriptor,\n TableSortDirection,\n TableSortReason,\n TableSticky,\n TableStickyTo,\n TableText,\n TableVariant,\n} from './table-defaults';\n\n/** Every selectable row, in the order the body renders them. */\nexport const TABLE_ROW_SELECTOR = '[data-part=\"body\"] > [data-part=\"row\"][data-value]';\n\n/**\n * A table of moderate data: the platform's own structure, with sorting,\n * selection, expansion and a place for a paging control.\n *\n * **The role is `table`, not `grid`.** The APG is explicit — a table \"is not an\n * interactive widget. Thus, its cells are not focusable or selectable\" — so\n * every control inside it is its own tab stop and the family binds no key of\n * its own. `data-grid` is the composite widget with a cell cursor.\n *\n * **The family holds the sort and reorders nothing.** The rows are the\n * consumer's own, written with `@for` over their own array; reordering them\n * would mean owning the data, which is the line between this family and\n * `data-grid`.\n *\n * **The selection is a form value.** A bulk-action screen is a reactive form\n * rather than a component with a callback, which no surveyed Angular table\n * offers.\n */\n@Component({\n selector: 'div[slTable]',\n standalone: true,\n exportAs: 'slTable',\n template: '<ng-content />',\n styleUrls: [\n '../../../styles/src/table/table.css',\n '../../../styles/src/checkbox/checkbox.css',\n '../../../styles/src/visually-hidden/visually-hidden.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTable), multi: true }],\n host: {\n 'data-ui': 'table',\n 'data-part': 'root',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-edges]': 'resolvedEdges()',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-cell-align]': 'resolvedCellAlign()',\n '[attr.data-striped]': \"resolvedStriped() ? '' : null\",\n '[attr.data-sticky-header]': \"resolvedStickyHeader() ? '' : null\",\n '[attr.data-sticky-footer]': \"resolvedStickyFooter() ? '' : null\",\n '[attr.data-sticky-to]': 'resolvedStickyTo()',\n '[attr.data-loading]': \"loading() ? '' : null\",\n },\n})\nexport class SlTable implements ControlValueAccessor {\n /** Which column the rows are ordered by. Two-way, so a template binds it. */\n readonly sort = model<TableSortDescriptor | null>(null);\n /** The chosen rows, in the collection's own order. */\n readonly value = model<readonly string[]>([]);\n /** The rows whose detail is open. */\n readonly expanded = model<readonly string[]>([]);\n\n readonly variant = input<TableVariant | undefined>(undefined);\n /**\n * Whether the first and the last column keep the cell's inset on their outer\n * side. `flush` lines a `plain` or `ruled` table's text up with the heading\n * around it; a `framed` table ignores it.\n */\n readonly edges = input<TableEdges | undefined>(undefined);\n readonly layout = input<TableLayout | undefined>(undefined);\n readonly selectionMode = input<TableSelectionMode | undefined>(undefined);\n /**\n * Where every cell's content sits in a row as tall as its tallest cell. A\n * cell states `blockAlign` to answer differently.\n */\n readonly cellAlign = input<TableAlign | undefined>(undefined);\n readonly striped = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n readonly stickyHeader = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * Holds the summary rows against the bottom of the same box the header is\n * held against the top of, so a total does not scroll out of the view that\n * exists to show it. It pins the `tfoot` and not the footer bar, which is\n * outside the scroller and never leaves.\n */\n readonly stickyFooter = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * What the sticky header stays inside. `page` releases the family's own\n * scroll container, so the table can no longer scroll sideways in its frame.\n */\n readonly stickyTo = input<TableStickyTo | undefined>(undefined);\n /**\n * How many columns the table renders. The spanning parts — the detail row,\n * the empty cell, the skeleton rows — need the number, and reading it from\n * the DOM would be nothing on the server and a count on the client.\n */\n readonly columns = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n /** A refresh over rows already shown: `aria-busy`, and nothing moves. */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * selection, expansion and sort words, the scrolling region's name and every\n * word of the column filters.\n */\n readonly messages = input<PartialMessages<TableMessages> | undefined>(undefined);\n\n /** One output per transition, each carrying the reason and the event. */\n readonly sortChangeRequest = output<ChangeRequest<TableSortDescriptor | null>>();\n readonly valueChangeRequest = output<ChangeRequest<readonly string[]>>();\n readonly expandedChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n private readonly defaults = injectTableDefaults();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly id = inject(SlTableIdFactory).next();\n\n /** Where a range starts: the row of the last press that held no modifier. */\n private anchor: string | undefined = undefined;\n private touched: (() => void) | undefined = undefined;\n private notify: ((value: readonly string[]) => void) | undefined = undefined;\n private readonly formDisabled = signal(false);\n\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedEdges = computed(() => this.edges() ?? this.defaults.edges);\n readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout);\n readonly resolvedCellAlign = computed(() => this.cellAlign() ?? this.defaults.cellAlign);\n readonly resolvedMode = computed(() => this.selectionMode() ?? this.defaults.selectionMode);\n readonly resolvedStriped = computed(() => this.striped() ?? this.defaults.striped);\n readonly resolvedStickyHeader = computed(() => this.stickyHeader() ?? this.defaults.stickyHeader);\n readonly resolvedStickyFooter = computed(() => this.stickyFooter() ?? this.defaults.stickyFooter);\n readonly resolvedStickyTo = computed(() => this.stickyTo() ?? this.defaults.stickyTo);\n readonly resolvedColumns = computed(() => this.columns() ?? this.defaults.columns);\n /** The family's words in the language in force, with this table's `messages` laid over them. */\n readonly t = injectMessages(tableMessages, this.messages);\n\n isSelected(key: string) {\n return this.value().includes(key);\n }\n\n isExpanded(key: string) {\n return this.expanded().includes(key);\n }\n\n /**\n * Every selectable row's value, read out of the DOM at the moment it is\n * needed rather than kept in a registry. A registry holds the order rows were\n * created in, and a sorted table renders the same rows in a new order without\n * destroying one of them — so the range and the select-all would run against\n * the order before the sort.\n */\n rows(): readonly string[] {\n return [...this.host.nativeElement.querySelectorAll(TABLE_ROW_SELECTOR)]\n .filter((row) => !row.hasAttribute('data-disabled'))\n .map((row) => row.getAttribute('data-value') ?? '');\n }\n\n requestSort(column: string, source: Event | undefined) {\n /**\n * Ascending, descending, then none — the third state Material and Ant both\n * ship and Carbon does not. A reader who sorted a column by accident has no\n * other way back.\n */\n const held = this.sort();\n const next: TableSortDescriptor | null =\n held?.column !== column\n ? { column, direction: 'ascending' }\n : held.direction === 'ascending'\n ? { column, direction: 'descending' }\n : null;\n\n const state = createControllable<TableSortDescriptor | null>({\n initial: held,\n equals: (a, b) => a?.column === b?.column && a?.direction === b?.direction,\n onRequest: (request) => this.sortChangeRequest.emit(request),\n });\n const moved = state.request(next, next === null ? 'clear' : 'pointer', source);\n\n /**\n * `aria-sort` is a property, and a property that changes silently is a\n * change no reader hears. None of the six surveyed implementations says it.\n */\n const heading = (source?.currentTarget as HTMLElement | null)?.textContent?.trim() ?? column;\n const said =\n next === null\n ? this.t('sortCleared', { column: heading })\n : next.direction === 'ascending'\n ? this.t('sortedAscending', { column: heading })\n : this.t('sortedDescending', { column: heading });\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(said);\n\n if (moved) this.sort.set(next);\n }\n\n toggleSelected(key: string, options: { range: boolean; source: Event | undefined }) {\n const result = nextSelection({\n action: options.range && this.resolvedMode() === 'multiple' ? 'range' : 'toggle',\n anchor: this.anchor,\n behavior: 'toggle',\n key,\n keys: this.rows(),\n mode: this.resolvedMode(),\n selected: this.value(),\n });\n if (!options.range) this.anchor = key;\n this.requestValue(result.selected, options.range ? 'select' : 'pointer', options.source);\n }\n\n toggleSelectAll(source: Event | undefined) {\n const result = nextSelection({\n action: 'all',\n keys: this.rows(),\n mode: this.resolvedMode(),\n selected: this.value(),\n });\n this.requestValue(result.selected, result.selected.length === 0 ? 'clear' : 'select', source);\n }\n\n toggleExpanded(key: string, source: Event | undefined) {\n const held = this.expanded();\n const next = held.includes(key) ? held.filter((open) => open !== key) : [...held, key];\n const state = createControllable<readonly string[]>({\n initial: held,\n equals: (a, b) => a.length === b.length && a.every((open, index) => open === b[index]),\n onRequest: (request) => this.expandedChangeRequest.emit(request),\n });\n if (state.request(next, 'pointer', source)) this.expanded.set(next);\n }\n\n /** The form's own value is the selection, which is what a bulk action acts on. */\n writeValue(value: readonly string[] | null | undefined) {\n this.value.set(value ?? []);\n }\n\n registerOnChange(fn: (value: readonly string[]) => void) {\n this.notify = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.touched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n readonly disabledByForm = computed(() => this.formDisabled());\n\n private requestValue(\n next: readonly string[],\n reason: TableSelectionReason,\n source: Event | undefined,\n ) {\n const state = createControllable<readonly string[]>({\n initial: this.value(),\n equals: (a, b) => a.length === b.length && a.every((key, index) => key === b[index]),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return;\n this.value.set(next);\n this.notify?.(next);\n this.touched?.();\n }\n}\n","import { createFocusOrigin } from '@slotted/core/focus';\nimport { createScrollAffordance } from '@slotted/core/overflow';\nimport type { OverflowState, ScrollAffordanceHandle } from '@slotted/core/overflow';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlTable } from './table';\n\n/**\n * The scroller and the table it holds.\n *\n * Two elements and one component, because neither is a decision a consumer\n * makes: the `table` carries the semantics and the host carries the overflow.\n * Angular pays one element for the host and draws the other in its template,\n * which is the same division `checkbox` records.\n *\n * **The region wiring is written only while the table overflows.** `role`,\n * `tabindex` and a name arrive together, measured by `@slotted/core/overflow` —\n * the rule `prose` set. A tab stop on a table that fits makes a reader press Tab\n * for nothing, and a wide table with no tab stop is unreachable without a\n * pointer. Nothing is measured until the first render after mount, so the\n * server renders a plain scroller and hydration finds the same DOM.\n *\n * **The host's `aria-label` names the table.** An instance with no caption\n * names itself with it, and the template writes it on the `table`, the\n * element whose name it is. The region takes the catalog's name, or\n * `scrollLabel`.\n */\n@Component({\n selector: 'div[slTableContent]',\n standalone: true,\n exportAs: 'slTableContent',\n template: `<table\n data-part=\"table\"\n [attr.aria-label]=\"tableLabel\"\n [attr.aria-busy]=\"table.loading() ? 'true' : null\"\n [attr.aria-rowcount]=\"totalRowCount() ?? null\"\n >\n <ng-content />\n </table>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'scroll',\n '[attr.data-overflowing]': \"state().overflowing ? '' : null\",\n '[attr.data-at-start]': \"state().overflowing && state().atStart ? '' : null\",\n '[attr.data-at-end]': \"state().overflowing && state().atEnd ? '' : null\",\n '[attr.role]': \"state().overflowing ? 'region' : null\",\n '[attr.tabindex]': \"state().overflowing ? '0' : null\",\n '[attr.aria-label]': 'regionLabel()',\n '[attr.aria-labelledby]': 'regionLabelledBy()',\n },\n})\nexport class SlTableContent {\n /**\n * The total number of rows behind a paged or filtered table. Written as\n * `aria-rowcount`, with `aria-rowindex` on every row, and only then: the\n * practice requires the pair exactly when the DOM is not the whole set.\n */\n readonly totalRowCount = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n /** The name the region takes while it overflows, over the catalog's. */\n readonly scrollLabel = input<string | undefined>(undefined);\n /** The element that names it instead, which is usually the caption. */\n readonly scrollLabelledBy = input<string | undefined>(undefined);\n\n readonly table = inject(SlTable);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n /** The host's own `aria-label`: the table's name, moved onto the `table`. */\n protected readonly tableLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private affordance: ScrollAffordanceHandle | null = null;\n\n readonly state = signal<OverflowState>({ overflowing: false, atStart: true, atEnd: true });\n\n readonly regionLabel = computed(() =>\n this.state().overflowing && this.scrollLabelledBy() === undefined\n ? (this.scrollLabel() ?? this.table.t('scroll'))\n : null,\n );\n\n readonly regionLabelledBy = computed(() =>\n this.state().overflowing ? (this.scrollLabelledBy() ?? null) : null,\n );\n\n constructor() {\n /** A click on a cell focuses the scroller; its ring is for the keyboard (`createFocusOrigin`). */\n afterNextRender(() => {\n const origin = createFocusOrigin(this.host.nativeElement);\n this.destroyRef.onDestroy(origin.destroy);\n });\n\n afterNextRender(() => {\n /**\n * Nothing is measured under `stickyTo=\"page\"`: the family has released its\n * own scroll container so the header can stick to what scrolls outside it,\n * and a box that does not scroll has no overflow to answer and no tab stop\n * to earn.\n */\n if (this.table.resolvedStickyTo() === 'page') return;\n\n const handle = createScrollAffordance(this.host.nativeElement, {\n onChange: (next) => this.state.set(next),\n });\n this.affordance = handle;\n this.state.set(handle.state());\n });\n\n this.destroyRef.onDestroy(() => {\n this.affordance?.destroy();\n this.affordance = null;\n });\n }\n\n /** Brings one row into view by the shortest movement that does it. */\n scrollToRow(value: string) {\n const row = this.host.nativeElement.querySelector(\n `[data-part=\"row\"][data-value=\"${CSS.escape(value)}\"]`,\n );\n if (row !== null) this.affordance?.reveal(row);\n }\n\n /** Measures again, after rows arrive or a column changes width. */\n refresh() {\n this.affordance?.refresh();\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n numberAttribute,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { isRowAction } from '@slotted/core/pointer-intent';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\nimport {\n SlTooltip,\n SlTooltipContent,\n SlTooltipLayer,\n SlTooltipTrigger,\n provideTooltipDefaults,\n} from '@slotted/angular/tooltip';\n\nimport { SlTable } from './table';\nimport type { TableAlign, TableSticky, TableText } from './table-defaults';\n\n/**\n * The axes every cell answers, written once. `numeric` and `align` are two facts\n * rather than one axis: a number is set in tabular figures whichever way it is\n * aligned, and a right-aligned label is not a number.\n */\n@Directive({\n standalone: true,\n host: {\n '[attr.data-align]': 'align() ?? null',\n '[attr.data-block-align]': 'blockAlign() ?? null',\n '[attr.data-numeric]': \"numeric() ? '' : null\",\n '[attr.data-text]': 'text() ?? null',\n '[attr.data-sticky]': 'sticky() ?? null',\n '[style.--slotted-table-sticky-inset]': 'stickyOffset() ?? null',\n },\n})\nexport class SlTableCellAxes {\n readonly align = input<TableAlign | undefined>(undefined);\n /**\n * Where this cell's content sits in a row as tall as its tallest cell. The\n * table states it once through `cellAlign`; this overrides it for the one\n * cell that wants the other answer.\n */\n readonly blockAlign = input<TableAlign | undefined>(undefined);\n readonly numeric = input(false, { transform: booleanAttribute });\n readonly text = input<TableText | undefined>(undefined);\n readonly sticky = input<TableSticky | undefined>(undefined);\n /**\n * Where a pinned column stops, as a CSS length. Nought unless stated: two\n * columns pinned to the same edge need the second to know how wide the first\n * is, and the family states that rather than measuring it — measuring would\n * mean reading the layout during change detection.\n */\n readonly stickyOffset = input<string | undefined>(undefined);\n}\n\n/**\n * The table's name, and the element the platform already associates with it. A\n * `caption` is the accessible name whether it is read or hidden, so the family\n * writes no `aria-labelledby` restating what the browser states.\n */\n@Directive({\n selector: 'caption[slTableCaption]',\n standalone: true,\n exportAs: 'slTableCaption',\n host: { 'data-part': 'caption' },\n})\nexport class SlTableCaption {}\n\n@Directive({\n selector: 'thead[slTableHead]',\n standalone: true,\n exportAs: 'slTableHead',\n host: { 'data-part': 'head' },\n})\nexport class SlTableHead {}\n\n@Directive({\n selector: 'tbody[slTableBody]',\n standalone: true,\n exportAs: 'slTableBody',\n host: { 'data-part': 'body' },\n})\nexport class SlTableBody {}\n\n/**\n * The `tfoot`, which the HTML Standard calls the column summaries of the table.\n * It is not `slTableFooter`, which is the bar outside the table holding the\n * consumer's own controls.\n */\n@Directive({\n selector: 'tfoot[slTableSummary]',\n standalone: true,\n exportAs: 'slTableSummary',\n host: { 'data-part': 'summary' },\n})\nexport class SlTableSummary {}\n\n/**\n * The bar under the table and inside its frame, where a paged listing puts its\n * control. It is a sibling of the scroller rather than a child, so a table\n * scrolled sideways does not take its pagination with it.\n */\n@Directive({\n selector: 'div[slTableFooter]',\n standalone: true,\n exportAs: 'slTableFooter',\n host: { 'data-part': 'footer' },\n})\nexport class SlTableFooter {}\n\n/**\n * One record. It carries `data-selected` and `data-expanded` for the stylesheet\n * and `data-value` for the range and the select-all, which read the rows out of\n * the DOM at the moment they act.\n *\n * A row is not selectable under the `table` role, so it carries no\n * `aria-selected`: the state is painted here and announced by the checkbox.\n */\n@Directive({\n selector: 'tr[slTableRow]',\n standalone: true,\n exportAs: 'slTableRow',\n host: {\n 'data-part': 'row',\n '[attr.data-value]': 'value() ?? null',\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.data-expanded]': \"expanded() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.aria-rowindex]': 'rowIndex() ?? null',\n '[attr.aria-current]': \"current() ? 'true' : null\",\n '[attr.data-current]': \"current() ? '' : null\",\n '[attr.data-interactive]': \"interactive() ? '' : null\",\n '(click)': 'onClick($event)',\n },\n})\nexport class SlTableRow {\n /** The row's key, required wherever selection or expansion is on. */\n readonly value = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * The row the page is showing elsewhere — the record open in a detail pane\n * beside the table. Written as `aria-current=\"true\"`; it is not the\n * selection, which the checkbox owns.\n */\n readonly current = input(false, { transform: booleanAttribute });\n /**\n * Paints the row as a thing the pointer can press. Stated beside `(action)`,\n * because an output does not say whether anything listens to it.\n */\n readonly interactive = input(false, { transform: booleanAttribute });\n /**\n * A click anywhere in the row that does not land on a control of its own — a\n * link, a button, a field, a label. The row takes no tab stop: the keyboard\n * reaches the record through the first link or button in it.\n */\n readonly action = output<MouseEvent>();\n /**\n * The row's position in the whole set, one-based, written only where the\n * table states a total: the practice warns that setting `aria-rowindex` on\n * some rows and not others has devastating effects on assistive technology.\n */\n readonly rowIndex = input<number | undefined, number | string | undefined>(undefined, {\n transform: (index) => (index === undefined ? undefined : numberAttribute(index)),\n });\n\n readonly table = inject(SlTable);\n\n readonly selected = computed(() => {\n const key = this.value();\n return key !== undefined && this.table.isSelected(key);\n });\n\n readonly expanded = computed(() => {\n const key = this.value();\n return key !== undefined && this.table.isExpanded(key);\n });\n\n readonly detailId = computed(() => `${this.table.id}-detail-${this.value() ?? ''}`);\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected onClick(event: MouseEvent) {\n if (event.defaultPrevented || this.disabled()) return;\n if (isRowAction(this.host.nativeElement, event.target)) this.action.emit(event);\n }\n}\n\n/**\n * A column's name. `scope=\"col\"` is what makes a screen reader repeat it for\n * every cell under it, and `aria-sort` is written here and on no other header.\n *\n * A name cut by its own box — `text=\"truncate\"` on a column with no room —\n * reads `Op…` to the eye while the whole of it is still what a screen reader\n * repeats under every cell. The hint closes that gap: it opens only while the\n * name is measured as cut, which a header that wraps or fits never is, and it\n * is shown rather than read — `describes=\"none\"`, because the header already\n * states the words.\n */\n@Component({\n selector: 'th[slTableColumnHeader]',\n standalone: true,\n exportAs: 'slTableColumnHeader',\n imports: [SlTooltipContent, SlTooltipLayer],\n template: `<ng-content />\n <ng-template slTooltipLayer>\n <div slTooltipContent>{{ hint() }}</div>\n </ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n SlTooltip,\n SlTooltipTrigger,\n ],\n providers: [\n provideTooltipDefaults({\n describes: 'none',\n openOn: 'hover',\n side: 'bottom',\n whenClipped: true,\n }),\n ],\n host: {\n 'data-part': 'column-header',\n '[attr.scope]': \"scope() ?? 'col'\",\n '[attr.aria-sort]': 'ariaSort()',\n },\n})\nexport class SlTableColumnHeader {\n /** The column's own key, which the sort descriptor names. */\n readonly column = input<string | undefined>(undefined);\n readonly scope = input<string | undefined>(undefined);\n\n private readonly table = inject(SlTable);\n private readonly tooltip = inject(SlTooltip);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n readonly ariaSort = computed(() => {\n const sort = this.table.sort();\n return sort !== null && sort.column === this.column() ? sort.direction : null;\n });\n\n /** The words the header itself holds, read when the hint is about to show them. */\n protected readonly hint = computed(() =>\n this.tooltip.isOpen() ? (this.native.textContent ?? '').trim() : '',\n );\n}\n\n/**\n * The cell that identifies the record, which a screen reader repeats in each of\n * the cells beside it. It states no colour of its own, so a selected record's\n * name turns with the row and a disabled one dims with it.\n */\n@Directive({\n selector: 'th[slTableRowHeader]',\n standalone: true,\n exportAs: 'slTableRowHeader',\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n ],\n host: { 'data-part': 'row-header', '[attr.scope]': \"scope() ?? 'row'\" },\n})\nexport class SlTableRowHeader {\n readonly scope = input<string | undefined>(undefined);\n}\n\n@Directive({\n selector: 'td[slTableCell]',\n standalone: true,\n exportAs: 'slTableCell',\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n ],\n host: { 'data-part': 'cell' },\n})\nexport class SlTableCell {}\n\n/**\n * The column's name wrapped in a button, which is what the APG's own sortable\n * example does. The cycle is ascending, descending, then none.\n *\n * The consumer's own listener runs as well: this is a listener on the host, so\n * both fire and a consumer who calls `preventDefault()` keeps the sort still.\n */\n@Component({\n selector: 'button[slTableSort]',\n standalone: true,\n exportAs: 'slTableSort',\n imports: [SlGlyph, SlIcon],\n /* The direction mark follows the name: one chevron the stylesheet turns over\n for ascending and shows, muted, under the pointer on an unsorted column. */\n template: `<ng-content /><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-part': 'sort',\n type: 'button',\n '(click)': 'press($event)',\n },\n})\nexport class SlTableSort {\n /** Overrides the column the header states, where a header holds two. */\n readonly column = input<string | undefined>(undefined);\n\n private readonly table = inject(SlTable);\n private readonly header = inject(SlTableColumnHeader, { optional: true });\n\n press(event: Event) {\n if (event.defaultPrevented) return;\n const key = this.column() ?? this.header?.column();\n if (key === undefined) return;\n this.table.requestSort(key, event);\n }\n}\n\n/**\n * The slot beside a column's name for the controls it carries: a filter\n * trigger, a column menu, a help hint. The family holds the place and the\n * geometry; what a filter means is the consumer's query.\n */\n@Directive({\n selector: 'span[slTableColumnActions]',\n standalone: true,\n exportAs: 'slTableColumnActions',\n host: { 'data-part': 'column-actions' },\n})\nexport class SlTableColumnActions {}\n\n/**\n * A row's own checkbox, in the cell the family lays out. The control is\n * `checkbox`'s: the cell is this family's and the chooser is not, which is the\n * division `list-item` recorded. Its name is a visually hidden label rather\n * than an `aria-label` on the wrapper, because the wrapper is not the control.\n *\n * `Shift` while pressing selects every row from the anchor to this one.\n */\n@Component({\n selector: 'td[slTableSelect]',\n standalone: true,\n exportAs: 'slTableSelect',\n imports: [SlCheckbox],\n template: `<span\n slCheckbox\n [checked]=\"checked()\"\n [disabled]=\"row.disabled()\"\n (click)=\"press($event)\"\n >\n <span data-ui=\"visually-hidden\" data-part=\"root\">{{ name() }}</span>\n </span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n ],\n host: { 'data-part': 'selection' },\n})\nexport class SlTableSelect {\n /** The row this checkbox chooses. Read from the row when it is not stated. */\n readonly value = input<string | undefined>(undefined);\n\n readonly table = inject(SlTable);\n readonly row = inject(SlTableRow);\n\n readonly key = computed(() => this.value() ?? this.row.value());\n readonly checked = computed(() => {\n const key = this.key();\n return key !== undefined && this.table.isSelected(key);\n });\n readonly name = computed(() => {\n const key = this.key();\n return this.table.t('selectRow', { row: key ?? '' }).trim();\n });\n\n press(event: MouseEvent) {\n const key = this.key();\n if (key === undefined || this.row.disabled()) return;\n this.table.toggleSelected(key, { range: event.shiftKey, source: event });\n }\n}\n\n/**\n * The header's checkbox. It covers the rows in the DOM, is indeterminate while\n * some of them are selected, and states the count it covers in its own name — a\n * selection over a whole result set is a decision only the consumer's query can\n * make.\n */\n@Component({\n selector: 'th[slTableSelectAll]',\n standalone: true,\n exportAs: 'slTableSelectAll',\n imports: [SlCheckbox],\n template: `<span\n slCheckbox\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n (click)=\"press($event)\"\n >\n <span data-ui=\"visually-hidden\" data-part=\"root\">{{ name() }}</span>\n </span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: SlTableCellAxes,\n inputs: ['align', 'blockAlign', 'numeric', 'text', 'sticky', 'stickyOffset'],\n },\n ],\n host: { 'data-part': 'selection', scope: 'col' },\n})\nexport class SlTableSelectAll {\n readonly table = inject(SlTable);\n\n readonly checked = computed(() => {\n const chosen = this.table.value().length;\n return chosen > 0 && chosen === this.table.rows().length;\n });\n\n readonly indeterminate = computed(() => {\n const chosen = this.table.value().length;\n return chosen > 0 && chosen < this.table.rows().length;\n });\n\n readonly name = computed(() => {\n return this.table.t('selectAll', { count: this.table.value().length });\n });\n\n press(event: MouseEvent) {\n this.table.toggleSelectAll(event);\n }\n}\n\n/**\n * The Disclosure pattern, borrowed whole: a `button` carrying `aria-expanded`\n * and naming the row it opens.\n */\n@Component({\n selector: 'button[slTableExpander]',\n standalone: true,\n exportAs: 'slTableExpander',\n imports: [SlGlyph, SlIcon],\n /* The chevron is drawn unless the consumer wrote content of their own. */\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"chevron-right\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-part': 'expander',\n type: 'button',\n '[attr.aria-expanded]': 'row.expanded()',\n '[attr.aria-controls]': 'row.expanded() ? row.detailId() : null',\n '[attr.aria-label]': 'name()',\n '(click)': 'press($event)',\n },\n})\nexport class SlTableExpander {\n readonly value = input<string | undefined>(undefined);\n\n readonly table = inject(SlTable);\n readonly row = inject(SlTableRow);\n\n readonly name = computed(() => {\n return this.row.expanded() ? this.table.t('collapse') : this.table.t('expand');\n });\n\n press(event: Event) {\n if (event.defaultPrevented) return;\n const key = this.value() ?? this.row.value();\n if (key === undefined) return;\n this.table.toggleExpanded(key, event);\n }\n}\n\n/**\n * One row holding one cell that spans the table.\n *\n * **The consumer writes the `@if`.** Angular's own control flow is what keeps a\n * closed detail out of the DOM entirely, and a component whose host is the `tr`\n * cannot remove that `tr` from inside itself — an empty row is a row a screen\n * reader still counts. React returns `null` from the component instead, and the\n * two reach the same DOM; the asymmetry is the frameworks', not the family's.\n */\n@Component({\n selector: 'tr[slTableDetail]',\n standalone: true,\n exportAs: 'slTableDetail',\n template: `<td [attr.colspan]=\"span()\" data-part=\"cell\"><ng-content /></td>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'detail', '[attr.id]': 'detailId()' },\n})\nexport class SlTableDetail {\n /** The row the detail belongs to. */\n readonly value = input.required<string>();\n /** How many columns the detail spans. Defaults to the table's own count. */\n readonly colSpan = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n\n private readonly table = inject(SlTable);\n\n readonly span = computed(() => this.colSpan() ?? this.table.resolvedColumns());\n readonly detailId = computed(() => `${this.table.id}-detail-${this.value()}`);\n}\n\n/** Marks what stands at the end of a group's band: its total or net. */\n@Directive({\n selector: '[slTableGroupRowEnd]',\n standalone: true,\n})\nexport class SlTableGroupRowEnd {}\n\n/**\n * The band that opens a group of rows — a day of a ledger, with its net at the\n * end. One header cell spans every column; `scope=\"rowgroup\"` names the rows\n * of the `tbody` it opens, so a ledger writes one body per group.\n */\n@Component({\n selector: 'tr[slTableGroupRow]',\n standalone: true,\n exportAs: 'slTableGroupRow',\n template: `<th [attr.colspan]=\"span()\" data-part=\"group-header\" scope=\"rowgroup\">\n <div data-part=\"group-content\">\n <span data-part=\"group-start\"><ng-content /></span>\n @if (end()) {\n <span data-part=\"group-end\"><ng-content select=\"[slTableGroupRowEnd]\" /></span>\n }\n </div>\n </th>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'group-row', '[attr.data-sticky]': \"sticky() ? '' : null\" },\n})\nexport class SlTableGroupRow {\n /** How many columns the band spans. Defaults to the table's own count. */\n readonly colSpan = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n /** Holds the band under the header while its rows scroll past. */\n readonly sticky = input(false, { transform: booleanAttribute });\n\n private readonly table = inject(SlTable);\n\n protected readonly end = contentChild(SlTableGroupRowEnd);\n readonly span = computed(() => this.colSpan() ?? this.table.resolvedColumns());\n}\n\n/**\n * What is shown when there is nothing. It takes a `result-state`, whose status\n * axis already separates an empty set from a set a filter emptied. The cell\n * goes in a plain `tr`, not an `slTableRow`: the row is not a record, so it\n * takes no hover, stripe or selection — the row React's `TableEmpty` writes.\n */\n@Directive({\n selector: 'td[slTableEmpty]',\n standalone: true,\n exportAs: 'slTableEmpty',\n host: { 'data-part': 'empty', '[attr.colspan]': 'span()' },\n})\nexport class SlTableEmpty {\n readonly colSpan = input<number | undefined, number | string | undefined>(undefined, {\n transform: (count) => (count === undefined ? undefined : numberAttribute(count)),\n });\n\n private readonly table = inject(SlTable);\n\n readonly span = computed(() => this.colSpan() ?? this.table.resolvedColumns());\n}\n\n/**\n * The skeleton rows of a first load: the table's shape before its content. A\n * refresh over rows already read is the other state and is not this one —\n * `loading` on the table dims the body and moves nothing.\n */\n@Component({\n selector: 'tbody[slTableLoader]',\n standalone: true,\n exportAs: 'slTableLoader',\n imports: [SlSkeleton],\n template: `@for (row of skeleton(); track row) {\n <tr data-part=\"row\">\n @for (cell of cells(); track cell) {\n <td data-part=\"cell\">\n <span slSkeleton loading inlineSize=\"100%\"></span>\n </td>\n }\n </tr>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'loader', 'aria-hidden': 'true' },\n})\nexport class SlTableLoader {\n /** How many skeleton rows a first load draws. */\n readonly skeletonRows = input(5, { transform: numberAttribute });\n\n private readonly table = inject(SlTable);\n\n readonly skeleton = computed(() =>\n Array.from({ length: this.skeletonRows() }, (_row, index) => index),\n );\n readonly cells = computed(() =>\n Array.from({ length: this.table.resolvedColumns() }, (_cell, index) => index),\n );\n}\n\n/** Every part of the family, for a template that imports the set at once. */\nexport const SL_TABLE_PARTS = [\n SlTableBody,\n SlTableCaption,\n SlTableCell,\n SlTableColumnActions,\n SlTableColumnHeader,\n SlTableDetail,\n SlTableEmpty,\n SlTableExpander,\n SlTableFooter,\n SlTableGroupRow,\n SlTableGroupRowEnd,\n SlTableHead,\n SlTableLoader,\n SlTableRow,\n SlTableRowHeader,\n SlTableSelect,\n SlTableSelectAll,\n SlTableSort,\n SlTableSummary,\n] as const;\n","import { createFilter } from '@slotted/core/collection';\nimport {\n isPlainDate,\n isPlainDateTime,\n isPlainTime,\n parseISODate,\n parseISODateTime,\n parseISOTime,\n toISODate,\n toISOTime,\n} from '@slotted/core/date';\nimport type { PlainDate, PlainDateTime, PlainTime, TimeGranularity } from '@slotted/core/date';\nimport {\n defaultOperator as kindDefaultOperator,\n describeFilter,\n emptyFilter,\n isConditionActive,\n isFilterActive,\n normalizeFilter,\n operandCount,\n operatorsFor,\n serializeFilter,\n withCondition,\n withJoin,\n} from '@slotted/core/filter';\nimport type {\n BooleanFilter,\n DateFilter,\n DateTimeFilter,\n FilterCondition,\n FilterDescriptor,\n FilterJoin,\n FilterKind,\n FilterOperator,\n NumberFilter,\n SetFilter,\n TextFilter,\n TimeFilter,\n} from '@slotted/core/filter';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport { SlDatePicker } from '@slotted/angular/date-picker';\nimport { SlDateRangePicker, SlDateRangePickerPresets } from '@slotted/angular/date-range-picker';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport {\n SlDateTimeRangePicker,\n SlDateTimeRangePickerPresets,\n} from '@slotted/angular/datetime-range-picker';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport {\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { SlRadio, SlRadioGroup } from '@slotted/angular/radio-group';\nimport { SlSelect, SlSelectItem } from '@slotted/angular/select';\nimport { SlTagsInput } from '@slotted/angular/tags-input';\nimport { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';\nimport { SlTimePicker } from '@slotted/angular/time-picker';\nimport { SlTimeRangePicker, SlTimeRangePickerPresets } from '@slotted/angular/time-range-picker';\n\nimport { SlTable } from './table';\nimport { SlTableColumnHeader } from './table-parts';\n\n/** One value a column can be filtered to. */\nexport interface TableFilterOption {\n /** The value the consumer's query matches. It is what the state holds. */\n value: string;\n /** What the reader sees, when it is not the value itself. */\n label?: string;\n /**\n * How many records carry it. Optional and the consumer's own: how many rows a\n * value has is a fact about the query, not about the column.\n */\n count?: number;\n}\n\nexport type TableFilterReason = 'pointer' | 'keyboard' | 'clear' | 'programmatic';\n\ntype Condition = FilterCondition<string, unknown>;\n\n/** What the operand template is handed, once per condition. */\nexport interface TableFilterOperandContext {\n /** Applies the draft, which is what `Enter` in the family's own field does. */\n apply: () => void;\n condition: Condition;\n /** The name the family would have given each field. */\n label: (slot: 0 | 1) => string;\n /** Writes one operand back into the draft. */\n set: (slot: 0 | 1, value: unknown) => void;\n /**\n * Writes both operands of a range at once, for a control that holds both.\n * Two calls to `set` from one event would each read the draft the other did\n * not write.\n */\n setBoth: (value: unknown, end: unknown) => void;\n /** Which operands this operator takes: none, the first, or both. */\n slots: readonly (0 | 1)[];\n}\n\n/**\n * Everything the five filters share: the draft, the conditions, the join, the\n * announcements and the request that carries a reason. What each of them adds\n * is its kind, its own typed `value`, and the control inside `filter-operand`.\n *\n * The panel edits a **draft**. Nothing reaches the consumer until Apply, and\n * Escape or a press outside restores the descriptor the panel opened with. The\n * family applies nothing: it reports the descriptor, and\n * `createFilterPredicate` in `@slotted/core/filter` is what a consumer applies\n * to its own rows.\n */\n@Directive()\nexport abstract class SlTableFilterBase {\n /** Which vocabulary this column's conditions are written in. */\n abstract readonly kind: FilterKind;\n /** The committed descriptor, read from the component's own typed model. */\n protected abstract readValue(): FilterDescriptor | null;\n /** Writes it back into that model. */\n protected abstract writeValue(next: FilterDescriptor | null): void;\n\n /**\n * The operators this column offers, narrowing the kind's own list. Declared\n * once here rather than per component: the narrow operator type is the one\n * thing a shared base cannot keep, and the value — which is what a consumer\n * reads — stays exact on each of the five.\n */\n readonly operators = input<readonly string[] | undefined>(undefined);\n /** Which one the panel opens on. The kind's own default unless stated. */\n readonly defaultOperator = input<string | undefined>(undefined);\n /**\n * How many conditions the panel offers, which is AG Grid's\n * `maxNumConditions`. The second appears once the first is complete.\n */\n readonly conditions = input(2, { transform: numberAttribute });\n /**\n * The column's name in the trigger's own name. Read from the column header\n * around it when it is not stated.\n */\n readonly columnLabel = input<string | undefined>(undefined);\n /**\n * The trigger's whole accessible name, replacing the one the catalog writes.\n * It is the trigger's `aria-label`, which no other input reaches.\n */\n readonly label = input<string | undefined>(undefined);\n /**\n * Whether the panel is drawn at the end of the document. On by default, and\n * that is not a preference: a framed table clips its own overflow, so an\n * unportalled panel is cut off at the frame's edge — read on the Angular\n * reference page, where the join and both actions were simply not there. The\n * React binding takes `popover`'s own default, which is the same answer.\n */\n readonly portal = input(true, { transform: booleanAttribute });\n\n /** The request behind every committed change, with the reason it carries. */\n readonly valueChangeRequest = output<ChangeRequest<FilterDescriptor | null>>();\n\n readonly table = inject(SlTable);\n private readonly header = inject(SlTableColumnHeader, { optional: true });\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly open = model(false);\n readonly draft = signal<FilterDescriptor>(emptyFilter('text'));\n\n /** The table's words, which the panel speaks in. */\n readonly t = this.table.t;\n\n protected readonly start = computed(\n () => this.defaultOperator() ?? (kindDefaultOperator(this.kind) as string),\n );\n\n readonly offered = computed(\n () => this.operators() ?? (operatorsFor(this.kind) as readonly string[]),\n );\n\n private readonly format = {\n join: (join: FilterJoin) => this.t(`filterJoins.${join}`),\n operator: (operator: FilterOperator) => this.t(`filterOperators.${operator}`),\n };\n\n operatorName(operator: string) {\n return this.format.operator(operator as FilterOperator);\n }\n\n /** Every operator as a labelled option, so the closed chooser names its own. */\n readonly operatorItems = computed(() =>\n this.offered().map((operator) => ({ label: this.operatorName(operator), value: operator })),\n );\n\n joinName(join: FilterJoin) {\n return this.format.join(join);\n }\n\n readonly filtered = computed(() => isFilterActive(this.readValue()));\n\n readonly name = computed(() => {\n const stated = this.label();\n if (stated !== undefined) return stated;\n const column = this.columnName();\n const committed = this.readValue();\n return isFilterActive(committed)\n ? this.t('filterApplied', { column, filter: describeFilter(committed, this.format) })\n : this.t('filterColumn', { column }).trim();\n });\n\n /** One condition, or the two the panel can hold. */\n readonly rows = computed<readonly Condition[]>(() => {\n const draft = this.draft();\n const first = draft.conditions[0] ?? { operator: this.start() };\n /* AG Grid's own reveal: the second appears once the first is complete. A\n button would be one more word to translate before the common case, and an\n empty second row is noise in every panel that never needs it. */\n if (this.allowed() < 2 || !isConditionActive(this.kind, first)) return [first];\n return [first, draft.conditions[1] ?? { operator: this.start() }];\n });\n\n protected allowed() {\n return this.conditions();\n }\n\n readonly hasSecond = computed(() => this.rows().length === 2);\n\n /**\n * Whether the operand template draws one control for both ends of a range,\n * written as `data-range` on `filter-operand` so the two-column operand grid\n * collapses to one. The date, time and date-time filters say yes.\n */\n protected rangeOperand(): boolean {\n return false;\n }\n\n /** Which of a kind's operands is drawn, written as `data-operand`. */\n operandName(): string | null {\n return null;\n }\n\n /** `data-range`, for the condition whose operator takes two operands. */\n rangeMark(condition: Condition): '' | null {\n return this.rangeOperand() && this.slotsOf(condition).length === 2 ? '' : null;\n }\n\n slotsOf(condition: Condition): readonly (0 | 1)[] {\n const operands = operandCount(condition.operator as FilterOperator);\n return operands === 0 ? [] : operands === 1 ? [0] : [0, 1];\n }\n\n operandLabel(condition: Condition, slot: 0 | 1) {\n if (operandCount(condition.operator as FilterOperator) < 2) return this.t('filterValue');\n return slot === 0 ? this.t('filterFrom') : this.t('filterTo');\n }\n\n context(index: number): TableFilterOperandContext {\n const condition = this.rows()[index] ?? { operator: this.start() };\n return {\n apply: () => this.applyDraft(null, 'keyboard'),\n condition,\n label: (slot) => this.operandLabel(condition, slot),\n set: (slot, value) => this.setOperand(index, slot, value),\n setBoth: (value, end) => this.setOperands(index, value, end),\n slots: this.slotsOf(condition),\n };\n }\n\n announce(message: string) {\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message);\n }\n\n /**\n * Opens and closes, and resets the draft either way: the draft starts from\n * what is committed every time the panel opens, and closing puts it back —\n * closing is cancelling, and Apply closes the panel itself after committing.\n */\n toggle(next: boolean) {\n this.open.set(next);\n this.draft.set(this.readValue() ?? this.blank());\n }\n\n protected blank(): FilterDescriptor {\n return emptyFilter(this.kind, this.start() as never) as FilterDescriptor;\n }\n\n setOperator(index: number, operator: string) {\n const condition = this.rows()[index] ?? { operator: this.start() };\n const before = operandCount(condition.operator as FilterOperator);\n const after = operandCount(operator as FilterOperator);\n\n /* An operand the new operator still takes survives the change: a reader who\n typed a value and then chose a different comparison meant to keep it. */\n const next: Condition = {\n operator,\n ...(after >= 1 && before >= 1 ? { value: condition.value } : {}),\n ...(after === 2 && before === 2 ? { end: condition.end } : {}),\n };\n\n this.draft.set(withCondition(this.draft(), index, next as never));\n /* The panel grows a field or loses two. Announced, because a form that\n changes shape under a reader who cannot see it says nothing otherwise. */\n if (after !== before) {\n this.announce(\n this.t('filterOperands', { operator: this.operatorName(operator), count: after }),\n );\n }\n }\n\n setOperand(index: number, slot: 0 | 1, operand: unknown) {\n const condition = this.rows()[index] ?? { operator: this.start() };\n const wasActive = isConditionActive(this.kind, condition);\n const next: Condition =\n slot === 0 ? { ...condition, value: operand } : { ...condition, end: operand };\n\n this.draft.set(withCondition(this.draft(), index, next as never));\n if (index === 0 && this.allowed() >= 2 && !wasActive && isConditionActive(this.kind, next)) {\n this.announce(this.t('filterConditionAdded'));\n }\n }\n\n setOperands(index: number, value: unknown, end: unknown) {\n const condition = this.rows()[index] ?? { operator: this.start() };\n const wasActive = isConditionActive(this.kind, condition);\n const next: Condition = { ...condition, value, end };\n\n this.draft.set(withCondition(this.draft(), index, next as never));\n if (index === 0 && this.allowed() >= 2 && !wasActive && isConditionActive(this.kind, next)) {\n this.announce(this.t('filterConditionAdded'));\n }\n }\n\n setJoin(join: string) {\n this.draft.set(withJoin(this.draft(), join as FilterJoin));\n }\n\n /**\n * Named for what it does rather than `apply`, which reads as\n * `Function.prototype.apply` to a linter and to the next reader after it.\n */\n applyDraft(source: unknown, reason: TableFilterReason = 'pointer') {\n const next = normalizeFilter(this.draft());\n this.request(next, reason, source);\n const column = this.columnName();\n this.announce(\n next\n ? this.t('filterApplied', { column, filter: describeFilter(next, this.format) })\n : this.t('filterCleared', { column }),\n );\n this.open.set(false);\n }\n\n clear(source: unknown) {\n this.draft.set(this.blank());\n this.announce(this.t('filterCleared', { column: this.columnName() }));\n this.request(null, 'clear', source);\n this.open.set(false);\n }\n\n readonly canClear = computed(() => isFilterActive(this.draft()));\n\n private columnName() {\n return this.columnLabel() ?? this.header?.column() ?? '';\n }\n\n private request(next: FilterDescriptor | null, reason: TableFilterReason, source: unknown) {\n const state = createControllable<FilterDescriptor | null>({\n initial: this.readValue(),\n /* Two descriptors are the same filter when they serialise the same. */\n equals: (a, b) => serializeFilter(a) === serializeFilter(b),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.writeValue(next);\n }\n}\n\n/**\n * The panel every kind shares, drawn around an operand its owner projects.\n *\n * The operand is an `ng-template` rather than projected content, because it is\n * rendered once per condition: content would be built once and then belong to\n * whichever condition asked for it first.\n */\n@Component({\n selector: 'span[slTableFilterShell]',\n standalone: true,\n exportAs: 'slTableFilterShell',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlRadio,\n SlRadioGroup,\n SlSelect,\n SlSelectItem,\n ],\n template: `<ng-container\n slPopover\n [portal]=\"owner().portal()\"\n [open]=\"owner().open()\"\n (openChange)=\"owner().toggle($event)\"\n >\n <button\n slPopoverTrigger\n type=\"button\"\n data-part=\"filter\"\n [attr.data-filtered]=\"owner().filtered() ? '' : null\"\n [attr.aria-label]=\"owner().name()\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M22 3H2l8 9.46V19l4 2v-8.54L22 3z\" />\n </svg>\n </button>\n\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"owner().name()\">\n <!-- The parts are on this family's own element rather than on the\n popover's: slPopoverContent names its own identity, and a second\n data-ui on the same element is one of them lost — the surface, the\n radius and the shadow all came off the panel. -->\n <div data-ui=\"table\" data-part=\"filter-panel\" [attr.data-kind]=\"owner().kind\">\n @for (row of owner().rows(); track $index) {\n @if ($index === 1) {\n <div data-part=\"filter-join\">\n <span data-label>{{ owner().t('filterJoin') }}</span>\n <div\n slRadioGroup\n orientation=\"horizontal\"\n size=\"sm\"\n [attr.aria-label]=\"owner().t('filterJoin')\"\n [value]=\"owner().draft().join\"\n (valueChange)=\"owner().setJoin($event.value ?? 'and')\"\n >\n <div slRadio value=\"and\">{{ owner().joinName('and') }}</div>\n <div slRadio value=\"or\">{{ owner().joinName('or') }}</div>\n </div>\n </div>\n }\n\n <div data-part=\"filter-condition\" [attr.data-operands]=\"owner().slotsOf(row).length\">\n <div data-part=\"filter-operator\">\n <!-- items names every operator for the closed control: without\n it the trigger falls back to the value itself and a reader\n sees the raw between the engine speaks. -->\n <sl-select\n size=\"sm\"\n [fullWidth]=\"true\"\n [items]=\"owner().operatorItems()\"\n [attr.aria-label]=\"owner().t('filterOperator')\"\n [value]=\"row.operator\"\n (valueChange)=\"owner().setOperator($index, $any($event))\"\n >\n @for (operator of owner().offered(); track operator) {\n <sl-select-item [value]=\"operator\">\n {{ owner().operatorName(operator) }}\n </sl-select-item>\n }\n </sl-select>\n </div>\n\n @if (owner().slotsOf(row).length > 0) {\n <div\n data-part=\"filter-operand\"\n [attr.data-kind]=\"owner().kind\"\n [attr.data-operand]=\"owner().operandName()\"\n [attr.data-range]=\"owner().rangeMark(row)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"operand()\"\n [ngTemplateOutletContext]=\"{ $implicit: owner().context($index) }\"\n />\n </div>\n }\n </div>\n }\n\n <div data-part=\"filter-actions\">\n <button\n slButton\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n [disabled]=\"!owner().canClear()\"\n (click)=\"owner().clear($event)\"\n >\n {{ owner().t('filterClear') }}\n </button>\n <button slButton type=\"button\" size=\"sm\" (click)=\"owner().applyDraft($event)\">\n {{ owner().t('filterApply') }}\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableFilterShell {\n /** The filter this shell draws for. */\n readonly owner = input.required<SlTableFilterBase>({ alias: 'slTableFilterShell' });\n /** The control inside `filter-operand`, rendered once per condition. */\n readonly operand = input.required<TemplateRef<{ $implicit: TableFilterOperandContext }>>();\n}\n\n/** A column of words. Its comparisons are the collator's, never a fold. */\n@Component({\n selector: 'span[slTableTextFilter]',\n exportAs: 'slTableTextFilter',\n imports: [SlTableFilterShell, SlTextField, SlTextFieldInput],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @for (slot of context.slots; track slot) {\n <div slTextField size=\"sm\">\n <input\n slTextFieldInput\n [value]=\"$any(slot === 0 ? context.condition.value : context.condition.end) ?? ''\"\n [attr.aria-label]=\"context.label(slot)\"\n [attr.placeholder]=\"context.label(slot)\"\n (input)=\"context.set(slot, $any($event.target).value)\"\n (keydown.enter)=\"context.apply()\"\n />\n </div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableTextFilter extends SlTableFilterBase {\n override readonly kind = 'text' as const;\n /** The filter the column holds. Two-way, so a template binds it. */\n readonly value = model<TextFilter | null>(null);\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as TextFilter | null);\n }\n}\n\n/** A column of quantities. The operand parses in the reader's own locale. */\n@Component({\n selector: 'span[slTableNumberFilter]',\n exportAs: 'slTableNumberFilter',\n imports: [SlTableFilterShell, SlNumberField, SlNumberFieldInput],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @for (slot of context.slots; track slot) {\n <div slNumberField size=\"sm\">\n <input\n slNumberFieldInput\n [value]=\"$any(slot === 0 ? context.condition.value : context.condition.end) ?? null\"\n [locale]=\"locale()\"\n [attr.aria-label]=\"context.label(slot)\"\n [attr.placeholder]=\"context.label(slot)\"\n (valueChange)=\"context.set(slot, $event.value)\"\n (keydown.enter)=\"context.apply()\"\n />\n </div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableNumberFilter extends SlTableFilterBase {\n override readonly kind = 'number' as const;\n readonly value = model<NumberFilter | null>(null);\n /** BCP 47, for the operand's own parsing. Defaults to the runtime's. */\n readonly locale = input<string | undefined>(undefined);\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as NumberFilter | null);\n }\n}\n\n/**\n * A column of days. The operand is the whole date picker — the segmented field\n * and the calendar behind it — rather than the field alone: every surveyed\n * implementation that filters a date column offers a grid to point at, and a\n * reader who has to type a date they could have pointed at is the one thing a\n * date filter exists to spare them. The calendar opens a layer inside the\n * panel's layer, which `dismissable-layer` already stacks for the operator\n * chooser beside it.\n *\n * `between` is one `date-range-picker` rather than two pickers: it says the\n * run's length while it is drawn, takes the ends in either order and carries\n * the application's own presets. The descriptor holds the ISO days the\n * pickers produce, never a `Date`, and is the same object either way.\n */\n@Component({\n selector: 'span[slTableDateFilter]',\n exportAs: 'slTableDateFilter',\n imports: [\n NgTemplateOutlet,\n SlTableFilterShell,\n SlDatePicker,\n SlDateRangePicker,\n SlDateRangePickerPresets,\n ],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @if (context.slots.length === 2) {\n <div\n slDateRangePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [messages]=\"{ start: context.label(0), end: context.label(1) }\"\n [value]=\"range(context.condition)\"\n (valueChange)=\"context.setBoth(iso($event.value?.start), iso($event.value?.end))\"\n (keydown.enter)=\"context.apply()\"\n >\n @if (presets(); as presetsTemplate) {\n <div slDateRangePickerPresets>\n <ng-container [ngTemplateOutlet]=\"presetsTemplate\" />\n </div>\n }\n </div>\n } @else {\n <div\n slDatePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [value]=\"day(context.condition.value)\"\n [attr.aria-label]=\"context.label(0)\"\n (valueChange)=\"context.set(0, iso($event.value))\"\n (keydown.enter)=\"context.apply()\"\n ></div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableDateFilter extends SlTableFilterBase {\n override readonly kind = 'date' as const;\n readonly value = model<DateFilter | null>(null);\n /** BCP 47. Decides the operand's field order and separators. */\n readonly locale = input<string | undefined>(undefined);\n /**\n * The application's own ranges — this week, this month — as\n * `slDateRangePickerPreset` buttons in a template, offered inside the range\n * picker `between` draws. The descriptor still receives two ISO days.\n */\n readonly presets = input<TemplateRef<unknown> | undefined>(undefined);\n\n protected override rangeOperand() {\n return true;\n }\n\n /** The descriptor's ISO day as the field's own value, and back. */\n day(value: unknown): PlainDate | null {\n return value ? parseISODate(String(value)) : null;\n }\n\n iso(value: unknown) {\n return isPlainDate(value) ? toISODate(value) : null;\n }\n\n range(condition: Condition): { start: PlainDate | null; end: PlainDate | null } {\n return { start: this.day(condition.value), end: this.day(condition.end) };\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as DateFilter | null);\n }\n}\n\n/** `HH` and `HH:MM` are prefixes the engine accepts and the field cannot read. */\nfunction timeOf(text: unknown): PlainTime | null {\n if (!text) return null;\n const written = String(text);\n return parseISOTime(/^\\d{2}$/.test(written) ? `${written}:00` : written);\n}\n\n/** A day, or a day and an hour, padded to the `T…:MM` the field reads. */\nfunction dateTimeOf(text: unknown): PlainDateTime | null {\n if (!text) return null;\n const written = String(text);\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(written)) return parseISODateTime(`${written}T00:00`);\n if (/^\\d{4}-\\d{2}-\\d{2}T\\d{2}$/.test(written)) return parseISODateTime(`${written}:00`);\n return parseISODateTime(written);\n}\n\n/**\n * A column of times of day. The operand is `time-picker` — the segmented field\n * and the list behind it — at the column's own granularity, which decides the\n * precision the descriptor is written at and the engine compares at: a picker\n * writing minutes produces `09:14`, and `is 09:14` then matches every second\n * of that minute.\n *\n * `between` is one `time-range-picker` rather than two pickers: it says the\n * run's length while it is drawn, its end list refuses the times before the\n * start, and it carries the application's presets. The descriptor is\n * unchanged. A pair whose start is later than its end is the overnight window\n * to the engine and `order` to the picker; the pair reaches the descriptor\n * either way, and the picker's `wrap`, pending in `docs/process/build-order.md`, is\n * what lifts the mark. No `(keydown.enter)` on the range picker: its frame\n * is a button, and `Enter` on it opens the picker.\n */\n@Component({\n selector: 'span[slTableTimeFilter]',\n exportAs: 'slTableTimeFilter',\n imports: [\n NgTemplateOutlet,\n SlTableFilterShell,\n SlTimePicker,\n SlTimeRangePicker,\n SlTimeRangePickerPresets,\n ],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @if (context.slots.length === 2) {\n <div\n slTimeRangePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [hourCycle]=\"hourCycle()\"\n [granularity]=\"granularity()\"\n [step]=\"step()\"\n [options]=\"options()\"\n [min]=\"timeOf(min())\"\n [max]=\"timeOf(max())\"\n [messages]=\"{ start: context.label(0), end: context.label(1) }\"\n [value]=\"range(context.condition)\"\n (valueChange)=\"context.setBoth(iso($event.value?.start), iso($event.value?.end))\"\n >\n @if (presets(); as presetsTemplate) {\n <div slTimeRangePickerPresets>\n <ng-container [ngTemplateOutlet]=\"presetsTemplate\" />\n </div>\n }\n </div>\n } @else {\n <div\n slTimePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [hourCycle]=\"hourCycle()\"\n [granularity]=\"granularity()\"\n [step]=\"step()\"\n [options]=\"options()\"\n [min]=\"timeOf(min())\"\n [max]=\"timeOf(max())\"\n [value]=\"timeOf(context.condition.value)\"\n [attr.aria-label]=\"context.label(0)\"\n (valueChange)=\"context.set(0, iso($event.value))\"\n (keydown.enter)=\"context.apply()\"\n ></div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableTimeFilter extends SlTableFilterBase {\n override readonly kind = 'time' as const;\n readonly value = model<TimeFilter | null>(null);\n /** BCP 47. Decides the operand's hour cycle and separators. */\n readonly locale = input<string | undefined>(undefined);\n /** Twelve or twenty-four hours, overriding what the locale says. */\n readonly hourCycle = input<12 | 24 | undefined>(undefined);\n /** The last unit the operand writes. Minute unless stated. */\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n /** The list's step, in seconds. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n /** The list's own entries, replacing the step. */\n readonly options = input<readonly PlainTime[] | undefined>(undefined);\n /** The earliest time the operand accepts, as ISO time text. */\n readonly min = input<string | undefined>(undefined);\n /** The latest, as ISO time text. */\n readonly max = input<string | undefined>(undefined);\n /**\n * The application's own windows — the morning shift, the night shift — as\n * `slTimeRangePickerPreset` buttons in a template, offered inside the range\n * picker `between` draws. The descriptor still receives two ISO times.\n */\n readonly presets = input<TemplateRef<unknown> | undefined>(undefined);\n\n protected override rangeOperand() {\n return true;\n }\n\n timeOf(value: unknown): PlainTime | undefined {\n return timeOf(value) ?? undefined;\n }\n\n iso(value: unknown) {\n return isPlainTime(value) ? toISOTime(value, this.granularity() ?? 'minute') : null;\n }\n\n range(condition: Condition): { start: PlainTime | null; end: PlainTime | null } {\n return { start: timeOf(condition.value), end: timeOf(condition.end) };\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as TimeFilter | null);\n }\n}\n\n/**\n * A column of dates with times. The operand is `datetime-picker`, the\n * seven-segment field and the two surfaces behind it. A value with one half\n * missing reaches the draft as no operand at all, so the condition stays\n * inactive until both halves exist — the engine's one rule for a missing\n * operand, and the reason Apply reports nothing for a date without a time.\n *\n * `between` is one `datetime-range-picker`: the run's length said while it is\n * drawn, the dates ordered with each time kept on its end, and the\n * application's presets. No `(keydown.enter)` on it: the frame is a button,\n * and `Enter` on it opens the picker.\n */\n@Component({\n selector: 'span[slTableDateTimeFilter]',\n exportAs: 'slTableDateTimeFilter',\n imports: [\n NgTemplateOutlet,\n SlTableFilterShell,\n SlDateTimePicker,\n SlDateTimeRangePicker,\n SlDateTimeRangePickerPresets,\n ],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n @if (context.slots.length === 2) {\n <div\n slDateTimeRangePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [timeZone]=\"timeZone()\"\n [hourCycle]=\"hourCycle()\"\n [granularity]=\"granularity()\"\n [step]=\"step()\"\n [min]=\"dateTimeOf(min())\"\n [max]=\"dateTimeOf(max())\"\n [messages]=\"{ start: context.label(0), end: context.label(1) }\"\n [value]=\"range(context.condition)\"\n (valueChange)=\"context.setBoth(iso($event.value?.start), iso($event.value?.end))\"\n >\n @if (presets(); as presetsTemplate) {\n <div slDateTimeRangePickerPresets>\n <ng-container [ngTemplateOutlet]=\"presetsTemplate\" />\n </div>\n }\n </div>\n } @else {\n <div\n slDateTimePicker\n size=\"sm\"\n [locale]=\"locale()\"\n [timeZone]=\"timeZone()\"\n [hourCycle]=\"hourCycle()\"\n [granularity]=\"granularity()\"\n [step]=\"step()\"\n [min]=\"dateTimeOf(min())\"\n [max]=\"dateTimeOf(max())\"\n [value]=\"dateTimeOf(context.condition.value)\"\n [attr.aria-label]=\"context.label(0)\"\n (valueChange)=\"context.set(0, iso($event.value))\"\n (keydown.enter)=\"context.apply()\"\n ></div>\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableDateTimeFilter extends SlTableFilterBase {\n override readonly kind = 'datetime' as const;\n readonly value = model<DateTimeFilter | null>(null);\n /** BCP 47. Decides the operand's field order and separators. */\n readonly locale = input<string | undefined>(undefined);\n /** The zone \"now\" is read in. Defaults to the runtime's. */\n readonly timeZone = input<string | undefined>(undefined);\n /** Twelve or twenty-four hours, overriding what the locale says. */\n readonly hourCycle = input<12 | 24 | undefined>(undefined);\n /** The last unit the operand writes. Minute unless stated. */\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n /** The list's step, in seconds. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n /** The earliest date-time the operand accepts, as ISO date-time text. */\n readonly min = input<string | undefined>(undefined);\n /** The latest, as ISO date-time text. */\n readonly max = input<string | undefined>(undefined);\n /**\n * The application's own windows — the last 24 hours, this week — as\n * `slDateTimeRangePickerPreset` buttons in a template, offered inside the\n * range picker `between` draws. The descriptor still receives two ISO\n * date-times.\n */\n readonly presets = input<TemplateRef<unknown> | undefined>(undefined);\n\n protected override rangeOperand() {\n return true;\n }\n\n dateTimeOf(value: unknown): PlainDateTime | undefined {\n return dateTimeOf(value) ?? undefined;\n }\n\n range(condition: Condition): { start: PlainDateTime | null; end: PlainDateTime | null } {\n return { start: dateTimeOf(condition.value), end: dateTimeOf(condition.end) };\n }\n\n iso(value: unknown) {\n return isPlainDateTime(value)\n ? `${toISODate(value.date)}T${toISOTime(value.time, this.granularity() ?? 'minute')}`\n : null;\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as DateTimeFilter | null);\n }\n}\n\n/**\n * A column of yes and no. Three answers rather than two: the third is not being\n * filtered at all, which is what Clear leaves and what an empty draft is.\n */\n@Component({\n selector: 'span[slTableBooleanFilter]',\n exportAs: 'slTableBooleanFilter',\n imports: [SlTableFilterShell, SlRadio, SlRadioGroup],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operand\"></span>\n <ng-template #operand let-context>\n <div\n slRadioGroup\n orientation=\"horizontal\"\n size=\"sm\"\n [attr.aria-label]=\"context.label(0)\"\n [value]=\"answer(context.condition.value)\"\n (valueChange)=\"context.set(0, $event.value === 'true')\"\n >\n <div slRadio value=\"true\">{{ t('true') }}</div>\n <div slRadio value=\"false\">{{ t('false') }}</div>\n </div>\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableBooleanFilter extends SlTableFilterBase {\n override readonly kind = 'boolean' as const;\n readonly value = model<BooleanFilter | null>(null);\n\n answer(value: unknown) {\n return value === undefined || value === null ? '' : String(value);\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as BooleanFilter | null);\n }\n}\n\n/**\n * A column filtered to values the consumer named: the list, its search and the\n * checkbox that covers what the search left.\n *\n * One condition, and the design says why: `anyOf A and anyOf B` is\n * `anyOf (A ∩ B)`, so every pair of set conditions collapses to a single list.\n */\n@Component({\n selector: 'span[slTableSetFilter]',\n exportAs: 'slTableSetFilter',\n imports: [SlTableFilterShell, SlCheckbox, SlTagsInput, SlTextField, SlTextFieldInput],\n template: `<span [slTableFilterShell]=\"this\" [operand]=\"operandTemplate\"></span>\n <!-- The template is not named operand: that is the input that says which\n of the two operands is drawn, and a template variable of the same name\n would shadow it in every binding below. -->\n <ng-template #operandTemplate let-context>\n @if (operand() === 'tags') {\n <!-- The chosen values as chips, for a list too long to tick. With\n options, a typed value outside them is refused and announced by\n tags-input's own validation, and the options are a datalist:\n native completion in every engine, with no second listbox inside\n the panel. Enter with pending text commits a chip, which is\n tags-input's key; Enter on an empty field applies, which is the\n panel's. -->\n <sl-tags-input\n size=\"sm\"\n [fullWidth]=\"true\"\n [attr.aria-label]=\"context.label(0)\"\n [formatLabel]=\"optionLabel\"\n [list]=\"constrained() ? listId : undefined\"\n [validateValue]=\"constrained() ? known : undefined\"\n [invalidValues]=\"constrained() ? 'refuse' : undefined\"\n [value]=\"chosen(context)\"\n (valueChange)=\"context.set(0, $event)\"\n (keydown.enter)=\"applyOnEmpty($event, context)\"\n ></sl-tags-input>\n @if (constrained()) {\n <datalist [id]=\"listId\">\n @for (option of options(); track option.value) {\n <option [value]=\"option.value\">{{ option.label ?? option.value }}</option>\n }\n </datalist>\n }\n } @else {\n @if (searching()) {\n <div data-part=\"filter-search\">\n <div slTextField size=\"sm\" clearable>\n <input\n slTextFieldInput\n [value]=\"query()\"\n [attr.aria-label]=\"t('filterSearch')\"\n [attr.placeholder]=\"t('filterSearch')\"\n (input)=\"search($event)\"\n />\n </div>\n </div>\n }\n\n @if (shown().length === 0) {\n <p data-part=\"filter-empty\">{{ t('filterEmpty') }}</p>\n } @else {\n <div data-part=\"filter-list\">\n <div data-part=\"filter-option\" data-covering>\n <span\n slCheckbox\n [checked]=\"allCovered(context)\"\n [indeterminate]=\"someCovered(context)\"\n (checkedChange)=\"coverAll(context, !allCovered(context))\"\n >\n {{ t('filterSelectAll') }}\n </span>\n <span data-count>{{ shown().length }}</span>\n </div>\n\n @for (option of shown(); track option.value) {\n <div data-part=\"filter-option\">\n <span\n slCheckbox\n [checked]=\"chosen(context).includes(option.value)\"\n (checkedChange)=\"hold(context, option.value, $event.value)\"\n >\n {{ option.label ?? option.value }}\n </span>\n @if (option.count !== undefined) {\n <span data-count>{{ option.count }}</span>\n }\n </div>\n }\n </div>\n }\n }\n </ng-template>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SlTableSetFilter extends SlTableFilterBase {\n override readonly kind = 'set' as const;\n readonly value = model<SetFilter | null>(null);\n /**\n * How the values are chosen. `list` is the search, the covering checkbox and\n * the values; `tags` is `tags-input`, for a list too long to tick — the\n * chosen values are chips, and `options` become a datalist of suggestions\n * and the set a typed value must belong to. The descriptor is the same list\n * either way.\n */\n readonly operand = input<'list' | 'tags'>('list');\n /**\n * The values this column can be filtered to, and optionally their counts.\n * Optional with `tags`, where a column may hold more values than a page\n * knows; without it any typed value is admitted.\n */\n readonly options = input<readonly TableFilterOption[]>([]);\n /**\n * Whether the panel carries a search. Unstated, it appears once there are\n * `searchThreshold` values.\n */\n readonly searchable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /** How many values bring the search with them. Eight unless stated. */\n readonly searchThreshold = input(8, { transform: numberAttribute });\n\n readonly query = signal('');\n readonly listId = `sl-table-filter-options-${Math.random().toString(36).slice(2, 8)}`;\n\n override operandName() {\n return this.operand();\n }\n\n /** Whether a typed value has to be one of the options. */\n readonly constrained = computed(() => this.operand() === 'tags' && this.options().length > 0);\n\n private readonly byValue = computed(\n () => new Map(this.options().map((option) => [option.value, option])),\n );\n\n /** The chip's text for a value, and the judgement on a typed one. */\n readonly optionLabel = (value: string) => this.byValue().get(value)?.label ?? value;\n readonly known = (text: string) => this.byValue().has(text);\n\n applyOnEmpty(event: Event, context: TableFilterOperandContext) {\n const input = event.target as HTMLInputElement | null;\n if (!event.defaultPrevented && input?.value === '') context.apply();\n }\n\n /**\n * The collator `combobox` filters its own options with, rather than a fold\n * that strips combining marks: `normalize('NFD')` is an English answer\n * wearing a Unicode one — it turns `ø` into `ø` and leaves `ß` alone.\n */\n private readonly compare = createFilter({ sensitivity: 'base' });\n\n /** Two set conditions collapse to one list, so the panel offers one. */\n protected override allowed() {\n return 1;\n }\n\n /** What the search left. The covering checkbox answers for exactly this. */\n readonly shown = computed(() => {\n const query = this.query();\n const options = this.options();\n if (query === '') return options;\n return options.filter((option) => this.compare.contains(option.label ?? option.value, query));\n });\n\n readonly searching = computed(\n () => this.searchable() ?? this.options().length >= this.searchThreshold(),\n );\n\n chosen(context: TableFilterOperandContext): readonly string[] {\n return (context.condition.value as readonly string[] | null) ?? [];\n }\n\n private covered(context: TableFilterOperandContext) {\n const chosen = this.chosen(context);\n return this.shown().filter((option) => chosen.includes(option.value)).length;\n }\n\n allCovered(context: TableFilterOperandContext) {\n const covered = this.covered(context);\n return covered > 0 && covered === this.shown().length;\n }\n\n someCovered(context: TableFilterOperandContext) {\n const covered = this.covered(context);\n return covered > 0 && covered < this.shown().length;\n }\n\n search(event: Event) {\n this.query.set((event.target as HTMLInputElement).value);\n /* A list that shortens under a reader who cannot see it says nothing. */\n this.announce(this.t('filterMatches', { count: this.shown().length }));\n }\n\n hold(context: TableFilterOperandContext, value: string, next: boolean) {\n const chosen = this.chosen(context);\n context.set(0, next ? [...chosen, value] : chosen.filter((held) => held !== value));\n }\n\n coverAll(context: TableFilterOperandContext, next: boolean) {\n const visible = this.shown().map((option) => option.value);\n const chosen = this.chosen(context);\n context.set(\n 0,\n next\n ? [...new Set([...chosen, ...visible])]\n : chosen.filter((held) => !visible.includes(held)),\n );\n }\n\n protected override readValue() {\n return this.value();\n }\n\n protected override writeValue(next: FilterDescriptor | null) {\n this.value.set(next as SetFilter | null);\n }\n}\n\nexport type {\n BooleanOperator,\n DateOperator,\n DateTimeOperator,\n NumberOperator,\n SetOperator,\n TextOperator,\n TimeOperator,\n} from '@slotted/core/filter';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["kindDefaultOperator"],"mappings":"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"}