@slotted/angular 0.1.0-beta.2 → 0.1.0-beta.4

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 (150) hide show
  1. package/docs/app-shell.json +1 -1
  2. package/docs/button-group.json +1 -0
  3. package/docs/button-group.md +1 -1
  4. package/docs/button.json +45 -11
  5. package/docs/button.md +10 -6
  6. package/docs/calendar.json +7 -0
  7. package/docs/calendar.md +1 -0
  8. package/docs/chart.json +7 -0
  9. package/docs/chart.md +1 -0
  10. package/docs/currency-field.json +32 -1
  11. package/docs/currency-field.md +4 -1
  12. package/docs/date-field.json +8 -1
  13. package/docs/date-field.md +2 -1
  14. package/docs/date-picker.examples.md +36 -0
  15. package/docs/date-picker.json +20 -5
  16. package/docs/date-picker.md +5 -4
  17. package/docs/dialog.examples.md +20 -0
  18. package/docs/dialog.json +14 -2
  19. package/docs/dialog.md +1 -1
  20. package/docs/guidelines/composition.md +10 -0
  21. package/docs/guidelines/index.md +2 -0
  22. package/docs/guidelines/list-pages.md +12 -1
  23. package/docs/list.json +19 -1
  24. package/docs/list.md +3 -1
  25. package/docs/page.json +1 -0
  26. package/docs/page.md +1 -0
  27. package/docs/popover.json +1 -1
  28. package/docs/segmented-control.json +29 -1
  29. package/docs/segmented-control.md +17 -1
  30. package/docs/skills/compose-screen/SKILL.md +7 -0
  31. package/docs/skills/theme-app/SKILL.md +5 -0
  32. package/docs/split-button.json +1 -0
  33. package/docs/split-button.md +1 -1
  34. package/docs/stat-card.json +1 -0
  35. package/docs/stat-card.md +1 -1
  36. package/docs/table.examples.md +1 -1
  37. package/docs/table.json +83 -1
  38. package/docs/table.md +12 -1
  39. package/docs/text-field.json +1 -1
  40. package/docs/text-field.md +1 -1
  41. package/docs/toggle-group.json +14 -3
  42. package/docs/toggle-group.md +3 -3
  43. package/docs/toggle.json +12 -3
  44. package/docs/toggle.md +3 -3
  45. package/docs/tokens.md +25 -1
  46. package/docs/tour.json +1 -1
  47. package/fesm2022/slotted-angular-app-shell.mjs +48 -16
  48. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  49. package/fesm2022/slotted-angular-button-group.mjs +4 -4
  50. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  51. package/fesm2022/slotted-angular-button.mjs +51 -19
  52. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  53. package/fesm2022/slotted-angular-calendar.mjs +158 -33
  54. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  55. package/fesm2022/slotted-angular-cascader.mjs +1 -1
  56. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  57. package/fesm2022/slotted-angular-chart.mjs +41 -20
  58. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  59. package/fesm2022/slotted-angular-column-manager.mjs +1 -1
  60. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  61. package/fesm2022/slotted-angular-combobox.mjs +25 -4
  62. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  63. package/fesm2022/slotted-angular-currency-field.mjs +59 -8
  64. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  65. package/fesm2022/slotted-angular-dashboard-grid.mjs +1 -1
  66. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  67. package/fesm2022/slotted-angular-data-grid.mjs +4 -4
  68. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  69. package/fesm2022/slotted-angular-data-list.mjs +2 -2
  70. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  71. package/fesm2022/slotted-angular-date-field.mjs +35 -12
  72. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  73. package/fesm2022/slotted-angular-date-picker.mjs +91 -27
  74. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  75. package/fesm2022/slotted-angular-date-range-picker.mjs +1 -1
  76. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  77. package/fesm2022/slotted-angular-datetime-picker.mjs +1 -1
  78. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  79. package/fesm2022/slotted-angular-datetime-range-picker.mjs +1 -1
  80. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  81. package/fesm2022/slotted-angular-dialog.mjs +4 -4
  82. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  83. package/fesm2022/slotted-angular-event-calendar.mjs +1 -1
  84. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  85. package/fesm2022/slotted-angular-filter-bar.mjs +9 -9
  86. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  87. package/fesm2022/slotted-angular-import-export-center.mjs +1 -1
  88. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  89. package/fesm2022/slotted-angular-list.mjs +28 -17
  90. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  91. package/fesm2022/slotted-angular-markdown.mjs +1 -1
  92. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  93. package/fesm2022/slotted-angular-multi-select.mjs +24 -3
  94. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  95. package/fesm2022/slotted-angular-notification-center.mjs +1 -1
  96. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  97. package/fesm2022/slotted-angular-page.mjs +20 -1
  98. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  99. package/fesm2022/slotted-angular-saved-views.mjs +1 -1
  100. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  101. package/fesm2022/slotted-angular-segmented-control.mjs +25 -5
  102. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  103. package/fesm2022/slotted-angular-split-button.mjs +4 -4
  104. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  105. package/fesm2022/slotted-angular-stat-card.mjs +2 -2
  106. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  107. package/fesm2022/slotted-angular-table.mjs +107 -9
  108. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  109. package/fesm2022/slotted-angular-toggle-group.mjs +17 -4
  110. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  111. package/fesm2022/slotted-angular-toggle.mjs +2 -2
  112. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  113. package/fesm2022/slotted-angular-tour.mjs +1 -1
  114. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  115. package/fesm2022/slotted-angular-transfer.mjs +1 -1
  116. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  117. package/fesm2022/slotted-angular-wizard.mjs +1 -1
  118. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  119. package/package.json +3 -3
  120. package/types/slotted-angular-app-shell.d.ts +6 -0
  121. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  122. package/types/slotted-angular-button-group.d.ts +1 -1
  123. package/types/slotted-angular-button.d.ts +33 -13
  124. package/types/slotted-angular-button.d.ts.map +1 -1
  125. package/types/slotted-angular-calendar.d.ts +28 -2
  126. package/types/slotted-angular-calendar.d.ts.map +1 -1
  127. package/types/slotted-angular-chart.d.ts +9 -0
  128. package/types/slotted-angular-chart.d.ts.map +1 -1
  129. package/types/slotted-angular-combobox.d.ts +4 -0
  130. package/types/slotted-angular-combobox.d.ts.map +1 -1
  131. package/types/slotted-angular-currency-field.d.ts +25 -3
  132. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  133. package/types/slotted-angular-date-field.d.ts +11 -1
  134. package/types/slotted-angular-date-field.d.ts.map +1 -1
  135. package/types/slotted-angular-date-picker.d.ts +38 -11
  136. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  137. package/types/slotted-angular-list.d.ts +42 -27
  138. package/types/slotted-angular-list.d.ts.map +1 -1
  139. package/types/slotted-angular-multi-select.d.ts +4 -0
  140. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  141. package/types/slotted-angular-page.d.ts.map +1 -1
  142. package/types/slotted-angular-segmented-control.d.ts +15 -2
  143. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  144. package/types/slotted-angular-split-button.d.ts +2 -2
  145. package/types/slotted-angular-table.d.ts +59 -5
  146. package/types/slotted-angular-table.d.ts.map +1 -1
  147. package/types/slotted-angular-toggle-group.d.ts +8 -2
  148. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  149. package/types/slotted-angular-toggle.d.ts +1 -1
  150. package/types/slotted-angular-toggle.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-transfer.mjs","sources":["../../transfer/src/transfer-defaults.ts","../../transfer/src/transfer.ts","../../transfer/src/slotted-angular-transfer.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport type { TransferDirection, TransferSide } from '@slotted/core/transfer';\n\nexport type { TransferDirection, TransferSide };\n\n/** The type step of the lists, the search fields and the move buttons. */\nexport type TransferSize = 'sm' | 'md' | 'lg';\n\n/**\n * How the two panes are laid out. `auto` answers the root's own inline size:\n * two columns from 36rem, one pane at a time below it.\n */\nexport type TransferLayout = 'auto' | 'columns' | 'steps';\n\nexport type TransferMoveReason = Extract<ChangeReason, 'pointer' | 'keyboard' | 'programmatic'>;\nexport type TransferSelectionReason = Extract<\n ChangeReason,\n 'pointer' | 'keyboard' | 'select' | 'programmatic'\n>;\nexport type TransferQueryReason = Extract<ChangeReason, 'keyboard' | 'clear' | 'programmatic'>;\nexport type TransferPaneReason = Extract<ChangeReason, 'pointer' | 'keyboard' | 'programmatic'>;\n\n/** A move asks once, with what moved and which way. */\nexport interface TransferMoveRequest extends ChangeRequest<readonly string[]> {\n readonly reason: TransferMoveReason;\n readonly direction: TransferDirection;\n readonly keys: readonly string[];\n}\n\nexport interface TransferSelectionRequest extends ChangeRequest<readonly string[]> {\n readonly reason: TransferSelectionReason;\n}\n\nexport interface TransferQueryRequest extends ChangeRequest<string> {\n readonly reason: TransferQueryReason;\n}\n\nexport interface TransferPaneRequest extends ChangeRequest<TransferSide> {\n readonly reason: TransferPaneReason;\n}\n\n/** The shape the family reads without accessors. */\nexport interface TransferItem {\n key: string;\n label: string;\n description?: string | undefined;\n disabled?: boolean | undefined;\n}\n\n/** What an application sets once for every transfer under it. */\nexport interface TransferDefaults {\n size: TransferSize;\n layout: TransferLayout;\n searchable: boolean;\n selectAll: boolean;\n reorderable: boolean;\n rows: number;\n}\n\nconst FALLBACK: TransferDefaults = {\n size: 'md',\n layout: 'auto',\n searchable: true,\n selectAll: true,\n reorderable: false,\n rows: 8,\n};\n\nexport const TRANSFER_DEFAULTS = new InjectionToken<TransferDefaults>('slotted transfer defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its transfers look. A transfer that states\n * any of it itself still wins. The words come from the language in force\n * (`provideSlotted`).\n */\nexport function provideTransferDefaults(defaults: Partial<TransferDefaults>) {\n return {\n provide: TRANSFER_DEFAULTS,\n useFactory: (): TransferDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectTransferDefaults(): TransferDefaults {\n return inject(TRANSFER_DEFAULTS);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SlTransferIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-transfer-${this.count}`;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterEveryRender,\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n type AbstractControl,\n type ControlValueAccessor,\n type ValidationErrors,\n type Validator,\n} from '@angular/forms';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlButton, SlButtonEnd, SlButtonStart } from '@slotted/angular/button';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport {\n SlListbox,\n SlListboxDescription,\n SlListboxEmpty,\n SlListboxIndicator,\n SlListboxLabel,\n SlListboxLoader,\n SlListboxOptionContent,\n type ListboxChangeRequest,\n} from '@slotted/angular/listbox';\nimport { SlSegment, SlSegmentedControl } from '@slotted/angular/segmented-control';\nimport { SlTextField, SlTextFieldInput, SlTextFieldStart } from '@slotted/angular/text-field';\nimport { createFilter } from '@slotted/core/collection';\nimport { createDragController, type DragController } from '@slotted/core/drag';\nimport {\n dragMessages,\n type PartialMessages,\n transferMessages,\n type TransferMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n keysToMove,\n moveKeys,\n partitionKeys,\n reorderKeys,\n reorderKeysTo,\n toggleVisibleSelection,\n type TransferSide,\n} from '@slotted/core/transfer';\n\nimport {\n injectTransferDefaults,\n SlTransferIdFactory,\n type TransferItem,\n type TransferLayout,\n type TransferMoveReason,\n type TransferMoveRequest,\n type TransferPaneReason,\n type TransferPaneRequest,\n type TransferQueryReason,\n type TransferQueryRequest,\n type TransferSelectionReason,\n type TransferSelectionRequest,\n type TransferSize,\n} from './transfer-defaults';\n\nconst SIDES: readonly TransferSide[] = ['source', 'target'];\nconst EMPTY: readonly string[] = [];\n\n/** The step one below the family's, for the search field and the buttons. */\nconst INNER_SIZE: Record<TransferSize, 'sm' | 'md'> = { sm: 'sm', md: 'sm', lg: 'md' };\n\n/** A click with no coordinates is a key. */\nfunction pressReason(event: MouseEvent): 'pointer' | 'keyboard' {\n return event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\nfunction escapeValue(value: string): string {\n return typeof CSS !== 'undefined' && typeof CSS.escape === 'function'\n ? CSS.escape(value)\n : value.replace(/[\"\\\\]/g, '\\\\$&');\n}\n\nconst sameKeys = (a: readonly string[], b: readonly string[]) =>\n a.length === b.length && a.every((key, index) => key === b[index]);\n\n/** A request whose `cancel()` the family reads back after emitting it. */\nfunction makeRequest<T, Extra extends object>(\n value: T,\n previous: T,\n reason: ChangeReason,\n source: unknown,\n extra: Extra,\n): ChangeRequest<T> & Extra & { readonly cancelled: boolean } {\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/** One option of a pane: the item, or the key a target holds without one. */\nexport interface TransferEntry<T = unknown> {\n readonly key: string;\n readonly item: T | undefined;\n}\n\ninterface DragView {\n readonly items: readonly string[];\n readonly over: TransferSide | null;\n readonly index: number | null;\n readonly from: TransferSide | null;\n}\n\nconst NO_DRAG: DragView = { items: EMPTY, over: null, index: null, from: null };\n\n/**\n * The consumer's `<ng-template slTransferItem let-item let-side=\"side\">`: what\n * one option holds besides its check. The listbox family's label, description\n * and meta directives are the parts to write it with.\n */\n@Directive({ selector: 'ng-template[slTransferItem]', standalone: true })\nexport class SlTransferItem {}\n\n/** `<ng-template slTransferFooter let-side>`: content under a pane's list. */\n@Directive({ selector: 'ng-template[slTransferFooter]', standalone: true })\nexport class SlTransferFooter {}\n\n/**\n * Writes this family's part name on a button. `slButton` writes\n * `data-part=\"root\"` as a static host attribute, which erases the part the\n * template wrote, so it is written back after the first render.\n */\n@Directive({ selector: '[slTransferPart]', standalone: true })\nexport class SlTransferPart {\n readonly part = input.required<string>({ alias: 'slTransferPart' });\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/**\n * Two lists and the moves between them: available on one side, chosen on the\n * other, each a listbox with a search, a count and a select-all box, and the\n * move buttons between them.\n *\n * The host is the root. Its value is `targetKeys`, the keys in the chosen\n * list; a form reads the same array through `ControlValueAccessor`, and a\n * `required` transfer reports `{ required: true }` while the list is empty.\n */\n@Component({\n selector: '[slTransfer]',\n standalone: true,\n exportAs: 'slTransfer',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlButtonEnd,\n SlButtonStart,\n SlCheckbox,\n SlGlyph,\n SlIcon,\n SlListbox,\n SlListboxDescription,\n SlListboxEmpty,\n SlListboxIndicator,\n SlListboxLabel,\n SlListboxLoader,\n SlListboxOptionContent,\n SlSegment,\n SlSegmentedControl,\n SlTextField,\n SlTextFieldInput,\n SlTextFieldStart,\n SlTransferPart,\n ],\n template: `\n <div data-part=\"switch\">\n <div\n slSegmentedControl\n [attr.aria-label]=\"t('panes')\"\n [disabled]=\"isDisabled()\"\n [fullWidth]=\"true\"\n [size]=\"resolvedSize()\"\n [value]=\"currentPane()\"\n (valueChange)=\"onSwitch($event)\"\n >\n @for (side of sides; track side) {\n <label slSegment [value]=\"side\">{{ paneCount(side) }}</label>\n }\n </div>\n </div>\n <div data-part=\"body\">\n <ng-container\n [ngTemplateOutlet]=\"paneTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: 'source' }\"\n />\n <div data-part=\"actions\" role=\"group\" [attr.aria-label]=\"t('actions')\">\n <button\n slButton\n slTransferPart=\"move-to-target\"\n tone=\"secondary\"\n variant=\"outline\"\n aria-keyshortcuts=\"Enter\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || selectedToMove('source').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"move(selectedToMove('source'), 'target', pressReason($event), $event)\"\n >\n {{ t('moveToTarget')\n }}<span slButtonEnd aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevron-right\"></svg></span\n ></span>\n </button>\n <button\n slButton\n slTransferPart=\"move-all-to-target\"\n tone=\"secondary\"\n variant=\"outline\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || enabledVisible('source').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"move(enabledVisible('source'), 'target', pressReason($event), $event)\"\n >\n {{ t('moveAllToTarget')\n }}<span slButtonEnd aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevrons-right\"></svg></span\n ></span>\n </button>\n <button\n slButton\n slTransferPart=\"move-to-source\"\n tone=\"secondary\"\n variant=\"outline\"\n aria-keyshortcuts=\"Delete\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || selectedToMove('target').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"move(selectedToMove('target'), 'source', pressReason($event), $event)\"\n >\n <span slButtonStart aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevron-right\"></svg></span></span\n >{{ t('moveToSource') }}\n </button>\n <button\n slButton\n slTransferPart=\"move-all-to-source\"\n tone=\"secondary\"\n variant=\"outline\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || enabledVisible('target').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"move(enabledVisible('target'), 'source', pressReason($event), $event)\"\n >\n <span slButtonStart aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevrons-right\"></svg></span></span\n >{{ t('moveAllToSource') }}\n </button>\n @if (resolvedReorderable()) {\n <div data-part=\"reorder\" role=\"group\" [attr.aria-label]=\"t('reorder')\">\n <button\n slButton\n slTransferPart=\"move-up\"\n tone=\"secondary\"\n variant=\"ghost\"\n aria-keyshortcuts=\"Alt+ArrowUp\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || !canReorder() || selectedToMove('target').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"shift(-1, pressReason($event), $event, false)\"\n >\n <span slButtonStart aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span></span\n >{{ t('moveUp') }}\n </button>\n <button\n slButton\n slTransferPart=\"move-down\"\n tone=\"secondary\"\n variant=\"ghost\"\n aria-keyshortcuts=\"Alt+ArrowDown\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || !canReorder() || selectedToMove('target').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"shift(1, pressReason($event), $event, false)\"\n >\n <span slButtonStart aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span></span\n >{{ t('moveDown') }}\n </button>\n </div>\n }\n </div>\n <ng-container\n [ngTemplateOutlet]=\"paneTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: 'target' }\"\n />\n </div>\n @if (name(); as field) {\n @for (key of partition().target; track key) {\n <input type=\"hidden\" [attr.name]=\"field\" [value]=\"key\" />\n }\n }\n\n <ng-template #paneTemplate let-side>\n <div\n data-part=\"pane\"\n role=\"group\"\n [attr.data-side]=\"side\"\n [attr.aria-labelledby]=\"titleId(side)\"\n [attr.data-current]=\"currentPane() === side ? '' : null\"\n [attr.data-drop-target]=\"dropTarget(side) ? '' : null\"\n >\n <div data-part=\"pane-header\">\n @if (resolvedSelectAll()) {\n <span data-part=\"select-all\">\n <div\n slCheckbox\n [size]=\"resolvedSize()\"\n [checked]=\"selectAllState(side) === 'all'\"\n [indeterminate]=\"selectAllState(side) === 'some'\"\n [disabled]=\"isDisabled() || enabledVisible(side).length === 0\"\n (checkedChange)=\"onSelectAll(side, $event)\"\n ></div>\n </span>\n }\n <span data-part=\"title\" [attr.id]=\"titleId(side)\">{{ title(side) }}</span>\n <span data-part=\"count\">{{ countText(side) }}</span>\n </div>\n @if (resolvedSearchable()) {\n <div data-part=\"search\">\n <div slTextField [clearable]=\"true\" [size]=\"innerSize()\">\n <span slTextFieldStart aria-hidden=\"true\"\n ><span data-part=\"search-icon\"\n ><span slIcon><svg slGlyph name=\"search\"></svg></span></span\n ></span>\n <input\n slTextFieldInput\n type=\"search\"\n [disabled]=\"isDisabled()\"\n [value]=\"queryOf(side)\"\n [attr.aria-label]=\"t('search', { pane: title(side) })\"\n [attr.placeholder]=\"t('search', { pane: title(side) })\"\n (valueChange)=\"onQuery(side, $event)\"\n />\n </div>\n </div>\n }\n <div data-part=\"list\" [attr.data-side]=\"side\" (focusin)=\"onListFocus(side, $event)\">\n <div\n slListbox\n variant=\"plain\"\n selectionMode=\"multiple\"\n [attr.aria-labelledby]=\"titleId(side)\"\n [size]=\"resolvedSize()\"\n [rows]=\"resolvedRows()\"\n [items]=\"entriesOf(side)\"\n [getKey]=\"entryKey\"\n [getLabel]=\"entryLabel\"\n [isItemDisabled]=\"entryDisabled\"\n [activeKey]=\"activeOf(side)\"\n [value]=\"selectionFor(side)\"\n [disabled]=\"isDisabled()\"\n [invalid]=\"isInvalid()\"\n [required]=\"required()\"\n [virtual]=\"virtual() && itemSize() !== undefined\"\n [itemSize]=\"itemSize()\"\n [overscan]=\"overscan()\"\n [loading]=\"side === 'source' && loading()\"\n [hasMore]=\"side === 'source' && hasMore()\"\n (loadMore)=\"loadMore.emit()\"\n (activeKeyChange)=\"setActive(side, $event.value)\"\n (valueChange)=\"onPaneSelection(side, $event)\"\n >\n <ng-template slListboxOptionContent let-entry>\n <span\n slListboxIndicator\n [attr.data-dragging]=\"dragging().has(entry.key) ? '' : null\"\n [attr.data-unresolved]=\"entry.item === undefined ? '' : null\"\n ></span>\n @if (entry.item === undefined) {\n <span slListboxLabel>{{ entry.key }}</span>\n } @else if (itemTemplate(); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item, side: side }\"\n />\n } @else {\n <span slListboxLabel>{{ labelOf(entry.key) }}</span>\n @if (descriptionOf(entry.item); as description) {\n <span slListboxDescription>{{ description }}</span>\n }\n }\n </ng-template>\n @if (isEmpty(side)) {\n <div slListboxEmpty>\n <div data-part=\"empty\" [attr.data-query]=\"typed(side) ? '' : null\">\n <span slIcon\n ><svg slGlyph [name]=\"typed(side) ? 'search-x' : 'inbox'\"></svg\n ></span>\n {{ typed(side) ? t('noResults') : t('empty') }}\n </div>\n </div>\n }\n @if (side === 'source' && hasMore()) {\n <div slListboxLoader>{{ t('loading') }}</div>\n }\n </div>\n @if (side === 'target' && dropOffset() !== null) {\n <div\n data-part=\"drop-indicator\"\n aria-hidden=\"true\"\n [style.--_drop-offset]=\"dropOffset() + 'px'\"\n ></div>\n }\n </div>\n @if (footerTemplate(); as footer) {\n <div data-part=\"pane-footer\">\n <ng-container\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: side }\"\n />\n </div>\n }\n </div>\n </ng-template>\n `,\n styleUrl: '../../../styles/src/transfer/transfer.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTransfer), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTransfer), multi: true },\n ],\n host: {\n 'data-ui': 'transfer',\n 'data-part': 'root',\n '[attr.role]': 'writtenRole ?? \"group\"',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-pane]': 'currentPane()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '[attr.data-readonly]': 'readOnly() ? \"\" : null',\n '[attr.data-invalid]': 'isInvalid() ? \"\" : null',\n '[attr.data-required]': 'required() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '[style.--slotted-transfer-rows]': 'resolvedRows()',\n },\n})\nexport class SlTransfer<T = TransferItem> implements ControlValueAccessor, Validator {\n /* ── Inputs ───────────────────────────────────────────────────────── */\n\n /** The whole collection, both sides. */\n readonly items = input.required<readonly T[]>();\n readonly getKey = input<(item: T) => string>((item) => (item as TransferItem).key);\n readonly getLabel = input<(item: T) => string>((item) => (item as TransferItem).label);\n readonly getDescription = input<(item: T) => string | undefined>(\n (item) => (item as TransferItem).description,\n );\n readonly isItemDisabled = input<(item: T) => boolean>(\n (item) => (item as TransferItem).disabled === true,\n );\n /** Whether an item answers a query. Defaults to a locale-aware contains. */\n readonly filter = input<((item: T, query: string, side: TransferSide) => boolean) | undefined>(\n undefined,\n );\n\n /** The keys in the target; two-way, so a template may bind it directly. */\n readonly targetKeys = model<readonly string[] | undefined>(undefined);\n readonly defaultTargetKeys = input<readonly string[] | undefined>(undefined);\n readonly selectedKeys = model<readonly string[] | undefined>(undefined);\n readonly defaultSelectedKeys = input<readonly string[] | undefined>(undefined);\n readonly sourceQuery = model<string | undefined>(undefined);\n readonly defaultSourceQuery = input<string | undefined>(undefined);\n readonly targetQuery = model<string | undefined>(undefined);\n readonly defaultTargetQuery = input<string | undefined>(undefined);\n /** The pane shown in steps. */\n readonly pane = model<TransferSide | undefined>(undefined);\n readonly defaultPane = input<TransferSide | undefined>(undefined);\n\n readonly size = input<TransferSize | undefined>(undefined);\n readonly layout = input<TransferLayout | undefined>(undefined);\n readonly searchable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly selectAll = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly reorderable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly rows = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly virtual = input(false, { transform: booleanAttribute });\n readonly itemSize = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n /** Options rendered either side of a windowed viewport. */\n readonly overscan = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readOnly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly hasMore = input(false, { transform: booleanAttribute });\n /** Submits one hidden input per target key. */\n readonly name = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * panes' names, the controls, the counts and the announcements.\n */\n readonly messages = input<PartialMessages<TransferMessages> | undefined>(undefined);\n\n /* ── Outputs ──────────────────────────────────────────────────────── */\n\n /** Before the target moves, with the direction, the keys and the reason. */\n readonly targetKeysChangeRequest = output<TransferMoveRequest>();\n readonly selectedKeysChangeRequest = output<TransferSelectionRequest>();\n readonly sourceQueryChangeRequest = output<TransferQueryRequest>();\n readonly targetQueryChangeRequest = output<TransferQueryRequest>();\n readonly paneChangeRequest = output<TransferPaneRequest>();\n /** Asked when the source list reaches the end of what has been loaded. */\n readonly loadMore = output<void>();\n\n /* ── State ────────────────────────────────────────────────────────── */\n\n private readonly defaults = injectTransferDefaults();\n private readonly base = inject(SlTransferIdFactory).next();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n /** A role the consumer wrote is never replaced by the family's. */\n protected readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n\n protected readonly itemTemplate = contentChild(SlTransferItem, { read: TemplateRef });\n protected readonly footerTemplate = contentChild(SlTransferFooter, { read: TemplateRef });\n private readonly listboxes = viewChildren(SlListbox);\n\n protected readonly sides = SIDES;\n protected readonly pressReason = pressReason;\n\n /** The family's words in the language in force, with this transfer's `messages` laid over them. */\n protected readonly t = injectMessages(transferMessages, this.messages);\n /** What a keyboard drag between the panes says, in the language in force. */\n private readonly dragT = injectMessages(dragMessages);\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly innerSize = computed(() => INNER_SIZE[this.resolvedSize()]);\n protected readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout);\n protected readonly resolvedSearchable = computed(\n () => this.searchable() ?? this.defaults.searchable,\n );\n protected readonly resolvedSelectAll = computed(\n () => this.selectAll() ?? this.defaults.selectAll,\n );\n protected readonly resolvedReorderable = computed(\n () => this.reorderable() ?? this.defaults.reorderable,\n );\n protected readonly resolvedRows = computed(() => this.rows() ?? this.defaults.rows);\n\n private readonly formDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n protected readonly isInvalid = computed(() => this.invalid());\n protected readonly frozen = computed(() => this.isDisabled() || this.readOnly());\n\n /** The committed values: the bound one, or the default. */\n readonly currentTargetKeys = computed(\n () => this.targetKeys() ?? this.defaultTargetKeys() ?? EMPTY,\n );\n readonly currentSelectedKeys = computed(\n () => this.selectedKeys() ?? this.defaultSelectedKeys() ?? EMPTY,\n );\n readonly currentSourceQuery = computed(\n () => this.sourceQuery() ?? this.defaultSourceQuery() ?? '',\n );\n readonly currentTargetQuery = computed(\n () => this.targetQuery() ?? this.defaultTargetQuery() ?? '',\n );\n readonly currentPane = computed<TransferSide>(\n () => this.pane() ?? this.defaultPane() ?? 'source',\n );\n\n private readonly byKey = computed(\n () => new Map(this.items().map((item) => [this.getKey()(item), item])),\n );\n private readonly allKeys = computed(() => this.items().map(this.getKey()));\n private readonly disabledKeys = computed(() => {\n const disabled = this.isItemDisabled();\n const key = this.getKey();\n return new Set(\n this.items()\n .filter((item) => disabled(item))\n .map(key),\n );\n });\n readonly partition = computed(() =>\n partitionKeys(this.allKeys(), this.currentTargetKeys(), this.resolvedReorderable()),\n );\n private readonly matcher = createFilter();\n\n protected readonly visible = computed<Record<TransferSide, readonly string[]>>(() => {\n const partition = this.partition();\n const byKey = this.byKey();\n const filter = this.filter();\n const getLabel = this.getLabel();\n const getDescription = this.getDescription();\n const pick = (side: TransferSide, typed: string) => {\n const query = typed.trim();\n if (query === '') return partition[side];\n return partition[side].filter((key) => {\n const item = byKey.get(key);\n if (item === undefined) return this.matcher.contains(key, query);\n if (filter) return filter(item, query, side);\n return (\n this.matcher.contains(getLabel(item), query) ||\n this.matcher.contains(getDescription(item) ?? '', query)\n );\n });\n };\n return {\n source: pick('source', this.currentSourceQuery()),\n target: pick('target', this.currentTargetQuery()),\n };\n });\n\n protected readonly entries = computed<Record<TransferSide, TransferEntry<T>[]>>(() => {\n const byKey = this.byKey();\n const visible = this.visible();\n const build = (side: TransferSide) =>\n visible[side].map((key) => ({ key, item: byKey.get(key) }));\n return { source: build('source'), target: build('target') };\n });\n\n protected entriesOf(side: TransferSide) {\n return this.entries()[side];\n }\n\n protected isEmpty(side: TransferSide) {\n return this.visible()[side].length === 0;\n }\n\n protected readonly entryKey = (entry: TransferEntry<T>) => entry.key;\n protected readonly entryLabel = (entry: TransferEntry<T>) => this.labelOf(entry.key);\n protected readonly entryDisabled = (entry: TransferEntry<T>) =>\n entry.item !== undefined && this.isItemDisabled()(entry.item);\n\n protected readonly canReorder = computed(\n () => this.resolvedReorderable() && this.currentTargetQuery().trim() === '',\n );\n\n protected readonly drag = signal<DragView>(NO_DRAG);\n protected readonly dragging = computed(() => new Set(this.drag().items));\n protected readonly dropOffset = signal<number | null>(null);\n\n constructor() {\n /* The APG keys a dual list adds, taken before the listbox's own. */\n const onKeyDown = (event: KeyboardEvent) => this.onListKeyDown(event);\n afterNextRender(() => {\n this.host.nativeElement.addEventListener('keydown', onKeyDown, true);\n this.createController();\n });\n this.destroyRef.onDestroy(() => {\n this.host.nativeElement.removeEventListener('keydown', onKeyDown, true);\n this.teardown?.();\n });\n\n afterEveryRender(() => {\n this.nameSelectAll();\n this.syncDraggables();\n const side = this.pendingFocus;\n if (side !== null) {\n this.pendingFocus = null;\n this.listboxOf(side)?.focus();\n }\n this.measureDropLine();\n });\n }\n\n /* ── Reading ──────────────────────────────────────────────────────── */\n\n protected title(side: TransferSide) {\n return side === 'target' ? this.t('target') : this.t('source');\n }\n\n protected titleId(side: TransferSide) {\n return `${this.base}-${side}-title`;\n }\n\n protected labelOf(key: string) {\n const item = this.byKey().get(key);\n return item === undefined ? key : this.getLabel()(item);\n }\n\n protected descriptionOf(item: T) {\n return this.getDescription()(item);\n }\n\n protected queryOf(side: TransferSide) {\n return side === 'source' ? this.currentSourceQuery() : this.currentTargetQuery();\n }\n\n protected typed(side: TransferSide) {\n return this.queryOf(side).trim() !== '';\n }\n\n protected enabledVisible(side: TransferSide) {\n const disabled = this.disabledKeys();\n return this.visible()[side].filter((key) => !disabled.has(key));\n }\n\n protected selectionFor(side: TransferSide): readonly string[] {\n const selected = new Set(this.currentSelectedKeys());\n return this.visible()[side].filter((key) => selected.has(key));\n }\n\n protected selectedToMove(side: TransferSide) {\n return keysToMove({\n visible: this.visible()[side],\n selected: this.currentSelectedKeys(),\n disabled: this.disabledKeys(),\n active: null,\n });\n }\n\n protected selectAllState(side: TransferSide): 'none' | 'some' | 'all' {\n const reach = this.enabledVisible(side);\n const selected = new Set(this.currentSelectedKeys());\n const chosen = reach.filter((key) => selected.has(key)).length;\n if (chosen === 0) return 'none';\n return chosen === reach.length ? 'all' : 'some';\n }\n\n protected countText(side: TransferSide) {\n const keys = this.partition()[side];\n if (this.typed(side)) {\n return this.t('countFiltered', { shown: this.visible()[side].length, total: keys.length });\n }\n const selected = new Set(this.currentSelectedKeys());\n const chosen = keys.filter((key) => selected.has(key)).length;\n return chosen > 0\n ? this.t('countSelected', { selected: chosen, total: keys.length })\n : this.t('count', { total: keys.length });\n }\n\n protected paneCount(side: TransferSide) {\n return this.t('paneCount', {\n pane: this.title(side),\n total: this.partition()[side].length,\n });\n }\n\n protected dropTarget(side: TransferSide) {\n const drag = this.drag();\n return drag.over === side && (drag.from !== side || side === 'target');\n }\n\n private listboxOf(side: TransferSide): SlListbox | undefined {\n return this.listboxes()[side === 'source' ? 0 : 1];\n }\n\n private listOf(side: TransferSide): HTMLElement | null {\n return this.host.nativeElement.querySelector<HTMLElement>(\n `[data-part=\"pane\"][data-side=\"${side}\"] > [data-part=\"list\"]`,\n );\n }\n\n /**\n * The option the keyboard is on: the option holding focus under the roving\n * model, where Tab lands on the tab stop without the listbox calling it\n * active, and the listbox's active option under `aria-activedescendant`,\n * where focus is on the listbox itself.\n */\n private activeIn(side: TransferSide): string | null {\n const list = this.listOf(side);\n const focused = list?.ownerDocument.activeElement;\n if (list && focused instanceof HTMLElement && list.contains(focused)) {\n const key = focused.closest<HTMLElement>('[data-part=\"option\"]')?.dataset['key'];\n if (key !== undefined) return key;\n }\n return this.listboxOf(side)?.getActiveKey() ?? null;\n }\n\n private announce(message: string) {\n if (message !== '') getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message);\n }\n\n /* ── Requests ─────────────────────────────────────────────────────── */\n\n private pendingFocus: TransferSide | null = null;\n\n /**\n * Which option the keyboard is on in each list. The family holds it rather\n * than each listbox, because a move has to say where the keyboard goes next:\n * the APG example sends it to the first option after the moved ones that is\n * still in the list, and the listbox cannot know which of its options left\n * on purpose.\n */\n private readonly actives = signal<Record<TransferSide, string | null>>({\n source: null,\n target: null,\n });\n\n /* A key that left the list is no tab stop: the list would be unreachable by Tab. */\n protected activeOf(side: TransferSide) {\n const key = this.actives()[side];\n return key !== null && this.visible()[side].includes(key) ? key : null;\n }\n\n protected setActive(side: TransferSide, key: string | null) {\n if (this.actives()[side] === key) return;\n this.actives.update((current) => ({ ...current, [side]: key }));\n }\n\n /* Tab lands on the option holding the tab stop, and the keyboard is on it from then on. */\n protected onListFocus(side: TransferSide, event: FocusEvent) {\n const key = (event.target as HTMLElement | null)?.closest<HTMLElement>('[data-part=\"option\"]')\n ?.dataset['key'];\n if (key !== undefined) this.setActive(side, key);\n }\n\n private requestTarget(\n next: readonly string[],\n reason: TransferMoveReason,\n source: unknown,\n extra: Pick<TransferMoveRequest, 'direction' | 'keys'>,\n ) {\n const previous = this.currentTargetKeys();\n if (sameKeys(previous, next)) return false;\n const request = makeRequest(next, previous, reason, source, extra) as TransferMoveRequest;\n this.targetKeysChangeRequest.emit(request);\n if (request.cancelled) return false;\n this.targetKeys.set(next);\n this.onChangeFn(next);\n this.onTouchedFn();\n return true;\n }\n\n private requestSelected(\n next: readonly string[],\n reason: TransferSelectionReason,\n source: unknown,\n ) {\n const previous = this.currentSelectedKeys();\n if (sameKeys(previous, next)) return;\n const request = makeRequest(next, previous, reason, source, {}) as TransferSelectionRequest;\n this.selectedKeysChangeRequest.emit(request);\n if (!request.cancelled) this.selectedKeys.set(next);\n }\n\n protected move(\n keys: readonly string[],\n to: TransferSide,\n reason: TransferMoveReason,\n source?: unknown,\n index?: number,\n ) {\n if (this.frozen() || keys.length === 0) return;\n const from: TransferSide = to === 'target' ? 'source' : 'target';\n const next = moveKeys({\n allKeys: this.allKeys(),\n targetKeys: this.currentTargetKeys(),\n keys,\n to,\n reorderable: this.resolvedReorderable(),\n index,\n });\n const visibleBefore = this.visible()[from];\n if (!this.requestTarget(next, reason, source, { direction: to, keys })) return;\n const moving = new Set(keys);\n this.requestSelected(\n this.currentSelectedKeys().filter((key) => !moving.has(key)),\n reason,\n source,\n );\n const pane = this.title(to);\n this.announce(\n keys.length === 1\n ? this.t('movedOne', { item: this.labelOf(keys[0]!), pane })\n : this.t('moved', { count: keys.length, pane }),\n );\n const list = this.listOf(from);\n if (!list?.contains(list.ownerDocument.activeElement)) return;\n /* The keyboard stays in the list it moved from, on the first option after\n the moved ones that is still there, then on the last one before them;\n a list left empty hands it to the other. */\n const first = visibleBefore.findIndex((key) => moving.has(key));\n const after = first === -1 ? [] : visibleBefore.slice(first);\n const before = first === -1 ? visibleBefore : visibleBefore.slice(0, first);\n const disabled = this.disabledKeys();\n const stays = (key: string) => !moving.has(key) && !disabled.has(key);\n const neighbour = after.find(stays) ?? [...before].reverse().find(stays) ?? null;\n if (neighbour === null) {\n this.pendingFocus = to;\n return;\n }\n this.setActive(from, neighbour);\n this.pendingFocus = from;\n }\n\n private reorder(\n keys: readonly string[],\n next: readonly string[],\n reason: TransferMoveReason,\n source?: unknown,\n ) {\n if (this.frozen() || keys.length === 0 || sameKeys(next, this.partition().target)) return;\n if (!this.requestTarget(next, reason, source, { direction: 'reorder', keys })) return;\n this.announce(\n this.t('reordered', {\n item: this.labelOf(keys[0]!),\n position: next.indexOf(keys[0]!) + 1,\n }),\n );\n const list = this.listOf('target');\n if (!list?.contains(list.ownerDocument.activeElement)) return;\n const held = this.activeIn('target');\n if (held !== null) this.setActive('target', held);\n this.pendingFocus = 'target';\n }\n\n protected shift(delta: -1 | 1, reason: TransferMoveReason, source: unknown, withActive: boolean) {\n if (!this.canReorder()) return;\n const keys = keysToMove({\n visible: this.visible().target,\n selected: this.currentSelectedKeys(),\n disabled: this.disabledKeys(),\n active: withActive ? this.activeIn('target') : null,\n });\n this.reorder(keys, reorderKeys(this.partition().target, keys, delta), reason, source);\n }\n\n protected onPaneSelection(side: TransferSide, request: ListboxChangeRequest) {\n const value = request.value;\n const chosen = Array.isArray(value) ? value : value === null ? [] : [value as string];\n const shown = new Set(this.visible()[side]);\n const next = [...this.currentSelectedKeys().filter((key) => !shown.has(key)), ...chosen];\n const reason = request.reason;\n const mapped: TransferSelectionReason =\n reason === 'pointer' || reason === 'keyboard' || reason === 'programmatic'\n ? reason\n : 'select';\n this.requestSelected(next, mapped, request.source);\n }\n\n protected onSelectAll(side: TransferSide, request: ChangeRequest<boolean>) {\n this.requestSelected(\n toggleVisibleSelection(\n this.currentSelectedKeys(),\n this.visible()[side],\n this.disabledKeys(),\n request.value,\n ),\n 'select',\n request.source,\n );\n }\n\n protected onQuery(side: TransferSide, change: ChangeRequest<string>) {\n const reason: TransferQueryReason = change.reason === 'clear' ? 'clear' : 'keyboard';\n const previous = this.queryOf(side);\n if (previous === change.value) return;\n const request = makeRequest(\n change.value,\n previous,\n reason,\n change.source,\n {},\n ) as TransferQueryRequest;\n if (side === 'source') this.sourceQueryChangeRequest.emit(request);\n else this.targetQueryChangeRequest.emit(request);\n if (request.cancelled) return;\n if (side === 'source') this.sourceQuery.set(change.value);\n else this.targetQuery.set(change.value);\n }\n\n protected onSwitch(change: ChangeRequest<string | undefined>) {\n const next = change.value as TransferSide | undefined;\n if (next === undefined || next === this.currentPane()) return;\n const reason: TransferPaneReason = change.reason === 'keyboard' ? 'keyboard' : 'pointer';\n const request = makeRequest(\n next,\n this.currentPane(),\n reason,\n change.source,\n {},\n ) as TransferPaneRequest;\n this.paneChangeRequest.emit(request);\n if (!request.cancelled) this.pane.set(next);\n }\n\n private onListKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || this.frozen()) return;\n const target = event.target as Element | null;\n const list = target?.closest<HTMLElement>('[data-part=\"list\"][data-side]');\n if (!list || !this.host.nativeElement.contains(list)) return;\n const side = list.dataset['side'] as TransferSide;\n const other: TransferSide = side === 'source' ? 'target' : 'source';\n const pick = () =>\n keysToMove({\n visible: this.visible()[side],\n selected: this.currentSelectedKeys(),\n disabled: this.disabledKeys(),\n active: this.activeIn(side),\n });\n const modifier = event.ctrlKey || event.metaKey;\n const element = this.host.nativeElement;\n const rtl = element.ownerDocument.defaultView?.getComputedStyle(element).direction === 'rtl';\n const end = rtl ? 'ArrowLeft' : 'ArrowRight';\n const start = rtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === 'Enter' && !modifier && !event.altKey && !event.shiftKey) {\n event.preventDefault();\n this.move(pick(), other, 'keyboard', event);\n } else if (side === 'target' && (event.key === 'Delete' || event.key === 'Backspace')) {\n event.preventDefault();\n this.move(pick(), 'source', 'keyboard', event);\n } else if (modifier && !event.altKey && (event.key === end || event.key === start)) {\n const to: TransferSide = event.key === end ? 'target' : 'source';\n event.preventDefault();\n if (to !== side) this.move(pick(), to, 'keyboard', event);\n } else if (\n side === 'target' &&\n event.altKey &&\n (event.key === 'ArrowUp' || event.key === 'ArrowDown')\n ) {\n event.preventDefault();\n this.shift(event.key === 'ArrowUp' ? -1 : 1, 'keyboard', event, true);\n }\n }\n\n /**\n * The select-all box is named on its input. The checkbox family takes its\n * name from its label and has no input for one, and a label holding a\n * visually hidden sentence would take the box's width and halo with it; the\n * empty label is the case that family already draws.\n */\n private nameSelectAll() {\n for (const side of SIDES) {\n const control = this.host.nativeElement.querySelector<HTMLInputElement>(\n `[data-part=\"pane\"][data-side=\"${side}\"] [data-part=\"select-all\"] input`,\n );\n const name = this.t('selectAll', { pane: this.title(side) });\n if (control && control.getAttribute('aria-label') !== name) {\n control.setAttribute('aria-label', name);\n }\n }\n }\n\n /* ── The handle ───────────────────────────────────────────────────── */\n\n /** Moves focus into a pane's list; the source's when no side is named. */\n focus(side: TransferSide = 'source') {\n this.listboxOf(side)?.focus();\n }\n\n /** Reveals an item in whichever pane holds it. */\n scrollToKey(key: string) {\n const side: TransferSide = this.partition().target.includes(key) ? 'target' : 'source';\n this.listboxOf(side)?.scrollToKey(key);\n }\n\n /* ── The drag ─────────────────────────────────────────────────────── */\n\n private controller: DragController | null = null;\n private teardown: (() => void) | null = null;\n private readonly draggables = new Map<HTMLElement, () => void>();\n\n private createController() {\n const root = this.host.nativeElement;\n const listboxIn = (side: TransferSide) =>\n root.querySelector<HTMLElement>(\n `[data-part=\"pane\"][data-side=\"${side}\"] [data-ui=\"listbox\"]`,\n );\n const created = createDragController({\n document: root.ownerDocument,\n preview: false,\n restoreFocus: false,\n autoScroll: { axis: 'y' },\n t: this.dragT,\n /* The move says what happened once, in the family's own words. */\n silent: ['moved', 'dropped'],\n onDrop: ({ items: carried, source, target, reason, event }) => {\n const from = source.container as TransferSide;\n const to = target.container as TransferSide;\n const why: TransferMoveReason = reason === 'keyboard' ? 'keyboard' : 'pointer';\n const shown = this.visible().target;\n const full = this.partition().target;\n const indexInTarget = () => {\n if (target.kind !== 'between') return full.length;\n const anchor = shown[target.index];\n if (anchor !== undefined) return full.indexOf(anchor);\n const last = shown[shown.length - 1];\n return last === undefined ? full.length : full.indexOf(last) + 1;\n };\n if (from !== to) {\n this.move(carried, to, why, event, to === 'target' ? indexInTarget() : undefined);\n } else if (to === 'target') {\n this.reorder(carried, reorderKeysTo(full, carried, indexInTarget()), why, event);\n }\n },\n });\n const unregister = SIDES.map((side) =>\n created.registerContainer({\n key: side,\n items: () => this.visible()[side],\n orientation: 'vertical',\n element: () => listboxIn(side),\n itemElement: (key) =>\n listboxIn(side)?.querySelector(`[data-part=\"option\"][data-key=\"${escapeValue(key)}\"]`) ??\n null,\n accepts: (state, target) => {\n if (state.source?.container !== target.container) return true;\n return target.container === 'target' && this.canReorder();\n },\n disabled: () => this.frozen(),\n label: () => this.title(side),\n itemLabel: (key) => this.labelOf(key),\n }),\n );\n /* The click the browser fires after a pointer drag is the drag's, not a\n press on the option: with the pointer captured it lands on the option\n that was carried and would toggle its selection. */\n let swallow = false;\n let wasDragging: 'pointer' | 'other' | null = null;\n const onClick = (event: Event) => {\n if (!swallow) return;\n swallow = false;\n event.preventDefault();\n event.stopPropagation();\n };\n root.addEventListener('click', onClick, true);\n const unsubscribe = created.subscribe((next) => {\n if (next.status !== 'dragging') {\n if (wasDragging === 'pointer') {\n swallow = true;\n window.setTimeout(() => {\n swallow = false;\n }, 0);\n }\n wasDragging = null;\n this.drag.set(NO_DRAG);\n return;\n }\n wasDragging = next.reason === 'pointer' ? 'pointer' : 'other';\n const target = next.target;\n this.drag.set({\n items: next.items,\n from: (next.source?.container as TransferSide | undefined) ?? null,\n over: target && next.valid ? (target.container as TransferSide) : null,\n index: target && target.kind === 'between' && next.valid ? target.index : null,\n });\n });\n this.controller = created;\n this.teardown = () => {\n root.removeEventListener('click', onClick, true);\n unsubscribe();\n for (const off of unregister) off();\n created.destroy();\n this.controller = null;\n for (const detach of this.draggables.values()) detach();\n this.draggables.clear();\n };\n this.syncDraggables();\n }\n\n /* Every option is a draggable, and carries its pane's selection when it is in it. */\n private syncDraggables() {\n const created = this.controller;\n if (!created) return;\n const root = this.host.nativeElement;\n const seen = new Set<HTMLElement>();\n for (const side of SIDES) {\n const nodes = root.querySelectorAll<HTMLElement>(\n `[data-part=\"pane\"][data-side=\"${side}\"] [data-part=\"option\"][data-key]`,\n );\n for (const node of nodes) {\n seen.add(node);\n if (this.draggables.has(node)) continue;\n const key = node.dataset['key']!;\n const detach = created.attachDraggable(node, {\n container: side,\n key,\n items: () => {\n const carried = this.selectedToMove(side);\n return carried.includes(key) ? carried : [key];\n },\n disabled: () => this.frozen() || this.disabledKeys().has(key),\n distance: 4,\n });\n this.draggables.set(node, detach);\n }\n }\n for (const [node, detach] of this.draggables) {\n if (seen.has(node)) continue;\n detach();\n this.draggables.delete(node);\n }\n }\n\n /* The drop line stands between two options, where script alone can measure. */\n private measureDropLine() {\n const drag = this.drag();\n const shows = drag.over === 'target' && drag.index !== null && this.resolvedReorderable();\n if (!shows || drag.index === null) {\n if (this.dropOffset() !== null) this.dropOffset.set(null);\n return;\n }\n const list = this.listOf('target');\n const listbox = list?.querySelector('[data-ui=\"listbox\"]');\n if (!list || !listbox) return;\n const options = listbox.querySelectorAll<HTMLElement>('[data-part=\"option\"]');\n const frame = list.getBoundingClientRect().top;\n const at = options[drag.index];\n const last = options[options.length - 1];\n const edge = at\n ? at.getBoundingClientRect().top\n : last\n ? last.getBoundingClientRect().bottom\n : listbox.getBoundingClientRect().top;\n const offset = Math.round(edge - frame);\n if (this.dropOffset() !== offset) this.dropOffset.set(offset);\n }\n\n /* ── Forms ────────────────────────────────────────────────────────── */\n\n private onChangeFn: (value: readonly string[]) => void = () => {};\n private onTouchedFn: () => void = () => {};\n\n writeValue(value: readonly string[] | null | undefined) {\n this.targetKeys.set(value ?? EMPTY);\n }\n\n registerOnChange(fn: (value: readonly string[]) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.formDisabled.set(disabled);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!this.required()) return null;\n const value = control.value as readonly string[] | null | undefined;\n return (value ?? EMPTY).length === 0 ? { required: true } : 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-transfer.mjs","sources":["../../transfer/src/transfer-defaults.ts","../../transfer/src/transfer.ts","../../transfer/src/slotted-angular-transfer.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport type { TransferDirection, TransferSide } from '@slotted/core/transfer';\n\nexport type { TransferDirection, TransferSide };\n\n/** The type step of the lists, the search fields and the move buttons. */\nexport type TransferSize = 'sm' | 'md' | 'lg';\n\n/**\n * How the two panes are laid out. `auto` answers the root's own inline size:\n * two columns from 36rem, one pane at a time below it.\n */\nexport type TransferLayout = 'auto' | 'columns' | 'steps';\n\nexport type TransferMoveReason = Extract<ChangeReason, 'pointer' | 'keyboard' | 'programmatic'>;\nexport type TransferSelectionReason = Extract<\n ChangeReason,\n 'pointer' | 'keyboard' | 'select' | 'programmatic'\n>;\nexport type TransferQueryReason = Extract<ChangeReason, 'keyboard' | 'clear' | 'programmatic'>;\nexport type TransferPaneReason = Extract<ChangeReason, 'pointer' | 'keyboard' | 'programmatic'>;\n\n/** A move asks once, with what moved and which way. */\nexport interface TransferMoveRequest extends ChangeRequest<readonly string[]> {\n readonly reason: TransferMoveReason;\n readonly direction: TransferDirection;\n readonly keys: readonly string[];\n}\n\nexport interface TransferSelectionRequest extends ChangeRequest<readonly string[]> {\n readonly reason: TransferSelectionReason;\n}\n\nexport interface TransferQueryRequest extends ChangeRequest<string> {\n readonly reason: TransferQueryReason;\n}\n\nexport interface TransferPaneRequest extends ChangeRequest<TransferSide> {\n readonly reason: TransferPaneReason;\n}\n\n/** The shape the family reads without accessors. */\nexport interface TransferItem {\n key: string;\n label: string;\n description?: string | undefined;\n disabled?: boolean | undefined;\n}\n\n/** What an application sets once for every transfer under it. */\nexport interface TransferDefaults {\n size: TransferSize;\n layout: TransferLayout;\n searchable: boolean;\n selectAll: boolean;\n reorderable: boolean;\n rows: number;\n}\n\nconst FALLBACK: TransferDefaults = {\n size: 'md',\n layout: 'auto',\n searchable: true,\n selectAll: true,\n reorderable: false,\n rows: 8,\n};\n\nexport const TRANSFER_DEFAULTS = new InjectionToken<TransferDefaults>('slotted transfer defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its transfers look. A transfer that states\n * any of it itself still wins. The words come from the language in force\n * (`provideSlotted`).\n */\nexport function provideTransferDefaults(defaults: Partial<TransferDefaults>) {\n return {\n provide: TRANSFER_DEFAULTS,\n useFactory: (): TransferDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectTransferDefaults(): TransferDefaults {\n return inject(TRANSFER_DEFAULTS);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SlTransferIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-transfer-${this.count}`;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterEveryRender,\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n type AbstractControl,\n type ControlValueAccessor,\n type ValidationErrors,\n type Validator,\n} from '@angular/forms';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlButton, SlButtonEnd, SlButtonStart } from '@slotted/angular/button';\nimport { SlCheckbox } from '@slotted/angular/checkbox';\nimport {\n SlListbox,\n SlListboxDescription,\n SlListboxEmpty,\n SlListboxIndicator,\n SlListboxLabel,\n SlListboxLoader,\n SlListboxOptionContent,\n type ListboxChangeRequest,\n} from '@slotted/angular/listbox';\nimport { SlSegment, SlSegmentedControl } from '@slotted/angular/segmented-control';\nimport { SlTextField, SlTextFieldInput, SlTextFieldStart } from '@slotted/angular/text-field';\nimport { createFilter } from '@slotted/core/collection';\nimport { createDragController, type DragController } from '@slotted/core/drag';\nimport {\n dragMessages,\n type PartialMessages,\n transferMessages,\n type TransferMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n keysToMove,\n moveKeys,\n partitionKeys,\n reorderKeys,\n reorderKeysTo,\n toggleVisibleSelection,\n type TransferSide,\n} from '@slotted/core/transfer';\n\nimport {\n injectTransferDefaults,\n SlTransferIdFactory,\n type TransferItem,\n type TransferLayout,\n type TransferMoveReason,\n type TransferMoveRequest,\n type TransferPaneReason,\n type TransferPaneRequest,\n type TransferQueryReason,\n type TransferQueryRequest,\n type TransferSelectionReason,\n type TransferSelectionRequest,\n type TransferSize,\n} from './transfer-defaults';\n\nconst SIDES: readonly TransferSide[] = ['source', 'target'];\nconst EMPTY: readonly string[] = [];\n\n/** The step one below the family's, for the search field and the buttons. */\nconst INNER_SIZE: Record<TransferSize, 'sm' | 'md'> = { sm: 'sm', md: 'sm', lg: 'md' };\n\n/** A click with no coordinates is a key. */\nfunction pressReason(event: MouseEvent): 'pointer' | 'keyboard' {\n return event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\nfunction escapeValue(value: string): string {\n return typeof CSS !== 'undefined' && typeof CSS.escape === 'function'\n ? CSS.escape(value)\n : value.replace(/[\"\\\\]/g, '\\\\$&');\n}\n\nconst sameKeys = (a: readonly string[], b: readonly string[]) =>\n a.length === b.length && a.every((key, index) => key === b[index]);\n\n/** A request whose `cancel()` the family reads back after emitting it. */\nfunction makeRequest<T, Extra extends object>(\n value: T,\n previous: T,\n reason: ChangeReason,\n source: unknown,\n extra: Extra,\n): ChangeRequest<T> & Extra & { readonly cancelled: boolean } {\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/** One option of a pane: the item, or the key a target holds without one. */\nexport interface TransferEntry<T = unknown> {\n readonly key: string;\n readonly item: T | undefined;\n}\n\ninterface DragView {\n readonly items: readonly string[];\n readonly over: TransferSide | null;\n readonly index: number | null;\n readonly from: TransferSide | null;\n}\n\nconst NO_DRAG: DragView = { items: EMPTY, over: null, index: null, from: null };\n\n/**\n * The consumer's `<ng-template slTransferItem let-item let-side=\"side\">`: what\n * one option holds besides its check. The listbox family's label, description\n * and meta directives are the parts to write it with.\n */\n@Directive({ selector: 'ng-template[slTransferItem]', standalone: true })\nexport class SlTransferItem {}\n\n/** `<ng-template slTransferFooter let-side>`: content under a pane's list. */\n@Directive({ selector: 'ng-template[slTransferFooter]', standalone: true })\nexport class SlTransferFooter {}\n\n/**\n * Writes this family's part name on a button. `slButton` writes\n * `data-part=\"root\"` as a static host attribute, which erases the part the\n * template wrote, so it is written back after the first render.\n */\n@Directive({ selector: '[slTransferPart]', standalone: true })\nexport class SlTransferPart {\n readonly part = input.required<string>({ alias: 'slTransferPart' });\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/**\n * Two lists and the moves between them: available on one side, chosen on the\n * other, each a listbox with a search, a count and a select-all box, and the\n * move buttons between them.\n *\n * The host is the root. Its value is `targetKeys`, the keys in the chosen\n * list; a form reads the same array through `ControlValueAccessor`, and a\n * `required` transfer reports `{ required: true }` while the list is empty.\n */\n@Component({\n selector: '[slTransfer]',\n standalone: true,\n exportAs: 'slTransfer',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlButtonEnd,\n SlButtonStart,\n SlCheckbox,\n SlGlyph,\n SlIcon,\n SlListbox,\n SlListboxDescription,\n SlListboxEmpty,\n SlListboxIndicator,\n SlListboxLabel,\n SlListboxLoader,\n SlListboxOptionContent,\n SlSegment,\n SlSegmentedControl,\n SlTextField,\n SlTextFieldInput,\n SlTextFieldStart,\n SlTransferPart,\n ],\n template: `\n <div data-part=\"switch\">\n <div\n slSegmentedControl\n [attr.aria-label]=\"t('panes')\"\n [disabled]=\"isDisabled()\"\n [fullWidth]=\"true\"\n [size]=\"resolvedSize()\"\n [value]=\"currentPane()\"\n (valueChange)=\"onSwitch($event)\"\n >\n @for (side of sides; track side) {\n <label slSegment [value]=\"side\">{{ paneCount(side) }}</label>\n }\n </div>\n </div>\n <div data-part=\"body\">\n <ng-container\n [ngTemplateOutlet]=\"paneTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: 'source' }\"\n />\n <div data-part=\"actions\" role=\"group\" [attr.aria-label]=\"t('actions')\">\n <button\n slButton\n slTransferPart=\"move-to-target\"\n tone=\"secondary\"\n variant=\"outline\"\n aria-keyshortcuts=\"Enter\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || selectedToMove('source').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"move(selectedToMove('source'), 'target', pressReason($event), $event)\"\n >\n {{ t('moveToTarget')\n }}<span slButtonEnd aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevron-right\"></svg></span\n ></span>\n </button>\n <button\n slButton\n slTransferPart=\"move-all-to-target\"\n tone=\"secondary\"\n variant=\"outline\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || enabledVisible('source').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"move(enabledVisible('source'), 'target', pressReason($event), $event)\"\n >\n {{ t('moveAllToTarget')\n }}<span slButtonEnd aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevrons-right\"></svg></span\n ></span>\n </button>\n <button\n slButton\n slTransferPart=\"move-to-source\"\n tone=\"secondary\"\n variant=\"outline\"\n aria-keyshortcuts=\"Delete\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || selectedToMove('target').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"move(selectedToMove('target'), 'source', pressReason($event), $event)\"\n >\n <span slButtonStart aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevron-right\"></svg></span></span\n >{{ t('moveToSource') }}\n </button>\n <button\n slButton\n slTransferPart=\"move-all-to-source\"\n tone=\"secondary\"\n variant=\"outline\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || enabledVisible('target').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"move(enabledVisible('target'), 'source', pressReason($event), $event)\"\n >\n <span slButtonStart aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevrons-right\"></svg></span></span\n >{{ t('moveAllToSource') }}\n </button>\n @if (resolvedReorderable()) {\n <div data-part=\"reorder\" role=\"group\" [attr.aria-label]=\"t('reorder')\">\n <button\n slButton\n slTransferPart=\"move-up\"\n tone=\"secondary\"\n variant=\"ghost\"\n aria-keyshortcuts=\"Alt+ArrowUp\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || !canReorder() || selectedToMove('target').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"shift(-1, pressReason($event), $event, false)\"\n >\n <span slButtonStart aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span></span\n >{{ t('moveUp') }}\n </button>\n <button\n slButton\n slTransferPart=\"move-down\"\n tone=\"secondary\"\n variant=\"ghost\"\n aria-keyshortcuts=\"Alt+ArrowDown\"\n [size]=\"innerSize()\"\n [disabled]=\"frozen() || !canReorder() || selectedToMove('target').length === 0\"\n [focusableWhenDisabled]=\"!isDisabled()\"\n (click)=\"shift(1, pressReason($event), $event, false)\"\n >\n <span slButtonStart aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span></span\n >{{ t('moveDown') }}\n </button>\n </div>\n }\n </div>\n <ng-container\n [ngTemplateOutlet]=\"paneTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: 'target' }\"\n />\n </div>\n @if (name(); as field) {\n @for (key of partition().target; track key) {\n <input type=\"hidden\" [attr.name]=\"field\" [value]=\"key\" />\n }\n }\n\n <ng-template #paneTemplate let-side>\n <div\n data-part=\"pane\"\n role=\"group\"\n [attr.data-side]=\"side\"\n [attr.aria-labelledby]=\"titleId(side)\"\n [attr.data-current]=\"currentPane() === side ? '' : null\"\n [attr.data-drop-target]=\"dropTarget(side) ? '' : null\"\n >\n <div data-part=\"pane-header\">\n @if (resolvedSelectAll()) {\n <span data-part=\"select-all\">\n <div\n slCheckbox\n [size]=\"resolvedSize()\"\n [checked]=\"selectAllState(side) === 'all'\"\n [indeterminate]=\"selectAllState(side) === 'some'\"\n [disabled]=\"isDisabled() || enabledVisible(side).length === 0\"\n (checkedChange)=\"onSelectAll(side, $event)\"\n ></div>\n </span>\n }\n <span data-part=\"title\" [attr.id]=\"titleId(side)\">{{ title(side) }}</span>\n <span data-part=\"count\">{{ countText(side) }}</span>\n </div>\n @if (resolvedSearchable()) {\n <div data-part=\"search\">\n <div slTextField [clearable]=\"true\" [size]=\"innerSize()\">\n <span slTextFieldStart aria-hidden=\"true\"\n ><span data-part=\"search-icon\"\n ><span slIcon><svg slGlyph name=\"search\"></svg></span></span\n ></span>\n <input\n slTextFieldInput\n type=\"search\"\n [disabled]=\"isDisabled()\"\n [value]=\"queryOf(side)\"\n [attr.aria-label]=\"t('search', { pane: title(side) })\"\n [attr.placeholder]=\"t('search', { pane: title(side) })\"\n (valueChange)=\"onQuery(side, $event)\"\n />\n </div>\n </div>\n }\n <div data-part=\"list\" [attr.data-side]=\"side\" (focusin)=\"onListFocus(side, $event)\">\n <div\n slListbox\n variant=\"plain\"\n selectionMode=\"multiple\"\n [attr.aria-labelledby]=\"titleId(side)\"\n [size]=\"resolvedSize()\"\n [rows]=\"resolvedRows()\"\n [items]=\"entriesOf(side)\"\n [getKey]=\"entryKey\"\n [getLabel]=\"entryLabel\"\n [isItemDisabled]=\"entryDisabled\"\n [activeKey]=\"activeOf(side)\"\n [value]=\"selectionFor(side)\"\n [disabled]=\"isDisabled()\"\n [invalid]=\"isInvalid()\"\n [required]=\"required()\"\n [virtual]=\"virtual() && itemSize() !== undefined\"\n [itemSize]=\"itemSize()\"\n [overscan]=\"overscan()\"\n [loading]=\"side === 'source' && loading()\"\n [hasMore]=\"side === 'source' && hasMore()\"\n (loadMore)=\"loadMore.emit()\"\n (activeKeyChange)=\"setActive(side, $event.value)\"\n (valueChange)=\"onPaneSelection(side, $event)\"\n >\n <ng-template slListboxOptionContent let-entry>\n <span\n slListboxIndicator\n [attr.data-dragging]=\"dragging().has(entry.key) ? '' : null\"\n [attr.data-unresolved]=\"entry.item === undefined ? '' : null\"\n ></span>\n @if (entry.item === undefined) {\n <span slListboxLabel>{{ entry.key }}</span>\n } @else if (itemTemplate(); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item, side: side }\"\n />\n } @else {\n <span slListboxLabel>{{ labelOf(entry.key) }}</span>\n @if (descriptionOf(entry.item); as description) {\n <span slListboxDescription>{{ description }}</span>\n }\n }\n </ng-template>\n @if (isEmpty(side)) {\n <div slListboxEmpty>\n <div data-part=\"empty\" [attr.data-query]=\"typed(side) ? '' : null\">\n <span slIcon\n ><svg slGlyph [name]=\"typed(side) ? 'search-x' : 'inbox'\"></svg\n ></span>\n {{ typed(side) ? t('noResults') : t('empty') }}\n </div>\n </div>\n }\n @if (side === 'source' && hasMore()) {\n <div slListboxLoader>{{ t('loading') }}</div>\n }\n </div>\n @if (side === 'target' && dropOffset() !== null) {\n <div\n data-part=\"drop-indicator\"\n aria-hidden=\"true\"\n [style.--_drop-offset]=\"dropOffset() + 'px'\"\n ></div>\n }\n </div>\n @if (footerTemplate(); as footer) {\n <div data-part=\"pane-footer\">\n <ng-container\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: side }\"\n />\n </div>\n }\n </div>\n </ng-template>\n `,\n styleUrl: '../../../styles/src/transfer/transfer.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTransfer), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTransfer), multi: true },\n ],\n host: {\n 'data-ui': 'transfer',\n 'data-part': 'root',\n '[attr.role]': 'writtenRole ?? \"group\"',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-pane]': 'currentPane()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '[attr.data-readonly]': 'readOnly() ? \"\" : null',\n '[attr.data-invalid]': 'isInvalid() ? \"\" : null',\n '[attr.data-required]': 'required() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '[style.--slotted-transfer-rows]': 'resolvedRows()',\n },\n})\nexport class SlTransfer<T = TransferItem> implements ControlValueAccessor, Validator {\n /* ── Inputs ───────────────────────────────────────────────────────── */\n\n /** The whole collection, both sides. */\n readonly items = input.required<readonly T[]>();\n readonly getKey = input<(item: T) => string>((item) => (item as TransferItem).key);\n readonly getLabel = input<(item: T) => string>((item) => (item as TransferItem).label);\n readonly getDescription = input<(item: T) => string | undefined>(\n (item) => (item as TransferItem).description,\n );\n readonly isItemDisabled = input<(item: T) => boolean>(\n (item) => (item as TransferItem).disabled === true,\n );\n /** Whether an item answers a query. Defaults to a locale-aware contains. */\n readonly filter = input<((item: T, query: string, side: TransferSide) => boolean) | undefined>(\n undefined,\n );\n\n /** The keys in the target; two-way, so a template may bind it directly. */\n readonly targetKeys = model<readonly string[] | undefined>(undefined);\n readonly defaultTargetKeys = input<readonly string[] | undefined>(undefined);\n readonly selectedKeys = model<readonly string[] | undefined>(undefined);\n readonly defaultSelectedKeys = input<readonly string[] | undefined>(undefined);\n readonly sourceQuery = model<string | undefined>(undefined);\n readonly defaultSourceQuery = input<string | undefined>(undefined);\n readonly targetQuery = model<string | undefined>(undefined);\n readonly defaultTargetQuery = input<string | undefined>(undefined);\n /** The pane shown in steps. */\n readonly pane = model<TransferSide | undefined>(undefined);\n readonly defaultPane = input<TransferSide | undefined>(undefined);\n\n readonly size = input<TransferSize | undefined>(undefined);\n readonly layout = input<TransferLayout | undefined>(undefined);\n readonly searchable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly selectAll = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly reorderable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly rows = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly virtual = input(false, { transform: booleanAttribute });\n readonly itemSize = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n /** Options rendered either side of a windowed viewport. */\n readonly overscan = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readOnly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly hasMore = input(false, { transform: booleanAttribute });\n /** Submits one hidden input per target key. */\n readonly name = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * panes' names, the controls, the counts and the announcements.\n */\n readonly messages = input<PartialMessages<TransferMessages> | undefined>(undefined);\n\n /* ── Outputs ──────────────────────────────────────────────────────── */\n\n /** Before the target moves, with the direction, the keys and the reason. */\n readonly targetKeysChangeRequest = output<TransferMoveRequest>();\n readonly selectedKeysChangeRequest = output<TransferSelectionRequest>();\n readonly sourceQueryChangeRequest = output<TransferQueryRequest>();\n readonly targetQueryChangeRequest = output<TransferQueryRequest>();\n readonly paneChangeRequest = output<TransferPaneRequest>();\n /** Asked when the source list reaches the end of what has been loaded. */\n readonly loadMore = output<void>();\n\n /* ── State ────────────────────────────────────────────────────────── */\n\n private readonly defaults = injectTransferDefaults();\n private readonly base = inject(SlTransferIdFactory).next();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n /** A role the consumer wrote is never replaced by the family's. */\n protected readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n\n protected readonly itemTemplate = contentChild(SlTransferItem, { read: TemplateRef });\n protected readonly footerTemplate = contentChild(SlTransferFooter, { read: TemplateRef });\n private readonly listboxes = viewChildren(SlListbox);\n\n protected readonly sides = SIDES;\n protected readonly pressReason = pressReason;\n\n /** The family's words in the language in force, with this transfer's `messages` laid over them. */\n protected readonly t = injectMessages(transferMessages, this.messages);\n /** What a keyboard drag between the panes says, in the language in force. */\n private readonly dragT = injectMessages(dragMessages);\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly innerSize = computed(() => INNER_SIZE[this.resolvedSize()]);\n protected readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout);\n protected readonly resolvedSearchable = computed(\n () => this.searchable() ?? this.defaults.searchable,\n );\n protected readonly resolvedSelectAll = computed(\n () => this.selectAll() ?? this.defaults.selectAll,\n );\n protected readonly resolvedReorderable = computed(\n () => this.reorderable() ?? this.defaults.reorderable,\n );\n protected readonly resolvedRows = computed(() => this.rows() ?? this.defaults.rows);\n\n private readonly formDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n protected readonly isInvalid = computed(() => this.invalid());\n protected readonly frozen = computed(() => this.isDisabled() || this.readOnly());\n\n /** The committed values: the bound one, or the default. */\n readonly currentTargetKeys = computed(\n () => this.targetKeys() ?? this.defaultTargetKeys() ?? EMPTY,\n );\n readonly currentSelectedKeys = computed(\n () => this.selectedKeys() ?? this.defaultSelectedKeys() ?? EMPTY,\n );\n readonly currentSourceQuery = computed(\n () => this.sourceQuery() ?? this.defaultSourceQuery() ?? '',\n );\n readonly currentTargetQuery = computed(\n () => this.targetQuery() ?? this.defaultTargetQuery() ?? '',\n );\n readonly currentPane = computed<TransferSide>(\n () => this.pane() ?? this.defaultPane() ?? 'source',\n );\n\n private readonly byKey = computed(\n () => new Map(this.items().map((item) => [this.getKey()(item), item])),\n );\n private readonly allKeys = computed(() => this.items().map(this.getKey()));\n private readonly disabledKeys = computed(() => {\n const disabled = this.isItemDisabled();\n const key = this.getKey();\n return new Set(\n this.items()\n .filter((item) => disabled(item))\n .map(key),\n );\n });\n readonly partition = computed(() =>\n partitionKeys(this.allKeys(), this.currentTargetKeys(), this.resolvedReorderable()),\n );\n private readonly matcher = createFilter();\n\n protected readonly visible = computed<Record<TransferSide, readonly string[]>>(() => {\n const partition = this.partition();\n const byKey = this.byKey();\n const filter = this.filter();\n const getLabel = this.getLabel();\n const getDescription = this.getDescription();\n const pick = (side: TransferSide, typed: string) => {\n const query = typed.trim();\n if (query === '') return partition[side];\n return partition[side].filter((key) => {\n const item = byKey.get(key);\n if (item === undefined) return this.matcher.contains(key, query);\n if (filter) return filter(item, query, side);\n return (\n this.matcher.contains(getLabel(item), query) ||\n this.matcher.contains(getDescription(item) ?? '', query)\n );\n });\n };\n return {\n source: pick('source', this.currentSourceQuery()),\n target: pick('target', this.currentTargetQuery()),\n };\n });\n\n protected readonly entries = computed<Record<TransferSide, TransferEntry<T>[]>>(() => {\n const byKey = this.byKey();\n const visible = this.visible();\n const build = (side: TransferSide) =>\n visible[side].map((key) => ({ key, item: byKey.get(key) }));\n return { source: build('source'), target: build('target') };\n });\n\n protected entriesOf(side: TransferSide) {\n return this.entries()[side];\n }\n\n protected isEmpty(side: TransferSide) {\n return this.visible()[side].length === 0;\n }\n\n protected readonly entryKey = (entry: TransferEntry<T>) => entry.key;\n protected readonly entryLabel = (entry: TransferEntry<T>) => this.labelOf(entry.key);\n protected readonly entryDisabled = (entry: TransferEntry<T>) =>\n entry.item !== undefined && this.isItemDisabled()(entry.item);\n\n protected readonly canReorder = computed(\n () => this.resolvedReorderable() && this.currentTargetQuery().trim() === '',\n );\n\n protected readonly drag = signal<DragView>(NO_DRAG);\n protected readonly dragging = computed(() => new Set(this.drag().items));\n protected readonly dropOffset = signal<number | null>(null);\n\n constructor() {\n /* The APG keys a dual list adds, taken before the listbox's own. */\n const onKeyDown = (event: KeyboardEvent) => this.onListKeyDown(event);\n afterNextRender(() => {\n this.host.nativeElement.addEventListener('keydown', onKeyDown, true);\n this.createController();\n });\n this.destroyRef.onDestroy(() => {\n this.host.nativeElement.removeEventListener('keydown', onKeyDown, true);\n this.teardown?.();\n });\n\n afterEveryRender(() => {\n this.nameSelectAll();\n this.syncDraggables();\n const side = this.pendingFocus;\n if (side !== null) {\n this.pendingFocus = null;\n this.listboxOf(side)?.focus();\n }\n this.measureDropLine();\n });\n }\n\n /* ── Reading ──────────────────────────────────────────────────────── */\n\n protected title(side: TransferSide) {\n return side === 'target' ? this.t('target') : this.t('source');\n }\n\n protected titleId(side: TransferSide) {\n return `${this.base}-${side}-title`;\n }\n\n protected labelOf(key: string) {\n const item = this.byKey().get(key);\n return item === undefined ? key : this.getLabel()(item);\n }\n\n protected descriptionOf(item: T) {\n return this.getDescription()(item);\n }\n\n protected queryOf(side: TransferSide) {\n return side === 'source' ? this.currentSourceQuery() : this.currentTargetQuery();\n }\n\n protected typed(side: TransferSide) {\n return this.queryOf(side).trim() !== '';\n }\n\n protected enabledVisible(side: TransferSide) {\n const disabled = this.disabledKeys();\n return this.visible()[side].filter((key) => !disabled.has(key));\n }\n\n protected selectionFor(side: TransferSide): readonly string[] {\n const selected = new Set(this.currentSelectedKeys());\n return this.visible()[side].filter((key) => selected.has(key));\n }\n\n protected selectedToMove(side: TransferSide) {\n return keysToMove({\n visible: this.visible()[side],\n selected: this.currentSelectedKeys(),\n disabled: this.disabledKeys(),\n active: null,\n });\n }\n\n protected selectAllState(side: TransferSide): 'none' | 'some' | 'all' {\n const reach = this.enabledVisible(side);\n const selected = new Set(this.currentSelectedKeys());\n const chosen = reach.filter((key) => selected.has(key)).length;\n if (chosen === 0) return 'none';\n return chosen === reach.length ? 'all' : 'some';\n }\n\n protected countText(side: TransferSide) {\n const keys = this.partition()[side];\n if (this.typed(side)) {\n return this.t('countFiltered', { shown: this.visible()[side].length, total: keys.length });\n }\n const selected = new Set(this.currentSelectedKeys());\n const chosen = keys.filter((key) => selected.has(key)).length;\n return chosen > 0\n ? this.t('countSelected', { selected: chosen, total: keys.length })\n : this.t('count', { total: keys.length });\n }\n\n protected paneCount(side: TransferSide) {\n return this.t('paneCount', {\n pane: this.title(side),\n total: this.partition()[side].length,\n });\n }\n\n protected dropTarget(side: TransferSide) {\n const drag = this.drag();\n return drag.over === side && (drag.from !== side || side === 'target');\n }\n\n private listboxOf(side: TransferSide): SlListbox | undefined {\n return this.listboxes()[side === 'source' ? 0 : 1];\n }\n\n private listOf(side: TransferSide): HTMLElement | null {\n return this.host.nativeElement.querySelector<HTMLElement>(\n `[data-part=\"pane\"][data-side=\"${side}\"] > [data-part=\"list\"]`,\n );\n }\n\n /**\n * The option the keyboard is on: the option holding focus under the roving\n * model, where Tab lands on the tab stop without the listbox calling it\n * active, and the listbox's active option under `aria-activedescendant`,\n * where focus is on the listbox itself.\n */\n private activeIn(side: TransferSide): string | null {\n const list = this.listOf(side);\n const focused = list?.ownerDocument.activeElement;\n if (list && focused instanceof HTMLElement && list.contains(focused)) {\n const key = focused.closest<HTMLElement>('[data-part=\"option\"]')?.dataset['key'];\n if (key !== undefined) return key;\n }\n return this.listboxOf(side)?.getActiveKey() ?? null;\n }\n\n private announce(message: string) {\n if (message !== '') getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message);\n }\n\n /* ── Requests ─────────────────────────────────────────────────────── */\n\n private pendingFocus: TransferSide | null = null;\n\n /**\n * Which option the keyboard is on in each list. The family holds it rather\n * than each listbox, because a move has to say where the keyboard goes next:\n * the APG example sends it to the first option after the moved ones that is\n * still in the list, and the listbox cannot know which of its options left\n * on purpose.\n */\n private readonly actives = signal<Record<TransferSide, string | null>>({\n source: null,\n target: null,\n });\n\n /* A key that left the list is no tab stop: the list would be unreachable by Tab. */\n protected activeOf(side: TransferSide) {\n const key = this.actives()[side];\n return key !== null && this.visible()[side].includes(key) ? key : null;\n }\n\n protected setActive(side: TransferSide, key: string | null) {\n if (this.actives()[side] === key) return;\n this.actives.update((current) => ({ ...current, [side]: key }));\n }\n\n /* Tab lands on the option holding the tab stop, and the keyboard is on it from then on. */\n protected onListFocus(side: TransferSide, event: FocusEvent) {\n const key = (event.target as HTMLElement | null)?.closest<HTMLElement>('[data-part=\"option\"]')\n ?.dataset['key'];\n if (key !== undefined) this.setActive(side, key);\n }\n\n private requestTarget(\n next: readonly string[],\n reason: TransferMoveReason,\n source: unknown,\n extra: Pick<TransferMoveRequest, 'direction' | 'keys'>,\n ) {\n const previous = this.currentTargetKeys();\n if (sameKeys(previous, next)) return false;\n const request = makeRequest(next, previous, reason, source, extra) as TransferMoveRequest;\n this.targetKeysChangeRequest.emit(request);\n if (request.cancelled) return false;\n this.targetKeys.set(next);\n this.onChangeFn(next);\n this.onTouchedFn();\n return true;\n }\n\n private requestSelected(\n next: readonly string[],\n reason: TransferSelectionReason,\n source: unknown,\n ) {\n const previous = this.currentSelectedKeys();\n if (sameKeys(previous, next)) return;\n const request = makeRequest(next, previous, reason, source, {}) as TransferSelectionRequest;\n this.selectedKeysChangeRequest.emit(request);\n if (!request.cancelled) this.selectedKeys.set(next);\n }\n\n protected move(\n keys: readonly string[],\n to: TransferSide,\n reason: TransferMoveReason,\n source?: unknown,\n index?: number,\n ) {\n if (this.frozen() || keys.length === 0) return;\n const from: TransferSide = to === 'target' ? 'source' : 'target';\n const next = moveKeys({\n allKeys: this.allKeys(),\n targetKeys: this.currentTargetKeys(),\n keys,\n to,\n reorderable: this.resolvedReorderable(),\n index,\n });\n const visibleBefore = this.visible()[from];\n if (!this.requestTarget(next, reason, source, { direction: to, keys })) return;\n const moving = new Set(keys);\n this.requestSelected(\n this.currentSelectedKeys().filter((key) => !moving.has(key)),\n reason,\n source,\n );\n const pane = this.title(to);\n this.announce(\n keys.length === 1\n ? this.t('movedOne', { item: this.labelOf(keys[0]!), pane })\n : this.t('moved', { count: keys.length, pane }),\n );\n const list = this.listOf(from);\n if (!list?.contains(list.ownerDocument.activeElement)) return;\n /* The keyboard stays in the list it moved from, on the first option after\n the moved ones that is still there, then on the last one before them;\n a list left empty hands it to the other. */\n const first = visibleBefore.findIndex((key) => moving.has(key));\n const after = first === -1 ? [] : visibleBefore.slice(first);\n const before = first === -1 ? visibleBefore : visibleBefore.slice(0, first);\n const disabled = this.disabledKeys();\n const stays = (key: string) => !moving.has(key) && !disabled.has(key);\n const neighbour = after.find(stays) ?? [...before].reverse().find(stays) ?? null;\n if (neighbour === null) {\n this.pendingFocus = to;\n return;\n }\n this.setActive(from, neighbour);\n this.pendingFocus = from;\n }\n\n private reorder(\n keys: readonly string[],\n next: readonly string[],\n reason: TransferMoveReason,\n source?: unknown,\n ) {\n if (this.frozen() || keys.length === 0 || sameKeys(next, this.partition().target)) return;\n if (!this.requestTarget(next, reason, source, { direction: 'reorder', keys })) return;\n this.announce(\n this.t('reordered', {\n item: this.labelOf(keys[0]!),\n position: next.indexOf(keys[0]!) + 1,\n }),\n );\n const list = this.listOf('target');\n if (!list?.contains(list.ownerDocument.activeElement)) return;\n const held = this.activeIn('target');\n if (held !== null) this.setActive('target', held);\n this.pendingFocus = 'target';\n }\n\n protected shift(delta: -1 | 1, reason: TransferMoveReason, source: unknown, withActive: boolean) {\n if (!this.canReorder()) return;\n const keys = keysToMove({\n visible: this.visible().target,\n selected: this.currentSelectedKeys(),\n disabled: this.disabledKeys(),\n active: withActive ? this.activeIn('target') : null,\n });\n this.reorder(keys, reorderKeys(this.partition().target, keys, delta), reason, source);\n }\n\n protected onPaneSelection(side: TransferSide, request: ListboxChangeRequest) {\n const value = request.value;\n const chosen = Array.isArray(value) ? value : value === null ? [] : [value as string];\n const shown = new Set(this.visible()[side]);\n const next = [...this.currentSelectedKeys().filter((key) => !shown.has(key)), ...chosen];\n const reason = request.reason;\n const mapped: TransferSelectionReason =\n reason === 'pointer' || reason === 'keyboard' || reason === 'programmatic'\n ? reason\n : 'select';\n this.requestSelected(next, mapped, request.source);\n }\n\n protected onSelectAll(side: TransferSide, request: ChangeRequest<boolean>) {\n this.requestSelected(\n toggleVisibleSelection(\n this.currentSelectedKeys(),\n this.visible()[side],\n this.disabledKeys(),\n request.value,\n ),\n 'select',\n request.source,\n );\n }\n\n protected onQuery(side: TransferSide, change: ChangeRequest<string>) {\n const reason: TransferQueryReason = change.reason === 'clear' ? 'clear' : 'keyboard';\n const previous = this.queryOf(side);\n if (previous === change.value) return;\n const request = makeRequest(\n change.value,\n previous,\n reason,\n change.source,\n {},\n ) as TransferQueryRequest;\n if (side === 'source') this.sourceQueryChangeRequest.emit(request);\n else this.targetQueryChangeRequest.emit(request);\n if (request.cancelled) return;\n if (side === 'source') this.sourceQuery.set(change.value);\n else this.targetQuery.set(change.value);\n }\n\n protected onSwitch(change: ChangeRequest<string | undefined>) {\n const next = change.value as TransferSide | undefined;\n if (next === undefined || next === this.currentPane()) return;\n const reason: TransferPaneReason = change.reason === 'keyboard' ? 'keyboard' : 'pointer';\n const request = makeRequest(\n next,\n this.currentPane(),\n reason,\n change.source,\n {},\n ) as TransferPaneRequest;\n this.paneChangeRequest.emit(request);\n if (!request.cancelled) this.pane.set(next);\n }\n\n private onListKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || this.frozen()) return;\n const target = event.target as Element | null;\n const list = target?.closest<HTMLElement>('[data-part=\"list\"][data-side]');\n if (!list || !this.host.nativeElement.contains(list)) return;\n const side = list.dataset['side'] as TransferSide;\n const other: TransferSide = side === 'source' ? 'target' : 'source';\n const pick = () =>\n keysToMove({\n visible: this.visible()[side],\n selected: this.currentSelectedKeys(),\n disabled: this.disabledKeys(),\n active: this.activeIn(side),\n });\n const modifier = event.ctrlKey || event.metaKey;\n const element = this.host.nativeElement;\n const rtl = element.ownerDocument.defaultView?.getComputedStyle(element).direction === 'rtl';\n const end = rtl ? 'ArrowLeft' : 'ArrowRight';\n const start = rtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === 'Enter' && !modifier && !event.altKey && !event.shiftKey) {\n event.preventDefault();\n this.move(pick(), other, 'keyboard', event);\n } else if (side === 'target' && (event.key === 'Delete' || event.key === 'Backspace')) {\n event.preventDefault();\n this.move(pick(), 'source', 'keyboard', event);\n } else if (modifier && !event.altKey && (event.key === end || event.key === start)) {\n const to: TransferSide = event.key === end ? 'target' : 'source';\n event.preventDefault();\n if (to !== side) this.move(pick(), to, 'keyboard', event);\n } else if (\n side === 'target' &&\n event.altKey &&\n (event.key === 'ArrowUp' || event.key === 'ArrowDown')\n ) {\n event.preventDefault();\n this.shift(event.key === 'ArrowUp' ? -1 : 1, 'keyboard', event, true);\n }\n }\n\n /**\n * The select-all box is named on its input. The checkbox family takes its\n * name from its label and has no input for one, and a label holding a\n * visually hidden sentence would take the box's width and halo with it; the\n * empty label is the case that family already draws.\n */\n private nameSelectAll() {\n for (const side of SIDES) {\n const control = this.host.nativeElement.querySelector<HTMLInputElement>(\n `[data-part=\"pane\"][data-side=\"${side}\"] [data-part=\"select-all\"] input`,\n );\n const name = this.t('selectAll', { pane: this.title(side) });\n if (control && control.getAttribute('aria-label') !== name) {\n control.setAttribute('aria-label', name);\n }\n }\n }\n\n /* ── The handle ───────────────────────────────────────────────────── */\n\n /** Moves focus into a pane's list; the source's when no side is named. */\n focus(side: TransferSide = 'source') {\n this.listboxOf(side)?.focus();\n }\n\n /** Reveals an item in whichever pane holds it. */\n scrollToKey(key: string) {\n const side: TransferSide = this.partition().target.includes(key) ? 'target' : 'source';\n this.listboxOf(side)?.scrollToKey(key);\n }\n\n /* ── The drag ─────────────────────────────────────────────────────── */\n\n private controller: DragController | null = null;\n private teardown: (() => void) | null = null;\n private readonly draggables = new Map<HTMLElement, () => void>();\n\n private createController() {\n const root = this.host.nativeElement;\n const listboxIn = (side: TransferSide) =>\n root.querySelector<HTMLElement>(\n `[data-part=\"pane\"][data-side=\"${side}\"] [data-ui=\"listbox\"]`,\n );\n const created = createDragController({\n document: root.ownerDocument,\n preview: false,\n restoreFocus: false,\n autoScroll: { axis: 'y' },\n t: this.dragT,\n /* The move says what happened once, in the family's own words. */\n silent: ['moved', 'dropped'],\n onDrop: ({ items: carried, source, target, reason, event }) => {\n const from = source.container as TransferSide;\n const to = target.container as TransferSide;\n const why: TransferMoveReason = reason === 'keyboard' ? 'keyboard' : 'pointer';\n const shown = this.visible().target;\n const full = this.partition().target;\n const indexInTarget = () => {\n if (target.kind !== 'between') return full.length;\n const anchor = shown[target.index];\n if (anchor !== undefined) return full.indexOf(anchor);\n const last = shown[shown.length - 1];\n return last === undefined ? full.length : full.indexOf(last) + 1;\n };\n if (from !== to) {\n this.move(carried, to, why, event, to === 'target' ? indexInTarget() : undefined);\n } else if (to === 'target') {\n this.reorder(carried, reorderKeysTo(full, carried, indexInTarget()), why, event);\n }\n },\n });\n const unregister = SIDES.map((side) =>\n created.registerContainer({\n key: side,\n items: () => this.visible()[side],\n orientation: 'vertical',\n element: () => listboxIn(side),\n itemElement: (key) =>\n listboxIn(side)?.querySelector(`[data-part=\"option\"][data-key=\"${escapeValue(key)}\"]`) ??\n null,\n accepts: (state, target) => {\n if (state.source?.container !== target.container) return true;\n return target.container === 'target' && this.canReorder();\n },\n disabled: () => this.frozen(),\n label: () => this.title(side),\n itemLabel: (key) => this.labelOf(key),\n }),\n );\n /* The click the browser fires after a pointer drag is the drag's, not a\n press on the option: with the pointer captured it lands on the option\n that was carried and would toggle its selection. */\n let swallow = false;\n let wasDragging: 'pointer' | 'other' | null = null;\n const onClick = (event: Event) => {\n if (!swallow) return;\n swallow = false;\n event.preventDefault();\n event.stopPropagation();\n };\n root.addEventListener('click', onClick, true);\n const unsubscribe = created.subscribe((next) => {\n if (next.status !== 'dragging') {\n if (wasDragging === 'pointer') {\n swallow = true;\n window.setTimeout(() => {\n swallow = false;\n }, 0);\n }\n wasDragging = null;\n this.drag.set(NO_DRAG);\n return;\n }\n wasDragging = next.reason === 'pointer' ? 'pointer' : 'other';\n const target = next.target;\n this.drag.set({\n items: next.items,\n from: (next.source?.container as TransferSide | undefined) ?? null,\n over: target && next.valid ? (target.container as TransferSide) : null,\n index: target && target.kind === 'between' && next.valid ? target.index : null,\n });\n });\n this.controller = created;\n this.teardown = () => {\n root.removeEventListener('click', onClick, true);\n unsubscribe();\n for (const off of unregister) off();\n created.destroy();\n this.controller = null;\n for (const detach of this.draggables.values()) detach();\n this.draggables.clear();\n };\n this.syncDraggables();\n }\n\n /* Every option is a draggable, and carries its pane's selection when it is in it. */\n private syncDraggables() {\n const created = this.controller;\n if (!created) return;\n const root = this.host.nativeElement;\n const seen = new Set<HTMLElement>();\n for (const side of SIDES) {\n const nodes = root.querySelectorAll<HTMLElement>(\n `[data-part=\"pane\"][data-side=\"${side}\"] [data-part=\"option\"][data-key]`,\n );\n for (const node of nodes) {\n seen.add(node);\n if (this.draggables.has(node)) continue;\n const key = node.dataset['key']!;\n const detach = created.attachDraggable(node, {\n container: side,\n key,\n items: () => {\n const carried = this.selectedToMove(side);\n return carried.includes(key) ? carried : [key];\n },\n disabled: () => this.frozen() || this.disabledKeys().has(key),\n distance: 4,\n });\n this.draggables.set(node, detach);\n }\n }\n for (const [node, detach] of this.draggables) {\n if (seen.has(node)) continue;\n detach();\n this.draggables.delete(node);\n }\n }\n\n /* The drop line stands between two options, where script alone can measure. */\n private measureDropLine() {\n const drag = this.drag();\n const shows = drag.over === 'target' && drag.index !== null && this.resolvedReorderable();\n if (!shows || drag.index === null) {\n if (this.dropOffset() !== null) this.dropOffset.set(null);\n return;\n }\n const list = this.listOf('target');\n const listbox = list?.querySelector('[data-ui=\"listbox\"]');\n if (!list || !listbox) return;\n const options = listbox.querySelectorAll<HTMLElement>('[data-part=\"option\"]');\n const frame = list.getBoundingClientRect().top;\n const at = options[drag.index];\n const last = options[options.length - 1];\n const edge = at\n ? at.getBoundingClientRect().top\n : last\n ? last.getBoundingClientRect().bottom\n : listbox.getBoundingClientRect().top;\n const offset = Math.round(edge - frame);\n if (this.dropOffset() !== offset) this.dropOffset.set(offset);\n }\n\n /* ── Forms ────────────────────────────────────────────────────────── */\n\n private onChangeFn: (value: readonly string[]) => void = () => {};\n private onTouchedFn: () => void = () => {};\n\n writeValue(value: readonly string[] | null | undefined) {\n this.targetKeys.set(value ?? EMPTY);\n }\n\n registerOnChange(fn: (value: readonly string[]) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.formDisabled.set(disabled);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!this.required()) return null;\n const value = control.value as readonly string[] | null | undefined;\n return (value ?? EMPTY).length === 0 ? { required: true } : null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}