@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +10 -0
  3. package/docs/app-shell.json +1 -1
  4. package/docs/button-group.json +1 -0
  5. package/docs/button-group.md +1 -1
  6. package/docs/button.json +45 -11
  7. package/docs/button.md +10 -6
  8. package/docs/chart.json +7 -0
  9. package/docs/chart.md +1 -0
  10. package/docs/checkbox.json +7 -0
  11. package/docs/checkbox.md +1 -0
  12. package/docs/currency-field.json +32 -1
  13. package/docs/currency-field.md +4 -1
  14. package/docs/dialog.examples.md +20 -0
  15. package/docs/dialog.json +14 -2
  16. package/docs/dialog.md +1 -1
  17. package/docs/event-calendar.json +7 -0
  18. package/docs/event-calendar.md +1 -0
  19. package/docs/guidelines/README.md +27 -0
  20. package/docs/guidelines/async-feedback.md +108 -0
  21. package/docs/guidelines/browsing.md +74 -0
  22. package/docs/guidelines/builders.md +97 -0
  23. package/docs/guidelines/composition.md +129 -0
  24. package/docs/guidelines/conversations.md +59 -0
  25. package/docs/guidelines/errors-and-conflicts.md +71 -0
  26. package/docs/guidelines/forms.md +192 -0
  27. package/docs/guidelines/index.md +121 -0
  28. package/docs/guidelines/layout-alignment.md +95 -0
  29. package/docs/guidelines/ledgers.md +45 -0
  30. package/docs/guidelines/list-pages.md +165 -0
  31. package/docs/guidelines/overviews.md +66 -0
  32. package/docs/guidelines/own-elements.md +115 -0
  33. package/docs/guidelines/reading-permissions.md +55 -0
  34. package/docs/guidelines/record-pages.md +178 -0
  35. package/docs/guidelines/reports.md +123 -0
  36. package/docs/guidelines/shell-composition.md +94 -0
  37. package/docs/guidelines/workspaces.md +46 -0
  38. package/docs/index.md +12 -0
  39. package/docs/list.json +19 -1
  40. package/docs/list.md +3 -1
  41. package/docs/popover.json +1 -1
  42. package/docs/progress-indicator.json +1 -2
  43. package/docs/progress-indicator.md +2 -2
  44. package/docs/segmented-control.json +29 -1
  45. package/docs/segmented-control.md +17 -1
  46. package/docs/skills/build-own-element/SKILL.md +90 -0
  47. package/docs/skills/compose-screen/SKILL.md +76 -0
  48. package/docs/skills/index.md +9 -0
  49. package/docs/skills/review-screen/SKILL.md +70 -0
  50. package/docs/skills/theme-app/SKILL.md +79 -0
  51. package/docs/skills/waiting-states/SKILL.md +139 -0
  52. package/docs/split-button.json +1 -0
  53. package/docs/split-button.md +1 -1
  54. package/docs/stat-card.json +2 -0
  55. package/docs/stat-card.md +1 -1
  56. package/docs/table.examples.md +1 -1
  57. package/docs/table.json +70 -1
  58. package/docs/table.md +10 -1
  59. package/docs/tabs.json +1 -4
  60. package/docs/tabs.md +1 -1
  61. package/docs/toggle-group.json +14 -3
  62. package/docs/toggle-group.md +3 -3
  63. package/docs/toggle.json +12 -3
  64. package/docs/toggle.md +3 -3
  65. package/docs/tokens.md +448 -0
  66. package/docs/tour.json +1 -1
  67. package/fesm2022/slotted-angular-app-shell.mjs +48 -16
  68. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  69. package/fesm2022/slotted-angular-button-group.mjs +4 -4
  70. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  71. package/fesm2022/slotted-angular-button.mjs +51 -19
  72. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  73. package/fesm2022/slotted-angular-cascader.mjs +1 -1
  74. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  75. package/fesm2022/slotted-angular-chart.mjs +41 -20
  76. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  77. package/fesm2022/slotted-angular-checkbox.mjs +11 -2
  78. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  79. package/fesm2022/slotted-angular-column-manager.mjs +1 -1
  80. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  81. package/fesm2022/slotted-angular-combobox.mjs +12 -6
  82. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  83. package/fesm2022/slotted-angular-currency-field.mjs +59 -8
  84. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  85. package/fesm2022/slotted-angular-dashboard-grid.mjs +18 -22
  86. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  87. package/fesm2022/slotted-angular-data-grid.mjs +7 -3
  88. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  89. package/fesm2022/slotted-angular-data-list.mjs +2 -2
  90. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  91. package/fesm2022/slotted-angular-dialog.mjs +4 -4
  92. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  93. package/fesm2022/slotted-angular-drawer.mjs +5 -1
  94. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  95. package/fesm2022/slotted-angular-event-calendar.mjs +18 -8
  96. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  97. package/fesm2022/slotted-angular-filter-bar.mjs +8 -8
  98. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  99. package/fesm2022/slotted-angular-import-export-center.mjs +1 -1
  100. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  101. package/fesm2022/slotted-angular-list.mjs +28 -17
  102. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  103. package/fesm2022/slotted-angular-loading-overlay.mjs +2 -2
  104. package/fesm2022/slotted-angular-markdown.mjs +1 -1
  105. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  106. package/fesm2022/slotted-angular-multi-select.mjs +32 -27
  107. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  108. package/fesm2022/slotted-angular-notification-center.mjs +1 -1
  109. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  110. package/fesm2022/slotted-angular-number-field.mjs +2 -2
  111. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  112. package/fesm2022/slotted-angular-progress-indicator.mjs +6 -6
  113. package/fesm2022/slotted-angular-saved-views.mjs +1 -1
  114. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  115. package/fesm2022/slotted-angular-segmented-control.mjs +25 -5
  116. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  117. package/fesm2022/slotted-angular-select.mjs +1 -25
  118. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  119. package/fesm2022/slotted-angular-split-button.mjs +4 -4
  120. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  121. package/fesm2022/slotted-angular-stat-card.mjs +2 -2
  122. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  123. package/fesm2022/slotted-angular-table.mjs +97 -10
  124. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  125. package/fesm2022/slotted-angular-tabs.mjs +2 -2
  126. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  127. package/fesm2022/slotted-angular-toggle-group.mjs +17 -4
  128. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  129. package/fesm2022/slotted-angular-toggle.mjs +2 -2
  130. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  131. package/fesm2022/slotted-angular-tour.mjs +1 -1
  132. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  133. package/fesm2022/slotted-angular-transfer.mjs +1 -1
  134. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  135. package/fesm2022/slotted-angular-upload.mjs +2 -2
  136. package/fesm2022/slotted-angular-wizard.mjs +1 -1
  137. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  138. package/package.json +3 -3
  139. package/types/slotted-angular-app-shell.d.ts +6 -0
  140. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  141. package/types/slotted-angular-button-group.d.ts +1 -1
  142. package/types/slotted-angular-button.d.ts +33 -13
  143. package/types/slotted-angular-button.d.ts.map +1 -1
  144. package/types/slotted-angular-chart.d.ts +9 -0
  145. package/types/slotted-angular-chart.d.ts.map +1 -1
  146. package/types/slotted-angular-checkbox.d.ts +7 -1
  147. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  148. package/types/slotted-angular-combobox.d.ts.map +1 -1
  149. package/types/slotted-angular-currency-field.d.ts +25 -3
  150. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  151. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  152. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  153. package/types/slotted-angular-drawer.d.ts.map +1 -1
  154. package/types/slotted-angular-event-calendar.d.ts +9 -2
  155. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  156. package/types/slotted-angular-list.d.ts +42 -27
  157. package/types/slotted-angular-list.d.ts.map +1 -1
  158. package/types/slotted-angular-multi-select.d.ts +10 -0
  159. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  160. package/types/slotted-angular-segmented-control.d.ts +15 -2
  161. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  162. package/types/slotted-angular-select.d.ts.map +1 -1
  163. package/types/slotted-angular-split-button.d.ts +2 -2
  164. package/types/slotted-angular-table.d.ts +43 -3
  165. package/types/slotted-angular-table.d.ts.map +1 -1
  166. package/types/slotted-angular-toggle-group.d.ts +8 -2
  167. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  168. package/types/slotted-angular-toggle.d.ts +1 -1
  169. package/types/slotted-angular-toggle.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-data-list.mjs","sources":["../../data-list/src/data-list-defaults.ts","../../data-list/src/data-list-templates.ts","../../data-list/src/data-list.ts","../../data-list/src/slotted-angular-data-list.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport { DEFAULT_DATA_LIST_FIELDS } from '@slotted/core/data-list';\nimport type { GridQuery, GridQueryChange } from '@slotted/core/grid';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nexport type DataListVariant = 'plain' | 'ruled' | 'framed';\nexport type DataListSize = 'sm' | 'md' | 'lg';\nexport type DataListSelectionMode = 'none' | 'single' | 'multiple';\nexport type DataListMode = 'client' | 'server';\n\n/** `string | null` in `single` and `none`, the keys in `multiple`: the union `table` holds. */\nexport type DataListSelection = string | null | readonly string[];\n\nexport type DataListReason = Extract<\n ChangeReason,\n 'pointer' | 'keyboard' | 'select' | 'clear' | 'programmatic'\n>;\n\nexport interface DataListQueryRequest extends ChangeRequest<GridQuery> {\n /** Which part of the query moved, so a consumer refetches on sort and debounces on search. */\n readonly change: GridQueryChange;\n}\n\nexport interface DataListExpandedRequest extends ChangeRequest<readonly string[]> {\n /** The record whose disclosure was pressed. */\n readonly key: string;\n}\n\nexport interface DataListActivateEvent<Row = unknown> {\n readonly key: string;\n readonly row: Row;\n readonly reason: 'pointer' | 'keyboard';\n readonly event: Event;\n}\n\nexport type DataListEmptyStatus = 'empty' | 'no-results' | 'error';\n\nexport interface DataListDefaults {\n variant: DataListVariant;\n size: DataListSize;\n fields: number;\n selectionMode: DataListSelectionMode;\n skeletonRows: number;\n loadingDelay: number;\n loadingMinDuration: number;\n}\n\nconst FALLBACK: DataListDefaults = {\n variant: 'ruled',\n size: 'md',\n fields: DEFAULT_DATA_LIST_FIELDS,\n selectionMode: 'none',\n skeletonRows: 5,\n loadingDelay: 200,\n loadingMinDuration: 400,\n};\n\nexport const DATA_LIST_DEFAULTS = new InjectionToken<DataListDefaults>(\n 'slotted data-list defaults',\n {\n providedIn: 'root',\n factory: () => FALLBACK,\n },\n);\n\n/**\n * An application states the family's defaults once. A list that states its\n * own value still wins. Its words come from the language in force\n * (`provideSlotted`).\n */\nexport function provideDataListDefaults(defaults: Partial<DataListDefaults>) {\n return {\n provide: DATA_LIST_DEFAULTS,\n useFactory: (): DataListDefaults => ({\n ...FALLBACK,\n ...Object.fromEntries(Object.entries(defaults).filter(([, value]) => value !== undefined)),\n }),\n };\n}\n\nexport function injectDataListDefaults(): DataListDefaults {\n return inject(DATA_LIST_DEFAULTS);\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\nimport type { GridColumn } from '@slotted/core/grid';\n\nimport type { DataListEmptyStatus } from './data-list-defaults';\n\n/** What a value template receives: the cell's own context, and where it is drawn. */\nexport interface DataListCellContext<Row = unknown> {\n readonly $implicit: Row;\n readonly row: Row;\n readonly column: GridColumn<Row>;\n readonly key: string;\n readonly value: unknown;\n /** The formatted text; `''` for an absent value. */\n readonly text: string;\n readonly place: 'title' | 'subtitle' | 'trailing' | 'field' | 'actions';\n}\n\n/**\n * Draws a column's value wherever the record shows it: title, subtitle,\n * trailing value, field or actions. A template with no column id serves every\n * column that has none of its own.\n */\n@Directive({ selector: 'ng-template[slDataListCell]', standalone: true })\nexport class SlDataListCellTemplate {\n /** The column id, or empty for every column. */\n readonly slDataListCell = input<string>('');\n readonly template = inject<TemplateRef<DataListCellContext>>(TemplateRef);\n}\n\n/** The picture at the start of a record: an avatar, a thumbnail. */\n@Directive({ selector: 'ng-template[slDataListMedia]', standalone: true })\nexport class SlDataListMediaTemplate {\n readonly template = inject<TemplateRef<{ $implicit: unknown }>>(TemplateRef);\n}\n\n/** Replaces the empty, no-results or error state. */\n@Directive({ selector: 'ng-template[slDataListEmpty]', standalone: true })\nexport class SlDataListEmptyTemplate {\n readonly template = inject<TemplateRef<{ $implicit: DataListEmptyStatus }>>(TemplateRef);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlButton, SlButtonEnd } from '@slotted/angular/button';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport {\n SlList,\n SlListSection,\n SlListSectionLabel,\n SlListSectionList,\n} from '@slotted/angular/list';\nimport {\n SlListItem,\n SlListItemActions,\n SlListItemBody,\n SlListItemContent,\n SlListItemDescription,\n SlListItemEnd,\n SlListItemLabel,\n SlListItemStart,\n} from '@slotted/angular/list-item';\nimport {\n SlMenu,\n SlMenuItem,\n SlMenuRadioGroup,\n SlMenuSeparator,\n SlMenuTrigger,\n} from '@slotted/angular/menu';\nimport {\n SlResultState,\n SlResultStateActions,\n SlResultStateContent,\n SlResultStateTitle,\n} from '@slotted/angular/result-state';\nimport { SlSkeleton, SlSkeletonRegion } from '@slotted/angular/skeleton';\nimport { SlVisuallyHidden } from '@slotted/angular/visually-hidden';\nimport { nextSelection } from '@slotted/core/collection';\nimport {\n dataListFieldText,\n dataListKeys,\n dataListNodes,\n describeDataListSort,\n resolveDataListLayout,\n withDataListSortColumn,\n withDataListSortDirection,\n type DataListNode,\n} from '@slotted/core/data-list';\nimport {\n applyQuery,\n cellValue,\n emptyQuery,\n isQueryActive,\n sameQuery,\n type GridColumn,\n type GridColumnState,\n type GridQuery,\n type GridQueryChange,\n type SortDirection,\n} from '@slotted/core/grid';\nimport { dataListMessages, type DataListMessages, type PartialMessages } from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport {\n injectDataListDefaults,\n type DataListActivateEvent,\n type DataListEmptyStatus,\n type DataListExpandedRequest,\n type DataListMode,\n type DataListQueryRequest,\n type DataListSelection,\n type DataListSelectionMode,\n type DataListSize,\n type DataListVariant,\n} from './data-list-defaults';\nimport {\n SlDataListCellTemplate,\n SlDataListEmptyTemplate,\n SlDataListMediaTemplate,\n type DataListCellContext,\n} from './data-list-templates';\n\n/** The value that stands for \"no sort\" in the column group, a string no column id can be. */\nconst NO_SORT = '\\u0000none';\n\n/** Varied lengths, so a skeleton reads as text rather than as a stack of equal bars. */\nconst BAR_WIDTHS = ['9rem', '7rem', '8rem', '6.5rem', '9.5rem'];\nconst FIELD_WIDTHS = ['3.5rem', '5.5rem', '4rem', '5rem', '4.5rem', '6rem'];\n\nlet instances = 0;\n\n/** A click the keyboard produced has no pointer detail. */\nconst pressReason = (event: Event): 'pointer' | 'keyboard' =>\n (event as MouseEvent).detail === 0 ? 'keyboard' : 'pointer';\n\nfunction asKeys(value: DataListSelection): readonly string[] {\n if (Array.isArray(value)) return value as readonly string[];\n return value === null || value === undefined ? [] : [value as string];\n}\n\nfunction sameKeys(a: readonly string[], b: readonly string[]): boolean {\n return a.length === b.length && a.every((key, index) => key === b[index]);\n}\n\nfunction makeRequest<T>(value: T, previous: T, reason: ChangeReason, source: unknown, extra = {}) {\n let cancelled = false;\n return {\n value,\n previous,\n reason,\n source,\n ...extra,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n}\n\n/** The record with this key, found without `CSS.escape`, which not every document has. */\nfunction recordOf(root: HTMLElement, key: string): Element | null {\n for (const item of root.querySelectorAll('[data-ui=\"list-item\"][data-key]')) {\n if (item.getAttribute('data-key') === key) return item;\n }\n return null;\n}\n\n/** The first control a record holds, where focus lands on that record. */\nfunction firstControl(item: Element | null): HTMLElement | null {\n return (\n item?.querySelector<HTMLElement>(\n 'input:not(:disabled), a[href][data-part=\"title\"], button[data-part=\"title\"]:not(:disabled), button[data-part=\"more\"], [data-part=\"actions\"] :is(a[href], button:not(:disabled))',\n ) ?? null\n );\n}\n\n/**\n * Writes a part name back on an element whose other directive erased it.\n * `slMenuTriggerFor` binds `[attr.data-part]` to `null` on a trigger that is\n * neither a bar's item nor a submenu's, which takes `slButton`'s `root` with\n * it; the binding is constant, so writing it after the first render holds.\n */\n@Directive({ selector: '[slDataListPart]', standalone: true })\nexport class SlDataListPart {\n readonly part = input.required<string>({ alias: 'slDataListPart' });\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n afterNextRender(() => this.host.nativeElement.setAttribute('data-part', this.part()));\n }\n}\n\n/** Marks the consumer's own content for the footer, beside load-more: a pagination. */\n@Directive({ selector: '[slDataListFooter]', standalone: true })\nexport class SlDataListFooter {}\n\ninterface FieldView<Row> {\n readonly column: GridColumn<Row>;\n readonly context: DataListCellContext<Row>;\n readonly template: TemplateRef<DataListCellContext> | null;\n readonly numeric: boolean;\n}\n\ninterface RecordView<Row> {\n readonly key: string;\n readonly row: Row;\n readonly disabled: boolean;\n readonly busy: boolean;\n readonly selected: boolean;\n readonly current: boolean;\n readonly expanded: boolean;\n readonly titleText: string;\n readonly title: FieldView<Row> | null;\n readonly subtitle: FieldView<Row> | null;\n readonly trailing: FieldView<Row> | null;\n readonly actions: readonly FieldView<Row>[];\n readonly fields: readonly FieldView<Row>[];\n readonly hidden: number;\n readonly href: string | undefined;\n readonly fieldsId: string;\n}\n\n/**\n * A small tabular set drawn as a list of records. Each record is a list item:\n * the title, a subtitle, a trailing value, and the fields of highest priority\n * as pairs of a label and a value. The family reads the column model and the\n * query `sl-data-grid` reads, and it has no keyboard of its own: every control\n * is a native one in the page's tab order.\n */\n@Component({\n selector: 'sl-data-list',\n standalone: true,\n exportAs: 'slDataList',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlButtonEnd,\n SlCheckbox,\n SlDataListPart,\n SlGlyph,\n SlIcon,\n SlList,\n SlListItem,\n SlListItemActions,\n SlListItemBody,\n SlListItemContent,\n SlListItemDescription,\n SlListItemEnd,\n SlListItemLabel,\n SlListItemStart,\n SlListSection,\n SlListSectionLabel,\n SlListSectionList,\n SlMenu,\n SlMenuItem,\n SlMenuRadioGroup,\n SlMenuSeparator,\n SlMenuTrigger,\n SlResultState,\n SlResultStateActions,\n SlResultStateContent,\n SlResultStateTitle,\n SlSkeleton,\n SlSkeletonRegion,\n SlVisuallyHidden,\n ],\n styleUrls: [\n '../../../styles/src/data-list/data-list.css',\n '../../../styles/src/list/list.css',\n '../../../styles/src/list-item/list-item.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 host: {\n 'data-ui': 'data-list',\n 'data-part': 'root',\n '[attr.data-variant]': 'variantValue()',\n '[attr.data-size]': 'sizeValue()',\n '[attr.aria-busy]': \"refreshing() ? 'true' : null\",\n '[attr.data-loading]': \"refreshing() ? '' : null\",\n '(focusin)': 'onFocusIn($event)',\n },\n template: `\n <div data-part=\"header\">\n @if (selectionModeValue() === 'multiple' && !showLoader()) {\n <span data-part=\"select-all\">\n <span\n slCheckbox\n [checked]=\"allSelected()\"\n [indeterminate]=\"someSelected() && !allSelected()\"\n [disabled]=\"allKeys().length === 0\"\n [size]=\"sizeValue()\"\n (click)=\"pressAll($event)\"\n ><span slVisuallyHidden>{{ t('selectAll', { count: allKeys().length }) }}</span></span\n >\n </span>\n }\n <output data-part=\"count\" aria-live=\"polite\">{{ showLoader() ? '' : countText() }}</output>\n @if (layout().sortable.length > 0) {\n <span data-part=\"sort\" [attr.data-direction]=\"firstKey()?.direction ?? null\">\n <button\n slButton\n slDataListPart=\"root\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n [disabled]=\"showLoader()\"\n [attr.aria-label]=\"sortName()\"\n [slMenuTriggerFor]=\"sortMenu\"\n >\n {{ sortText()\n }}<span slButtonEnd>\n @if (firstKey()) {\n <span slIcon size=\"sm\"><svg slGlyph name=\"chevron-down\"></svg></span>\n }\n </span>\n </button>\n <sl-menu #sortMenu align=\"end\" [aria-label]=\"t('sort')\">\n <sl-menu-radio-group\n [attr.aria-labelledby]=\"id + '-sort-column'\"\n [value]=\"firstKey()?.column ?? noSort\"\n (valueChangeRequest)=\"chooseColumn($event)\"\n >\n <div data-part=\"group-label\" [id]=\"id + '-sort-column'\">\n {{ t('sortColumn') }}\n </div>\n <button slMenuRadioItem [value]=\"noSort\">{{ t('sortNone') }}</button>\n @for (column of layout().sortable; track column.id) {\n <button slMenuRadioItem [value]=\"column.id\">{{ column.label }}</button>\n }\n </sl-menu-radio-group>\n <hr slMenuSeparator />\n <sl-menu-radio-group\n [attr.aria-labelledby]=\"id + '-sort-direction'\"\n [value]=\"firstKey()?.direction ?? ''\"\n (valueChangeRequest)=\"chooseDirection($event)\"\n >\n <div data-part=\"group-label\" [id]=\"id + '-sort-direction'\">\n {{ t('sortDirection') }}\n </div>\n <button slMenuRadioItem value=\"ascending\" [disabled]=\"!firstKey()\">\n {{ t('ascending') }}\n </button>\n <button slMenuRadioItem value=\"descending\" [disabled]=\"!firstKey()\">\n {{ t('descending') }}\n </button>\n </sl-menu-radio-group>\n </sl-menu>\n </span>\n }\n </div>\n\n @if (errorOverRows()) {\n <ng-container\n [ngTemplateOutlet]=\"emptyState\"\n [ngTemplateOutletContext]=\"{ $implicit: 'error' }\"\n />\n }\n\n @if (showLoader()) {\n <div data-part=\"loader\">\n <div\n slSkeletonRegion\n [loading]=\"firstLoad()\"\n [delay]=\"loadingDelayValue()\"\n [minDuration]=\"loadingMinDurationValue()\"\n [messages]=\"{ label: t('loading') }\"\n (reveal)=\"holding.set(false)\"\n >\n <ul slList aria-hidden=\"true\" inert [variant]=\"variantValue()\" [size]=\"sizeValue()\">\n @for (index of skeletonIndexes(); track index) {\n <li slListItem align=\"start\" [variant]=\"variantValue()\" [size]=\"sizeValue()\">\n <div slListItemContent>\n <div slListItemBody>\n <div slListItemLabel><span slSkeleton [inlineSize]=\"bar(index)\"></span></div>\n @if (layout().subtitle) {\n <div slListItemDescription>\n <span slSkeleton [inlineSize]=\"bar(index + 2)\"></span>\n </div>\n }\n </div>\n @if (layout().trailing) {\n <div slListItemEnd>\n <span slSkeleton [inlineSize]=\"fieldBar(index + 3)\"></span>\n </div>\n }\n @if (layout().shown > 0) {\n <dl data-part=\"fields\">\n @for (column of shownColumns(); track column.id; let field = $index) {\n <div data-part=\"field\">\n <dt data-part=\"field-label\">{{ column.label }}</dt>\n <dd data-part=\"field-value\">\n <span slSkeleton [inlineSize]=\"fieldBar(index + field)\"></span>\n </dd>\n </div>\n }\n </dl>\n }\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n } @else if (emptyStatus(); as status) {\n <ng-container\n [ngTemplateOutlet]=\"emptyState\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n />\n } @else {\n <ul\n slList\n [variant]=\"variantValue()\"\n [size]=\"sizeValue()\"\n [attr.aria-label]=\"labelledBy() ? null : listLabel()\"\n [attr.aria-labelledby]=\"labelledBy() ?? null\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodesTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: nodes() }\"\n />\n </ul>\n }\n\n @if (hasMore() || footers().length > 0) {\n <div data-part=\"footer\">\n @if (hasMore() && !showLoader()) {\n <span data-part=\"load-more\">\n <button\n slButton\n size=\"sm\"\n tone=\"secondary\"\n variant=\"outline\"\n [loading]=\"loadingValue() && loadingMore()\"\n (click)=\"askForMore()\"\n >\n {{ t('loadMore') }}\n </button>\n </span>\n }\n <ng-content select=\"[slDataListFooter]\" />\n </div>\n }\n\n <ng-template #nodesTemplate let-list>\n @for (node of list; track node.key) {\n @if (node.kind === 'row') {\n <ng-container\n [ngTemplateOutlet]=\"recordTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record(node.key, node.row) }\"\n />\n } @else {\n <li slListSection>\n <span slListSectionLabel role=\"heading\" [attr.aria-level]=\"min(node.level + 2, 6)\">{{\n sectionLabel(node)\n }}</span>\n <ul slListSectionList>\n <ng-container\n [ngTemplateOutlet]=\"nodesTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: node.children }\"\n />\n </ul>\n </li>\n }\n }\n </ng-template>\n\n <ng-template #recordTemplate let-view>\n <li\n slListItem\n align=\"start\"\n [attr.data-key]=\"view.key\"\n [attr.data-expanded]=\"view.expanded ? '' : null\"\n [variant]=\"variantValue()\"\n [size]=\"sizeValue()\"\n [selected]=\"view.selected\"\n [current]=\"view.current ? (view.href === undefined ? true : 'page') : false\"\n [disabled]=\"view.disabled\"\n [loading]=\"view.busy\"\n >\n <div slListItemContent>\n @if (selectionModeValue() !== 'none' || mediaTemplate()) {\n <div slListItemStart>\n @if (selectionModeValue() !== 'none') {\n <span data-part=\"selection\">\n <span\n slCheckbox\n [checked]=\"view.selected\"\n [disabled]=\"view.disabled\"\n [size]=\"sizeValue()\"\n (click)=\"pressRecord(view.key, $event)\"\n ><span slVisuallyHidden>{{\n t('selectRow', { title: view.titleText })\n }}</span></span\n >\n </span>\n }\n @if (mediaTemplate(); as media) {\n <span data-part=\"media\">\n <ng-container\n [ngTemplateOutlet]=\"media.template\"\n [ngTemplateOutletContext]=\"{ $implicit: view.row }\"\n />\n </span>\n }\n </div>\n }\n <div slListItemBody>\n <div slListItemLabel>\n @if (view.href !== undefined) {\n <a\n data-part=\"title\"\n [attr.href]=\"view.href\"\n [attr.aria-disabled]=\"view.disabled || view.busy ? 'true' : null\"\n (click)=\"activateLink(view, $event)\"\n ><ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.title }\"\n /></a>\n } @else if (activatable()) {\n <button\n data-part=\"title\"\n type=\"button\"\n [disabled]=\"view.disabled || view.busy\"\n (click)=\"activate(view, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.title }\"\n />\n </button>\n } @else {\n <span data-part=\"title\"\n ><ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.title }\"\n /></span>\n }\n </div>\n @if (view.subtitle) {\n <div slListItemDescription>\n <ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.subtitle }\"\n />\n </div>\n }\n </div>\n @if (view.trailing) {\n <div slListItemEnd>\n <span data-part=\"trailing\"\n ><ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.trailing }\"\n /></span>\n </div>\n }\n @if (view.fields.length > 0) {\n <dl data-part=\"fields\" [id]=\"view.fieldsId\">\n @for (field of view.fields; track field.column.id) {\n <div data-part=\"field\">\n <dt data-part=\"field-label\">{{ field.column.label }}</dt>\n <dd data-part=\"field-value\" [attr.data-numeric]=\"field.numeric ? '' : null\">\n <ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: field }\"\n />\n </dd>\n </div>\n }\n </dl>\n }\n @if (view.hidden > 0) {\n <button\n data-part=\"more\"\n type=\"button\"\n [attr.aria-controls]=\"view.fieldsId\"\n [attr.aria-expanded]=\"view.expanded\"\n (click)=\"toggleExpanded(view.key, $event)\"\n >\n {{ view.expanded ? t('less') : t('more', { count: view.hidden }) }}\n <span slIcon size=\"sm\"><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n }\n </div>\n @if (view.actions.length > 0) {\n <div slListItemActions>\n @for (field of view.actions; track field.column.id) {\n <ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: field }\"\n />\n }\n </div>\n }\n </li>\n </ng-template>\n\n <ng-template #value let-field>\n @if (field) {\n @if (field.template) {\n <ng-container\n [ngTemplateOutlet]=\"field.template\"\n [ngTemplateOutletContext]=\"field.context\"\n />\n } @else if (field.context.text === '' && field.context.place !== 'actions') {\n <span data-part=\"field-empty\"\n ><span aria-hidden=\"true\">—</span><span slVisuallyHidden>{{ t('empty') }}</span></span\n >\n } @else {\n {{ field.context.text }}\n }\n }\n </ng-template>\n\n <ng-template #emptyState let-status>\n <div data-part=\"empty\">\n @if (emptyTemplate(); as custom) {\n <ng-container\n [ngTemplateOutlet]=\"custom.template\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n />\n } @else {\n <section slResultState reach=\"section\" tabindex=\"-1\" [status]=\"status\">\n <div slResultStateContent>\n <div slResultStateTitle>{{ emptyTitle(status) }}</div>\n </div>\n @if (status === 'no-results') {\n <div slResultStateActions>\n <button\n slButton\n size=\"md\"\n tone=\"secondary\"\n variant=\"outline\"\n (click)=\"clearFilters($event)\"\n >\n {{ t('clearFilters') }}\n </button>\n </div>\n } @else if (status === 'error') {\n <div slResultStateActions>\n <button\n slButton\n size=\"md\"\n tone=\"secondary\"\n variant=\"outline\"\n (click)=\"retry.emit()\"\n >\n {{ t('retry') }}\n </button>\n </div>\n }\n </section>\n }\n </div>\n </ng-template>\n `,\n})\nexport class SlDataList<Row = unknown> {\n private readonly defaults = injectDataListDefaults();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected readonly id = `slotted-data-list-${++instances}`;\n protected readonly noSort = NO_SORT;\n protected readonly min = Math.min;\n\n readonly rows = input.required<readonly Row[]>();\n readonly rowKey = input.required<keyof Row | ((row: Row) => string)>();\n readonly columns = input.required<readonly GridColumn<Row>[]>();\n readonly columnState = input<Partial<GridColumnState> | undefined>(undefined);\n readonly title = input<string | undefined>(undefined);\n readonly subtitle = input<string | undefined>(undefined);\n readonly trailing = input<string | undefined>(undefined);\n readonly fields = input<number | undefined>(undefined);\n readonly label = input<string | undefined>(undefined);\n readonly labelledBy = input<string | undefined>(undefined);\n readonly mode = input<DataListMode | undefined>(undefined);\n readonly totalCount = input<number | undefined>(undefined);\n readonly selectionMode = input<DataListSelectionMode | undefined>(undefined);\n readonly disabledKeys = input<readonly string[]>([]);\n readonly loadingKeys = input<readonly string[]>([]);\n /** The record open beside the list. The family never moves it. */\n readonly current = input<string | null | undefined>(undefined);\n readonly href = input<((row: Row) => string) | undefined>(undefined);\n readonly activatable = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /** A message, or `true` for the family's own. Rows already shown stay. */\n readonly error = input<boolean | string | null | undefined>(undefined);\n readonly hasMore = input(false, { transform: booleanAttribute });\n readonly variant = input<DataListVariant | undefined>(undefined);\n readonly size = input<DataListSize | undefined>(undefined);\n /** Words laid over the catalog of the language in force, key by key. */\n readonly messages = input<PartialMessages<DataListMessages> | undefined>(undefined);\n /** Formats the fields and counts; the provider's locale otherwise. */\n readonly locale = input<string | undefined>(undefined);\n readonly skeletonRows = input<number | undefined>(undefined);\n readonly loadingDelay = input<number | undefined>(undefined);\n readonly loadingMinDuration = input<number | undefined>(undefined);\n\n readonly query = model<GridQuery>(emptyQuery());\n readonly value = model<DataListSelection>(null);\n readonly expanded = model<readonly string[]>([]);\n\n readonly queryChangeRequest = output<DataListQueryRequest>();\n readonly valueChangeRequest = output<ChangeRequest<DataListSelection>>();\n readonly expandedChangeRequest = output<DataListExpandedRequest>();\n readonly activate$ = output<DataListActivateEvent<Row>>({ alias: 'activate' });\n readonly loadMore = output<void>();\n readonly retry = output<void>();\n\n protected readonly cellTemplates = contentChildren(SlDataListCellTemplate);\n protected readonly mediaTemplate = computed(() => this.mediaTemplates()[0] ?? null);\n protected readonly emptyTemplate = computed(() => this.emptyTemplates()[0] ?? null);\n private readonly mediaTemplates = contentChildren(SlDataListMediaTemplate);\n private readonly emptyTemplates = contentChildren(SlDataListEmptyTemplate);\n protected readonly footers = contentChildren(SlDataListFooter);\n\n protected readonly holding = signal(false);\n protected readonly loadingMore = signal(false);\n private anchor: string | undefined;\n private focusedKey: string | null = null;\n private previousKeys: readonly string[] = [];\n\n /** The family's words in the language in force, with this list's `messages` laid over them. */\n readonly t = injectMessages(dataListMessages, this.messages);\n private readonly providedLocale = injectLocale();\n protected readonly localeValue = computed(() => this.locale() ?? this.providedLocale());\n /** What a boolean field says, in the language in force. */\n private readonly booleans = computed(() => ({ true: this.t('true'), false: this.t('false') }));\n protected readonly variantValue = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly sizeValue = computed(() => this.size() ?? this.defaults.size);\n protected readonly selectionModeValue = computed(\n () => this.selectionMode() ?? this.defaults.selectionMode,\n );\n protected readonly loadingValue = computed(() => this.loading());\n protected readonly loadingDelayValue = computed(\n () => this.loadingDelay() ?? this.defaults.loadingDelay,\n );\n protected readonly loadingMinDurationValue = computed(\n () => this.loadingMinDuration() ?? this.defaults.loadingMinDuration,\n );\n protected readonly listLabel = computed(() => this.label() ?? this.writtenLabel ?? null);\n private readonly modeValue = computed(\n () => this.mode() ?? (this.totalCount() === undefined ? 'client' : 'server'),\n );\n\n private readonly keyOf = computed(() => {\n const rowKey = this.rowKey();\n return typeof rowKey === 'function'\n ? rowKey\n : (row: Row) => String((row as Record<PropertyKey, unknown>)[rowKey as PropertyKey]);\n });\n\n protected readonly layout = computed(() =>\n resolveDataListLayout(this.columns(), {\n title: this.title(),\n subtitle: this.subtitle(),\n trailing: this.trailing(),\n fields: this.fields() ?? this.defaults.fields,\n columnState: this.columnState(),\n }),\n );\n protected readonly shownColumns = computed(() =>\n this.layout().fields.slice(0, this.layout().shown),\n );\n\n private readonly applied = computed(() => {\n const rows = this.rows();\n const keyOf = this.keyOf();\n if (this.modeValue() === 'server') {\n return {\n nodes: rows.map((row, index) => ({ kind: 'row' as const, key: keyOf(row), row, index })),\n visible: rows,\n total: this.totalCount() ?? rows.length,\n };\n }\n const result = applyQuery(rows, this.columns(), this.query(), {\n rowKey: keyOf,\n locale: this.localeValue(),\n booleans: this.booleans(),\n });\n return { nodes: dataListNodes(result.nodes), visible: result.rows, total: result.total };\n });\n\n protected readonly nodes = computed<readonly DataListNode<Row>[]>(() => this.applied().nodes);\n private readonly drawnKeys = computed(() => dataListKeys(this.nodes()));\n private readonly disabledSet = computed(() => new Set(this.disabledKeys()));\n private readonly selectedKeys = computed(() => asKeys(this.value()));\n private readonly selectedSet = computed(() => new Set(this.selectedKeys()));\n\n protected readonly firstLoad = computed(() => this.loading() && this.rows().length === 0);\n protected readonly showLoader = computed(() => this.firstLoad() || this.holding());\n protected readonly skeletonIndexes = computed(() =>\n Array.from({ length: this.skeletonRows() ?? this.defaults.skeletonRows }, (_, index) => index),\n );\n\n protected readonly emptyStatus = computed<DataListEmptyStatus | null>(() => {\n if (this.showLoader()) return null;\n if (this.error() && this.rows().length === 0) return 'error';\n if (this.drawnKeys().length > 0) return null;\n return this.rows().length === 0 && !isQueryActive(this.query()) ? 'empty' : 'no-results';\n });\n protected readonly errorOverRows = computed(\n () => !!this.error() && this.rows().length > 0 && !this.showLoader(),\n );\n protected readonly refreshing = computed(\n () => this.loading() && !this.showLoader() && this.rows().length > 0 && !this.loadingMore(),\n );\n\n protected readonly firstKey = computed(() => this.query().sort[0]);\n protected readonly sortName = computed(() => {\n const sort = this.query().sort;\n if (sort.length === 0) return this.t('sort');\n return this.t('sortNamed', { order: describeDataListSort(sort, this.columns(), this.t) });\n });\n protected readonly sortText = computed(() => {\n const sort = this.query().sort;\n const column = this.columns().find((entry) => entry.id === sort[0]?.column);\n if (!column) return this.t('sort');\n return this.t('sortSummary', { column: column.label, more: sort.length - 1 });\n });\n\n protected readonly allKeys = computed(() => {\n const disabled = this.disabledSet();\n const keyOf = this.keyOf();\n const keys =\n this.modeValue() === 'client' ? this.applied().visible.map(keyOf) : this.drawnKeys();\n return keys.filter((key) => !disabled.has(key));\n });\n protected readonly allSelected = computed(() => {\n const all = this.allKeys();\n const selected = this.selectedSet();\n return all.length > 0 && all.every((key) => selected.has(key));\n });\n protected readonly someSelected = computed(() =>\n this.allKeys().some((key) => this.selectedSet().has(key)),\n );\n protected readonly countText = computed(() => {\n const selected = this.selectedKeys().length;\n const count = this.applied().total;\n return this.selectionModeValue() !== 'none' && selected > 0\n ? this.t('selectedCount', { selected, count })\n : this.t('count', { count });\n });\n\n constructor() {\n afterRenderEffect(() => {\n const keys = this.drawnKeys();\n const before = this.previousKeys;\n this.previousKeys = keys;\n const lost = this.focusedKey;\n if (lost === null || keys.includes(lost)) return;\n const active = this.host.ownerDocument.activeElement;\n if (active && active !== this.host.ownerDocument.body && this.host.contains(active)) return;\n const at = before.indexOf(lost);\n const next = before.slice(at + 1).find((key) => keys.includes(key));\n const previous = before\n .slice(0, Math.max(at, 0))\n .reverse()\n .find((key) => keys.includes(key));\n const target = next ?? previous;\n this.focusedKey = target ?? null;\n if (target !== undefined) firstControl(recordOf(this.host, target))?.focus();\n else\n this.host\n .querySelector<HTMLElement>('[data-part=\"empty\"] [data-ui=\"result-state\"]')\n ?.focus();\n });\n afterRenderEffect(() => {\n if (this.firstLoad()) this.holding.set(true);\n if (!this.loading()) this.loadingMore.set(false);\n });\n }\n\n protected bar(index: number) {\n return BAR_WIDTHS[index % BAR_WIDTHS.length];\n }\n\n protected fieldBar(index: number) {\n return FIELD_WIDTHS[index % FIELD_WIDTHS.length];\n }\n\n protected sectionLabel(node: Extract<DataListNode<Row>, { kind: 'section' }>) {\n const column = this.columns().find((entry) => entry.id === node.column);\n return `${column?.label ?? node.column}: ${node.text} · ${new Intl.NumberFormat(this.localeValue()).format(node.count)}`;\n }\n\n protected emptyTitle(status: DataListEmptyStatus) {\n if (status === 'error') {\n const error = this.error();\n return typeof error === 'string' ? error : this.t('errorTitle');\n }\n return this.t(status === 'no-results' ? 'noResultsTitle' : 'emptyTitle');\n }\n\n /* ── One record ────────────────────────────────────────────────────── */\n\n private field(\n column: GridColumn<Row>,\n row: Row,\n key: string,\n place: DataListCellContext['place'],\n ): FieldView<Row> {\n const text =\n dataListFieldText(column, row, { locale: this.localeValue(), booleans: this.booleans() }) ??\n '';\n const templates = this.cellTemplates();\n const template =\n templates.find((entry) => entry.slDataListCell() === column.id) ??\n templates.find((entry) => entry.slDataListCell() === '') ??\n null;\n return {\n column,\n numeric: column.kind === 'number' || column.numeric === true,\n template: (template?.template as TemplateRef<DataListCellContext> | undefined) ?? null,\n context: { $implicit: row, row, column, key, value: cellValue(column, row), text, place },\n };\n }\n\n protected record(key: string, row: Row): RecordView<Row> {\n const layout = this.layout();\n const expanded = this.expanded().includes(key);\n const current = this.current();\n const title = layout.title ? this.field(layout.title, row, key, 'title') : null;\n const columns = expanded ? layout.fields : layout.fields.slice(0, layout.shown);\n return {\n key,\n row,\n disabled: this.disabledSet().has(key),\n busy: this.loadingKeys().includes(key),\n selected: this.selectionModeValue() !== 'none' && this.selectedSet().has(key),\n current: current !== undefined && current !== null && current === key,\n expanded,\n titleText: title?.context.text || key,\n title,\n subtitle: layout.subtitle ? this.field(layout.subtitle, row, key, 'subtitle') : null,\n trailing: layout.trailing ? this.field(layout.trailing, row, key, 'trailing') : null,\n actions: layout.actions.map((column) => this.field(column, row, key, 'actions')),\n fields: columns.map((column) => this.field(column, row, key, 'field')),\n hidden: layout.fields.length - layout.shown,\n href: this.href()?.(row),\n fieldsId: `${this.id}-${key}-fields`,\n };\n }\n\n /* ── Requests ──────────────────────────────────────────────────────── */\n\n private requestQuery(\n next: GridQuery,\n change: GridQueryChange,\n reason: ChangeReason,\n source?: unknown,\n ) {\n const query = this.query();\n if (sameQuery(next, query)) return false;\n const request = makeRequest(next, query, reason, source, { change }) as DataListQueryRequest;\n this.queryChangeRequest.emit(request);\n if (request.cancelled) return false;\n this.query.set(next);\n return true;\n }\n\n private requestValue(next: DataListSelection, reason: ChangeReason, source?: unknown) {\n const value = this.value();\n if (sameKeys(asKeys(next), asKeys(value))) return;\n const request = makeRequest(next, value, reason, source) as ChangeRequest<DataListSelection>;\n this.valueChangeRequest.emit(request);\n if (request.cancelled) return;\n this.value.set(next);\n }\n\n protected toggleExpanded(key: string, event: Event) {\n const expanded = this.expanded();\n const next = expanded.includes(key)\n ? expanded.filter((entry) => entry !== key)\n : [...expanded, key];\n const request = makeRequest(next, expanded, pressReason(event), event, {\n key,\n }) as DataListExpandedRequest;\n this.expandedChangeRequest.emit(request);\n if (request.cancelled) return;\n this.expanded.set(next);\n }\n\n protected pressRecord(key: string, event: MouseEvent) {\n const mode = this.selectionModeValue();\n if (mode === 'none' || this.disabledSet().has(key)) return;\n const reason = pressReason(event);\n const selected = this.selectedKeys();\n const chosen = this.selectedSet();\n if (mode === 'single') {\n this.anchor = key;\n this.requestValue(chosen.has(key) ? null : key, reason, event);\n return;\n }\n const selectable = this.drawnKeys().filter((entry) => !this.disabledSet().has(entry));\n if (event.shiftKey && this.anchor !== undefined) {\n const result = nextSelection({\n action: 'range',\n mode: 'multiple',\n selected,\n keys: selectable,\n key,\n anchor: this.anchor,\n disabled: (entry) => this.disabledSet().has(entry),\n });\n const outside = selected.filter((entry) => !selectable.includes(entry));\n this.requestValue([...outside, ...result.selected], 'select', event);\n return;\n }\n this.anchor = key;\n this.requestValue(\n chosen.has(key) ? selected.filter((entry) => entry !== key) : [...selected, key],\n reason,\n event,\n );\n }\n\n protected pressAll(event: MouseEvent) {\n const all = this.allKeys();\n const covered = new Set(all);\n const selected = this.selectedKeys();\n const chosen = this.selectedSet();\n const everything = this.allSelected();\n const next = everything\n ? selected.filter((key) => !covered.has(key))\n : [...selected, ...all.filter((key) => !chosen.has(key))];\n this.requestValue(next, everything ? 'clear' : 'select', event);\n }\n\n protected chooseColumn(request: ChangeRequest<string>) {\n const next = request.value === NO_SORT ? null : request.value;\n this.sortTo(withDataListSortColumn(this.query(), next), request.reason, request.source);\n }\n\n protected chooseDirection(request: ChangeRequest<string>) {\n this.sortTo(\n withDataListSortDirection(this.query(), request.value as SortDirection),\n request.reason,\n request.source,\n );\n }\n\n private sortTo(next: GridQuery, reason: ChangeReason, source: unknown) {\n if (!this.requestQuery(next, 'sort', reason, source)) return;\n getLiveAnnouncer(this.host.ownerDocument).announce(\n next.sort.length === 0\n ? this.t('sortCleared')\n : this.t('sortedBy', { order: describeDataListSort(next.sort, this.columns(), this.t) }),\n );\n }\n\n protected clearFilters(event: Event) {\n const query = this.query();\n const page = query.page && 'index' in query.page ? { ...query.page, index: 0 } : query.page;\n this.requestQuery({ ...query, filter: null, search: '', page }, 'filter', 'clear', event);\n }\n\n protected activate(view: RecordView<Row>, event: MouseEvent) {\n this.activate$.emit({ key: view.key, row: view.row, reason: pressReason(event), event });\n }\n\n protected activateLink(view: RecordView<Row>, event: MouseEvent) {\n if (view.disabled || view.busy) {\n event.preventDefault();\n return;\n }\n this.activate(view, event);\n }\n\n protected askForMore() {\n this.loadingMore.set(true);\n this.loadMore.emit();\n }\n\n protected onFocusIn(event: FocusEvent) {\n const item = (event.target as HTMLElement).closest('[data-ui=\"list-item\"][data-key]');\n this.focusedKey = item?.getAttribute('data-key') ?? this.focusedKey;\n }\n\n /* ── Imperative ────────────────────────────────────────────────────── */\n\n /** Focus goes to the first control of the first record, or to the empty state. */\n focus() {\n const first = this.host.querySelector('[data-ui=\"list-item\"][data-key]');\n const control = firstControl(first);\n if (control) control.focus();\n else\n this.host.querySelector<HTMLElement>('[data-part=\"empty\"] [data-ui=\"result-state\"]')?.focus();\n }\n\n /** Focus goes to the first control of the record with this key. Returns whether it was found. */\n focusKey(key: string): boolean {\n const control = firstControl(recordOf(this.host, key));\n control?.focus();\n return control !== null;\n }\n\n /** Scrolls the record into view. Returns whether it was found. */\n scrollToKey(key: string): boolean {\n const item = recordOf(this.host, key);\n item?.scrollIntoView({ block: 'nearest' });\n return item !== null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-data-list.mjs","sources":["../../data-list/src/data-list-defaults.ts","../../data-list/src/data-list-templates.ts","../../data-list/src/data-list.ts","../../data-list/src/slotted-angular-data-list.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport { DEFAULT_DATA_LIST_FIELDS } from '@slotted/core/data-list';\nimport type { GridQuery, GridQueryChange } from '@slotted/core/grid';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nexport type DataListVariant = 'plain' | 'ruled' | 'framed';\nexport type DataListSize = 'sm' | 'md' | 'lg';\nexport type DataListSelectionMode = 'none' | 'single' | 'multiple';\nexport type DataListMode = 'client' | 'server';\n\n/** `string | null` in `single` and `none`, the keys in `multiple`: the union `table` holds. */\nexport type DataListSelection = string | null | readonly string[];\n\nexport type DataListReason = Extract<\n ChangeReason,\n 'pointer' | 'keyboard' | 'select' | 'clear' | 'programmatic'\n>;\n\nexport interface DataListQueryRequest extends ChangeRequest<GridQuery> {\n /** Which part of the query moved, so a consumer refetches on sort and debounces on search. */\n readonly change: GridQueryChange;\n}\n\nexport interface DataListExpandedRequest extends ChangeRequest<readonly string[]> {\n /** The record whose disclosure was pressed. */\n readonly key: string;\n}\n\nexport interface DataListActivateEvent<Row = unknown> {\n readonly key: string;\n readonly row: Row;\n readonly reason: 'pointer' | 'keyboard';\n readonly event: Event;\n}\n\nexport type DataListEmptyStatus = 'empty' | 'no-results' | 'error';\n\nexport interface DataListDefaults {\n variant: DataListVariant;\n size: DataListSize;\n fields: number;\n selectionMode: DataListSelectionMode;\n skeletonRows: number;\n loadingDelay: number;\n loadingMinDuration: number;\n}\n\nconst FALLBACK: DataListDefaults = {\n variant: 'ruled',\n size: 'md',\n fields: DEFAULT_DATA_LIST_FIELDS,\n selectionMode: 'none',\n skeletonRows: 5,\n loadingDelay: 200,\n loadingMinDuration: 400,\n};\n\nexport const DATA_LIST_DEFAULTS = new InjectionToken<DataListDefaults>(\n 'slotted data-list defaults',\n {\n providedIn: 'root',\n factory: () => FALLBACK,\n },\n);\n\n/**\n * An application states the family's defaults once. A list that states its\n * own value still wins. Its words come from the language in force\n * (`provideSlotted`).\n */\nexport function provideDataListDefaults(defaults: Partial<DataListDefaults>) {\n return {\n provide: DATA_LIST_DEFAULTS,\n useFactory: (): DataListDefaults => ({\n ...FALLBACK,\n ...Object.fromEntries(Object.entries(defaults).filter(([, value]) => value !== undefined)),\n }),\n };\n}\n\nexport function injectDataListDefaults(): DataListDefaults {\n return inject(DATA_LIST_DEFAULTS);\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\nimport type { GridColumn } from '@slotted/core/grid';\n\nimport type { DataListEmptyStatus } from './data-list-defaults';\n\n/** What a value template receives: the cell's own context, and where it is drawn. */\nexport interface DataListCellContext<Row = unknown> {\n readonly $implicit: Row;\n readonly row: Row;\n readonly column: GridColumn<Row>;\n readonly key: string;\n readonly value: unknown;\n /** The formatted text; `''` for an absent value. */\n readonly text: string;\n readonly place: 'title' | 'subtitle' | 'trailing' | 'field' | 'actions';\n}\n\n/**\n * Draws a column's value wherever the record shows it: title, subtitle,\n * trailing value, field or actions. A template with no column id serves every\n * column that has none of its own.\n */\n@Directive({ selector: 'ng-template[slDataListCell]', standalone: true })\nexport class SlDataListCellTemplate {\n /** The column id, or empty for every column. */\n readonly slDataListCell = input<string>('');\n readonly template = inject<TemplateRef<DataListCellContext>>(TemplateRef);\n}\n\n/** The picture at the start of a record: an avatar, a thumbnail. */\n@Directive({ selector: 'ng-template[slDataListMedia]', standalone: true })\nexport class SlDataListMediaTemplate {\n readonly template = inject<TemplateRef<{ $implicit: unknown }>>(TemplateRef);\n}\n\n/** Replaces the empty, no-results or error state. */\n@Directive({ selector: 'ng-template[slDataListEmpty]', standalone: true })\nexport class SlDataListEmptyTemplate {\n readonly template = inject<TemplateRef<{ $implicit: DataListEmptyStatus }>>(TemplateRef);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlButton, SlButtonEnd } from '@slotted/angular/button';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport {\n SlList,\n SlListSection,\n SlListSectionLabel,\n SlListSectionList,\n} from '@slotted/angular/list';\nimport {\n SlListItem,\n SlListItemActions,\n SlListItemBody,\n SlListItemContent,\n SlListItemDescription,\n SlListItemEnd,\n SlListItemLabel,\n SlListItemStart,\n} from '@slotted/angular/list-item';\nimport {\n SlMenu,\n SlMenuItem,\n SlMenuRadioGroup,\n SlMenuSeparator,\n SlMenuTrigger,\n} from '@slotted/angular/menu';\nimport {\n SlResultState,\n SlResultStateActions,\n SlResultStateContent,\n SlResultStateTitle,\n} from '@slotted/angular/result-state';\nimport { SlSkeleton, SlSkeletonRegion } from '@slotted/angular/skeleton';\nimport { SlVisuallyHidden } from '@slotted/angular/visually-hidden';\nimport { nextSelection } from '@slotted/core/collection';\nimport {\n dataListFieldText,\n dataListKeys,\n dataListNodes,\n describeDataListSort,\n resolveDataListLayout,\n withDataListSortColumn,\n withDataListSortDirection,\n type DataListNode,\n} from '@slotted/core/data-list';\nimport {\n applyQuery,\n cellValue,\n emptyQuery,\n isQueryActive,\n sameQuery,\n type GridColumn,\n type GridColumnState,\n type GridQuery,\n type GridQueryChange,\n type SortDirection,\n} from '@slotted/core/grid';\nimport { dataListMessages, type DataListMessages, type PartialMessages } from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport {\n injectDataListDefaults,\n type DataListActivateEvent,\n type DataListEmptyStatus,\n type DataListExpandedRequest,\n type DataListMode,\n type DataListQueryRequest,\n type DataListSelection,\n type DataListSelectionMode,\n type DataListSize,\n type DataListVariant,\n} from './data-list-defaults';\nimport {\n SlDataListCellTemplate,\n SlDataListEmptyTemplate,\n SlDataListMediaTemplate,\n type DataListCellContext,\n} from './data-list-templates';\n\n/** The value that stands for \"no sort\" in the column group, a string no column id can be. */\nconst NO_SORT = '\\u0000none';\n\n/** Varied lengths, so a skeleton reads as text rather than as a stack of equal bars. */\nconst BAR_WIDTHS = ['9rem', '7rem', '8rem', '6.5rem', '9.5rem'];\nconst FIELD_WIDTHS = ['3.5rem', '5.5rem', '4rem', '5rem', '4.5rem', '6rem'];\n\nlet instances = 0;\n\n/** A click the keyboard produced has no pointer detail. */\nconst pressReason = (event: Event): 'pointer' | 'keyboard' =>\n (event as MouseEvent).detail === 0 ? 'keyboard' : 'pointer';\n\nfunction asKeys(value: DataListSelection): readonly string[] {\n if (Array.isArray(value)) return value as readonly string[];\n return value === null || value === undefined ? [] : [value as string];\n}\n\nfunction sameKeys(a: readonly string[], b: readonly string[]): boolean {\n return a.length === b.length && a.every((key, index) => key === b[index]);\n}\n\nfunction makeRequest<T>(value: T, previous: T, reason: ChangeReason, source: unknown, extra = {}) {\n let cancelled = false;\n return {\n value,\n previous,\n reason,\n source,\n ...extra,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n}\n\n/** The record with this key, found without `CSS.escape`, which not every document has. */\nfunction recordOf(root: HTMLElement, key: string): Element | null {\n for (const item of root.querySelectorAll('[data-ui=\"list-item\"][data-key]')) {\n if (item.getAttribute('data-key') === key) return item;\n }\n return null;\n}\n\n/** The first control a record holds, where focus lands on that record. */\nfunction firstControl(item: Element | null): HTMLElement | null {\n return (\n item?.querySelector<HTMLElement>(\n 'input:not(:disabled), a[href][data-part=\"title\"], button[data-part=\"title\"]:not(:disabled), button[data-part=\"more\"], [data-part=\"actions\"] :is(a[href], button:not(:disabled))',\n ) ?? null\n );\n}\n\n/**\n * Writes a part name back on an element whose other directive erased it.\n * `slMenuTriggerFor` binds `[attr.data-part]` to `null` on a trigger that is\n * neither a bar's item nor a submenu's, which takes `slButton`'s `root` with\n * it; the binding is constant, so writing it after the first render holds.\n */\n@Directive({ selector: '[slDataListPart]', standalone: true })\nexport class SlDataListPart {\n readonly part = input.required<string>({ alias: 'slDataListPart' });\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n afterNextRender(() => this.host.nativeElement.setAttribute('data-part', this.part()));\n }\n}\n\n/** Marks the consumer's own content for the footer, beside load-more: a pagination. */\n@Directive({ selector: '[slDataListFooter]', standalone: true })\nexport class SlDataListFooter {}\n\ninterface FieldView<Row> {\n readonly column: GridColumn<Row>;\n readonly context: DataListCellContext<Row>;\n readonly template: TemplateRef<DataListCellContext> | null;\n readonly numeric: boolean;\n}\n\ninterface RecordView<Row> {\n readonly key: string;\n readonly row: Row;\n readonly disabled: boolean;\n readonly busy: boolean;\n readonly selected: boolean;\n readonly current: boolean;\n readonly expanded: boolean;\n readonly titleText: string;\n readonly title: FieldView<Row> | null;\n readonly subtitle: FieldView<Row> | null;\n readonly trailing: FieldView<Row> | null;\n readonly actions: readonly FieldView<Row>[];\n readonly fields: readonly FieldView<Row>[];\n readonly hidden: number;\n readonly href: string | undefined;\n readonly fieldsId: string;\n}\n\n/**\n * A small tabular set drawn as a list of records. Each record is a list item:\n * the title, a subtitle, a trailing value, and the fields of highest priority\n * as pairs of a label and a value. The family reads the column model and the\n * query `sl-data-grid` reads, and it has no keyboard of its own: every control\n * is a native one in the page's tab order.\n */\n@Component({\n selector: 'sl-data-list',\n standalone: true,\n exportAs: 'slDataList',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlButtonEnd,\n SlCheckbox,\n SlDataListPart,\n SlGlyph,\n SlIcon,\n SlList,\n SlListItem,\n SlListItemActions,\n SlListItemBody,\n SlListItemContent,\n SlListItemDescription,\n SlListItemEnd,\n SlListItemLabel,\n SlListItemStart,\n SlListSection,\n SlListSectionLabel,\n SlListSectionList,\n SlMenu,\n SlMenuItem,\n SlMenuRadioGroup,\n SlMenuSeparator,\n SlMenuTrigger,\n SlResultState,\n SlResultStateActions,\n SlResultStateContent,\n SlResultStateTitle,\n SlSkeleton,\n SlSkeletonRegion,\n SlVisuallyHidden,\n ],\n styleUrls: [\n '../../../styles/src/data-list/data-list.css',\n '../../../styles/src/list/list.css',\n '../../../styles/src/list-item/list-item.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 host: {\n 'data-ui': 'data-list',\n 'data-part': 'root',\n '[attr.data-variant]': 'variantValue()',\n '[attr.data-size]': 'sizeValue()',\n '[attr.aria-busy]': \"refreshing() ? 'true' : null\",\n '[attr.data-loading]': \"refreshing() ? '' : null\",\n '(focusin)': 'onFocusIn($event)',\n },\n template: `\n <div data-part=\"header\">\n @if (selectionModeValue() === 'multiple' && !showLoader()) {\n <span data-part=\"select-all\">\n <span\n slCheckbox\n [checked]=\"allSelected()\"\n [indeterminate]=\"someSelected() && !allSelected()\"\n [disabled]=\"allKeys().length === 0\"\n [size]=\"sizeValue()\"\n (click)=\"pressAll($event)\"\n ><span slVisuallyHidden>{{ t('selectAll', { count: allKeys().length }) }}</span></span\n >\n </span>\n }\n <output data-part=\"count\" aria-live=\"polite\">{{ showLoader() ? '' : countText() }}</output>\n @if (layout().sortable.length > 0) {\n <span data-part=\"sort\" [attr.data-direction]=\"firstKey()?.direction ?? null\">\n <button\n slButton\n slDataListPart=\"root\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n [disabled]=\"showLoader()\"\n [attr.aria-label]=\"sortName()\"\n [slMenuTriggerFor]=\"sortMenu\"\n >\n {{ sortText()\n }}<span slButtonEnd>\n @if (firstKey()) {\n <span slIcon size=\"sm\"><svg slGlyph name=\"chevron-down\"></svg></span>\n }\n </span>\n </button>\n <sl-menu #sortMenu align=\"end\" [aria-label]=\"t('sort')\">\n <sl-menu-radio-group\n [attr.aria-labelledby]=\"id + '-sort-column'\"\n [value]=\"firstKey()?.column ?? noSort\"\n (valueChangeRequest)=\"chooseColumn($event)\"\n >\n <div data-part=\"group-label\" [id]=\"id + '-sort-column'\">\n {{ t('sortColumn') }}\n </div>\n <button slMenuRadioItem [value]=\"noSort\">{{ t('sortNone') }}</button>\n @for (column of layout().sortable; track column.id) {\n <button slMenuRadioItem [value]=\"column.id\">{{ column.label }}</button>\n }\n </sl-menu-radio-group>\n <hr slMenuSeparator />\n <sl-menu-radio-group\n [attr.aria-labelledby]=\"id + '-sort-direction'\"\n [value]=\"firstKey()?.direction ?? ''\"\n (valueChangeRequest)=\"chooseDirection($event)\"\n >\n <div data-part=\"group-label\" [id]=\"id + '-sort-direction'\">\n {{ t('sortDirection') }}\n </div>\n <button slMenuRadioItem value=\"ascending\" [disabled]=\"!firstKey()\">\n {{ t('ascending') }}\n </button>\n <button slMenuRadioItem value=\"descending\" [disabled]=\"!firstKey()\">\n {{ t('descending') }}\n </button>\n </sl-menu-radio-group>\n </sl-menu>\n </span>\n }\n </div>\n\n @if (errorOverRows()) {\n <ng-container\n [ngTemplateOutlet]=\"emptyState\"\n [ngTemplateOutletContext]=\"{ $implicit: 'error' }\"\n />\n }\n\n @if (showLoader()) {\n <div data-part=\"loader\">\n <div\n slSkeletonRegion\n [loading]=\"firstLoad()\"\n [delay]=\"loadingDelayValue()\"\n [minDuration]=\"loadingMinDurationValue()\"\n [messages]=\"{ label: t('loading') }\"\n (reveal)=\"holding.set(false)\"\n >\n <ul slList aria-hidden=\"true\" inert [variant]=\"variantValue()\" [size]=\"sizeValue()\">\n @for (index of skeletonIndexes(); track index) {\n <li slListItem align=\"start\" [variant]=\"variantValue()\" [size]=\"sizeValue()\">\n <div slListItemContent>\n <div slListItemBody>\n <div slListItemLabel><span slSkeleton [inlineSize]=\"bar(index)\"></span></div>\n @if (layout().subtitle) {\n <div slListItemDescription>\n <span slSkeleton [inlineSize]=\"bar(index + 2)\"></span>\n </div>\n }\n </div>\n @if (layout().trailing) {\n <div slListItemEnd>\n <span slSkeleton [inlineSize]=\"fieldBar(index + 3)\"></span>\n </div>\n }\n @if (layout().shown > 0) {\n <dl data-part=\"fields\">\n @for (column of shownColumns(); track column.id; let field = $index) {\n <div data-part=\"field\">\n <dt data-part=\"field-label\">{{ column.label }}</dt>\n <dd data-part=\"field-value\">\n <span slSkeleton [inlineSize]=\"fieldBar(index + field)\"></span>\n </dd>\n </div>\n }\n </dl>\n }\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n } @else if (emptyStatus(); as status) {\n <ng-container\n [ngTemplateOutlet]=\"emptyState\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n />\n } @else {\n <ul\n slList\n [variant]=\"variantValue()\"\n [size]=\"sizeValue()\"\n [attr.aria-label]=\"labelledBy() ? null : listLabel()\"\n [attr.aria-labelledby]=\"labelledBy() ?? null\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodesTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: nodes() }\"\n />\n </ul>\n }\n\n @if (hasMore() || footers().length > 0) {\n <div data-part=\"footer\">\n @if (hasMore() && !showLoader()) {\n <span data-part=\"load-more\">\n <button\n slButton\n size=\"sm\"\n tone=\"secondary\"\n variant=\"outline\"\n [loading]=\"loadingValue() && loadingMore()\"\n (click)=\"askForMore()\"\n >\n {{ t('loadMore') }}\n </button>\n </span>\n }\n <ng-content select=\"[slDataListFooter]\" />\n </div>\n }\n\n <ng-template #nodesTemplate let-list>\n @for (node of list; track node.key) {\n @if (node.kind === 'row') {\n <ng-container\n [ngTemplateOutlet]=\"recordTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record(node.key, node.row) }\"\n />\n } @else {\n <li slListSection>\n <span slListSectionLabel role=\"heading\" [attr.aria-level]=\"min(node.level + 2, 6)\">{{\n sectionLabel(node)\n }}</span>\n <ul slListSectionList>\n <ng-container\n [ngTemplateOutlet]=\"nodesTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: node.children }\"\n />\n </ul>\n </li>\n }\n }\n </ng-template>\n\n <ng-template #recordTemplate let-view>\n <li\n slListItem\n align=\"start\"\n [attr.data-key]=\"view.key\"\n [attr.data-expanded]=\"view.expanded ? '' : null\"\n [variant]=\"variantValue()\"\n [size]=\"sizeValue()\"\n [selected]=\"view.selected\"\n [current]=\"view.current ? (view.href === undefined ? true : 'page') : false\"\n [disabled]=\"view.disabled\"\n [loading]=\"view.busy\"\n >\n <div slListItemContent>\n @if (selectionModeValue() !== 'none' || mediaTemplate()) {\n <div slListItemStart>\n @if (selectionModeValue() !== 'none') {\n <span data-part=\"selection\">\n <span\n slCheckbox\n [checked]=\"view.selected\"\n [disabled]=\"view.disabled\"\n [size]=\"sizeValue()\"\n (click)=\"pressRecord(view.key, $event)\"\n ><span slVisuallyHidden>{{\n t('selectRow', { title: view.titleText })\n }}</span></span\n >\n </span>\n }\n @if (mediaTemplate(); as media) {\n <span data-part=\"media\">\n <ng-container\n [ngTemplateOutlet]=\"media.template\"\n [ngTemplateOutletContext]=\"{ $implicit: view.row }\"\n />\n </span>\n }\n </div>\n }\n <div slListItemBody>\n <div slListItemLabel>\n @if (view.href !== undefined) {\n <a\n data-part=\"title\"\n [attr.href]=\"view.href\"\n [attr.aria-disabled]=\"view.disabled || view.busy ? 'true' : null\"\n (click)=\"activateLink(view, $event)\"\n ><ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.title }\"\n /></a>\n } @else if (activatable()) {\n <button\n data-part=\"title\"\n type=\"button\"\n [disabled]=\"view.disabled || view.busy\"\n (click)=\"activate(view, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.title }\"\n />\n </button>\n } @else {\n <span data-part=\"title\"\n ><ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.title }\"\n /></span>\n }\n </div>\n @if (view.subtitle) {\n <div slListItemDescription>\n <ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.subtitle }\"\n />\n </div>\n }\n </div>\n @if (view.trailing) {\n <div slListItemEnd>\n <span data-part=\"trailing\"\n ><ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: view.trailing }\"\n /></span>\n </div>\n }\n @if (view.fields.length > 0) {\n <dl data-part=\"fields\" [id]=\"view.fieldsId\">\n @for (field of view.fields; track field.column.id) {\n <div data-part=\"field\">\n <dt data-part=\"field-label\">{{ field.column.label }}</dt>\n <dd data-part=\"field-value\" [attr.data-numeric]=\"field.numeric ? '' : null\">\n <ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: field }\"\n />\n </dd>\n </div>\n }\n </dl>\n }\n @if (view.hidden > 0) {\n <button\n data-part=\"more\"\n type=\"button\"\n [attr.aria-controls]=\"view.fieldsId\"\n [attr.aria-expanded]=\"view.expanded\"\n (click)=\"toggleExpanded(view.key, $event)\"\n >\n {{ view.expanded ? t('less') : t('more', { count: view.hidden }) }}\n <span slIcon size=\"sm\"><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n }\n </div>\n @if (view.actions.length > 0) {\n <div slListItemActions>\n @for (field of view.actions; track field.column.id) {\n <ng-container\n [ngTemplateOutlet]=\"value\"\n [ngTemplateOutletContext]=\"{ $implicit: field }\"\n />\n }\n </div>\n }\n </li>\n </ng-template>\n\n <ng-template #value let-field>\n @if (field) {\n @if (field.template) {\n <ng-container\n [ngTemplateOutlet]=\"field.template\"\n [ngTemplateOutletContext]=\"field.context\"\n />\n } @else if (field.context.text === '' && field.context.place !== 'actions') {\n <span data-part=\"field-empty\"\n ><span aria-hidden=\"true\">—</span><span slVisuallyHidden>{{ t('empty') }}</span></span\n >\n } @else {\n {{ field.context.text }}\n }\n }\n </ng-template>\n\n <ng-template #emptyState let-status>\n <div data-part=\"empty\">\n @if (emptyTemplate(); as custom) {\n <ng-container\n [ngTemplateOutlet]=\"custom.template\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n />\n } @else {\n <section slResultState reach=\"section\" tabindex=\"-1\" [status]=\"status\">\n <div slResultStateContent>\n <div slResultStateTitle>{{ emptyTitle(status) }}</div>\n </div>\n @if (status === 'no-results') {\n <div slResultStateActions>\n <button\n slButton\n size=\"md\"\n tone=\"secondary\"\n variant=\"outline\"\n (click)=\"clearFilters($event)\"\n >\n {{ t('clearFilters') }}\n </button>\n </div>\n } @else if (status === 'error') {\n <div slResultStateActions>\n <button\n slButton\n size=\"md\"\n tone=\"secondary\"\n variant=\"outline\"\n (click)=\"retry.emit()\"\n >\n {{ t('retry') }}\n </button>\n </div>\n }\n </section>\n }\n </div>\n </ng-template>\n `,\n})\nexport class SlDataList<Row = unknown> {\n private readonly defaults = injectDataListDefaults();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected readonly id = `slotted-data-list-${++instances}`;\n protected readonly noSort = NO_SORT;\n protected readonly min = Math.min;\n\n readonly rows = input.required<readonly Row[]>();\n readonly rowKey = input.required<keyof Row | ((row: Row) => string)>();\n readonly columns = input.required<readonly GridColumn<Row>[]>();\n readonly columnState = input<Partial<GridColumnState> | undefined>(undefined);\n readonly title = input<string | undefined>(undefined);\n readonly subtitle = input<string | undefined>(undefined);\n readonly trailing = input<string | undefined>(undefined);\n readonly fields = input<number | undefined>(undefined);\n readonly label = input<string | undefined>(undefined);\n readonly labelledBy = input<string | undefined>(undefined);\n readonly mode = input<DataListMode | undefined>(undefined);\n readonly totalCount = input<number | undefined>(undefined);\n readonly selectionMode = input<DataListSelectionMode | undefined>(undefined);\n readonly disabledKeys = input<readonly string[]>([]);\n readonly loadingKeys = input<readonly string[]>([]);\n /** The record open beside the list. The family never moves it. */\n readonly current = input<string | null | undefined>(undefined);\n readonly href = input<((row: Row) => string) | undefined>(undefined);\n readonly activatable = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /** A message, or `true` for the family's own. Rows already shown stay. */\n readonly error = input<boolean | string | null | undefined>(undefined);\n readonly hasMore = input(false, { transform: booleanAttribute });\n readonly variant = input<DataListVariant | undefined>(undefined);\n readonly size = input<DataListSize | undefined>(undefined);\n /** Words laid over the catalog of the language in force, key by key. */\n readonly messages = input<PartialMessages<DataListMessages> | undefined>(undefined);\n /** Formats the fields and counts; the provider's locale otherwise. */\n readonly locale = input<string | undefined>(undefined);\n readonly skeletonRows = input<number | undefined>(undefined);\n readonly loadingDelay = input<number | undefined>(undefined);\n readonly loadingMinDuration = input<number | undefined>(undefined);\n\n readonly query = model<GridQuery>(emptyQuery());\n readonly value = model<DataListSelection>(null);\n readonly expanded = model<readonly string[]>([]);\n\n readonly queryChangeRequest = output<DataListQueryRequest>();\n readonly valueChangeRequest = output<ChangeRequest<DataListSelection>>();\n readonly expandedChangeRequest = output<DataListExpandedRequest>();\n readonly activate$ = output<DataListActivateEvent<Row>>({ alias: 'activate' });\n readonly loadMore = output<void>();\n readonly retry = output<void>();\n\n protected readonly cellTemplates = contentChildren(SlDataListCellTemplate);\n protected readonly mediaTemplate = computed(() => this.mediaTemplates()[0] ?? null);\n protected readonly emptyTemplate = computed(() => this.emptyTemplates()[0] ?? null);\n private readonly mediaTemplates = contentChildren(SlDataListMediaTemplate);\n private readonly emptyTemplates = contentChildren(SlDataListEmptyTemplate);\n protected readonly footers = contentChildren(SlDataListFooter);\n\n protected readonly holding = signal(false);\n protected readonly loadingMore = signal(false);\n private anchor: string | undefined;\n private focusedKey: string | null = null;\n private previousKeys: readonly string[] = [];\n\n /** The family's words in the language in force, with this list's `messages` laid over them. */\n readonly t = injectMessages(dataListMessages, this.messages);\n private readonly providedLocale = injectLocale();\n protected readonly localeValue = computed(() => this.locale() ?? this.providedLocale());\n /** What a boolean field says, in the language in force. */\n private readonly booleans = computed(() => ({ true: this.t('true'), false: this.t('false') }));\n protected readonly variantValue = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly sizeValue = computed(() => this.size() ?? this.defaults.size);\n protected readonly selectionModeValue = computed(\n () => this.selectionMode() ?? this.defaults.selectionMode,\n );\n protected readonly loadingValue = computed(() => this.loading());\n protected readonly loadingDelayValue = computed(\n () => this.loadingDelay() ?? this.defaults.loadingDelay,\n );\n protected readonly loadingMinDurationValue = computed(\n () => this.loadingMinDuration() ?? this.defaults.loadingMinDuration,\n );\n protected readonly listLabel = computed(() => this.label() ?? this.writtenLabel ?? null);\n private readonly modeValue = computed(\n () => this.mode() ?? (this.totalCount() === undefined ? 'client' : 'server'),\n );\n\n private readonly keyOf = computed(() => {\n const rowKey = this.rowKey();\n return typeof rowKey === 'function'\n ? rowKey\n : (row: Row) => String((row as Record<PropertyKey, unknown>)[rowKey as PropertyKey]);\n });\n\n protected readonly layout = computed(() =>\n resolveDataListLayout(this.columns(), {\n title: this.title(),\n subtitle: this.subtitle(),\n trailing: this.trailing(),\n fields: this.fields() ?? this.defaults.fields,\n columnState: this.columnState(),\n }),\n );\n protected readonly shownColumns = computed(() =>\n this.layout().fields.slice(0, this.layout().shown),\n );\n\n private readonly applied = computed(() => {\n const rows = this.rows();\n const keyOf = this.keyOf();\n if (this.modeValue() === 'server') {\n return {\n nodes: rows.map((row, index) => ({ kind: 'row' as const, key: keyOf(row), row, index })),\n visible: rows,\n total: this.totalCount() ?? rows.length,\n };\n }\n const result = applyQuery(rows, this.columns(), this.query(), {\n rowKey: keyOf,\n locale: this.localeValue(),\n booleans: this.booleans(),\n });\n return { nodes: dataListNodes(result.nodes), visible: result.rows, total: result.total };\n });\n\n protected readonly nodes = computed<readonly DataListNode<Row>[]>(() => this.applied().nodes);\n private readonly drawnKeys = computed(() => dataListKeys(this.nodes()));\n private readonly disabledSet = computed(() => new Set(this.disabledKeys()));\n private readonly selectedKeys = computed(() => asKeys(this.value()));\n private readonly selectedSet = computed(() => new Set(this.selectedKeys()));\n\n protected readonly firstLoad = computed(() => this.loading() && this.rows().length === 0);\n protected readonly showLoader = computed(() => this.firstLoad() || this.holding());\n protected readonly skeletonIndexes = computed(() =>\n Array.from({ length: this.skeletonRows() ?? this.defaults.skeletonRows }, (_, index) => index),\n );\n\n protected readonly emptyStatus = computed<DataListEmptyStatus | null>(() => {\n if (this.showLoader()) return null;\n if (this.error() && this.rows().length === 0) return 'error';\n if (this.drawnKeys().length > 0) return null;\n return this.rows().length === 0 && !isQueryActive(this.query()) ? 'empty' : 'no-results';\n });\n protected readonly errorOverRows = computed(\n () => !!this.error() && this.rows().length > 0 && !this.showLoader(),\n );\n protected readonly refreshing = computed(\n () => this.loading() && !this.showLoader() && this.rows().length > 0 && !this.loadingMore(),\n );\n\n protected readonly firstKey = computed(() => this.query().sort[0]);\n protected readonly sortName = computed(() => {\n const sort = this.query().sort;\n if (sort.length === 0) return this.t('sort');\n return this.t('sortNamed', { order: describeDataListSort(sort, this.columns(), this.t) });\n });\n protected readonly sortText = computed(() => {\n const sort = this.query().sort;\n const column = this.columns().find((entry) => entry.id === sort[0]?.column);\n if (!column) return this.t('sort');\n return this.t('sortSummary', { column: column.label, more: sort.length - 1 });\n });\n\n protected readonly allKeys = computed(() => {\n const disabled = this.disabledSet();\n const keyOf = this.keyOf();\n const keys =\n this.modeValue() === 'client' ? this.applied().visible.map(keyOf) : this.drawnKeys();\n return keys.filter((key) => !disabled.has(key));\n });\n protected readonly allSelected = computed(() => {\n const all = this.allKeys();\n const selected = this.selectedSet();\n return all.length > 0 && all.every((key) => selected.has(key));\n });\n protected readonly someSelected = computed(() =>\n this.allKeys().some((key) => this.selectedSet().has(key)),\n );\n protected readonly countText = computed(() => {\n const selected = this.selectedKeys().length;\n const count = this.applied().total;\n return this.selectionModeValue() !== 'none' && selected > 0\n ? this.t('selectedCount', { selected, count })\n : this.t('count', { count });\n });\n\n constructor() {\n afterRenderEffect(() => {\n const keys = this.drawnKeys();\n const before = this.previousKeys;\n this.previousKeys = keys;\n const lost = this.focusedKey;\n if (lost === null || keys.includes(lost)) return;\n const active = this.host.ownerDocument.activeElement;\n if (active && active !== this.host.ownerDocument.body && this.host.contains(active)) return;\n const at = before.indexOf(lost);\n const next = before.slice(at + 1).find((key) => keys.includes(key));\n const previous = before\n .slice(0, Math.max(at, 0))\n .reverse()\n .find((key) => keys.includes(key));\n const target = next ?? previous;\n this.focusedKey = target ?? null;\n if (target !== undefined) firstControl(recordOf(this.host, target))?.focus();\n else\n this.host\n .querySelector<HTMLElement>('[data-part=\"empty\"] [data-ui=\"result-state\"]')\n ?.focus();\n });\n afterRenderEffect(() => {\n if (this.firstLoad()) this.holding.set(true);\n if (!this.loading()) this.loadingMore.set(false);\n });\n }\n\n protected bar(index: number) {\n return BAR_WIDTHS[index % BAR_WIDTHS.length];\n }\n\n protected fieldBar(index: number) {\n return FIELD_WIDTHS[index % FIELD_WIDTHS.length];\n }\n\n protected sectionLabel(node: Extract<DataListNode<Row>, { kind: 'section' }>) {\n const column = this.columns().find((entry) => entry.id === node.column);\n return `${column?.label ?? node.column}: ${node.text} · ${new Intl.NumberFormat(this.localeValue()).format(node.count)}`;\n }\n\n protected emptyTitle(status: DataListEmptyStatus) {\n if (status === 'error') {\n const error = this.error();\n return typeof error === 'string' ? error : this.t('errorTitle');\n }\n return this.t(status === 'no-results' ? 'noResultsTitle' : 'emptyTitle');\n }\n\n /* ── One record ────────────────────────────────────────────────────── */\n\n private field(\n column: GridColumn<Row>,\n row: Row,\n key: string,\n place: DataListCellContext['place'],\n ): FieldView<Row> {\n const text =\n dataListFieldText(column, row, { locale: this.localeValue(), booleans: this.booleans() }) ??\n '';\n const templates = this.cellTemplates();\n const template =\n templates.find((entry) => entry.slDataListCell() === column.id) ??\n templates.find((entry) => entry.slDataListCell() === '') ??\n null;\n return {\n column,\n numeric: column.kind === 'number' || column.numeric === true,\n template: (template?.template as TemplateRef<DataListCellContext> | undefined) ?? null,\n context: { $implicit: row, row, column, key, value: cellValue(column, row), text, place },\n };\n }\n\n protected record(key: string, row: Row): RecordView<Row> {\n const layout = this.layout();\n const expanded = this.expanded().includes(key);\n const current = this.current();\n const title = layout.title ? this.field(layout.title, row, key, 'title') : null;\n const columns = expanded ? layout.fields : layout.fields.slice(0, layout.shown);\n return {\n key,\n row,\n disabled: this.disabledSet().has(key),\n busy: this.loadingKeys().includes(key),\n selected: this.selectionModeValue() !== 'none' && this.selectedSet().has(key),\n current: current !== undefined && current !== null && current === key,\n expanded,\n titleText: title?.context.text || key,\n title,\n subtitle: layout.subtitle ? this.field(layout.subtitle, row, key, 'subtitle') : null,\n trailing: layout.trailing ? this.field(layout.trailing, row, key, 'trailing') : null,\n actions: layout.actions.map((column) => this.field(column, row, key, 'actions')),\n fields: columns.map((column) => this.field(column, row, key, 'field')),\n hidden: layout.fields.length - layout.shown,\n href: this.href()?.(row),\n fieldsId: `${this.id}-${key}-fields`,\n };\n }\n\n /* ── Requests ──────────────────────────────────────────────────────── */\n\n private requestQuery(\n next: GridQuery,\n change: GridQueryChange,\n reason: ChangeReason,\n source?: unknown,\n ) {\n const query = this.query();\n if (sameQuery(next, query)) return false;\n const request = makeRequest(next, query, reason, source, { change }) as DataListQueryRequest;\n this.queryChangeRequest.emit(request);\n if (request.cancelled) return false;\n this.query.set(next);\n return true;\n }\n\n private requestValue(next: DataListSelection, reason: ChangeReason, source?: unknown) {\n const value = this.value();\n if (sameKeys(asKeys(next), asKeys(value))) return;\n const request = makeRequest(next, value, reason, source) as ChangeRequest<DataListSelection>;\n this.valueChangeRequest.emit(request);\n if (request.cancelled) return;\n this.value.set(next);\n }\n\n protected toggleExpanded(key: string, event: Event) {\n const expanded = this.expanded();\n const next = expanded.includes(key)\n ? expanded.filter((entry) => entry !== key)\n : [...expanded, key];\n const request = makeRequest(next, expanded, pressReason(event), event, {\n key,\n }) as DataListExpandedRequest;\n this.expandedChangeRequest.emit(request);\n if (request.cancelled) return;\n this.expanded.set(next);\n }\n\n protected pressRecord(key: string, event: MouseEvent) {\n const mode = this.selectionModeValue();\n if (mode === 'none' || this.disabledSet().has(key)) return;\n const reason = pressReason(event);\n const selected = this.selectedKeys();\n const chosen = this.selectedSet();\n if (mode === 'single') {\n this.anchor = key;\n this.requestValue(chosen.has(key) ? null : key, reason, event);\n return;\n }\n const selectable = this.drawnKeys().filter((entry) => !this.disabledSet().has(entry));\n if (event.shiftKey && this.anchor !== undefined) {\n const result = nextSelection({\n action: 'range',\n mode: 'multiple',\n selected,\n keys: selectable,\n key,\n anchor: this.anchor,\n disabled: (entry) => this.disabledSet().has(entry),\n });\n const outside = selected.filter((entry) => !selectable.includes(entry));\n this.requestValue([...outside, ...result.selected], 'select', event);\n return;\n }\n this.anchor = key;\n this.requestValue(\n chosen.has(key) ? selected.filter((entry) => entry !== key) : [...selected, key],\n reason,\n event,\n );\n }\n\n protected pressAll(event: MouseEvent) {\n const all = this.allKeys();\n const covered = new Set(all);\n const selected = this.selectedKeys();\n const chosen = this.selectedSet();\n const everything = this.allSelected();\n const next = everything\n ? selected.filter((key) => !covered.has(key))\n : [...selected, ...all.filter((key) => !chosen.has(key))];\n this.requestValue(next, everything ? 'clear' : 'select', event);\n }\n\n protected chooseColumn(request: ChangeRequest<string>) {\n const next = request.value === NO_SORT ? null : request.value;\n this.sortTo(withDataListSortColumn(this.query(), next), request.reason, request.source);\n }\n\n protected chooseDirection(request: ChangeRequest<string>) {\n this.sortTo(\n withDataListSortDirection(this.query(), request.value as SortDirection),\n request.reason,\n request.source,\n );\n }\n\n private sortTo(next: GridQuery, reason: ChangeReason, source: unknown) {\n if (!this.requestQuery(next, 'sort', reason, source)) return;\n getLiveAnnouncer(this.host.ownerDocument).announce(\n next.sort.length === 0\n ? this.t('sortCleared')\n : this.t('sortedBy', { order: describeDataListSort(next.sort, this.columns(), this.t) }),\n );\n }\n\n protected clearFilters(event: Event) {\n const query = this.query();\n const page = query.page && 'index' in query.page ? { ...query.page, index: 0 } : query.page;\n this.requestQuery({ ...query, filter: null, search: '', page }, 'filter', 'clear', event);\n }\n\n protected activate(view: RecordView<Row>, event: MouseEvent) {\n this.activate$.emit({ key: view.key, row: view.row, reason: pressReason(event), event });\n }\n\n protected activateLink(view: RecordView<Row>, event: MouseEvent) {\n if (view.disabled || view.busy) {\n event.preventDefault();\n return;\n }\n this.activate(view, event);\n }\n\n protected askForMore() {\n this.loadingMore.set(true);\n this.loadMore.emit();\n }\n\n protected onFocusIn(event: FocusEvent) {\n const item = (event.target as HTMLElement).closest('[data-ui=\"list-item\"][data-key]');\n this.focusedKey = item?.getAttribute('data-key') ?? this.focusedKey;\n }\n\n /* ── Imperative ────────────────────────────────────────────────────── */\n\n /** Focus goes to the first control of the first record, or to the empty state. */\n focus() {\n const first = this.host.querySelector('[data-ui=\"list-item\"][data-key]');\n const control = firstControl(first);\n if (control) control.focus();\n else\n this.host.querySelector<HTMLElement>('[data-part=\"empty\"] [data-ui=\"result-state\"]')?.focus();\n }\n\n /** Focus goes to the first control of the record with this key. Returns whether it was found. */\n focusKey(key: string): boolean {\n const control = firstControl(recordOf(this.host, key));\n control?.focus();\n return control !== null;\n }\n\n /** Scrolls the record into view. Returns whether it was found. */\n scrollToKey(key: string): boolean {\n const item = recordOf(this.host, key);\n item?.scrollIntoView({ block: 'nearest' });\n return item !== null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}