@slotted/angular 0.1.0-beta.6 → 0.1.0-beta.8

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 (70) hide show
  1. package/docs/calendar.json +1 -1
  2. package/docs/menu.json +12 -0
  3. package/docs/menu.md +2 -0
  4. package/docs/side-navigation.json +1 -0
  5. package/docs/side-navigation.md +1 -1
  6. package/docs/table.examples.md +2 -2
  7. package/docs/table.json +2 -2
  8. package/fesm2022/slotted-angular-action-bar.mjs +1 -1
  9. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  10. package/fesm2022/slotted-angular-app-shell.mjs +2 -2
  11. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  12. package/fesm2022/slotted-angular-button.mjs +12 -12
  13. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  14. package/fesm2022/slotted-angular-calendar.mjs +14 -4
  15. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  16. package/fesm2022/slotted-angular-chart.mjs +2 -2
  17. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  18. package/fesm2022/slotted-angular-color-picker.mjs +1 -1
  19. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  20. package/fesm2022/slotted-angular-column-manager.mjs +1 -1
  21. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  22. package/fesm2022/slotted-angular-command-palette.mjs +22 -3
  23. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  24. package/fesm2022/slotted-angular-dashboard-grid.mjs +1 -1
  25. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  26. package/fesm2022/slotted-angular-data-grid.mjs +2 -2
  27. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  28. package/fesm2022/slotted-angular-data-list.mjs +1 -1
  29. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  30. package/fesm2022/slotted-angular-date-field.mjs +2 -2
  31. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  32. package/fesm2022/slotted-angular-datetime-field.mjs +2 -2
  33. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  34. package/fesm2022/slotted-angular-dialog.mjs +26 -4
  35. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  36. package/fesm2022/slotted-angular-drawer.mjs +6 -2
  37. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  38. package/fesm2022/slotted-angular-event-calendar.mjs +1 -1
  39. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  40. package/fesm2022/slotted-angular-filter-bar.mjs +1 -1
  41. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  42. package/fesm2022/slotted-angular-kbd.mjs +4 -4
  43. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  44. package/fesm2022/slotted-angular-menu.mjs +12 -4
  45. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  46. package/fesm2022/slotted-angular-saved-views.mjs +1 -1
  47. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  48. package/fesm2022/slotted-angular-side-navigation.mjs +2 -2
  49. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  50. package/fesm2022/slotted-angular-split-button.mjs +4 -4
  51. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  52. package/fesm2022/slotted-angular-table.mjs +3 -1
  53. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  54. package/fesm2022/slotted-angular-tabs.mjs +2 -2
  55. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  56. package/fesm2022/slotted-angular-time-field.mjs +2 -2
  57. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  58. package/fesm2022/slotted-angular-toolbar.mjs +1 -1
  59. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  60. package/package.json +3 -3
  61. package/types/slotted-angular-calendar.d.ts +2 -0
  62. package/types/slotted-angular-calendar.d.ts.map +1 -1
  63. package/types/slotted-angular-command-palette.d.ts +10 -1
  64. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  65. package/types/slotted-angular-dialog.d.ts.map +1 -1
  66. package/types/slotted-angular-drawer.d.ts.map +1 -1
  67. package/types/slotted-angular-menu.d.ts +11 -2
  68. package/types/slotted-angular-menu.d.ts.map +1 -1
  69. package/types/slotted-angular-table.d.ts +3 -1
  70. package/types/slotted-angular-table.d.ts.map +1 -1
@@ -116,7 +116,7 @@
116
116
  "part": "previous",
117
117
  "element": "button",
118
118
  "required": true,
119
- "purpose": "One page back, in whichever view is showing: a month in the day view, a year in the month view, twelve years in the year view. Its chevron is the next trigger’s artwork turned, so both follow the document direction from one token."
119
+ "purpose": "One page back, in whichever view is showing: a month in the day view, a year in the month view, twelve years in the year view, and it is named for that step. Its chevron is the next trigger’s artwork turned, so both follow the document direction from one token."
120
120
  },
121
121
  {
122
122
  "part": "next",
package/docs/menu.json CHANGED
@@ -12,6 +12,10 @@
12
12
  "md",
13
13
  "lg"
14
14
  ],
15
+ "width": [
16
+ "content",
17
+ "anchor"
18
+ ],
15
19
  "side": [
16
20
  "bottom",
17
21
  "top",
@@ -84,6 +88,7 @@
84
88
  "nativeElement": "div",
85
89
  "defaults": {
86
90
  "size": "md",
91
+ "width": "content",
87
92
  "side": "bottom",
88
93
  "align": "start",
89
94
  "mount": "active",
@@ -269,6 +274,13 @@
269
274
  "appliesTo": "sl-menu",
270
275
  "description": "The width of the surface and the height of its items."
271
276
  },
277
+ {
278
+ "name": "width",
279
+ "type": "'content' | 'anchor'",
280
+ "defaultValue": "content",
281
+ "appliesTo": "sl-menu",
282
+ "description": "content: the surface takes its own measure; anchor: it is exactly as wide as its trigger, capped by the available width. A submenu is always content."
283
+ },
272
284
  {
273
285
  "name": "side",
274
286
  "type": "'top' | 'bottom' | 'inline-start' | 'inline-end' | 'left' | 'right'",
package/docs/menu.md CHANGED
@@ -69,6 +69,7 @@ export class MenuBasic {}
69
69
  | `value` | `string \| undefined` | — | sl-menu, sl-menu-radio-group, button[slMenuRadioItem] | On an sl-menu inside sl-menubar, the name the bar knows it by; a menu on its own needs none. On sl-menu-radio-group, the chosen value, bound with [(value)]. On a radio item, the value the item stands for. |
70
70
  | `checked` | `model<boolean>` | false | button[slMenuCheckboxItem] | Whether the option is on. Bind [(checked)] to read and write it. |
71
71
  | `size` | `'sm' \| 'md' \| 'lg'` | md | sl-menu | The width of the surface and the height of its items. |
72
+ | `width` | `'content' \| 'anchor'` | content | sl-menu | content: the surface takes its own measure; anchor: it is exactly as wide as its trigger, capped by the available width. A submenu is always content. |
72
73
  | `side` | `'top' \| 'bottom' \| 'inline-start' \| 'inline-end' \| 'left' \| 'right'` | bottom | sl-menu | The edge of the trigger the surface opens from. inline-start and inline-end follow the reading direction. |
73
74
  | `align` | `'start' \| 'center' \| 'end'` | start | sl-menu | Where the surface sits along that edge. |
74
75
  | `mount` | `'active' \| 'lazy' \| 'eager'` | active | sl-menu | When the surface is in the document: only while open, from the first open on, or from the start. A surface kept while closed carries inert. |
@@ -122,6 +123,7 @@ export class MenuBasic {}
122
123
  | Axis | Values | Default |
123
124
  | --- | --- | --- |
124
125
  | `size` | `sm`, `md`, `lg` | `md` |
126
+ | `width` | `content`, `anchor` | `content` |
125
127
  | `side` | `bottom`, `top`, `inline-start`, `inline-end`, `left`, `right` | `bottom` |
126
128
  | `align` | `start`, `center`, `end` | `start` |
127
129
  | `mount` | `active`, `lazy`, `eager` | `active` |
@@ -403,6 +403,7 @@
403
403
  "--slotted-app-shell-row-inset",
404
404
  "--slotted-app-shell-row-line-height",
405
405
  "--slotted-app-shell-row-mark",
406
+ "--slotted-app-shell-row-ring-inset",
406
407
  "--slotted-border-subtle",
407
408
  "--slotted-border-width-thin",
408
409
  "--slotted-control-font-family",
@@ -139,7 +139,7 @@ export class SideNavigationBasic {
139
139
 
140
140
  ## Tokens
141
141
 
142
- `--slotted-app-shell-row-font-size`, `--slotted-app-shell-row-gap`, `--slotted-app-shell-row-height`, `--slotted-app-shell-row-inset`, `--slotted-app-shell-row-line-height`, `--slotted-app-shell-row-mark`, `--slotted-border-subtle`, `--slotted-border-width-thin`, `--slotted-control-font-family`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-current-edge`, `--slotted-disabled-foreground`, `--slotted-duration-instant`, `--slotted-duration-medium`, `--slotted-duration-short`, `--slotted-easing-enter`, `--slotted-easing-exit`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-size-md`, `--slotted-font-size-sm`, `--slotted-font-size-xs`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-font-weight-semibold`, `--slotted-line-height-md`, `--slotted-line-height-sm`, `--slotted-line-height-xs`, `--slotted-radius-full`, `--slotted-radius-lg`, `--slotted-radius-md`, `--slotted-shadow-md`, `--slotted-side-navigation-active-background`, `--slotted-side-navigation-color`, `--slotted-side-navigation-current-background`, `--slotted-side-navigation-current-color`, `--slotted-side-navigation-current-description-color`, `--slotted-side-navigation-current-edge`, `--slotted-side-navigation-description-color`, `--slotted-side-navigation-description-gap`, `--slotted-side-navigation-dot-color`, `--slotted-side-navigation-dot-size`, `--slotted-side-navigation-flyout-border-color`, `--slotted-side-navigation-flyout-measure`, `--slotted-side-navigation-flyout-min-measure`, `--slotted-side-navigation-flyout-radius`, `--slotted-side-navigation-flyout-shadow`, `--slotted-side-navigation-flyout-surface`, `--slotted-side-navigation-guide-color`, `--slotted-side-navigation-hover-background`, `--slotted-side-navigation-hover-color`, `--slotted-side-navigation-indent`, `--slotted-side-navigation-indent-step`, `--slotted-side-navigation-radius`, `--slotted-side-navigation-row-gap`, `--slotted-side-navigation-section-color`, `--slotted-side-navigation-section-gap`, `--slotted-side-navigation-section-label-gap`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-space-4`, `--slotted-space-5`, `--slotted-space-7`, `--slotted-surface-raised`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-surface`, `--slotted-tone-accent-text`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-z-index-popover`
142
+ `--slotted-app-shell-row-font-size`, `--slotted-app-shell-row-gap`, `--slotted-app-shell-row-height`, `--slotted-app-shell-row-inset`, `--slotted-app-shell-row-line-height`, `--slotted-app-shell-row-mark`, `--slotted-app-shell-row-ring-inset`, `--slotted-border-subtle`, `--slotted-border-width-thin`, `--slotted-control-font-family`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-current-edge`, `--slotted-disabled-foreground`, `--slotted-duration-instant`, `--slotted-duration-medium`, `--slotted-duration-short`, `--slotted-easing-enter`, `--slotted-easing-exit`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-size-md`, `--slotted-font-size-sm`, `--slotted-font-size-xs`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-font-weight-semibold`, `--slotted-line-height-md`, `--slotted-line-height-sm`, `--slotted-line-height-xs`, `--slotted-radius-full`, `--slotted-radius-lg`, `--slotted-radius-md`, `--slotted-shadow-md`, `--slotted-side-navigation-active-background`, `--slotted-side-navigation-color`, `--slotted-side-navigation-current-background`, `--slotted-side-navigation-current-color`, `--slotted-side-navigation-current-description-color`, `--slotted-side-navigation-current-edge`, `--slotted-side-navigation-description-color`, `--slotted-side-navigation-description-gap`, `--slotted-side-navigation-dot-color`, `--slotted-side-navigation-dot-size`, `--slotted-side-navigation-flyout-border-color`, `--slotted-side-navigation-flyout-measure`, `--slotted-side-navigation-flyout-min-measure`, `--slotted-side-navigation-flyout-radius`, `--slotted-side-navigation-flyout-shadow`, `--slotted-side-navigation-flyout-surface`, `--slotted-side-navigation-guide-color`, `--slotted-side-navigation-hover-background`, `--slotted-side-navigation-hover-color`, `--slotted-side-navigation-indent`, `--slotted-side-navigation-indent-step`, `--slotted-side-navigation-radius`, `--slotted-side-navigation-row-gap`, `--slotted-side-navigation-section-color`, `--slotted-side-navigation-section-gap`, `--slotted-side-navigation-section-label-gap`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-space-4`, `--slotted-space-5`, `--slotted-space-7`, `--slotted-surface-raised`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-surface`, `--slotted-tone-accent-text`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-z-index-popover`
143
143
 
144
144
  ## Examples
145
145
 
@@ -1128,7 +1128,7 @@ Excerpt — not a complete module
1128
1128
  <tbody slTableLoader [skeletonRows]="5"></tbody>
1129
1129
  } @else if (rows().length === 0) {
1130
1130
  <tbody slTableBody>
1131
- <tr slTableRow>
1131
+ <tr>
1132
1132
  <td slTableEmpty>
1133
1133
  <section slResultState status="no-results"></section>
1134
1134
  </td>
@@ -1376,7 +1376,7 @@ import {
1376
1376
  </tr>
1377
1377
  </thead>
1378
1378
  <tbody slTableBody>
1379
- <tr slTableRow>
1379
+ <tr>
1380
1380
  <td slTableEmpty>
1381
1381
  <section slResultState status="empty">
1382
1382
  <div slResultStateContent>
package/docs/table.json CHANGED
@@ -1022,7 +1022,7 @@
1022
1022
  "title": "Nothing yet, nothing at all, and something arriving",
1023
1023
  "note": "A first load draws skeleton rows, so the shape is visible before the content. A refresh over rows already read writes aria-busy and dims them without moving anything — a reader looking at row forty stays there.",
1024
1024
  "language": "html",
1025
- "source": "@if (loading() && rows().length === 0) {\n <tbody slTableLoader [skeletonRows]=\"5\"></tbody>\n} @else if (rows().length === 0) {\n <tbody slTableBody>\n <tr slTableRow>\n <td slTableEmpty>\n <section slResultState status=\"no-results\"></section>\n </td>\n </tr>\n </tbody>\n} @else {\n <tbody slTableBody></tbody>\n}\n",
1025
+ "source": "@if (loading() && rows().length === 0) {\n <tbody slTableLoader [skeletonRows]=\"5\"></tbody>\n} @else if (rows().length === 0) {\n <tbody slTableBody>\n <tr>\n <td slTableEmpty>\n <section slResultState status=\"no-results\"></section>\n </td>\n </tr>\n </tbody>\n} @else {\n <tbody slTableBody></tbody>\n}\n",
1026
1026
  "verdict": "excerpt"
1027
1027
  },
1028
1028
  {
@@ -1086,7 +1086,7 @@
1086
1086
  "title": "empty.ts",
1087
1087
  "note": null,
1088
1088
  "language": "ts",
1089
- "source": "import { Component } from '@angular/core';\nimport {\n SlResultState,\n SlResultStateContent,\n SlResultStateDescription,\n SlResultStateTitle,\n} from '@slotted/angular/result-state';\nimport {\n SlTable,\n SlTableBody,\n SlTableColumnHeader,\n SlTableContent,\n SlTableEmpty,\n SlTableHead,\n SlTableRow,\n} from '@slotted/angular/table';\n\n@Component({\n selector: 'app-table-empty',\n imports: [\n SlResultState,\n SlResultStateContent,\n SlResultStateDescription,\n SlResultStateTitle,\n SlTable,\n SlTableBody,\n SlTableColumnHeader,\n SlTableContent,\n SlTableEmpty,\n SlTableHead,\n SlTableRow,\n ],\n template: `\n <div slTable [columns]=\"4\">\n <div slTableContent aria-label=\"Returns this week\">\n <thead slTableHead>\n <tr slTableRow>\n <th slTableColumnHeader>Return</th>\n <th slTableColumnHeader>Order</th>\n <th slTableColumnHeader>Customer</th>\n <th slTableColumnHeader numeric>Refund</th>\n </tr>\n </thead>\n <tbody slTableBody>\n <tr slTableRow>\n <td slTableEmpty>\n <section slResultState status=\"empty\">\n <div slResultStateContent>\n <h3 slResultStateTitle>No returns this week</h3>\n <p slResultStateDescription>\n Returns appear here as soon as a customer opens one from their order page.\n </p>\n </div>\n </section>\n </td>\n </tr>\n </tbody>\n </div>\n </div>\n `,\n})\nexport class TableEmptyExample {}\n",
1089
+ "source": "import { Component } from '@angular/core';\nimport {\n SlResultState,\n SlResultStateContent,\n SlResultStateDescription,\n SlResultStateTitle,\n} from '@slotted/angular/result-state';\nimport {\n SlTable,\n SlTableBody,\n SlTableColumnHeader,\n SlTableContent,\n SlTableEmpty,\n SlTableHead,\n SlTableRow,\n} from '@slotted/angular/table';\n\n@Component({\n selector: 'app-table-empty',\n imports: [\n SlResultState,\n SlResultStateContent,\n SlResultStateDescription,\n SlResultStateTitle,\n SlTable,\n SlTableBody,\n SlTableColumnHeader,\n SlTableContent,\n SlTableEmpty,\n SlTableHead,\n SlTableRow,\n ],\n template: `\n <div slTable [columns]=\"4\">\n <div slTableContent aria-label=\"Returns this week\">\n <thead slTableHead>\n <tr slTableRow>\n <th slTableColumnHeader>Return</th>\n <th slTableColumnHeader>Order</th>\n <th slTableColumnHeader>Customer</th>\n <th slTableColumnHeader numeric>Refund</th>\n </tr>\n </thead>\n <tbody slTableBody>\n <tr>\n <td slTableEmpty>\n <section slResultState status=\"empty\">\n <div slResultStateContent>\n <h3 slResultStateTitle>No returns this week</h3>\n <p slResultStateDescription>\n Returns appear here as soon as a customer opens one from their order page.\n </p>\n </div>\n </section>\n </td>\n </tr>\n </tbody>\n </div>\n </div>\n `,\n})\nexport class TableEmptyExample {}\n",
1090
1090
  "verdict": "example"
1091
1091
  },
1092
1092
  {
@@ -597,7 +597,7 @@ class SlActionBarOverflow {
597
597
  <ng-container *ngTemplateOutlet="bar.counterpart(unit.id)!; injector: surfaceInjector()" />
598
598
  }
599
599
  </sl-menu>
600
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "directive", type: SlMenuSeparator, selector: "hr[slMenuSeparator]" }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
600
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "width", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "directive", type: SlMenuSeparator, selector: "hr[slMenuSeparator]" }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
601
601
  }
602
602
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlActionBarOverflow, decorators: [{
603
603
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-action-bar.mjs","sources":["../../action-bar/src/action-bar-defaults.ts","../../action-bar/src/action-bar.ts","../../action-bar/src/action-bar-overflow.ts","../../action-bar/src/slotted-angular-action-bar.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** Whether the bar paints a ground and a rule of its own. */\nexport type ActionBarVariant = 'plain' | 'raised';\n\n/** The step the bar's own inset, gap and separator sit at. */\nexport type ActionBarSize = 'sm' | 'md' | 'lg';\n\n/** Where the run of actions sits in the room left after the status. */\nexport type ActionBarAlign = 'end' | 'start' | 'center';\n\n/**\n * Where an action stands in the order of giving way.\n *\n * The five are adapted from `sap.m.OverflowToolbarPriority`, and they exist here\n * and not in `toolbar` because the two bars read in opposite directions. In a\n * bar of tools the first control is the most used, so giving way from the end\n * gives up the least used one. In a bar of actions the action that confirms is\n * at the **end** of the line, so giving way from the end would give up Save\n * first.\n *\n * - `pinned` never gives way.\n * - `high` gives way after `low` and `hide`, into the surface.\n * - `low` is the first rank to reach the surface, and the default for an action\n * that declares a counterpart.\n * - `hide` gives way before every other rank and is **not** offered in the\n * surface: a control that is not worth a row in a menu.\n * - `always` is never drawn in the bar; its counterpart is in the surface from\n * the start.\n */\nexport type ActionBarPriority = 'pinned' | 'high' | 'low' | 'hide' | 'always';\n\nexport interface ActionBarDefaults {\n align: ActionBarAlign;\n size: ActionBarSize;\n sticky: boolean;\n variant: ActionBarVariant;\n}\n\nconst FALLBACK: ActionBarDefaults = {\n align: 'end',\n size: 'md',\n sticky: false,\n variant: 'plain',\n};\n\nexport const ACTION_BAR_DEFAULTS = new InjectionToken<ActionBarDefaults>(\n 'slotted action bar defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its action bars are drawn — a product whose\n * bars are all raised, compact and stuck to the bottom of the page says so in\n * one place rather than on every bar. A bar that states any of them itself\n * still wins.\n */\nexport function provideActionBarDefaults(defaults: Partial<ActionBarDefaults>) {\n return {\n provide: ACTION_BAR_DEFAULTS,\n useFactory: (): ActionBarDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a bar renders as here, before it states anything of its own. */\nexport function injectActionBarDefaults(): ActionBarDefaults {\n return inject(ACTION_BAR_DEFAULTS);\n}\n","import { createCollapse } from '@slotted/core/overflow';\nimport type { CollapseHandle } from '@slotted/core/overflow';\nimport { createPresence } from '@slotted/core/presence';\nimport type { PresenceStatus } from '@slotted/core/presence';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';\nimport type { ButtonDefaults } from '@slotted/angular/button';\n\nimport { injectActionBarDefaults } from './action-bar-defaults';\nimport type {\n ActionBarAlign,\n ActionBarPriority,\n ActionBarSize,\n ActionBarVariant,\n} from './action-bar-defaults';\n\nexport type {\n ActionBarAlign,\n ActionBarDefaults,\n ActionBarPriority,\n ActionBarSize,\n ActionBarVariant,\n} from './action-bar-defaults';\n\n/**\n * The accessible name of the control that holds what did not fit. A string is\n * used verbatim; a function is given the number of actions behind the control,\n * because three dots say nothing about how much is behind them.\n */\nexport type ActionBarOverflowLabel = string | ((hidden: number) => string);\n\n/** One action the surface holds, in the order the bar holds it. */\nexport interface ActionBarSurfaceUnit {\n readonly id: string;\n readonly separatorBefore: boolean;\n}\n\n/** The attribute that says an action has somewhere to go. */\nexport const ACTION_BAR_UNIT_ATTRIBUTE = 'data-unit';\n\n/** The attribute the measurement reads a rank from. */\nexport const ACTION_BAR_PRIORITY_ATTRIBUTE = 'data-priority';\n\n/**\n * The custom property the stacking query raises, read back by the measurement.\n *\n * The breakpoint is literal because `@container (width < var(--x))` is invalid,\n * and it is written once — in the stylesheet. The binding asks CSS what it\n * decided rather than comparing widths of its own, so the layout and the\n * measurement cannot disagree about where the bar becomes a column.\n */\nexport const ACTION_BAR_STACK_PROPERTY = '--_stacked';\n\n/**\n * Where each rank stands in the order of giving way: the lowest goes first, and\n * position decides inside one rank.\n */\nexport const ACTION_BAR_RANK: Readonly<Record<ActionBarPriority, number>> = Object.freeze({\n always: 0,\n hide: 0,\n high: 2,\n low: 1,\n pinned: 0,\n});\n\nfunction priorityOf(unit: HTMLElement): ActionBarPriority {\n return (unit.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) as ActionBarPriority | null) ?? 'pinned';\n}\n\n/**\n * Everything the run lays out.\n *\n * The trigger is not one of them — a control that took part in its own\n * measurement would be counted twice, and the Angular trigger sits inside a\n * `display: contents` host of its own — and neither is an `always` action, which\n * is never in the bar to give way.\n */\nfunction unitsOf(container: HTMLElement) {\n return [...container.children].filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.getAttribute('data-part') !== 'overflow' &&\n child.querySelector('[data-part=\"overflow\"]') === null &&\n child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) !== 'always',\n );\n}\n\n/**\n * Whether one of the bar's own rules sits between two units that are both in the\n * surface. It is read from the DOM because a separator is a sibling of the units\n * it divides and nothing in the component tree relates them.\n */\nfunction ruleBetween(from: Element, to: Element) {\n for (\n let node = from.nextElementSibling;\n node !== null && node !== to;\n node = node.nextElementSibling\n ) {\n if (node.getAttribute('data-part') === 'separator') return true;\n }\n return false;\n}\n\n/**\n * The one axis the bar hands down to the buttons inside it, through the button\n * family's own defaults token rather than through a second channel of this\n * family's invention. That is what keeps an explicit `size` on a button winning\n * over the bar, because it is the rule `button` already implements.\n *\n * The value is read through a getter so that a button's `computed` tracks the\n * bar's signal: a plain snapshot would fix the step at the moment the first\n * button was created and never move again.\n */\nfunction provideBarStep() {\n return {\n provide: BUTTON_DEFAULTS_TOKEN,\n useFactory: (): ButtonDefaults => {\n const bar = inject(SlActionBar);\n const inherited = inject(BUTTON_DEFAULTS_TOKEN, { skipSelf: true });\n\n return {\n ...inherited,\n get size() {\n return bar.resolvedSize();\n },\n };\n },\n };\n}\n\n/**\n * The actions that finish a task on a page or in a panel.\n *\n * **It is not a composite.** `Tab` reaches every action, in the order the author\n * wrote them, and the arrows are not bound. The controls here are the page's own\n * form actions, and a reader walking a form expects to arrive at Cancel and then\n * at Save; roving focus would make the whole bar one tab stop and put Save\n * behind an arrow key that announces nothing. A strip of ten icon buttons is a\n * `toolbar`, and that family binds the arrows against the APG.\n *\n * **What gives way is decided by rank, not by position**, which is the whole of\n * why this family stands beside `toolbar` rather than configuring it.\n *\n * **The action that confirms does not move.** The run carries an `auto` margin\n * against the bar's end edge, so a message appearing in the status, a button\n * going busy and a permission filter removing a control all move what is\n * *before* the last action and never the last action itself.\n */\n@Component({\n selector: '[slActionBar]',\n standalone: true,\n exportAs: 'slActionBar',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/action-bar/action-bar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideBarStep()],\n host: {\n 'data-ui': 'action-bar',\n 'data-part': 'root',\n '[attr.role]': 'role()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-align]': 'resolvedAlign()',\n '[attr.data-sticky]': 'resolvedSticky() ? \"\" : null',\n '[attr.data-collapsed]': 'collapsedCount()',\n '[attr.data-status]': 'presenceAttribute()',\n '[style.display]': 'mounted() ? null : \"none\"',\n },\n})\nexport class SlActionBar {\n readonly variant = input<ActionBarVariant | undefined>(undefined);\n readonly size = input<ActionBarSize | undefined>(undefined);\n readonly align = input<ActionBarAlign | undefined>(undefined);\n readonly sticky = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * Whether the bar belongs on screen at all. A bulk bar exists while there is a\n * selection and a contextual save bar while there are unsaved changes.\n *\n * It is an input rather than a two-way value: the bar never asks to appear or\n * to leave, so there is nothing to cancel.\n */\n readonly present = input<boolean, boolean | string | undefined>(true, {\n transform: (state) => (state === undefined ? true : booleanAttribute(state)),\n });\n\n /**\n * Reports how many actions gave way, once per change. The collapsed set is a\n * measurement rather than a value, so there is no two-way binding over it.\n */\n readonly overflowChange = output<number>();\n\n private readonly defaults = injectActionBarDefaults();\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n\n /**\n * A consumer who has ten icon-only actions and wants the composite may write\n * `role=\"toolbar\"` themselves, and what they wrote survives the host binding.\n * The arrows are still not bound, so that consumer wants `toolbar`.\n */\n private readonly statedRole = inject(new HostAttributeToken('role'), { optional: true });\n\n private readonly counterparts = signal(new Map<string, TemplateRef<unknown>>());\n private readonly trigger = signal<HTMLElement | null>(null);\n private readonly actions = signal<HTMLElement | null>(null);\n private readonly stacked = signal(false);\n private readonly ready = signal(false);\n private collapse: CollapseHandle | null = null;\n\n /** What the surface holds: the collapsed actions and every `always` one. */\n readonly surfaceUnits = signal<readonly ActionBarSurfaceUnit[]>([]);\n\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n readonly resolvedSticky = computed(() => this.sticky() ?? this.defaults.sticky);\n\n protected readonly role = computed(() => this.statedRole ?? 'group');\n\n private readonly status = signal<PresenceStatus>('open');\n protected readonly mounted = computed(() => this.status() !== 'unmounted');\n protected readonly presenceAttribute = computed(() => {\n const status = this.status();\n return status === 'open' || status === 'unmounted' ? null : status;\n });\n\n protected readonly collapsedCount = computed(() =>\n this.trigger() === null ? null : String(this.surfaceUnits().length),\n );\n\n /** Records what an action becomes in the surface. */\n registerUnit(id: string, template: TemplateRef<unknown>) {\n this.counterparts.update((held) => new Map(held).set(id, template));\n }\n\n releaseUnit(id: string) {\n this.counterparts.update((held) => {\n const next = new Map(held);\n next.delete(id);\n return next;\n });\n }\n\n counterpart(id: string) {\n return this.counterparts().get(id) ?? null;\n }\n\n /** The control that opens what did not fit. The bar measures it. */\n registerTrigger(element: HTMLElement | null) {\n this.trigger.set(element);\n }\n\n /** The run, which is the box the collapse measures rather than the root. */\n registerActions(element: HTMLElement | null) {\n this.actions.set(element);\n }\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n /**\n * The bar is held through its exit, so a bulk bar slides out rather than\n * vanishing. Carbon keeps its batch bar mounted and writes `aria-hidden` on\n * the root instead, which leaves the buttons inside reachable by `Tab`.\n */\n const presence = createPresence({\n present: true,\n skipInitialAnimation: true,\n onStatusChange: (next) => this.status.set(next),\n });\n presence.setNode(this.element);\n destroyRef.onDestroy(() => presence.destroy());\n\n effect(() => presence.sync(this.present()));\n\n afterNextRender(() => this.ready.set(true));\n\n /**\n * Whether the bar is drawn as a column. The number lives in the stylesheet's\n * container query, and this asks CSS what it decided rather than comparing\n * widths against a copy of it.\n */\n effect((onCleanup) => {\n const container = this.actions();\n if (container === null || !this.ready()) return;\n\n const read = () => {\n const view = container.ownerDocument?.defaultView;\n const raised =\n view?.getComputedStyle(container).getPropertyValue(ACTION_BAR_STACK_PROPERTY).trim() ===\n '1';\n if (this.stacked() !== raised) this.stacked.set(raised);\n };\n\n read();\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(read);\n observer.observe(container);\n onCleanup(() => observer.disconnect());\n });\n\n /**\n * The collapse. It does not run while the bar is a column: a column has room\n * for every action, and a surface holding what did not fit would be a menu\n * for nothing. Leaving the effect destroys the handle, which reveals every\n * unit it had hidden.\n */\n effect((onCleanup) => {\n const container = this.actions();\n const trigger = this.trigger();\n if (container === null || !this.ready() || this.stacked()) return;\n\n const sync = (collapsedUnits: readonly HTMLElement[]) => {\n const collapsed = new Set(collapsedUnits);\n const held = [...container.children].filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE) &&\n (collapsed.has(child) ||\n child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) === 'always'),\n );\n\n this.surfaceUnits.set(\n held.map((unit, index) => {\n const previous = held[index - 1];\n return {\n id: unit.getAttribute(ACTION_BAR_UNIT_ATTRIBUTE) ?? '',\n separatorBefore: previous !== undefined && ruleBetween(previous, unit),\n };\n }),\n );\n };\n\n const handle: CollapseHandle = createCollapse(container, {\n /* A pinned action has nowhere to go. Every other rank does, and `hide`'s\n somewhere is nowhere — it gives way and is not offered in the\n surface. */\n collapsible: (unit) => priorityOf(unit) !== 'pinned',\n divides: (unit) => unit.getAttribute('data-part') === 'separator',\n onChange: (units) => {\n sync(units);\n this.overflowChange.emit(\n units.filter((unit) => unit.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE)).length,\n );\n },\n rank: (unit) => ACTION_BAR_RANK[priorityOf(unit)],\n trigger: () => trigger,\n /* An `always` action is in the surface while every other one still fits,\n and a control that hid itself then would be a menu nobody can open. */\n triggerAlways: () =>\n container.querySelector(`[${ACTION_BAR_PRIORITY_ATTRIBUTE}='always']`) !== null,\n units: () => unitsOf(container),\n });\n\n this.collapse = handle;\n sync(handle.collapsed());\n\n /**\n * An action arriving or leaving invalidates the measurement — a bar that\n * grows a button collapses one — and an `always` action arriving changes\n * what the surface holds without changing what collapsed.\n */\n const observer = new MutationObserver(() => {\n handle.refresh();\n sync(handle.collapsed());\n });\n observer.observe(container, { childList: true, subtree: true });\n\n onCleanup(() => {\n observer.disconnect();\n handle.destroy();\n this.collapse = null;\n this.surfaceUnits.set([]);\n });\n });\n }\n\n /** Measures again, after the consumer changed something the DOM cannot report. */\n refresh() {\n this.collapse?.refresh();\n }\n}\n\n/**\n * The sentence at the start of the bar: a dirty-state marker, a timestamp, the\n * count of what is selected and the control that selects the rest.\n *\n * It is a slot rather than a component: the library already has\n * `inline-message`, `status-indicator` and `badge`, and `table` already owns the\n * selection and its count.\n */\n@Directive({\n selector: '[slActionBarStatus]',\n standalone: true,\n exportAs: 'slActionBarStatus',\n host: { 'data-part': 'status' },\n})\nexport class SlActionBarStatus {}\n\n/**\n * The run of actions, and the box the collapse measures.\n *\n * It is the run rather than the root, because the root is the query container\n * and a container is a container for its descendants and not for itself — so the\n * rule that turns the run into a column has to reach a descendant.\n */\n@Directive({\n selector: '[slActionBarActions]',\n standalone: true,\n exportAs: 'slActionBarActions',\n host: { 'data-part': 'actions' },\n})\nexport class SlActionBarActions {\n private readonly bar = inject(SlActionBar);\n\n constructor() {\n const element = inject(ElementRef<HTMLElement>).nativeElement;\n this.bar.registerActions(element);\n inject(DestroyRef).onDestroy(() => this.bar.registerActions(null));\n }\n}\n\n/**\n * One action the bar may give up, its rank, and what it becomes when it goes.\n *\n * The rank and the counterpart are one fact seen from two sides. A control with\n * nothing to become in the surface is pinned — it has nowhere to go, which is\n * why the action that confirms stays visible — and a rank that needs somewhere\n * to go and has nowhere behaves as pinned too, so a consumer error leaves the\n * control on the bar rather than hiding it silently.\n */\n@Directive({\n selector: '[slActionBarAction]',\n standalone: true,\n exportAs: 'slActionBarAction',\n host: {\n 'data-part': 'action',\n '[attr.data-unit]': 'unitId()',\n '[attr.data-priority]': 'resolvedPriority()',\n '[attr.hidden]': 'resolvedPriority() === \"always\" ? \"\" : null',\n },\n})\nexport class SlActionBarAction {\n /**\n * What the action becomes in the surface when the bar has no room for it.\n *\n * It is deliberately not called `overflow`: that word names what a container\n * does with more content than it has room for, and one term with two meanings\n * is the ambiguity the contract exists to prevent.\n */\n readonly counterpart = input<TemplateRef<unknown> | undefined>(undefined, {\n alias: 'slActionBarActionCounterpart',\n });\n\n /**\n * Where this action stands in the order of giving way.\n *\n * It is the selector's own value, so the terse form reads as the sentence it\n * is — `slActionBarAction=\"high\"`. A bare `slActionBarAction` hands the\n * directive an empty string, which is the attribute being present rather than\n * a rank, and the transform reads it as unstated.\n */\n readonly priority = input<ActionBarPriority | undefined, ActionBarPriority | '' | undefined>(\n undefined,\n { alias: 'slActionBarAction', transform: (rank) => (rank === '' ? undefined : rank) },\n );\n\n private readonly bar = inject(SlActionBar, { optional: true });\n private readonly identity = `slotted-action-bar-unit-${(unitCount += 1)}`;\n\n protected readonly unitId = computed(() =>\n this.counterpart() === undefined ? null : this.identity,\n );\n\n readonly resolvedPriority = computed<ActionBarPriority>(() => {\n const stated = this.priority();\n const declared = this.counterpart() !== undefined;\n if (stated === undefined) return declared ? 'low' : 'pinned';\n if (stated === 'hide' || stated === 'pinned') return stated;\n return declared ? stated : 'pinned';\n });\n\n constructor() {\n const bar = this.bar;\n effect(() => {\n const template = this.counterpart();\n if (bar === null) return;\n if (template === undefined) bar.releaseUnit(this.identity);\n else bar.registerUnit(this.identity, template);\n });\n\n inject(DestroyRef).onDestroy(() => bar?.releaseUnit(this.identity));\n }\n}\n\nlet unitCount = 0;\n\n/**\n * A hairline between two runs of actions.\n *\n * It is the answer to the one line of `docs/component-features.md` §5 that names\n * no mechanism: a destructive action does not sit flush against a frequent one.\n * It is a part of this family rather than a `divider` because its geometry\n * belongs to the bar.\n */\n@Directive({\n selector: '[slActionBarSeparator]',\n standalone: true,\n exportAs: 'slActionBarSeparator',\n host: { 'data-part': 'separator', role: 'separator', 'aria-orientation': 'vertical' },\n})\nexport class SlActionBarSeparator {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n ViewEncapsulation,\n viewChild,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuSeparator, SlMenuTrigger } from '@slotted/angular/menu';\nimport type { MenuAlign, MenuSide, MenuSize } from '@slotted/angular/menu';\n\nimport { SlActionBar } from './action-bar';\nimport type { ActionBarOverflowLabel } from './action-bar';\n\n/**\n * The control that opens what did not fit, and the surface holding it.\n *\n * It is `menu`'s own trigger and surface wearing this family's geometry, so the\n * keyboard, the dismissal and the focus return are `menu`'s and are not written\n * twice. What this family adds is the measurement: the bar decides which actions\n * give way, **by rank**, and the counterparts they declared are rendered here in\n * the order the bar holds them — with a separator wherever one of the bar's own\n * rules sits between two of them.\n *\n * The surface also holds every action ranked `always`, which was never drawn in\n * the bar at all. A reader opening the menu sees one list, so the two sources\n * are read together and in the bar's own order.\n *\n * The counterpart is an `ng-template` rendered through `NgTemplateOutlet` only\n * while its action is in the surface, so a menu item that is never reached\n * builds nothing. That is where the two bindings differ most, and it is idiom\n * rather than asymmetry: React's `ReactNode` is built with the element that\n * declares it, which is React's own answer and its own cost.\n *\n * **A template resolves its dependencies where it was written, not where it is\n * rendered.** The counterpart is authored beside the control it replaces, which\n * is outside the surface, so `slMenuItem` would look for the `SlMenu` above the\n * bar and find none. The outlet is therefore given an injector that provides the\n * surface this component draws.\n *\n * The host is `display: contents`, so the `button` below is a child of the run\n * itself: the part that carries the geometry has to be the box the bar lays out.\n *\n * **The `hidden` attribute on the trigger belongs to the bar.** `createCollapse`\n * writes it, because the same measurement that decides whether the control is\n * needed is the one that has to reveal it to read its width.\n */\n@Component({\n selector: 'sl-action-bar-overflow',\n standalone: true,\n exportAs: 'slActionBarOverflow',\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlMenu, SlMenuSeparator, SlMenuTrigger],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n template: `\n <button\n #trigger\n data-part=\"overflow\"\n type=\"button\"\n [slMenuTriggerFor]=\"surface\"\n [attr.aria-label]=\"name()\"\n >\n <span slIcon><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <sl-menu #surface [align]=\"align()\" [side]=\"side()\" [size]=\"size()\">\n @for (unit of bar.surfaceUnits(); track unit.id) {\n @if (unit.separatorBefore) {\n <hr slMenuSeparator />\n }\n <ng-container *ngTemplateOutlet=\"bar.counterpart(unit.id)!; injector: surfaceInjector()\" />\n }\n </sl-menu>\n `,\n})\nexport class SlActionBarOverflow {\n /** Where the surface sits against the trigger. */\n readonly align = input<MenuAlign | undefined>(undefined);\n readonly side = input<MenuSide | undefined>(undefined);\n /** The surface's own measure, which is `menu`'s axis rather than the bar's. */\n readonly size = input<MenuSize | undefined>(undefined);\n /**\n * The accessible name. Defaults to a count — \"3 more actions\" — because the\n * mark says nothing about how much is behind it.\n */\n readonly label = input<ActionBarOverflowLabel | undefined>(undefined);\n\n protected readonly bar = inject(SlActionBar);\n\n /** A name the consumer wrote on the host survives the counted default. */\n private readonly stated = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected readonly name = computed(() => {\n if (this.stated !== null) return this.stated;\n const given = this.label();\n const hidden = this.bar.surfaceUnits().length;\n if (typeof given === 'function') return given(hidden);\n if (given !== undefined) return given;\n return `${hidden} more ${hidden === 1 ? 'action' : 'actions'}`;\n });\n\n private readonly trigger = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private readonly surface = viewChild(SlMenu);\n private readonly injector = inject(Injector);\n\n /**\n * `null` until the view exists, which is also while the surface holds nothing\n * and the outlet renders nothing.\n */\n protected readonly surfaceInjector = computed(() => {\n const menu = this.surface();\n if (menu === undefined) return null;\n return Injector.create({\n parent: this.injector,\n providers: [{ provide: SlMenu, useValue: menu }],\n });\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n const element = this.trigger().nativeElement;\n\n /**\n * `slMenuTriggerFor` binds `[attr.data-part]` and resolves it to `null`\n * for a trigger that is neither a bar's item nor a submenu's, and a host\n * binding of `null` removes the attribute the author wrote. The part is\n * therefore written back after the first change detection, where nothing\n * writes over it again: the expression is a constant, so Angular applies\n * it once. `docs/build-briefing.md` records the rule; `toolbar` is where\n * it was learnt.\n */\n element.setAttribute('data-part', 'overflow');\n\n /* The bar measures the control, so it has to hold it. */\n this.bar.registerTrigger(element);\n });\n destroyRef.onDestroy(() => this.bar.registerTrigger(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-action-bar.mjs","sources":["../../action-bar/src/action-bar-defaults.ts","../../action-bar/src/action-bar.ts","../../action-bar/src/action-bar-overflow.ts","../../action-bar/src/slotted-angular-action-bar.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** Whether the bar paints a ground and a rule of its own. */\nexport type ActionBarVariant = 'plain' | 'raised';\n\n/** The step the bar's own inset, gap and separator sit at. */\nexport type ActionBarSize = 'sm' | 'md' | 'lg';\n\n/** Where the run of actions sits in the room left after the status. */\nexport type ActionBarAlign = 'end' | 'start' | 'center';\n\n/**\n * Where an action stands in the order of giving way.\n *\n * The five are adapted from `sap.m.OverflowToolbarPriority`, and they exist here\n * and not in `toolbar` because the two bars read in opposite directions. In a\n * bar of tools the first control is the most used, so giving way from the end\n * gives up the least used one. In a bar of actions the action that confirms is\n * at the **end** of the line, so giving way from the end would give up Save\n * first.\n *\n * - `pinned` never gives way.\n * - `high` gives way after `low` and `hide`, into the surface.\n * - `low` is the first rank to reach the surface, and the default for an action\n * that declares a counterpart.\n * - `hide` gives way before every other rank and is **not** offered in the\n * surface: a control that is not worth a row in a menu.\n * - `always` is never drawn in the bar; its counterpart is in the surface from\n * the start.\n */\nexport type ActionBarPriority = 'pinned' | 'high' | 'low' | 'hide' | 'always';\n\nexport interface ActionBarDefaults {\n align: ActionBarAlign;\n size: ActionBarSize;\n sticky: boolean;\n variant: ActionBarVariant;\n}\n\nconst FALLBACK: ActionBarDefaults = {\n align: 'end',\n size: 'md',\n sticky: false,\n variant: 'plain',\n};\n\nexport const ACTION_BAR_DEFAULTS = new InjectionToken<ActionBarDefaults>(\n 'slotted action bar defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its action bars are drawn — a product whose\n * bars are all raised, compact and stuck to the bottom of the page says so in\n * one place rather than on every bar. A bar that states any of them itself\n * still wins.\n */\nexport function provideActionBarDefaults(defaults: Partial<ActionBarDefaults>) {\n return {\n provide: ACTION_BAR_DEFAULTS,\n useFactory: (): ActionBarDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a bar renders as here, before it states anything of its own. */\nexport function injectActionBarDefaults(): ActionBarDefaults {\n return inject(ACTION_BAR_DEFAULTS);\n}\n","import { createCollapse } from '@slotted/core/overflow';\nimport type { CollapseHandle } from '@slotted/core/overflow';\nimport { createPresence } from '@slotted/core/presence';\nimport type { PresenceStatus } from '@slotted/core/presence';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';\nimport type { ButtonDefaults } from '@slotted/angular/button';\n\nimport { injectActionBarDefaults } from './action-bar-defaults';\nimport type {\n ActionBarAlign,\n ActionBarPriority,\n ActionBarSize,\n ActionBarVariant,\n} from './action-bar-defaults';\n\nexport type {\n ActionBarAlign,\n ActionBarDefaults,\n ActionBarPriority,\n ActionBarSize,\n ActionBarVariant,\n} from './action-bar-defaults';\n\n/**\n * The accessible name of the control that holds what did not fit. A string is\n * used verbatim; a function is given the number of actions behind the control,\n * because three dots say nothing about how much is behind them.\n */\nexport type ActionBarOverflowLabel = string | ((hidden: number) => string);\n\n/** One action the surface holds, in the order the bar holds it. */\nexport interface ActionBarSurfaceUnit {\n readonly id: string;\n readonly separatorBefore: boolean;\n}\n\n/** The attribute that says an action has somewhere to go. */\nexport const ACTION_BAR_UNIT_ATTRIBUTE = 'data-unit';\n\n/** The attribute the measurement reads a rank from. */\nexport const ACTION_BAR_PRIORITY_ATTRIBUTE = 'data-priority';\n\n/**\n * The custom property the stacking query raises, read back by the measurement.\n *\n * The breakpoint is literal because `@container (width < var(--x))` is invalid,\n * and it is written once — in the stylesheet. The binding asks CSS what it\n * decided rather than comparing widths of its own, so the layout and the\n * measurement cannot disagree about where the bar becomes a column.\n */\nexport const ACTION_BAR_STACK_PROPERTY = '--_stacked';\n\n/**\n * Where each rank stands in the order of giving way: the lowest goes first, and\n * position decides inside one rank.\n */\nexport const ACTION_BAR_RANK: Readonly<Record<ActionBarPriority, number>> = Object.freeze({\n always: 0,\n hide: 0,\n high: 2,\n low: 1,\n pinned: 0,\n});\n\nfunction priorityOf(unit: HTMLElement): ActionBarPriority {\n return (unit.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) as ActionBarPriority | null) ?? 'pinned';\n}\n\n/**\n * Everything the run lays out.\n *\n * The trigger is not one of them — a control that took part in its own\n * measurement would be counted twice, and the Angular trigger sits inside a\n * `display: contents` host of its own — and neither is an `always` action, which\n * is never in the bar to give way.\n */\nfunction unitsOf(container: HTMLElement) {\n return [...container.children].filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.getAttribute('data-part') !== 'overflow' &&\n child.querySelector('[data-part=\"overflow\"]') === null &&\n child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) !== 'always',\n );\n}\n\n/**\n * Whether one of the bar's own rules sits between two units that are both in the\n * surface. It is read from the DOM because a separator is a sibling of the units\n * it divides and nothing in the component tree relates them.\n */\nfunction ruleBetween(from: Element, to: Element) {\n for (\n let node = from.nextElementSibling;\n node !== null && node !== to;\n node = node.nextElementSibling\n ) {\n if (node.getAttribute('data-part') === 'separator') return true;\n }\n return false;\n}\n\n/**\n * The one axis the bar hands down to the buttons inside it, through the button\n * family's own defaults token rather than through a second channel of this\n * family's invention. That is what keeps an explicit `size` on a button winning\n * over the bar, because it is the rule `button` already implements.\n *\n * The value is read through a getter so that a button's `computed` tracks the\n * bar's signal: a plain snapshot would fix the step at the moment the first\n * button was created and never move again.\n */\nfunction provideBarStep() {\n return {\n provide: BUTTON_DEFAULTS_TOKEN,\n useFactory: (): ButtonDefaults => {\n const bar = inject(SlActionBar);\n const inherited = inject(BUTTON_DEFAULTS_TOKEN, { skipSelf: true });\n\n return {\n ...inherited,\n get size() {\n return bar.resolvedSize();\n },\n };\n },\n };\n}\n\n/**\n * The actions that finish a task on a page or in a panel.\n *\n * **It is not a composite.** `Tab` reaches every action, in the order the author\n * wrote them, and the arrows are not bound. The controls here are the page's own\n * form actions, and a reader walking a form expects to arrive at Cancel and then\n * at Save; roving focus would make the whole bar one tab stop and put Save\n * behind an arrow key that announces nothing. A strip of ten icon buttons is a\n * `toolbar`, and that family binds the arrows against the APG.\n *\n * **What gives way is decided by rank, not by position**, which is the whole of\n * why this family stands beside `toolbar` rather than configuring it.\n *\n * **The action that confirms does not move.** The run carries an `auto` margin\n * against the bar's end edge, so a message appearing in the status, a button\n * going busy and a permission filter removing a control all move what is\n * *before* the last action and never the last action itself.\n */\n@Component({\n selector: '[slActionBar]',\n standalone: true,\n exportAs: 'slActionBar',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/action-bar/action-bar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideBarStep()],\n host: {\n 'data-ui': 'action-bar',\n 'data-part': 'root',\n '[attr.role]': 'role()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-align]': 'resolvedAlign()',\n '[attr.data-sticky]': 'resolvedSticky() ? \"\" : null',\n '[attr.data-collapsed]': 'collapsedCount()',\n '[attr.data-status]': 'presenceAttribute()',\n '[style.display]': 'mounted() ? null : \"none\"',\n },\n})\nexport class SlActionBar {\n readonly variant = input<ActionBarVariant | undefined>(undefined);\n readonly size = input<ActionBarSize | undefined>(undefined);\n readonly align = input<ActionBarAlign | undefined>(undefined);\n readonly sticky = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * Whether the bar belongs on screen at all. A bulk bar exists while there is a\n * selection and a contextual save bar while there are unsaved changes.\n *\n * It is an input rather than a two-way value: the bar never asks to appear or\n * to leave, so there is nothing to cancel.\n */\n readonly present = input<boolean, boolean | string | undefined>(true, {\n transform: (state) => (state === undefined ? true : booleanAttribute(state)),\n });\n\n /**\n * Reports how many actions gave way, once per change. The collapsed set is a\n * measurement rather than a value, so there is no two-way binding over it.\n */\n readonly overflowChange = output<number>();\n\n private readonly defaults = injectActionBarDefaults();\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n\n /**\n * A consumer who has ten icon-only actions and wants the composite may write\n * `role=\"toolbar\"` themselves, and what they wrote survives the host binding.\n * The arrows are still not bound, so that consumer wants `toolbar`.\n */\n private readonly statedRole = inject(new HostAttributeToken('role'), { optional: true });\n\n private readonly counterparts = signal(new Map<string, TemplateRef<unknown>>());\n private readonly trigger = signal<HTMLElement | null>(null);\n private readonly actions = signal<HTMLElement | null>(null);\n private readonly stacked = signal(false);\n private readonly ready = signal(false);\n private collapse: CollapseHandle | null = null;\n\n /** What the surface holds: the collapsed actions and every `always` one. */\n readonly surfaceUnits = signal<readonly ActionBarSurfaceUnit[]>([]);\n\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n readonly resolvedSticky = computed(() => this.sticky() ?? this.defaults.sticky);\n\n protected readonly role = computed(() => this.statedRole ?? 'group');\n\n private readonly status = signal<PresenceStatus>('open');\n protected readonly mounted = computed(() => this.status() !== 'unmounted');\n protected readonly presenceAttribute = computed(() => {\n const status = this.status();\n return status === 'open' || status === 'unmounted' ? null : status;\n });\n\n protected readonly collapsedCount = computed(() =>\n this.trigger() === null ? null : String(this.surfaceUnits().length),\n );\n\n /** Records what an action becomes in the surface. */\n registerUnit(id: string, template: TemplateRef<unknown>) {\n this.counterparts.update((held) => new Map(held).set(id, template));\n }\n\n releaseUnit(id: string) {\n this.counterparts.update((held) => {\n const next = new Map(held);\n next.delete(id);\n return next;\n });\n }\n\n counterpart(id: string) {\n return this.counterparts().get(id) ?? null;\n }\n\n /** The control that opens what did not fit. The bar measures it. */\n registerTrigger(element: HTMLElement | null) {\n this.trigger.set(element);\n }\n\n /** The run, which is the box the collapse measures rather than the root. */\n registerActions(element: HTMLElement | null) {\n this.actions.set(element);\n }\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n /**\n * The bar is held through its exit, so a bulk bar slides out rather than\n * vanishing. Carbon keeps its batch bar mounted and writes `aria-hidden` on\n * the root instead, which leaves the buttons inside reachable by `Tab`.\n */\n const presence = createPresence({\n present: true,\n skipInitialAnimation: true,\n onStatusChange: (next) => this.status.set(next),\n });\n presence.setNode(this.element);\n destroyRef.onDestroy(() => presence.destroy());\n\n effect(() => presence.sync(this.present()));\n\n afterNextRender(() => this.ready.set(true));\n\n /**\n * Whether the bar is drawn as a column. The number lives in the stylesheet's\n * container query, and this asks CSS what it decided rather than comparing\n * widths against a copy of it.\n */\n effect((onCleanup) => {\n const container = this.actions();\n if (container === null || !this.ready()) return;\n\n const read = () => {\n const view = container.ownerDocument?.defaultView;\n const raised =\n view?.getComputedStyle(container).getPropertyValue(ACTION_BAR_STACK_PROPERTY).trim() ===\n '1';\n if (this.stacked() !== raised) this.stacked.set(raised);\n };\n\n read();\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(read);\n observer.observe(container);\n onCleanup(() => observer.disconnect());\n });\n\n /**\n * The collapse. It does not run while the bar is a column: a column has room\n * for every action, and a surface holding what did not fit would be a menu\n * for nothing. Leaving the effect destroys the handle, which reveals every\n * unit it had hidden.\n */\n effect((onCleanup) => {\n const container = this.actions();\n const trigger = this.trigger();\n if (container === null || !this.ready() || this.stacked()) return;\n\n const sync = (collapsedUnits: readonly HTMLElement[]) => {\n const collapsed = new Set(collapsedUnits);\n const held = [...container.children].filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE) &&\n (collapsed.has(child) ||\n child.getAttribute(ACTION_BAR_PRIORITY_ATTRIBUTE) === 'always'),\n );\n\n this.surfaceUnits.set(\n held.map((unit, index) => {\n const previous = held[index - 1];\n return {\n id: unit.getAttribute(ACTION_BAR_UNIT_ATTRIBUTE) ?? '',\n separatorBefore: previous !== undefined && ruleBetween(previous, unit),\n };\n }),\n );\n };\n\n const handle: CollapseHandle = createCollapse(container, {\n /* A pinned action has nowhere to go. Every other rank does, and `hide`'s\n somewhere is nowhere — it gives way and is not offered in the\n surface. */\n collapsible: (unit) => priorityOf(unit) !== 'pinned',\n divides: (unit) => unit.getAttribute('data-part') === 'separator',\n onChange: (units) => {\n sync(units);\n this.overflowChange.emit(\n units.filter((unit) => unit.hasAttribute(ACTION_BAR_UNIT_ATTRIBUTE)).length,\n );\n },\n rank: (unit) => ACTION_BAR_RANK[priorityOf(unit)],\n trigger: () => trigger,\n /* An `always` action is in the surface while every other one still fits,\n and a control that hid itself then would be a menu nobody can open. */\n triggerAlways: () =>\n container.querySelector(`[${ACTION_BAR_PRIORITY_ATTRIBUTE}='always']`) !== null,\n units: () => unitsOf(container),\n });\n\n this.collapse = handle;\n sync(handle.collapsed());\n\n /**\n * An action arriving or leaving invalidates the measurement — a bar that\n * grows a button collapses one — and an `always` action arriving changes\n * what the surface holds without changing what collapsed.\n */\n const observer = new MutationObserver(() => {\n handle.refresh();\n sync(handle.collapsed());\n });\n observer.observe(container, { childList: true, subtree: true });\n\n onCleanup(() => {\n observer.disconnect();\n handle.destroy();\n this.collapse = null;\n this.surfaceUnits.set([]);\n });\n });\n }\n\n /** Measures again, after the consumer changed something the DOM cannot report. */\n refresh() {\n this.collapse?.refresh();\n }\n}\n\n/**\n * The sentence at the start of the bar: a dirty-state marker, a timestamp, the\n * count of what is selected and the control that selects the rest.\n *\n * It is a slot rather than a component: the library already has\n * `inline-message`, `status-indicator` and `badge`, and `table` already owns the\n * selection and its count.\n */\n@Directive({\n selector: '[slActionBarStatus]',\n standalone: true,\n exportAs: 'slActionBarStatus',\n host: { 'data-part': 'status' },\n})\nexport class SlActionBarStatus {}\n\n/**\n * The run of actions, and the box the collapse measures.\n *\n * It is the run rather than the root, because the root is the query container\n * and a container is a container for its descendants and not for itself — so the\n * rule that turns the run into a column has to reach a descendant.\n */\n@Directive({\n selector: '[slActionBarActions]',\n standalone: true,\n exportAs: 'slActionBarActions',\n host: { 'data-part': 'actions' },\n})\nexport class SlActionBarActions {\n private readonly bar = inject(SlActionBar);\n\n constructor() {\n const element = inject(ElementRef<HTMLElement>).nativeElement;\n this.bar.registerActions(element);\n inject(DestroyRef).onDestroy(() => this.bar.registerActions(null));\n }\n}\n\n/**\n * One action the bar may give up, its rank, and what it becomes when it goes.\n *\n * The rank and the counterpart are one fact seen from two sides. A control with\n * nothing to become in the surface is pinned — it has nowhere to go, which is\n * why the action that confirms stays visible — and a rank that needs somewhere\n * to go and has nowhere behaves as pinned too, so a consumer error leaves the\n * control on the bar rather than hiding it silently.\n */\n@Directive({\n selector: '[slActionBarAction]',\n standalone: true,\n exportAs: 'slActionBarAction',\n host: {\n 'data-part': 'action',\n '[attr.data-unit]': 'unitId()',\n '[attr.data-priority]': 'resolvedPriority()',\n '[attr.hidden]': 'resolvedPriority() === \"always\" ? \"\" : null',\n },\n})\nexport class SlActionBarAction {\n /**\n * What the action becomes in the surface when the bar has no room for it.\n *\n * It is deliberately not called `overflow`: that word names what a container\n * does with more content than it has room for, and one term with two meanings\n * is the ambiguity the contract exists to prevent.\n */\n readonly counterpart = input<TemplateRef<unknown> | undefined>(undefined, {\n alias: 'slActionBarActionCounterpart',\n });\n\n /**\n * Where this action stands in the order of giving way.\n *\n * It is the selector's own value, so the terse form reads as the sentence it\n * is — `slActionBarAction=\"high\"`. A bare `slActionBarAction` hands the\n * directive an empty string, which is the attribute being present rather than\n * a rank, and the transform reads it as unstated.\n */\n readonly priority = input<ActionBarPriority | undefined, ActionBarPriority | '' | undefined>(\n undefined,\n { alias: 'slActionBarAction', transform: (rank) => (rank === '' ? undefined : rank) },\n );\n\n private readonly bar = inject(SlActionBar, { optional: true });\n private readonly identity = `slotted-action-bar-unit-${(unitCount += 1)}`;\n\n protected readonly unitId = computed(() =>\n this.counterpart() === undefined ? null : this.identity,\n );\n\n readonly resolvedPriority = computed<ActionBarPriority>(() => {\n const stated = this.priority();\n const declared = this.counterpart() !== undefined;\n if (stated === undefined) return declared ? 'low' : 'pinned';\n if (stated === 'hide' || stated === 'pinned') return stated;\n return declared ? stated : 'pinned';\n });\n\n constructor() {\n const bar = this.bar;\n effect(() => {\n const template = this.counterpart();\n if (bar === null) return;\n if (template === undefined) bar.releaseUnit(this.identity);\n else bar.registerUnit(this.identity, template);\n });\n\n inject(DestroyRef).onDestroy(() => bar?.releaseUnit(this.identity));\n }\n}\n\nlet unitCount = 0;\n\n/**\n * A hairline between two runs of actions.\n *\n * It is the answer to the one line of `docs/component-features.md` §5 that names\n * no mechanism: a destructive action does not sit flush against a frequent one.\n * It is a part of this family rather than a `divider` because its geometry\n * belongs to the bar.\n */\n@Directive({\n selector: '[slActionBarSeparator]',\n standalone: true,\n exportAs: 'slActionBarSeparator',\n host: { 'data-part': 'separator', role: 'separator', 'aria-orientation': 'vertical' },\n})\nexport class SlActionBarSeparator {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n ViewEncapsulation,\n viewChild,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuSeparator, SlMenuTrigger } from '@slotted/angular/menu';\nimport type { MenuAlign, MenuSide, MenuSize } from '@slotted/angular/menu';\n\nimport { SlActionBar } from './action-bar';\nimport type { ActionBarOverflowLabel } from './action-bar';\n\n/**\n * The control that opens what did not fit, and the surface holding it.\n *\n * It is `menu`'s own trigger and surface wearing this family's geometry, so the\n * keyboard, the dismissal and the focus return are `menu`'s and are not written\n * twice. What this family adds is the measurement: the bar decides which actions\n * give way, **by rank**, and the counterparts they declared are rendered here in\n * the order the bar holds them — with a separator wherever one of the bar's own\n * rules sits between two of them.\n *\n * The surface also holds every action ranked `always`, which was never drawn in\n * the bar at all. A reader opening the menu sees one list, so the two sources\n * are read together and in the bar's own order.\n *\n * The counterpart is an `ng-template` rendered through `NgTemplateOutlet` only\n * while its action is in the surface, so a menu item that is never reached\n * builds nothing. That is where the two bindings differ most, and it is idiom\n * rather than asymmetry: React's `ReactNode` is built with the element that\n * declares it, which is React's own answer and its own cost.\n *\n * **A template resolves its dependencies where it was written, not where it is\n * rendered.** The counterpart is authored beside the control it replaces, which\n * is outside the surface, so `slMenuItem` would look for the `SlMenu` above the\n * bar and find none. The outlet is therefore given an injector that provides the\n * surface this component draws.\n *\n * The host is `display: contents`, so the `button` below is a child of the run\n * itself: the part that carries the geometry has to be the box the bar lays out.\n *\n * **The `hidden` attribute on the trigger belongs to the bar.** `createCollapse`\n * writes it, because the same measurement that decides whether the control is\n * needed is the one that has to reveal it to read its width.\n */\n@Component({\n selector: 'sl-action-bar-overflow',\n standalone: true,\n exportAs: 'slActionBarOverflow',\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlMenu, SlMenuSeparator, SlMenuTrigger],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n template: `\n <button\n #trigger\n data-part=\"overflow\"\n type=\"button\"\n [slMenuTriggerFor]=\"surface\"\n [attr.aria-label]=\"name()\"\n >\n <span slIcon><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <sl-menu #surface [align]=\"align()\" [side]=\"side()\" [size]=\"size()\">\n @for (unit of bar.surfaceUnits(); track unit.id) {\n @if (unit.separatorBefore) {\n <hr slMenuSeparator />\n }\n <ng-container *ngTemplateOutlet=\"bar.counterpart(unit.id)!; injector: surfaceInjector()\" />\n }\n </sl-menu>\n `,\n})\nexport class SlActionBarOverflow {\n /** Where the surface sits against the trigger. */\n readonly align = input<MenuAlign | undefined>(undefined);\n readonly side = input<MenuSide | undefined>(undefined);\n /** The surface's own measure, which is `menu`'s axis rather than the bar's. */\n readonly size = input<MenuSize | undefined>(undefined);\n /**\n * The accessible name. Defaults to a count — \"3 more actions\" — because the\n * mark says nothing about how much is behind it.\n */\n readonly label = input<ActionBarOverflowLabel | undefined>(undefined);\n\n protected readonly bar = inject(SlActionBar);\n\n /** A name the consumer wrote on the host survives the counted default. */\n private readonly stated = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected readonly name = computed(() => {\n if (this.stated !== null) return this.stated;\n const given = this.label();\n const hidden = this.bar.surfaceUnits().length;\n if (typeof given === 'function') return given(hidden);\n if (given !== undefined) return given;\n return `${hidden} more ${hidden === 1 ? 'action' : 'actions'}`;\n });\n\n private readonly trigger = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private readonly surface = viewChild(SlMenu);\n private readonly injector = inject(Injector);\n\n /**\n * `null` until the view exists, which is also while the surface holds nothing\n * and the outlet renders nothing.\n */\n protected readonly surfaceInjector = computed(() => {\n const menu = this.surface();\n if (menu === undefined) return null;\n return Injector.create({\n parent: this.injector,\n providers: [{ provide: SlMenu, useValue: menu }],\n });\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n const element = this.trigger().nativeElement;\n\n /**\n * `slMenuTriggerFor` binds `[attr.data-part]` and resolves it to `null`\n * for a trigger that is neither a bar's item nor a submenu's, and a host\n * binding of `null` removes the attribute the author wrote. The part is\n * therefore written back after the first change detection, where nothing\n * writes over it again: the expression is a constant, so Angular applies\n * it once. `docs/build-briefing.md` records the rule; `toolbar` is where\n * it was learnt.\n */\n element.setAttribute('data-part', 'overflow');\n\n /* The bar measures the control, so it has to hold it. */\n this.bar.registerTrigger(element);\n });\n destroyRef.onDestroy(() => this.bar.registerTrigger(null));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}