{"version":3,"file":"forty-cdk-toolbar.mjs","sources":["../../../projects/forty-cdk/toolbar/src/toolbar-context.ts","../../../projects/forty-cdk/toolbar/src/toolbar-defaults.ts","../../../projects/forty-cdk/toolbar/src/toolbar.ts","../../../projects/forty-cdk/toolbar/src/toolbar-button.ts","../../../projects/forty-cdk/toolbar/src/toolbar-link.ts","../../../projects/forty-cdk/toolbar/src/toolbar-separator.ts","../../../projects/forty-cdk/toolbar/src/forty-cdk-toolbar.ts"],"sourcesContent":["import { inject, InjectionToken, type Signal } from '@angular/core';\n\nimport {\n  type HostRovingContext,\n  type HostRovingItemHandle,\n  orphanContextError,\n} from 'forty-cdk/core';\n\n/**\n * Per-item handle stored in the toolbar's `Collection`. Buttons, links, and\n * toggle-group items (when nested) register themselves on construction so the\n * toolbar can run roving-tabindex and arrow-key navigation in DOM order.\n *\n * Extends the lifted `HostRovingItemHandle` so any `_internal/` consumer\n * that registers against the toolbar via `FOR_HOST_ROVING_CONTEXT` works\n * without a toolbar-specific handle type.\n */\nexport type ForToolbarItemHandle = HostRovingItemHandle;\n\n/**\n * Coordination contract owned by `ForToolbar`.\n *\n * Extends the neutral `HostRovingContext` (the lifted \"host owns roving\n * navigation for embedded items\" contract in `_internal/`) plus\n * toolbar-specific extras (`loop`). Toolbar provides both\n * `FOR_TOOLBAR_CONTEXT` and `FOR_HOST_ROVING_CONTEXT` from the same\n * instance via `useExisting`, so any neutral consumer (e.g.\n * `ForToggleGroupItem`) and any toolbar-specific consumer pull the same\n * object without taking a cross-primitive import.\n */\nexport interface ForToolbarContext extends HostRovingContext {\n  readonly loop: Signal<boolean>;\n}\n\nexport const FOR_TOOLBAR_CONTEXT = new InjectionToken<ForToolbarContext>('FOR_TOOLBAR_CONTEXT');\n\nexport function injectToolbarContext(piece: string): ForToolbarContext {\n  const ctx = inject(FOR_TOOLBAR_CONTEXT, { optional: true });\n  if (!ctx) {\n    throw orphanContextError({\n      code: 'FORCDK-TOOLBAR-001',\n      piece,\n      root: '[forToolbar]',\n      token: 'FOR_TOOLBAR_CONTEXT',\n    });\n  }\n  return ctx;\n}\n","import { type Provider } from '@angular/core';\n\nimport { createDefaults } from 'forty-cdk/core';\n\n/**\n * Defaults inherited by descendant toolbars in the surrounding injector\n * scope. Configure with `provideForToolbarDefaults` either at the\n * application root or in any component's `providers` array; partial\n * overrides merge with the parent scope.\n */\nexport interface ForToolbarDefaults {\n  /**\n   * Whether arrow navigation wraps around past the first / last enabled\n   * item. Matches the WAI-ARIA Toolbar APG default.\n   */\n  loop: boolean;\n}\n\n/**\n * Library fallback for toolbar defaults, read at the root injector when no\n * consumer has called `provideForToolbarDefaults`. Exported for the shared defaults\n * contract spec; not re-exported from the primitive's public entry.\n */\nexport const FOR_TOOLBAR_FALLBACK_DEFAULTS: ForToolbarDefaults = {\n  loop: true,\n};\n\nconst { token, provideDefaults } = createDefaults<ForToolbarDefaults>(\n  'FOR_TOOLBAR_DEFAULTS',\n  FOR_TOOLBAR_FALLBACK_DEFAULTS,\n);\n\n/** Token holding the resolved toolbar defaults for the current scope. */\nexport const FOR_TOOLBAR_DEFAULTS = token;\n\n/**\n * Configures forty-cdk toolbar defaults for this injector scope. Partial\n * overrides inherit unspecified keys from the parent scope (or library\n * defaults at the root).\n */\nexport function provideForToolbarDefaults(defaults: Partial<ForToolbarDefaults> = {}): Provider[] {\n  return provideDefaults(defaults);\n}\n","import { booleanAttribute, computed, Directive, inject, input } from '@angular/core';\n\nimport {\n  Collection,\n  firstEnabledHost,\n  type ListNavigationAction,\n  type WritingDirection,\n  nextEnabledHandle,\n  FOR_HOST_ROVING_CONTEXT,\n  RovingTabindex,\n  injectTextDirection,\n  hostAriaLabel,\n} from 'forty-cdk/core';\nimport {\n  FOR_TOOLBAR_CONTEXT,\n  type ForToolbarContext,\n  type ForToolbarItemHandle,\n} from './toolbar-context';\nimport { FOR_TOOLBAR_DEFAULTS } from './toolbar-defaults';\n\n/**\n * Headless implementation of the\n * [WAI-ARIA Toolbar pattern](https://www.w3.org/WAI/ARIA/apg/patterns/toolbar/).\n *\n * Hosts buttons, links, separators, and (optionally) a `[forToggleGroup]`\n * for grouped toggles. Manages roving tabindex across all interactive\n * children so the toolbar takes a single Tab stop and arrow keys move\n * focus inside.\n *\n * Composition with `ForToggleGroup` is automatic: items inside a\n * `[forToggleGroup]` whose ancestor is `[forToolbar]` register with the\n * toolbar's roving and use its keyboard navigation, so arrow keys move\n * fluidly across the whole bar.\n *\n * @example\n * ```html\n * <div forToolbar aria-label=\"Formatting\">\n *   <button forToolbarButton>Undo</button>\n *   <button forToolbarButton>Redo</button>\n *   <span forToolbarSeparator></span>\n *   <div forToggleGroup multiple>\n *     <button forToggleGroupItem value=\"bold\">B</button>\n *     <button forToggleGroupItem value=\"italic\">I</button>\n *   </div>\n *   <span forToolbarSeparator></span>\n *   <a forToolbarLink href=\"/help\">Help</a>\n * </div>\n * ```\n */\n@Directive({\n  selector: '[forToolbar]',\n  exportAs: 'forToolbar',\n  host: {\n    role: 'toolbar',\n    '[attr.aria-label]': 'resolvedAriaLabel()',\n    '[attr.aria-orientation]': 'orientation()',\n    '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n    '[attr.data-orientation]': 'orientation()',\n    '[attr.data-disabled]': 'disabled() ? \"\" : null',\n    '[attr.dir]': 'dir()',\n  },\n  providers: [\n    { provide: FOR_TOOLBAR_CONTEXT, useExisting: ForToolbar },\n    { provide: FOR_HOST_ROVING_CONTEXT, useExisting: FOR_TOOLBAR_CONTEXT },\n  ],\n})\nexport class ForToolbar implements ForToolbarContext {\n  readonly #defaults = inject(FOR_TOOLBAR_DEFAULTS);\n\n  /**\n   * Manual `aria-label` for the toolbar. Use this when no visible label element\n   * exists; otherwise prefer pointing `aria-labelledby` at one. A `null`\n   * (default) or empty value emits no attribute. Matches the uniform labelling\n   * input on `ForListbox` / `ForMenubar`.\n   */\n  readonly ariaLabel = input<string | null>(null);\n\n  protected readonly resolvedAriaLabel = hostAriaLabel(() => this.ariaLabel() || null);\n\n  /**\n   * Axis the arrow keys navigate. Reflected as `data-orientation`.\n   */\n  readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n  /**\n   * Writing direction. When unset (default `null`), the inherited ambient\n   * direction is resolved from the nearest ancestor carrying a `dir` attribute\n   * (or `<html dir>`), defaulting to `'ltr'`. An explicit `[dir]` always wins.\n   * The resolved value is reflected to the host `dir` attribute and swaps\n   * ArrowLeft / ArrowRight semantics in RTL.\n   */\n  readonly _dirInput = input<WritingDirection | null>(null, { alias: 'dir' });\n  readonly dir = injectTextDirection(this._dirInput);\n  /**\n   * Whether arrow navigation wraps around past the first / last enabled\n   * item. Default `true`. The default is read from `provideForToolbarDefaults`\n   * for the surrounding scope.\n   */\n  readonly loop = input(this.#defaults.loop, { transform: booleanAttribute });\n  /**\n   * Whether every item in the toolbar is disabled. Individual items may also disable themselves.\n   */\n  readonly disabled = input(false, { transform: booleanAttribute });\n\n  /**\n   * Roving-tabindex tracker shared by every toolbar item (buttons, links, and\n   * nested toggle-group items). Items promote themselves to active on\n   * `(focus)` and read `active()` in their tabindex computed, so re-entry\n   * (Shift+Tab back into the toolbar) restores the last focused item —\n   * matching Tabs / Tree. Before any focus, `active()` is `null` and the\n   * tabindex falls back to the first-enabled entry point.\n   */\n  readonly roving = new RovingTabindex(() => this.#items.items());\n\n  readonly #items = new Collection<ForToolbarItemHandle>();\n\n  readonly #firstEnabledHost = computed(() => firstEnabledHost(this.#items.items()));\n\n  navigate(currentItem: HTMLElement, action: ListNavigationAction): void {\n    if (this.disabled()) {\n      return;\n    }\n    const target = nextEnabledHandle(this.#items.items(), currentItem, action, {\n      loop: this.loop(),\n    });\n    if (target === null) {\n      return;\n    }\n    target.host.focus();\n    target.host.scrollIntoView?.({ block: 'nearest' });\n  }\n\n  isFirstFocusableItem(el: HTMLElement): boolean {\n    return this.#firstEnabledHost() === el;\n  }\n\n  registerItem(handle: ForToolbarItemHandle): void {\n    this.#items.register(handle);\n  }\n\n  unregisterItem(handle: ForToolbarItemHandle): void {\n    this.#items.unregister(handle);\n    this.roving.unregister(handle.host);\n  }\n}\n","import { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\n\nimport { hostButtonType, registerHandle, resolveListNavigation } from 'forty-cdk/core';\nimport { injectToolbarContext } from './toolbar-context';\n\n/**\n * Plain push button inside `[forToolbar]`. Apply on `<button>` so Enter /\n * Space activate via native semantics. On a native `<button>` host the directive\n * forces `type=\"button\"` — through a host binding, so a consumer `type=\"submit\"`\n * is overridden — to avoid accidental form submission inside a `<form>`; any\n * other host element gets no `type` attribute, which is not valid there.\n */\n@Directive({\n  selector: '[forToolbarButton]',\n  exportAs: 'forToolbarButton',\n  host: {\n    '[attr.type]': 'buttonType()',\n    '[attr.tabindex]': 'tabindex()',\n    '[attr.aria-disabled]': 'effectiveDisabled() ? \"true\" : null',\n    '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : null',\n    '[attr.data-orientation]': 'toolbar.orientation()',\n    '(focus)': 'onFocus()',\n    '(keydown)': 'onKeyDown($event)',\n    '(click)': 'onClick($event)',\n  },\n})\nexport class ForToolbarButton {\n  protected readonly buttonType = hostButtonType();\n\n  protected readonly toolbar = injectToolbarContext('ForToolbarButton');\n  readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  /** Per-item disabled (in addition to the toolbar's `disabled`). */\n  readonly disabled = input(false, { transform: booleanAttribute });\n\n  /**\n   * Whether the button is effectively disabled — its own `disabled` input or\n   * the surrounding `[forToolbar]`'s `disabled`. Drives `aria-disabled`,\n   * `data-disabled`, the roving tab stop, and activation suppression.\n   */\n  readonly effectiveDisabled = computed(() => this.disabled() || this.toolbar.disabled());\n\n  /**\n   * Tabindex per APG: once any toolbar item has been focused, the roving\n   * tracker owns the tab stop so re-entry restores the last focused item;\n   * before that, fall back to the first-enabled entry point. Disabled items\n   * are always -1 — they stay arrow-reachable and focusable, they just never\n   * own the toolbar's single Tab stop.\n   */\n  readonly tabindex = computed<-1 | 0>(() => {\n    if (this.effectiveDisabled()) {\n      return -1;\n    }\n    if (this.toolbar.roving.hasActive()) {\n      return this.toolbar.roving.tabindexFor(this.#host.nativeElement);\n    }\n    return this.toolbar.isFirstFocusableItem(this.#host.nativeElement) ? 0 : -1;\n  });\n\n  constructor() {\n    const handle = {\n      host: this.#host.nativeElement,\n      disabled: this.effectiveDisabled,\n    };\n    registerHandle(\n      handle,\n      (h) => this.toolbar.registerItem(h),\n      (h) => this.toolbar.unregisterItem(h),\n    );\n  }\n\n  protected onClick(event: MouseEvent): void {\n    if (this.effectiveDisabled()) {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n    }\n  }\n\n  protected onFocus(): void {\n    if (this.effectiveDisabled()) {\n      return;\n    }\n    this.toolbar.roving.setActive(this.#host.nativeElement);\n  }\n\n  protected onKeyDown(event: KeyboardEvent): void {\n    if (this.effectiveDisabled()) {\n      return;\n    }\n    const action = resolveListNavigation(event, {\n      orientation: this.toolbar.orientation(),\n      dir: this.toolbar.dir(),\n    });\n    if (!action) {\n      return;\n    }\n    event.preventDefault();\n    this.toolbar.navigate(this.#host.nativeElement, action);\n  }\n}\n","import { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\n\nimport { registerHandle, resolveListNavigation } from 'forty-cdk/core';\nimport { injectToolbarContext } from './toolbar-context';\n\n/**\n * Hyperlink inside `[forToolbar]`. Apply on `<a>`. Honors the toolbar's\n * roving tabindex and arrow-key navigation; `Enter` follows the link via\n * native semantics.\n */\n@Directive({\n  selector: '[forToolbarLink]',\n  exportAs: 'forToolbarLink',\n  host: {\n    '[attr.tabindex]': 'tabindex()',\n    '[attr.aria-disabled]': 'effectiveDisabled() ? \"true\" : null',\n    '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : null',\n    '[attr.data-orientation]': 'toolbar.orientation()',\n    '(focus)': 'onFocus()',\n    '(keydown)': 'onKeyDown($event)',\n    '(click)': 'onClick($event)',\n  },\n})\nexport class ForToolbarLink {\n  protected readonly toolbar = injectToolbarContext('ForToolbarLink');\n  readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  /**\n   * Per-item disabled (in addition to the toolbar's `disabled`). Native `<a>`\n   * has no `disabled` attribute — we rely on `aria-disabled` and prevent\n   * navigation in the click handler.\n   */\n  readonly disabled = input(false, { transform: booleanAttribute });\n\n  /**\n   * Whether the link is effectively disabled — its own `disabled` input or the\n   * surrounding `[forToolbar]`'s `disabled`. Drives `aria-disabled`,\n   * `data-disabled`, the roving tab stop, and activation suppression.\n   */\n  readonly effectiveDisabled = computed(() => this.disabled() || this.toolbar.disabled());\n\n  /**\n   * Tabindex per APG: once any toolbar item has been focused, the roving\n   * tracker owns the tab stop so re-entry restores the last focused item;\n   * before that, fall back to the first-enabled entry point. Disabled links\n   * are always -1 — they stay arrow-reachable and focusable, they just never\n   * own the toolbar's single Tab stop.\n   */\n  readonly tabindex = computed<-1 | 0>(() => {\n    if (this.effectiveDisabled()) {\n      return -1;\n    }\n    if (this.toolbar.roving.hasActive()) {\n      return this.toolbar.roving.tabindexFor(this.#host.nativeElement);\n    }\n    return this.toolbar.isFirstFocusableItem(this.#host.nativeElement) ? 0 : -1;\n  });\n\n  constructor() {\n    const handle = {\n      host: this.#host.nativeElement,\n      disabled: this.effectiveDisabled,\n    };\n    registerHandle(\n      handle,\n      (h) => this.toolbar.registerItem(h),\n      (h) => this.toolbar.unregisterItem(h),\n    );\n  }\n\n  protected onClick(event: MouseEvent): void {\n    if (this.effectiveDisabled()) {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n    }\n  }\n\n  protected onFocus(): void {\n    if (this.effectiveDisabled()) {\n      return;\n    }\n    this.toolbar.roving.setActive(this.#host.nativeElement);\n  }\n\n  protected onKeyDown(event: KeyboardEvent): void {\n    if (this.effectiveDisabled()) {\n      return;\n    }\n    const action = resolveListNavigation(event, {\n      orientation: this.toolbar.orientation(),\n      dir: this.toolbar.dir(),\n    });\n    if (!action) {\n      return;\n    }\n    event.preventDefault();\n    this.toolbar.navigate(this.#host.nativeElement, action);\n  }\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\n\nimport { injectToolbarContext } from './toolbar-context';\n\n/**\n * Visual separator inside a toolbar. Defaults `orientation` to the opposite\n * of the toolbar's main axis (a vertical line in a horizontal toolbar, and\n * vice versa) — pass `orientation` explicitly to override.\n *\n * Reflects the same role / aria-orientation / data-orientation contract as\n * `ForSeparator`, but anchored to the toolbar's cross-axis so an unconfigured\n * separator renders perpendicular to the toolbar.\n */\n@Directive({\n  selector: '[forToolbarSeparator]',\n  exportAs: 'forToolbarSeparator',\n  host: {\n    '[attr.role]': 'decorative() ? \"none\" : \"separator\"',\n    '[attr.aria-orientation]': 'ariaOrientation()',\n    '[attr.data-orientation]': 'effectiveOrientation()',\n  },\n})\nexport class ForToolbarSeparator {\n  readonly #toolbar = injectToolbarContext('ForToolbarSeparator');\n\n  /**\n   * Axis the separator divides along. When omitted, falls back to the\n   * cross-axis of the parent toolbar (horizontal toolbar → vertical\n   * separator, and vice versa).\n   */\n  readonly orientation = input<'horizontal' | 'vertical' | undefined>(undefined);\n\n  /**\n   * When true, the separator is purely visual: it gets `role=\"none\"` and no\n   * `aria-orientation`, so assistive tech treats surrounding content as a\n   * single flow.\n   */\n  readonly decorative = input(false, { transform: booleanAttribute });\n\n  /**\n   * Cross-axis of the parent toolbar — the orientation an unconfigured\n   * separator inherits.\n   */\n  readonly defaultOrientation = computed<'horizontal' | 'vertical'>(() =>\n    this.#toolbar.orientation() === 'vertical' ? 'horizontal' : 'vertical',\n  );\n\n  protected readonly effectiveOrientation = computed<'horizontal' | 'vertical'>(\n    () => this.orientation() ?? this.defaultOrientation(),\n  );\n\n  protected ariaOrientation(): 'vertical' | null {\n    if (this.decorative()) {\n      return null;\n    }\n    return this.effectiveOrientation() === 'vertical' ? 'vertical' : null;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}