@slotted/angular 0.1.0-beta.6 → 0.1.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/menu.json +12 -0
- package/docs/menu.md +2 -0
- package/docs/side-navigation.json +1 -0
- package/docs/side-navigation.md +1 -1
- package/docs/table.examples.md +2 -2
- package/docs/table.json +2 -2
- package/fesm2022/slotted-angular-action-bar.mjs +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +2 -2
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +12 -12
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +2 -2
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-color-picker.mjs +1 -1
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +2 -2
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +1 -1
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-kbd.mjs +4 -4
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
- package/fesm2022/slotted-angular-menu.mjs +12 -4
- package/fesm2022/slotted-angular-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-side-navigation.mjs +2 -2
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +4 -4
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +3 -1
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-toolbar.mjs +1 -1
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-menu.d.ts +11 -2
- package/types/slotted-angular-menu.d.ts.map +1 -1
- package/types/slotted-angular-table.d.ts +3 -1
- package/types/slotted-angular-table.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-menu.mjs","sources":["../../menu/src/menu-defaults.ts","../../menu/src/menu-context.ts","../../menu/src/menu.ts","../../menu/src/menu-items.ts","../../menu/src/menu-trigger.ts","../../menu/src/slotted-angular-menu.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** The surface's measure and the geometry of its items. */\nexport type MenuSize = 'sm' | 'md' | 'lg';\n\n/** Where the surface hangs. The two logical values mirror; the rest do not. */\nexport type MenuSide = 'top' | 'bottom' | 'inline-start' | 'inline-end' | 'left' | 'right';\n\nexport type MenuAlign = 'start' | 'center' | 'end';\n\n/** When the layer exists, as `tooltip`, `popover` and `collapsible` declare it. */\nexport type MenuMount = 'active' | 'lazy' | 'eager';\n\nexport type MenuStrategy = 'absolute' | 'fixed';\n\n/** The five semantic tones. A command that destroys something takes `danger`. */\nexport type MenuTone = 'accent' | 'secondary' | 'success' | 'warning' | 'danger';\n\n/** Why the surface opened or closed. */\nexport type MenuOpenReason =\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'select' | 'dismiss' | 'programmatic';\n\n/** Why a checkbox item or a radio group moved: the device, and nothing else. */\nexport type MenuValueReason = 'pointer' | 'keyboard';\n\nexport interface MenuDefaults {\n align: MenuAlign;\n alignOffset: number;\n closeOnEscape: boolean;\n closeOnOutsidePress: boolean;\n closeOnSelect: boolean;\n collisionPadding: number;\n disabled: boolean;\n flip: boolean;\n hideWhenDetached: boolean;\n loop: boolean;\n mount: MenuMount;\n openOnHover: boolean;\n portal: boolean;\n shift: boolean;\n side: MenuSide;\n sideOffset: number;\n size: MenuSize;\n strategy: MenuStrategy;\n submenuCloseDelay: number;\n submenuOpenDelay: number;\n typeahead: boolean;\n typeaheadTimeout: number;\n}\n\n/**\n * The numbers, and why they are these numbers: `side` and `align` hang the\n * surface under the start edge of its own control, where the control's text and\n * the items' labels share one edge; `submenuOpenDelay` is short enough that a\n * deliberate hover is answered and long enough that a pointer crossing three\n * items opens none of them; `hideWhenDetached` is `true` where `popover`'s is\n * `false`, because a menu whose control has scrolled away commands nothing.\n */\nconst FALLBACK: MenuDefaults = {\n align: 'start',\n alignOffset: 0,\n closeOnEscape: true,\n closeOnOutsidePress: true,\n closeOnSelect: true,\n collisionPadding: 8,\n disabled: false,\n flip: true,\n hideWhenDetached: true,\n loop: true,\n mount: 'active',\n openOnHover: true,\n portal: true,\n shift: true,\n side: 'bottom',\n sideOffset: 0,\n size: 'md',\n strategy: 'absolute',\n submenuCloseDelay: 300,\n submenuOpenDelay: 150,\n typeahead: true,\n typeaheadTimeout: 500,\n};\n\nexport const MENU_DEFAULTS = new InjectionToken<MenuDefaults>('slotted menu defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its menus open, where they hang and how long\n * a submenu waits. A menu that states any of them itself still wins.\n */\nexport function provideMenuDefaults(defaults: Partial<MenuDefaults>) {\n return {\n provide: MENU_DEFAULTS,\n useFactory: (): MenuDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a menu renders as here, before it states anything of its own. */\nexport function injectMenuDefaults(): MenuDefaults {\n return inject(MENU_DEFAULTS);\n}\n","import { InjectionToken } from '@angular/core';\n\nimport type { MenuOpenReason, MenuSize } from './menu-defaults';\n\n/**\n * What a bar offers the menus on it.\n *\n * Declared here rather than in the menubar entry point, so the menu family\n * depends on nothing above it: `@slotted/angular/menubar` imports this token\n * and provides itself against it, and the dependency runs one way.\n */\nexport interface MenubarSurface {\n /** The name of the menu now open, or `undefined`. */\n readonly value: () => string | undefined;\n /** Where focus goes when the bar opens one of its menus. */\n readonly entry: { current: 'first' | 'last' | 'trigger' };\n open(value: string, reason: MenuOpenReason, source?: Event): void;\n close(reason: MenuOpenReason, source?: Event): void;\n /** Moves to the neighbouring trigger, and opens its menu when asked. */\n step(direction: 1 | -1, options?: { open?: boolean }): void;\n register(value: string, trigger: HTMLElement | null): void;\n readonly orientation: () => 'horizontal' | 'vertical';\n readonly disabled: () => boolean;\n readonly size: () => MenuSize;\n}\n\nexport const MENUBAR_SURFACE = new InjectionToken<MenubarSurface>('slotted menubar surface');\n","import { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createArrowNavigation, tabbables } from '@slotted/core/focus';\nimport type { ArrowNavigationHandle } from '@slotted/core/focus';\nimport { createPortalRoot } from '@slotted/core/portal';\nimport type { PortalRootHandle } from '@slotted/core/portal';\nimport { createPositioner, submenuOffsets } from '@slotted/core/positioner';\nimport type { PositionerAnchor, PositionerHandle } from '@slotted/core/positioner';\nimport { createPresence } from '@slotted/core/presence';\nimport type { PresenceHandle } from '@slotted/core/presence';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n untracked,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n type EmbeddedViewRef,\n type TemplateRef,\n} from '@angular/core';\n\nimport { injectMenuDefaults } from './menu-defaults';\nimport type {\n MenuAlign,\n MenuMount,\n MenuOpenReason,\n MenuSide,\n MenuSize,\n MenuStrategy,\n} from './menu-defaults';\nimport { MENUBAR_SURFACE } from './menu-context';\n\nexport type { MenubarSurface } from './menu-context';\nexport { MENUBAR_SURFACE } from './menu-context';\n\n/** Every item of a surface, in the order the document holds them. */\nexport const MENU_ITEM_SELECTOR = \"[data-part='item']\";\n\nconst textOf = (item: HTMLElement) =>\n item.dataset['textValue'] ??\n item.querySelector(\"[data-part='label']\")?.textContent?.trim() ??\n item.textContent?.trim() ??\n '';\n\nconst enabled = (item: HTMLElement) => item.dataset['disabled'] === undefined;\n\n/**\n * Focus without the browser's own scroll, which reveals an item by scrolling\n * the page as well as the surface and centres it in the window, carrying the\n * layer off its trigger. The surface scrolls inside the room the positioner\n * gives it, so the item is brought into the surface and nothing further.\n */\nconst reveal = (item: HTMLElement) => {\n item.focus({ preventScroll: true });\n const surface = item.closest<HTMLElement>(\"[data-part='content']\");\n if (surface === null) return;\n const box = surface.getBoundingClientRect();\n const own = item.getBoundingClientRect();\n if (own.top < box.top) surface.scrollTop -= box.top - own.top;\n else if (own.bottom > box.bottom) surface.scrollTop += own.bottom - box.bottom;\n};\n\n/**\n * A list of commands on a layer.\n *\n * The component renders **nothing where it is written**: its content lives in a\n * template, and the layer is built into the portal when the menu opens. Angular\n * Material's menu is built the same way and for the same reason — a surface\n * that has to escape its parent's clipping cannot be rendered where it was\n * declared.\n *\n * Where it sits decides what it is. On its own it hangs from the control that\n * carries `slMenuTrigger`. Inside another menu it is a submenu, and its trigger\n * becomes an item of the surface above. Inside `sl-menubar` it is one of the\n * bar's menus, and the bar holds which one is open — a bar has at most one, and\n * a boolean on each could represent two.\n */\n@Component({\n selector: 'sl-menu',\n standalone: true,\n exportAs: 'slMenu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['../../../styles/src/menu/menu.css', '../../../styles/src/highlight/highlight.css'],\n host: { style: 'display: none' },\n template: `\n <ng-template #layer>\n <div\n data-ui=\"menu\"\n data-part=\"root\"\n [attr.data-align]=\"resolvedAlign()\"\n [attr.data-size]=\"resolvedSize()\"\n [attr.data-open]=\"isOpen() ? '' : null\"\n [attr.inert]=\"isOpen() ? null : ''\"\n >\n <div\n #surface\n data-part=\"content\"\n role=\"menu\"\n tabindex=\"-1\"\n [id]=\"contentId\"\n [attr.aria-labelledby]=\"ariaLabel() === undefined ? triggerId : null\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-busy]=\"loading() ? true : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n (keydown)=\"onKeyDown($event)\"\n >\n <ng-content />\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class SlMenu {\n /** The name this menu answers to on a bar. */\n readonly value = input<string | undefined>(undefined);\n /** The accessible name, for a menu opened from a control with no words. */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n /** The ids of what describes the menu, written on the element that carries `role=\"menu\"`. */\n readonly ariaDescribedBy = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n /** Written by `slMenuHeader`: the block the surface is described by. */\n readonly headerId = signal<string | null>(null);\n /** The consumer's description and the header's, joined. */\n protected readonly describedBy = computed(\n () => [this.ariaDescribedBy(), this.headerId()].filter(Boolean).join(' ') || null,\n );\n\n readonly open = model<boolean>(false);\n /** One output for one transition, carrying the reason and the event. */\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n readonly align = input<MenuAlign | undefined>(undefined);\n readonly side = input<MenuSide | undefined>(undefined);\n readonly size = input<MenuSize | undefined>(undefined);\n readonly mount = input<MenuMount | undefined>(undefined);\n readonly strategy = input<MenuStrategy | undefined>(undefined);\n readonly sideOffset = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly alignOffset = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly collisionPadding = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly submenuOpenDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly submenuCloseDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly typeaheadTimeout = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n\n private static readonly flag = (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given);\n\n readonly disabled = input(undefined, { transform: SlMenu.flag });\n readonly loop = input(undefined, { transform: SlMenu.flag });\n readonly typeahead = input(undefined, { transform: SlMenu.flag });\n readonly openOnHover = input(undefined, { transform: SlMenu.flag });\n readonly closeOnSelect = input(undefined, { transform: SlMenu.flag });\n readonly closeOnEscape = input(undefined, { transform: SlMenu.flag });\n readonly closeOnOutsidePress = input(undefined, { transform: SlMenu.flag });\n readonly flip = input(undefined, { transform: SlMenu.flag });\n readonly shift = input(undefined, { transform: SlMenu.flag });\n readonly hideWhenDetached = input(undefined, { transform: SlMenu.flag });\n readonly portal = input(undefined, { transform: SlMenu.flag });\n /**\n * The surface is waiting for its items. It keeps its measure, says so with\n * `aria-busy`, and shows whatever the consumer put in `slMenuEmpty`.\n */\n readonly loading = input(false, { transform: booleanAttribute });\n\n private readonly defaults = injectMenuDefaults();\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly template = viewChild.required<TemplateRef<unknown>>('layer');\n\n /** The surface above this one, when this menu is a submenu of it. */\n readonly parent = inject(SlMenu, { optional: true, skipSelf: true });\n /** The bar in scope. A submenu of a bar's menu still sees it. */\n readonly bar = inject(MENUBAR_SURFACE, { optional: true });\n /** Whether this menu is one of the bar's own rather than nested in one. */\n readonly onBar = this.parent === null && this.bar !== null;\n\n private readonly identifier = Math.random().toString(36).slice(2, 8);\n readonly contentId = `sl-menu-${this.identifier}`;\n readonly triggerId = `sl-menu-trigger-${this.identifier}`;\n\n /** The control that opens this menu, given by `slMenuTrigger`. */\n readonly trigger = signal<HTMLElement | null>(null);\n /**\n * What the layer is positioned against when it is not the trigger: a row the\n * menu hangs from, or the point a context menu was opened at, which\n * `slContextMenuTriggerFor` writes here. Positioning only — the trigger stays\n * the portal origin, the branch of the layer and the element focus returns\n * to. Written by a directive, as `trigger` is, rather than bound in a\n * template.\n */\n readonly anchor = signal<PositionerAnchor | null>(null);\n /**\n * Where focus lands when the surface closes, for a trigger that is gone by\n * then or one that never held focus — a context menu's target. `null` means\n * the trigger.\n */\n readonly finalFocus = signal<HTMLElement | null>(null);\n /** Where focus lands when the surface opens. */\n readonly entry: { current: 'first' | 'last' | 'trigger' } = { current: 'first' };\n\n private view: EmbeddedViewRef<unknown> | null = null;\n private layerNode: HTMLElement | null = null;\n private surfaceNode: HTMLElement | null = null;\n private portalRoot: PortalRootHandle | null = null;\n private positioner: PositionerHandle | null = null;\n private layer: DismissableLayerHandle | null = null;\n private navigation: ArrowNavigationHandle | null = null;\n private presence: PresenceHandle | null = null;\n private typeaheadHandle: TypeaheadHandle | null = null;\n\n readonly name = computed(() => this.value() ?? this.contentId);\n readonly resolvedAlign = computed(\n () => this.align() ?? (this.parent === null ? this.defaults.align : 'start'),\n );\n readonly resolvedSide = computed(() => {\n if (this.side() !== undefined) return this.side() as MenuSide;\n if (this.parent !== null) return 'inline-end';\n if (this.onBar && this.bar?.orientation() === 'vertical') return 'inline-end';\n return this.defaults.side;\n });\n readonly resolvedSize = computed(\n () => this.size() ?? (this.onBar ? this.bar?.size() : undefined) ?? this.defaults.size,\n );\n readonly resolvedDisabled = computed(\n () =>\n (this.disabled() ?? this.defaults.disabled) ||\n (this.onBar && (this.bar?.disabled() ?? false)),\n );\n readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n readonly resolvedTypeahead = computed(() => this.typeahead() ?? this.defaults.typeahead);\n readonly resolvedOpenOnHover = computed(() => this.openOnHover() ?? this.defaults.openOnHover);\n readonly resolvedCloseOnSelect = computed(\n () => this.closeOnSelect() ?? this.defaults.closeOnSelect,\n );\n readonly resolvedSubmenuOpenDelay = computed(\n () => this.submenuOpenDelay() ?? this.defaults.submenuOpenDelay,\n );\n readonly resolvedSubmenuCloseDelay = computed(\n () => this.submenuCloseDelay() ?? this.defaults.submenuCloseDelay,\n );\n\n /**\n * A menu on a bar reads its own state from the bar, so the two models compose\n * rather than compete: the bar holds the identity of the open menu, and this\n * menu is open when that identity is its own.\n */\n readonly isOpen = computed(() => {\n const held = this.onBar ? this.bar?.value() === this.name() : this.open();\n return held && !this.resolvedDisabled();\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n effect(() => {\n const open = this.isOpen();\n untracked(() => (open ? this.show() : this.hide()));\n });\n\n /* A context menu opened again at a new point moves rather than closing and\n reopening: the anchor changed while the surface is open, so it is\n measured again. */\n effect(() => {\n this.anchor();\n untracked(() => {\n if (this.isOpen()) this.position();\n });\n });\n\n afterNextRender(() => {\n if (this.resolvedMount() === 'eager' && !this.isOpen()) this.build();\n });\n\n destroyRef.onDestroy(() => this.teardown());\n }\n\n /** The painted surface, once it exists. The grace area is measured off it. */\n surface(): HTMLElement | null {\n return this.surfaceNode;\n }\n\n /** Asks to open or close, and reports the reason before anything moves. */\n toggle(next: boolean, reason: MenuOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.isOpen(),\n onRequest: (request) => {\n this.openChangeRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled) return;\n\n if (this.onBar && this.bar !== null) {\n if (next) this.bar.open(this.name(), reason, source);\n else this.bar.close(reason, source);\n } else if (moved) {\n this.open.set(next);\n }\n\n /* Focus goes back to whatever opened the surface, unless the reader pressed\n somewhere else — taking it back then would fight them. */\n if (!next && reason !== 'outsidePress' && reason !== 'programmatic') {\n (this.finalFocus() ?? this.trigger())?.focus({ preventScroll: true });\n }\n }\n\n /** Closes this surface and every surface above it. */\n closeAll(reason: MenuOpenReason, source?: Event) {\n this.toggle(false, reason, source);\n this.parent?.closeAll(reason, source);\n if (!this.onBar) this.bar?.close(reason, source);\n }\n\n /** Moves focus onto an item of this surface. */\n focusItem(index: number) {\n const list = this.items();\n const item = list[index < 0 ? list.length + index : index];\n if (item !== undefined) reveal(item);\n }\n\n items(): HTMLElement[] {\n return [...(this.surfaceNode?.querySelectorAll<HTMLElement>(MENU_ITEM_SELECTOR) ?? [])];\n }\n\n readonly resolvedMount = computed(() => this.mount() ?? this.defaults.mount);\n\n private show() {\n this.build();\n this.position();\n this.bind();\n this.enter();\n }\n\n /**\n * The layer, built once. `active` drops it again when the menu closes,\n * `lazy` keeps it from the first open and `eager` builds it up front — the\n * same axis `tooltip`, `popover` and `collapsible` declare. A layer kept\n * while closed carries `inert`, so its items are in neither the tab order\n * nor the accessibility tree.\n */\n private build() {\n if (this.view !== null) {\n this.presence?.sync(this.isOpen());\n return;\n }\n\n this.portalRoot = createPortalRoot({\n origin: this.trigger(),\n disabled: this.portal() === false,\n });\n\n this.view = this.viewContainer.createEmbeddedView(this.template());\n this.view.detectChanges();\n\n this.layerNode = this.view.rootNodes.find(\n (node: unknown): node is HTMLElement => node instanceof HTMLElement,\n ) as HTMLElement | null;\n this.surfaceNode = this.layerNode?.querySelector<HTMLElement>(\"[data-part='content']\") ?? null;\n if (this.layerNode === null || this.surfaceNode === null) return;\n\n this.portalRoot.container?.append(this.layerNode);\n\n this.presence = createPresence({ present: this.isOpen() });\n this.presence.setNode(this.layerNode);\n }\n\n private position() {\n if (this.layerNode === null) return;\n const trigger = this.trigger();\n const anchor = this.anchor() ?? trigger;\n if (anchor === null) return;\n\n /* A submenu is anchored to its item and placed from the parent's edge: the\n parent surface's inset is added along the side, and the submenu's own\n inset above its first item is taken off along the alignment, so the\n first item lines up with the item that opened it (M2). */\n const submenu =\n this.parent !== null && this.surfaceNode !== null && trigger !== null\n ? submenuOffsets({\n parentSurface: this.parent.surface(),\n item: trigger,\n surface: this.surfaceNode,\n })\n : { sideOffset: 0, alignOffset: 0 };\n\n this.positioner?.destroy();\n this.positioner = createPositioner(anchor, this.layerNode, {\n align: this.resolvedAlign(),\n alignOffset: (this.alignOffset() ?? this.defaults.alignOffset) + submenu.alignOffset,\n boundaryPadding: this.collisionPadding() ?? this.defaults.collisionPadding,\n flip: this.flip() ?? this.defaults.flip,\n hideWhenDetached: this.hideWhenDetached() ?? this.defaults.hideWhenDetached,\n shift: this.shift() ?? this.defaults.shift,\n side: this.resolvedSide(),\n sideOffset: (this.sideOffset() ?? this.defaults.sideOffset) + submenu.sideOffset,\n strategy: this.strategy() ?? this.defaults.strategy,\n });\n void this.positioner.update();\n }\n\n private bind() {\n if (this.layerNode === null || this.surfaceNode === null) return;\n\n const branches = [this.trigger(), this.parent?.surface() ?? null].filter(\n (branch): branch is HTMLElement => branch !== null,\n );\n\n this.layer = createDismissableLayer(this.layerNode, {\n branches,\n escape: this.closeOnEscape() ?? this.defaults.closeOnEscape,\n focusOutside: false,\n modal: false,\n outsidePress: this.closeOnOutsidePress() ?? this.defaults.closeOnOutsidePress,\n scrollLock: false,\n onDismiss: (request) => {\n const reason: MenuOpenReason = request.reason === 'escape' ? 'escape' : 'outsidePress';\n this.toggle(false, reason, request.source as Event | undefined);\n if (reason === 'outsidePress') this.parent?.closeAll(reason, request.source as Event);\n },\n });\n\n this.navigation = createArrowNavigation(this.surfaceNode, {\n focus: reveal,\n includeAriaDisabled: true,\n itemSelector: MENU_ITEM_SELECTOR,\n loop: () => this.resolvedLoop(),\n orientation: () => 'vertical',\n });\n\n if (this.resolvedTypeahead()) {\n this.typeaheadHandle = createTypeahead({\n timeout: this.typeaheadTimeout() ?? this.defaults.typeaheadTimeout,\n });\n }\n }\n\n /** Focus enters the surface as it opens, and the pattern says which item. */\n private enter() {\n const bar = this.onBar ? this.bar : null;\n const entry = bar === null ? this.entry.current : bar.entry.current;\n this.entry.current = 'first';\n if (bar !== null) bar.entry.current = 'first';\n if (entry === 'trigger') return;\n\n const list = this.items();\n const ordered = entry === 'first' ? list : [...list].reverse();\n const item = ordered.find(enabled) ?? ordered[0];\n if (item !== undefined) reveal(item);\n }\n\n private hide() {\n this.unbind();\n if (this.resolvedMount() === 'active') this.teardown();\n }\n\n /** The listeners a closed surface has no use for. */\n private unbind() {\n this.navigation?.destroy();\n this.layer?.destroy();\n this.positioner?.destroy();\n this.typeaheadHandle?.destroy();\n this.navigation = null;\n this.layer = null;\n this.positioner = null;\n this.typeaheadHandle = null;\n }\n\n private teardown() {\n this.navigation?.destroy();\n this.layer?.destroy();\n this.positioner?.destroy();\n this.presence?.destroy();\n this.typeaheadHandle?.destroy();\n this.portalRoot?.release();\n this.layerNode?.remove();\n this.view?.destroy();\n\n this.navigation = null;\n this.layer = null;\n this.positioner = null;\n this.presence = null;\n this.typeaheadHandle = null;\n this.portalRoot = null;\n this.layerNode = null;\n this.surfaceNode = null;\n this.view = null;\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n const direction =\n this.surfaceNode !== null && getComputedStyle(this.surfaceNode).direction === 'rtl'\n ? 'rtl'\n : 'ltr';\n const inlineStart = direction === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n const inlineEnd = direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n\n if (event.key === 'Tab') {\n event.preventDefault();\n const root = this.rootTrigger();\n this.closeAll('dismiss', event);\n this.moveOut(root, event.shiftKey ? -1 : 1);\n return;\n }\n\n if (event.key === inlineStart) {\n if (this.parent !== null) {\n event.preventDefault();\n this.toggle(false, 'keyboard', event);\n return;\n }\n if (this.bar !== null) {\n event.preventDefault();\n this.bar.step(-1, { open: true });\n return;\n }\n }\n\n /* An item that opens a submenu answers the inline end itself and stops the\n key there, so reaching this point means the item has none. */\n if (event.key === inlineEnd && this.bar !== null) {\n event.preventDefault();\n this.closeAll('keyboard', event);\n this.bar.step(1, { open: true });\n return;\n }\n\n const handle = this.typeaheadHandle;\n if (handle === null) return;\n if (event.ctrlKey || event.metaKey || event.altKey) return;\n if (!isPrintable(event.key, handle.query.length > 0)) return;\n\n event.preventDefault();\n const list = this.items();\n const from = list.findIndex((item) => item === event.target);\n const index = handle.match(event.key, list.map(textOf), from);\n if (index !== -1) this.focusItem(index);\n }\n\n /** The control that opened the outermost surface of this stack. */\n private rootTrigger(): HTMLElement | null {\n return this.parent === null ? this.trigger() : this.parent.rootTriggerOf();\n }\n\n rootTriggerOf(): HTMLElement | null {\n return this.rootTrigger();\n }\n\n /**\n * Where `Tab` goes once every menu has closed: on down the page from the\n * control that opened the outermost surface. The pattern binds the key and\n * says no more, and a layer portalled to the end of the document has no next\n * element a reader would recognise.\n */\n private moveOut(trigger: HTMLElement | null, step: 1 | -1) {\n if (trigger === null) return;\n const order = tabbables(trigger.ownerDocument.body);\n const index = order.indexOf(trigger);\n if (index === -1) {\n trigger.focus({ preventScroll: true });\n return;\n }\n (order[index + step] ?? trigger).focus({ preventScroll: true });\n }\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { keysMessages } from '@slotted/core/i18n';\nimport type { KbdPlatform, KeysTranslator } from '@slotted/core/keys';\nimport { canonicalKey, parseShortcut, resolvePlatform, resolveShortcut } from '@slotted/core/keys';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlMenu } from './menu';\nimport type { MenuTone, MenuValueReason } from './menu-defaults';\n\n/** What ARIA calls each modifier, which is not what a reader sees. */\nconst ARIA_MODIFIERS: Record<string, string> = {\n alt: 'Alt',\n ctrl: 'Control',\n meta: 'Meta',\n shift: 'Shift',\n};\n\n/**\n * The shortcut as `aria-keyshortcuts` states it, or nothing.\n *\n * A sequence has no syntax in the attribute, whose separator means *or* rather\n * than *then*, so a sequence is printed and left unannounced instead of being\n * announced as something it is not.\n */\nexport function announceShortcut(keys: string, platform: KbdPlatform): string | undefined {\n const steps = parseShortcut(keys);\n if (steps.length !== 1) return undefined;\n\n return steps[0]\n ?.map((token) => {\n const canonical = canonicalKey(token);\n if (canonical === 'mod') return platform === 'mac' ? 'Meta' : 'Control';\n if (canonical !== undefined && canonical in ARIA_MODIFIERS) {\n return ARIA_MODIFIERS[canonical] as string;\n }\n const word = canonical ?? token;\n return word.length === 1 ? word.toUpperCase() : `${word[0]?.toUpperCase()}${word.slice(1)}`;\n })\n .join('+');\n}\n\n/** The legends a reader sees, in the order the platform writes them, in the language of `t`. */\nexport function shortcutLegends(keys: string, platform: KbdPlatform, t: KeysTranslator): string {\n const shortcut = resolveShortcut(keys, { platform, t });\n return shortcut.steps\n .map((step) => step.map((key) => key.legend).join(shortcut.separator))\n .join(` ${shortcut.thenLabel} `);\n}\n\n/** What an item reports when it runs. */\nexport interface MenuSelectEvent {\n readonly reason: MenuValueReason;\n readonly source: Event | undefined;\n readonly defaultPrevented: boolean;\n preventDefault: () => void;\n}\n\n/**\n * One command, one option, or one choice among others.\n *\n * A native `button` carrying `role=\"menuitem\"`: the platform gives the press,\n * the `Enter` and `Space` handling and the pointer semantics, and the role\n * replaces `button` so a reader hears an item. Which of the three roles it\n * takes is decided by the attribute the consumer wrote, read once through\n * `HostAttributeToken`, because one element cannot carry two components.\n *\n * A disabled item keeps its place in the ring and takes `aria-disabled`: the\n * pattern asks that disabled items stay focusable, and the native attribute\n * would remove them.\n */\n@Component({\n selector:\n 'button[slMenuItem], a[slMenuItem], button[slMenuCheckboxItem], button[slMenuRadioItem]',\n standalone: true,\n exportAs: 'slMenuItem',\n imports: [SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'item',\n tabindex: '-1',\n '[attr.role]': 'role',\n '[attr.type]': 'isLink ? null : \"button\"',\n '[attr.aria-checked]': 'role === \"menuitem\" ? null : isChecked()',\n '[attr.aria-disabled]': 'disabled() ? true : null',\n '[attr.aria-describedby]': 'describedBy() ?? null',\n '[attr.aria-keyshortcuts]': 'announced()',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-checked]': 'isChecked() ? \"\" : null',\n '[attr.data-text-value]': 'textValue() ?? null',\n '[attr.data-tone]': 'tone() ?? null',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)',\n '(pointermove)': 'onPointerMove()',\n },\n template: `\n @if (role !== 'menuitem') {\n <span data-part=\"indicator\"\n ><span slIcon><svg slGlyph [name]=\"role === 'menuitemradio' ? 'dot' : 'check'\"></svg></span\n ></span>\n }\n <ng-content select=\"[slMenuItemIcon]\" />\n <span data-part=\"label\"><ng-content /></span>\n <ng-content select=\"[slMenuItemDescription]\" />\n <ng-content select=\"[slMenuItemMeta]\" />\n @if (legend(); as printed) {\n <span data-part=\"shortcut\" aria-hidden=\"true\">{{ printed }}</span>\n }\n @if (opensSubmenu()) {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n `,\n})\nexport class SlMenuItem {\n readonly disabled = input(false, { transform: booleanAttribute });\n /** What typeahead matches on, when the visible label is not the word. */\n readonly textValue = input<string | undefined>(undefined);\n readonly tone = input<MenuTone | undefined>(undefined);\n /**\n * A shortcut in this library's own notation — `Mod+K`. It is printed with the\n * platform's legends and announced with `aria-keyshortcuts`; the family does\n * not listen for it, because a menu that bound keys would fire commands while\n * it was closed.\n */\n readonly shortcut = input<string | undefined>(undefined);\n readonly closeOnSelect = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n\n /** The value this item stands for inside a radio group. */\n readonly value = input<string | undefined>(undefined);\n readonly checked = model<boolean>(false);\n readonly checkedChangeRequest = output<ChangeRequest<boolean>>();\n readonly select = output<MenuSelectEvent>();\n\n /** The line under the label, which describes the item rather than naming it. */\n readonly describedBy = signal<string | null>(null);\n\n private readonly menu = inject(SlMenu);\n private readonly group = inject(SlMenuRadioGroup, { optional: true });\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n private readonly platform = resolvePlatform('auto');\n /** The words a shortcut's keys are written in, from the `keys` catalog of the language in force. */\n private readonly keysT = injectMessages(keysMessages);\n\n private readonly isCheckbox =\n inject(new HostAttributeToken('slMenuCheckboxItem'), {\n optional: true,\n }) !== null;\n private readonly isRadio =\n inject(new HostAttributeToken('slMenuRadioItem'), { optional: true }) !== null;\n protected readonly isLink = this.element.tagName === 'A';\n\n /**\n * Set by `slMenuTriggerFor` on the same element: an item that opens a\n * submenu ends in a chevron that points along the reading direction.\n */\n readonly opensSubmenu = signal(false);\n\n protected readonly role = this.isCheckbox\n ? 'menuitemcheckbox'\n : this.isRadio\n ? 'menuitemradio'\n : 'menuitem';\n\n protected readonly isChecked = computed(() =>\n this.isRadio ? this.group?.value() === this.value() : this.checked(),\n );\n\n protected readonly legend = computed(() => {\n const keys = this.shortcut();\n return keys === undefined ? undefined : shortcutLegends(keys, this.platform, this.keysT);\n });\n\n protected readonly announced = computed(() => {\n const keys = this.shortcut();\n return keys === undefined ? null : (announceShortcut(keys, this.platform) ?? null);\n });\n\n /**\n * The host is a `button` or an `a`, so the template compiler types the event\n * as the one thing both have in common and the narrowing happens here.\n */\n protected onClick(event: Event) {\n /* A click a keyboard produced carries no pointer coordinates, which is how\n `Enter` on a button is told from a press without listening for both. */\n const detail = (event as MouseEvent).detail;\n this.run(detail === 0 ? 'keyboard' : 'pointer', event);\n }\n\n protected onKeyDown(source: Event) {\n const event = source as KeyboardEvent;\n /* The pattern's optional rule, taken: `Space` on a checkbox or radio item\n changes the state without closing the menu. */\n if (event.key !== ' ' || this.role === 'menuitem') return;\n event.preventDefault();\n if (this.disabled()) return;\n this.commit('keyboard', event);\n }\n\n /**\n * The pointer moving over an item focuses it, which keeps exactly one item\n * highlighted whichever device is driving — and is what lets the stylesheet\n * paint the highlight on `:focus` rather than splitting it in two.\n */\n protected onPointerMove() {\n if (this.element.ownerDocument.activeElement === this.element) return;\n this.element.focus({ preventScroll: true });\n }\n\n private commit(reason: MenuValueReason, source: Event) {\n if (this.isRadio) {\n const value = this.value();\n if (value !== undefined) this.group?.choose(value, reason, source);\n return;\n }\n if (!this.isCheckbox) return;\n\n const next = !this.checked();\n const state = createControllable<boolean>({\n initial: this.checked(),\n onRequest: (request) => this.checkedChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.checked.set(next);\n }\n\n private run(reason: MenuValueReason, source: Event) {\n if (this.disabled()) return;\n\n this.commit(reason, source);\n\n let prevented = false;\n this.select.emit({\n reason,\n source,\n get defaultPrevented() {\n return prevented;\n },\n preventDefault: () => {\n prevented = true;\n },\n });\n if (prevented) return;\n\n /* A checkbox or a radio item keeps the menu open by default: a reader\n turning three things on would otherwise open it three times. */\n const closes =\n this.closeOnSelect() ?? (this.role === 'menuitem' && this.menu.resolvedCloseOnSelect());\n if (closes) this.menu.closeAll('select', source);\n }\n}\n\n/** The mark in the item's first column: the consumer's own element. */\n@Directive({\n selector: '[slMenuItemIcon]',\n standalone: true,\n host: { 'data-part': 'icon' },\n})\nexport class SlMenuItemIcon {}\n\n/**\n * The second line, under the label.\n *\n * It describes the item rather than naming it: the item points at it with\n * `aria-describedby`, so a reader hears \"Delete document\" and then the warning,\n * instead of one name with a sentence stuck to it.\n */\n@Directive({\n selector: '[slMenuItemDescription]',\n standalone: true,\n host: { 'data-part': 'description', '[attr.id]': 'id' },\n})\nexport class SlMenuItemDescription {\n protected readonly id = `sl-menu-description-${Math.random().toString(36).slice(2, 8)}`;\n private readonly item = inject(SlMenuItem, { optional: true });\n\n constructor() {\n this.item?.describedBy.set(this.id);\n }\n}\n\n/**\n * What the item holds or counts — a number, a status, the value a submenu is\n * set to — in a column of its own before the shortcut or the chevron. It reads\n * as part of the item's name; typeahead matches the label alone.\n */\n@Directive({\n selector: '[slMenuItemMeta]',\n standalone: true,\n host: { 'data-part': 'meta' },\n})\nexport class SlMenuItemMeta {}\n\n/**\n * Who the menu belongs to: an avatar, a name, a line under it, above the\n * commands. Not an item — the arrows and typeahead never reach it, because a\n * `menu` owns only items, groups and separators — so the surface names it as\n * its description and a reader hears it once, as the menu opens. The name is a\n * `data-part=\"label\"` element and the line under it `slMenuItemDescription`;\n * any other child is the media, set beside both.\n */\n@Directive({\n selector: '[slMenuHeader]',\n standalone: true,\n host: { 'data-part': 'header', '[attr.id]': 'id' },\n})\nexport class SlMenuHeader {\n protected readonly id = `sl-menu-header-${Math.random().toString(36).slice(2, 8)}`;\n private readonly menu = inject(SlMenu);\n\n constructor() {\n this.menu.headerId.set(this.id);\n inject(DestroyRef).onDestroy(() => {\n if (this.menu.headerId() === this.id) this.menu.headerId.set(null);\n });\n }\n}\n\n/**\n * A set of items with a name. The label is inside the group and named by it,\n * because a heading outside one belongs to nothing a reader can hear.\n */\n@Component({\n selector: 'sl-menu-group',\n standalone: true,\n exportAs: 'slMenuGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'group',\n role: 'group',\n '[attr.aria-labelledby]': 'label() === undefined ? null : labelId',\n },\n template: `\n @if (label(); as words) {\n <div data-part=\"group-label\" [id]=\"labelId\">{{ words }}</div>\n }\n <ng-content />\n `,\n})\nexport class SlMenuGroup {\n readonly label = input<string | undefined>(undefined);\n protected readonly labelId = `sl-menu-group-${Math.random().toString(36).slice(2, 8)}`;\n}\n\n/** One value, chosen among the items inside it. */\n@Component({\n selector: 'sl-menu-radio-group',\n standalone: true,\n exportAs: 'slMenuRadioGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'group', role: 'group' },\n template: '<ng-content />',\n})\nexport class SlMenuRadioGroup {\n readonly value = model<string | undefined>(undefined);\n readonly valueChangeRequest = output<ChangeRequest<string>>();\n\n choose(next: string, reason: MenuValueReason, source: Event) {\n if (next === this.value()) return;\n const state = createControllable<string>({\n initial: this.value() ?? '',\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.value.set(next);\n }\n}\n\n/** Not focusable and not interactive, which is what the pattern asks of it. */\n@Directive({\n selector: 'hr[slMenuSeparator]',\n standalone: true,\n host: { 'data-part': 'separator', role: 'separator', 'aria-orientation': 'horizontal' },\n})\nexport class SlMenuSeparator {}\n\n/** What a menu whose items were all filtered away says instead of nothing. */\n@Directive({\n selector: '[slMenuEmpty]',\n standalone: true,\n host: { 'data-part': 'empty' },\n})\nexport class SlMenuEmpty {}\n","import { createPointerIntent } from '@slotted/core/pointer-intent';\nimport type { PointerIntentHandle } from '@slotted/core/pointer-intent';\nimport { computed, DestroyRef, Directive, effect, ElementRef, inject, input } from '@angular/core';\n\nimport { SlMenu } from './menu';\nimport { MENUBAR_SURFACE } from './menu-context';\nimport { SlMenuItem } from './menu-items';\n\n/**\n * The control that opens a menu.\n *\n * It is put on the consumer's own control — `@slotted/angular` composes with a\n * directive where React composes with a `render` prop, because that is what\n * each ecosystem writes. The three places it can sit decide what it becomes: a\n * plain control on its own, one of a bar's `menuitem`s inside `sl-menubar`, and\n * an item of the surface above when the control also carries `slMenuItem`.\n */\n@Directive({\n selector: '[slMenuTriggerFor]',\n standalone: true,\n exportAs: 'slMenuTrigger',\n host: {\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'menu().isOpen()',\n '[attr.aria-controls]': 'menu().isOpen() ? menu().contentId : null',\n '[attr.id]': 'menu().triggerId',\n '[attr.type]': 'isButton ? \"button\" : null',\n '[attr.data-open]': 'menu().isOpen() ? \"\" : null',\n '[attr.data-disabled]': 'menu().resolvedDisabled() ? \"\" : null',\n '[attr.aria-disabled]': 'menu().resolvedDisabled() ? true : null',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)',\n '(pointerenter)': 'onPointerEnter($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n },\n})\nexport class SlMenuTrigger {\n /** The menu this control opens. */\n readonly menu = input.required<SlMenu>({ alias: 'slMenuTriggerFor' });\n\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n private readonly bar = inject(MENUBAR_SURFACE, { optional: true });\n /** The surface above, when this control is an item of one. */\n private readonly item = inject(SlMenuItem, { optional: true, self: true });\n private readonly parent = inject(SlMenu, { optional: true });\n\n protected readonly isButton = this.element.tagName === 'BUTTON';\n protected readonly onBar = this.parent === null && this.bar !== null;\n\n private timer: ReturnType<typeof setTimeout> | undefined;\n private intent: PointerIntentHandle | null = null;\n\n private readonly isSubmenu = computed(() => this.parent !== null);\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n this.item?.opensSubmenu.set(true);\n /* The trigger binds no `data-part` and no `role`. Two directives binding one\n attribute on one element race, and the order they run in is the\n compiler's: a `null` erased the part `slMenuItem` writes on a submenu's\n trigger, and the attribute's first value overwrote the `menu-trigger` part\n the split button binds. On a plain control both stay the control's own, so\n `slButton` stays the root of its family; on a submenu's item they are\n `slMenuItem`'s; only a bar's trigger takes them from here, written once\n because a bar's trigger is the bar's own element. */\n if (this.onBar) {\n this.element.setAttribute('data-part', 'trigger');\n this.element.setAttribute('role', 'menuitem');\n }\n\n /* The menu is told which control anchors it, and a bar is told which\n trigger answers to which menu, both as soon as the input resolves. */\n effect(() => {\n const menu = this.menu();\n menu.trigger.set(this.element);\n if (!this.onBar || this.bar === null) return;\n this.bar.register(menu.name(), this.element);\n });\n\n destroyRef.onDestroy(() => {\n this.cancelPending();\n if (this.onBar && this.bar !== null) this.bar.register(this.menu().name(), null);\n });\n }\n\n private cancelPending() {\n if (this.timer !== undefined) clearTimeout(this.timer);\n this.timer = undefined;\n this.intent?.destroy();\n this.intent = null;\n }\n\n private openWith(entry: 'first' | 'last', reason: 'pointer' | 'keyboard', source: Event) {\n const menu = this.menu();\n menu.entry.current = entry;\n menu.toggle(true, reason, source);\n }\n\n protected onClick(event: Event) {\n const menu = this.menu();\n if (menu.resolvedDisabled()) return;\n /* A submenu already open stays open under a press: the press is how a\n reader on a touch screen reaches it, not how they close it. */\n if (menu.isOpen() && this.isSubmenu()) return;\n menu.entry.current = 'first';\n menu.toggle(!menu.isOpen(), 'pointer', event);\n }\n\n protected onKeyDown(source: Event) {\n const event = source as KeyboardEvent;\n const menu = this.menu();\n if (menu.resolvedDisabled()) return;\n\n const direction = getComputedStyle(this.element).direction === 'rtl' ? 'rtl' : 'ltr';\n const inlineEnd = direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n const vertical = this.bar?.orientation() === 'vertical';\n\n /* On a bar the block axis opens the menu and the inline axis moves along\n the bar; on a vertical bar the two exchange places, which is the swap the\n pattern's fifth note describes. A submenu's item opens on the inline end\n in both, because that is where the submenu is. */\n const opensDown = !this.isSubmenu() && (!this.onBar || !vertical) && event.key === 'ArrowDown';\n const opensUp = !this.isSubmenu() && (!this.onBar || !vertical) && event.key === 'ArrowUp';\n const opensInline = event.key === inlineEnd && (this.isSubmenu() || (this.onBar && vertical));\n\n if (opensDown || opensInline) {\n event.preventDefault();\n event.stopPropagation();\n this.openWith('first', 'keyboard', event);\n return;\n }\n if (opensUp) {\n event.preventDefault();\n this.openWith('last', 'keyboard', event);\n return;\n }\n if (this.isSubmenu() && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n event.stopPropagation();\n this.openWith('first', 'keyboard', event);\n }\n }\n\n /**\n * Hover opens a submenu, and opens a bar's menu only once the bar already has\n * one open: moving the pointer along a closed bar opens nothing, and along an\n * open one switches menus.\n */\n protected onPointerEnter(event: Event) {\n const menu = this.menu();\n if (menu.resolvedDisabled()) return;\n this.cancelPending();\n\n if (this.isSubmenu()) {\n if (!menu.resolvedOpenOnHover() || menu.isOpen()) return;\n this.timer = setTimeout(\n () => this.openWith('first', 'pointer', event),\n menu.resolvedSubmenuOpenDelay(),\n );\n return;\n }\n\n if (this.onBar && this.bar !== null && this.bar.value() !== undefined) {\n if (this.bar.value() === menu.name()) return;\n this.element.focus({ preventScroll: true });\n this.openWith('first', 'pointer', event);\n }\n }\n\n /**\n * The grace area: the submenu stays open while the pointer's own path still\n * points into it, so the diagonal from this item to the surface may cross\n * three items it has no interest in.\n */\n protected onPointerLeave(event: Event) {\n if (this.timer !== undefined) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n\n const menu = this.menu();\n if (!this.isSubmenu() || !menu.isOpen()) return;\n\n const surface = menu.surface();\n if (surface === null) return;\n\n this.intent?.destroy();\n this.intent = createPointerIntent({\n target: () => surface.getBoundingClientRect(),\n origin: () => this.element.getBoundingClientRect(),\n timeout: menu.resolvedSubmenuCloseDelay(),\n onSettled: () => {\n if (this.element.matches(':hover') || surface.matches(':hover')) return;\n menu.toggle(false, 'pointer', event);\n },\n });\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-menu.mjs","sources":["../../menu/src/menu-defaults.ts","../../menu/src/menu-context.ts","../../menu/src/menu.ts","../../menu/src/menu-items.ts","../../menu/src/menu-trigger.ts","../../menu/src/slotted-angular-menu.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** The surface's measure and the geometry of its items. */\nexport type MenuSize = 'sm' | 'md' | 'lg';\n\n/**\n * How wide the surface is. `content` is its own measure, between the family's\n * floor and cap; `anchor` is the trigger's width, capped by the room the\n * positioner reports. A submenu is always `content`.\n */\nexport type MenuWidth = 'content' | 'anchor';\n\n/** Where the surface hangs. The two logical values mirror; the rest do not. */\nexport type MenuSide = 'top' | 'bottom' | 'inline-start' | 'inline-end' | 'left' | 'right';\n\nexport type MenuAlign = 'start' | 'center' | 'end';\n\n/** When the layer exists, as `tooltip`, `popover` and `collapsible` declare it. */\nexport type MenuMount = 'active' | 'lazy' | 'eager';\n\nexport type MenuStrategy = 'absolute' | 'fixed';\n\n/** The five semantic tones. A command that destroys something takes `danger`. */\nexport type MenuTone = 'accent' | 'secondary' | 'success' | 'warning' | 'danger';\n\n/** Why the surface opened or closed. */\nexport type MenuOpenReason =\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'select' | 'dismiss' | 'programmatic';\n\n/** Why a checkbox item or a radio group moved: the device, and nothing else. */\nexport type MenuValueReason = 'pointer' | 'keyboard';\n\nexport interface MenuDefaults {\n align: MenuAlign;\n alignOffset: number;\n closeOnEscape: boolean;\n closeOnOutsidePress: boolean;\n closeOnSelect: boolean;\n collisionPadding: number;\n disabled: boolean;\n flip: boolean;\n hideWhenDetached: boolean;\n loop: boolean;\n mount: MenuMount;\n openOnHover: boolean;\n portal: boolean;\n shift: boolean;\n side: MenuSide;\n sideOffset: number;\n size: MenuSize;\n width: MenuWidth;\n strategy: MenuStrategy;\n submenuCloseDelay: number;\n submenuOpenDelay: number;\n typeahead: boolean;\n typeaheadTimeout: number;\n}\n\n/**\n * The numbers, and why they are these numbers: `side` and `align` hang the\n * surface under the start edge of its own control, where the control's text and\n * the items' labels share one edge; `submenuOpenDelay` is short enough that a\n * deliberate hover is answered and long enough that a pointer crossing three\n * items opens none of them; `hideWhenDetached` is `true` where `popover`'s is\n * `false`, because a menu whose control has scrolled away commands nothing.\n */\nconst FALLBACK: MenuDefaults = {\n align: 'start',\n alignOffset: 0,\n closeOnEscape: true,\n closeOnOutsidePress: true,\n closeOnSelect: true,\n collisionPadding: 8,\n disabled: false,\n flip: true,\n hideWhenDetached: true,\n loop: true,\n mount: 'active',\n openOnHover: true,\n portal: true,\n shift: true,\n side: 'bottom',\n sideOffset: 0,\n size: 'md',\n width: 'content',\n strategy: 'absolute',\n submenuCloseDelay: 300,\n submenuOpenDelay: 150,\n typeahead: true,\n typeaheadTimeout: 500,\n};\n\nexport const MENU_DEFAULTS = new InjectionToken<MenuDefaults>('slotted menu defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its menus open, where they hang and how long\n * a submenu waits. A menu that states any of them itself still wins.\n */\nexport function provideMenuDefaults(defaults: Partial<MenuDefaults>) {\n return {\n provide: MENU_DEFAULTS,\n useFactory: (): MenuDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a menu renders as here, before it states anything of its own. */\nexport function injectMenuDefaults(): MenuDefaults {\n return inject(MENU_DEFAULTS);\n}\n","import { InjectionToken } from '@angular/core';\n\nimport type { MenuOpenReason, MenuSize } from './menu-defaults';\n\n/**\n * What a bar offers the menus on it.\n *\n * Declared here rather than in the menubar entry point, so the menu family\n * depends on nothing above it: `@slotted/angular/menubar` imports this token\n * and provides itself against it, and the dependency runs one way.\n */\nexport interface MenubarSurface {\n /** The name of the menu now open, or `undefined`. */\n readonly value: () => string | undefined;\n /** Where focus goes when the bar opens one of its menus. */\n readonly entry: { current: 'first' | 'last' | 'trigger' };\n open(value: string, reason: MenuOpenReason, source?: Event): void;\n close(reason: MenuOpenReason, source?: Event): void;\n /** Moves to the neighbouring trigger, and opens its menu when asked. */\n step(direction: 1 | -1, options?: { open?: boolean }): void;\n register(value: string, trigger: HTMLElement | null): void;\n readonly orientation: () => 'horizontal' | 'vertical';\n readonly disabled: () => boolean;\n readonly size: () => MenuSize;\n}\n\nexport const MENUBAR_SURFACE = new InjectionToken<MenubarSurface>('slotted menubar surface');\n","import { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createArrowNavigation, tabbables } from '@slotted/core/focus';\nimport type { ArrowNavigationHandle } from '@slotted/core/focus';\nimport { createPortalRoot } from '@slotted/core/portal';\nimport type { PortalRootHandle } from '@slotted/core/portal';\nimport { createPositioner, submenuOffsets } from '@slotted/core/positioner';\nimport type { PositionerAnchor, PositionerHandle } from '@slotted/core/positioner';\nimport { createPresence } from '@slotted/core/presence';\nimport type { PresenceHandle } from '@slotted/core/presence';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n untracked,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n type EmbeddedViewRef,\n type TemplateRef,\n} from '@angular/core';\n\nimport { injectMenuDefaults } from './menu-defaults';\nimport type {\n MenuAlign,\n MenuMount,\n MenuOpenReason,\n MenuSide,\n MenuSize,\n MenuStrategy,\n MenuWidth,\n} from './menu-defaults';\nimport { MENUBAR_SURFACE } from './menu-context';\n\nexport type { MenubarSurface } from './menu-context';\nexport { MENUBAR_SURFACE } from './menu-context';\n\n/** Every item of a surface, in the order the document holds them. */\nexport const MENU_ITEM_SELECTOR = \"[data-part='item']\";\n\nconst textOf = (item: HTMLElement) =>\n item.dataset['textValue'] ??\n item.querySelector(\"[data-part='label']\")?.textContent?.trim() ??\n item.textContent?.trim() ??\n '';\n\nconst enabled = (item: HTMLElement) => item.dataset['disabled'] === undefined;\n\n/**\n * Focus without the browser's own scroll, which reveals an item by scrolling\n * the page as well as the surface and centres it in the window, carrying the\n * layer off its trigger. The surface scrolls inside the room the positioner\n * gives it, so the item is brought into the surface and nothing further.\n */\nconst reveal = (item: HTMLElement) => {\n item.focus({ preventScroll: true });\n const surface = item.closest<HTMLElement>(\"[data-part='content']\");\n if (surface === null) return;\n const box = surface.getBoundingClientRect();\n const own = item.getBoundingClientRect();\n if (own.top < box.top) surface.scrollTop -= box.top - own.top;\n else if (own.bottom > box.bottom) surface.scrollTop += own.bottom - box.bottom;\n};\n\n/**\n * A list of commands on a layer.\n *\n * The component renders **nothing where it is written**: its content lives in a\n * template, and the layer is built into the portal when the menu opens. Angular\n * Material's menu is built the same way and for the same reason — a surface\n * that has to escape its parent's clipping cannot be rendered where it was\n * declared.\n *\n * Where it sits decides what it is. On its own it hangs from the control that\n * carries `slMenuTrigger`. Inside another menu it is a submenu, and its trigger\n * becomes an item of the surface above. Inside `sl-menubar` it is one of the\n * bar's menus, and the bar holds which one is open — a bar has at most one, and\n * a boolean on each could represent two.\n */\n@Component({\n selector: 'sl-menu',\n standalone: true,\n exportAs: 'slMenu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['../../../styles/src/menu/menu.css', '../../../styles/src/highlight/highlight.css'],\n host: { style: 'display: none' },\n template: `\n <ng-template #layer>\n <div\n data-ui=\"menu\"\n data-part=\"root\"\n [attr.data-align]=\"resolvedAlign()\"\n [attr.data-size]=\"resolvedSize()\"\n [attr.data-width]=\"resolvedWidth()\"\n [attr.data-open]=\"isOpen() ? '' : null\"\n [attr.inert]=\"isOpen() ? null : ''\"\n >\n <div\n #surface\n data-part=\"content\"\n role=\"menu\"\n tabindex=\"-1\"\n [id]=\"contentId\"\n [attr.aria-labelledby]=\"ariaLabel() === undefined ? triggerId : null\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-busy]=\"loading() ? true : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n (keydown)=\"onKeyDown($event)\"\n >\n <ng-content />\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class SlMenu {\n /** The name this menu answers to on a bar. */\n readonly value = input<string | undefined>(undefined);\n /** The accessible name, for a menu opened from a control with no words. */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n /** The ids of what describes the menu, written on the element that carries `role=\"menu\"`. */\n readonly ariaDescribedBy = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n /** Written by `slMenuHeader`: the block the surface is described by. */\n readonly headerId = signal<string | null>(null);\n /** The consumer's description and the header's, joined. */\n protected readonly describedBy = computed(\n () => [this.ariaDescribedBy(), this.headerId()].filter(Boolean).join(' ') || null,\n );\n\n readonly open = model<boolean>(false);\n /** One output for one transition, carrying the reason and the event. */\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n readonly align = input<MenuAlign | undefined>(undefined);\n readonly side = input<MenuSide | undefined>(undefined);\n readonly size = input<MenuSize | undefined>(undefined);\n readonly width = input<MenuWidth | undefined>(undefined);\n readonly mount = input<MenuMount | undefined>(undefined);\n readonly strategy = input<MenuStrategy | undefined>(undefined);\n readonly sideOffset = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly alignOffset = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly collisionPadding = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly submenuOpenDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly submenuCloseDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly typeaheadTimeout = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n\n private static readonly flag = (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given);\n\n readonly disabled = input(undefined, { transform: SlMenu.flag });\n readonly loop = input(undefined, { transform: SlMenu.flag });\n readonly typeahead = input(undefined, { transform: SlMenu.flag });\n readonly openOnHover = input(undefined, { transform: SlMenu.flag });\n readonly closeOnSelect = input(undefined, { transform: SlMenu.flag });\n readonly closeOnEscape = input(undefined, { transform: SlMenu.flag });\n readonly closeOnOutsidePress = input(undefined, { transform: SlMenu.flag });\n readonly flip = input(undefined, { transform: SlMenu.flag });\n readonly shift = input(undefined, { transform: SlMenu.flag });\n readonly hideWhenDetached = input(undefined, { transform: SlMenu.flag });\n readonly portal = input(undefined, { transform: SlMenu.flag });\n /**\n * The surface is waiting for its items. It keeps its measure, says so with\n * `aria-busy`, and shows whatever the consumer put in `slMenuEmpty`.\n */\n readonly loading = input(false, { transform: booleanAttribute });\n\n private readonly defaults = injectMenuDefaults();\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly template = viewChild.required<TemplateRef<unknown>>('layer');\n\n /** The surface above this one, when this menu is a submenu of it. */\n readonly parent = inject(SlMenu, { optional: true, skipSelf: true });\n /** The bar in scope. A submenu of a bar's menu still sees it. */\n readonly bar = inject(MENUBAR_SURFACE, { optional: true });\n /** Whether this menu is one of the bar's own rather than nested in one. */\n readonly onBar = this.parent === null && this.bar !== null;\n\n private readonly identifier = Math.random().toString(36).slice(2, 8);\n readonly contentId = `sl-menu-${this.identifier}`;\n readonly triggerId = `sl-menu-trigger-${this.identifier}`;\n\n /** The control that opens this menu, given by `slMenuTrigger`. */\n readonly trigger = signal<HTMLElement | null>(null);\n /**\n * What the layer is positioned against when it is not the trigger: a row the\n * menu hangs from, or the point a context menu was opened at, which\n * `slContextMenuTriggerFor` writes here. Positioning only — the trigger stays\n * the portal origin, the branch of the layer and the element focus returns\n * to. Written by a directive, as `trigger` is, rather than bound in a\n * template.\n */\n readonly anchor = signal<PositionerAnchor | null>(null);\n /**\n * Where focus lands when the surface closes, for a trigger that is gone by\n * then or one that never held focus — a context menu's target. `null` means\n * the trigger.\n */\n readonly finalFocus = signal<HTMLElement | null>(null);\n /** Where focus lands when the surface opens. */\n readonly entry: { current: 'first' | 'last' | 'trigger' } = { current: 'first' };\n\n private view: EmbeddedViewRef<unknown> | null = null;\n private layerNode: HTMLElement | null = null;\n private surfaceNode: HTMLElement | null = null;\n private portalRoot: PortalRootHandle | null = null;\n private positioner: PositionerHandle | null = null;\n private layer: DismissableLayerHandle | null = null;\n private navigation: ArrowNavigationHandle | null = null;\n private presence: PresenceHandle | null = null;\n private typeaheadHandle: TypeaheadHandle | null = null;\n\n readonly name = computed(() => this.value() ?? this.contentId);\n readonly resolvedAlign = computed(\n () => this.align() ?? (this.parent === null ? this.defaults.align : 'start'),\n );\n readonly resolvedSide = computed(() => {\n if (this.side() !== undefined) return this.side() as MenuSide;\n if (this.parent !== null) return 'inline-end';\n if (this.onBar && this.bar?.orientation() === 'vertical') return 'inline-end';\n return this.defaults.side;\n });\n readonly resolvedSize = computed(\n () => this.size() ?? (this.onBar ? this.bar?.size() : undefined) ?? this.defaults.size,\n );\n /* A submenu hangs from an item, and an item's width is not a measure. */\n readonly resolvedWidth = computed<MenuWidth>(() =>\n this.parent === null ? (this.width() ?? this.defaults.width) : 'content',\n );\n readonly resolvedDisabled = computed(\n () =>\n (this.disabled() ?? this.defaults.disabled) ||\n (this.onBar && (this.bar?.disabled() ?? false)),\n );\n readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n readonly resolvedTypeahead = computed(() => this.typeahead() ?? this.defaults.typeahead);\n readonly resolvedOpenOnHover = computed(() => this.openOnHover() ?? this.defaults.openOnHover);\n readonly resolvedCloseOnSelect = computed(\n () => this.closeOnSelect() ?? this.defaults.closeOnSelect,\n );\n readonly resolvedSubmenuOpenDelay = computed(\n () => this.submenuOpenDelay() ?? this.defaults.submenuOpenDelay,\n );\n readonly resolvedSubmenuCloseDelay = computed(\n () => this.submenuCloseDelay() ?? this.defaults.submenuCloseDelay,\n );\n\n /**\n * A menu on a bar reads its own state from the bar, so the two models compose\n * rather than compete: the bar holds the identity of the open menu, and this\n * menu is open when that identity is its own.\n */\n readonly isOpen = computed(() => {\n const held = this.onBar ? this.bar?.value() === this.name() : this.open();\n return held && !this.resolvedDisabled();\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n effect(() => {\n const open = this.isOpen();\n untracked(() => (open ? this.show() : this.hide()));\n });\n\n /* A context menu opened again at a new point moves rather than closing and\n reopening: the anchor changed while the surface is open, so it is\n measured again. */\n effect(() => {\n this.anchor();\n untracked(() => {\n if (this.isOpen()) this.position();\n });\n });\n\n afterNextRender(() => {\n if (this.resolvedMount() === 'eager' && !this.isOpen()) this.build();\n });\n\n destroyRef.onDestroy(() => this.teardown());\n }\n\n /** The painted surface, once it exists. The grace area is measured off it. */\n surface(): HTMLElement | null {\n return this.surfaceNode;\n }\n\n /** Asks to open or close, and reports the reason before anything moves. */\n toggle(next: boolean, reason: MenuOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.isOpen(),\n onRequest: (request) => {\n this.openChangeRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled) return;\n\n if (this.onBar && this.bar !== null) {\n if (next) this.bar.open(this.name(), reason, source);\n else this.bar.close(reason, source);\n } else if (moved) {\n this.open.set(next);\n }\n\n /* Focus goes back to whatever opened the surface, unless the reader pressed\n somewhere else — taking it back then would fight them. */\n if (!next && reason !== 'outsidePress' && reason !== 'programmatic') {\n (this.finalFocus() ?? this.trigger())?.focus({ preventScroll: true });\n }\n }\n\n /** Closes this surface and every surface above it. */\n closeAll(reason: MenuOpenReason, source?: Event) {\n this.toggle(false, reason, source);\n this.parent?.closeAll(reason, source);\n if (!this.onBar) this.bar?.close(reason, source);\n }\n\n /** Moves focus onto an item of this surface. */\n focusItem(index: number) {\n const list = this.items();\n const item = list[index < 0 ? list.length + index : index];\n if (item !== undefined) reveal(item);\n }\n\n items(): HTMLElement[] {\n return [...(this.surfaceNode?.querySelectorAll<HTMLElement>(MENU_ITEM_SELECTOR) ?? [])];\n }\n\n readonly resolvedMount = computed(() => this.mount() ?? this.defaults.mount);\n\n private show() {\n this.build();\n this.position();\n this.bind();\n this.enter();\n }\n\n /**\n * The layer, built once. `active` drops it again when the menu closes,\n * `lazy` keeps it from the first open and `eager` builds it up front — the\n * same axis `tooltip`, `popover` and `collapsible` declare. A layer kept\n * while closed carries `inert`, so its items are in neither the tab order\n * nor the accessibility tree.\n */\n private build() {\n if (this.view !== null) {\n this.presence?.sync(this.isOpen());\n return;\n }\n\n this.portalRoot = createPortalRoot({\n origin: this.trigger(),\n disabled: this.portal() === false,\n });\n\n this.view = this.viewContainer.createEmbeddedView(this.template());\n this.view.detectChanges();\n\n this.layerNode = this.view.rootNodes.find(\n (node: unknown): node is HTMLElement => node instanceof HTMLElement,\n ) as HTMLElement | null;\n this.surfaceNode = this.layerNode?.querySelector<HTMLElement>(\"[data-part='content']\") ?? null;\n if (this.layerNode === null || this.surfaceNode === null) return;\n\n this.portalRoot.container?.append(this.layerNode);\n\n this.presence = createPresence({ present: this.isOpen() });\n this.presence.setNode(this.layerNode);\n }\n\n private position() {\n if (this.layerNode === null) return;\n const trigger = this.trigger();\n const anchor = this.anchor() ?? trigger;\n if (anchor === null) return;\n\n /* A submenu is anchored to its item and placed from the parent's edge: the\n parent surface's inset is added along the side, and the submenu's own\n inset above its first item is taken off along the alignment, so the\n first item lines up with the item that opened it (M2). */\n const submenu =\n this.parent !== null && this.surfaceNode !== null && trigger !== null\n ? submenuOffsets({\n parentSurface: this.parent.surface(),\n item: trigger,\n surface: this.surfaceNode,\n })\n : { sideOffset: 0, alignOffset: 0 };\n\n this.positioner?.destroy();\n this.positioner = createPositioner(anchor, this.layerNode, {\n align: this.resolvedAlign(),\n alignOffset: (this.alignOffset() ?? this.defaults.alignOffset) + submenu.alignOffset,\n boundaryPadding: this.collisionPadding() ?? this.defaults.collisionPadding,\n flip: this.flip() ?? this.defaults.flip,\n hideWhenDetached: this.hideWhenDetached() ?? this.defaults.hideWhenDetached,\n shift: this.shift() ?? this.defaults.shift,\n side: this.resolvedSide(),\n sideOffset: (this.sideOffset() ?? this.defaults.sideOffset) + submenu.sideOffset,\n strategy: this.strategy() ?? this.defaults.strategy,\n });\n void this.positioner.update();\n }\n\n private bind() {\n if (this.layerNode === null || this.surfaceNode === null) return;\n\n const branches = [this.trigger(), this.parent?.surface() ?? null].filter(\n (branch): branch is HTMLElement => branch !== null,\n );\n\n this.layer = createDismissableLayer(this.layerNode, {\n branches,\n escape: this.closeOnEscape() ?? this.defaults.closeOnEscape,\n focusOutside: false,\n modal: false,\n outsidePress: this.closeOnOutsidePress() ?? this.defaults.closeOnOutsidePress,\n scrollLock: false,\n onDismiss: (request) => {\n const reason: MenuOpenReason = request.reason === 'escape' ? 'escape' : 'outsidePress';\n this.toggle(false, reason, request.source as Event | undefined);\n if (reason === 'outsidePress') this.parent?.closeAll(reason, request.source as Event);\n },\n });\n\n this.navigation = createArrowNavigation(this.surfaceNode, {\n focus: reveal,\n includeAriaDisabled: true,\n itemSelector: MENU_ITEM_SELECTOR,\n loop: () => this.resolvedLoop(),\n orientation: () => 'vertical',\n });\n\n if (this.resolvedTypeahead()) {\n this.typeaheadHandle = createTypeahead({\n timeout: this.typeaheadTimeout() ?? this.defaults.typeaheadTimeout,\n });\n }\n }\n\n /** Focus enters the surface as it opens, and the pattern says which item. */\n private enter() {\n const bar = this.onBar ? this.bar : null;\n const entry = bar === null ? this.entry.current : bar.entry.current;\n this.entry.current = 'first';\n if (bar !== null) bar.entry.current = 'first';\n if (entry === 'trigger') return;\n\n const list = this.items();\n const ordered = entry === 'first' ? list : [...list].reverse();\n const item = ordered.find(enabled) ?? ordered[0];\n if (item !== undefined) reveal(item);\n }\n\n private hide() {\n this.unbind();\n if (this.resolvedMount() === 'active') this.teardown();\n }\n\n /** The listeners a closed surface has no use for. */\n private unbind() {\n this.navigation?.destroy();\n this.layer?.destroy();\n this.positioner?.destroy();\n this.typeaheadHandle?.destroy();\n this.navigation = null;\n this.layer = null;\n this.positioner = null;\n this.typeaheadHandle = null;\n }\n\n private teardown() {\n this.navigation?.destroy();\n this.layer?.destroy();\n this.positioner?.destroy();\n this.presence?.destroy();\n this.typeaheadHandle?.destroy();\n this.portalRoot?.release();\n this.layerNode?.remove();\n this.view?.destroy();\n\n this.navigation = null;\n this.layer = null;\n this.positioner = null;\n this.presence = null;\n this.typeaheadHandle = null;\n this.portalRoot = null;\n this.layerNode = null;\n this.surfaceNode = null;\n this.view = null;\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n const direction =\n this.surfaceNode !== null && getComputedStyle(this.surfaceNode).direction === 'rtl'\n ? 'rtl'\n : 'ltr';\n const inlineStart = direction === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n const inlineEnd = direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n\n if (event.key === 'Tab') {\n event.preventDefault();\n const root = this.rootTrigger();\n this.closeAll('dismiss', event);\n this.moveOut(root, event.shiftKey ? -1 : 1);\n return;\n }\n\n if (event.key === inlineStart) {\n if (this.parent !== null) {\n event.preventDefault();\n this.toggle(false, 'keyboard', event);\n return;\n }\n if (this.bar !== null) {\n event.preventDefault();\n this.bar.step(-1, { open: true });\n return;\n }\n }\n\n /* An item that opens a submenu answers the inline end itself and stops the\n key there, so reaching this point means the item has none. */\n if (event.key === inlineEnd && this.bar !== null) {\n event.preventDefault();\n this.closeAll('keyboard', event);\n this.bar.step(1, { open: true });\n return;\n }\n\n const handle = this.typeaheadHandle;\n if (handle === null) return;\n if (event.ctrlKey || event.metaKey || event.altKey) return;\n if (!isPrintable(event.key, handle.query.length > 0)) return;\n\n event.preventDefault();\n const list = this.items();\n const from = list.findIndex((item) => item === event.target);\n const index = handle.match(event.key, list.map(textOf), from);\n if (index !== -1) this.focusItem(index);\n }\n\n /** The control that opened the outermost surface of this stack. */\n private rootTrigger(): HTMLElement | null {\n return this.parent === null ? this.trigger() : this.parent.rootTriggerOf();\n }\n\n rootTriggerOf(): HTMLElement | null {\n return this.rootTrigger();\n }\n\n /**\n * Where `Tab` goes once every menu has closed: on down the page from the\n * control that opened the outermost surface. The pattern binds the key and\n * says no more, and a layer portalled to the end of the document has no next\n * element a reader would recognise.\n */\n private moveOut(trigger: HTMLElement | null, step: 1 | -1) {\n if (trigger === null) return;\n const order = tabbables(trigger.ownerDocument.body);\n const index = order.indexOf(trigger);\n if (index === -1) {\n trigger.focus({ preventScroll: true });\n return;\n }\n (order[index + step] ?? trigger).focus({ preventScroll: true });\n }\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { keysMessages } from '@slotted/core/i18n';\nimport type { KbdPlatform, KeysTranslator } from '@slotted/core/keys';\nimport { canonicalKey, parseShortcut, resolvePlatform, resolveShortcut } from '@slotted/core/keys';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlMenu } from './menu';\nimport type { MenuTone, MenuValueReason } from './menu-defaults';\n\n/** What ARIA calls each modifier, which is not what a reader sees. */\nconst ARIA_MODIFIERS: Record<string, string> = {\n alt: 'Alt',\n ctrl: 'Control',\n meta: 'Meta',\n shift: 'Shift',\n};\n\n/**\n * The shortcut as `aria-keyshortcuts` states it, or nothing.\n *\n * A sequence has no syntax in the attribute, whose separator means *or* rather\n * than *then*, so a sequence is printed and left unannounced instead of being\n * announced as something it is not.\n */\nexport function announceShortcut(keys: string, platform: KbdPlatform): string | undefined {\n const steps = parseShortcut(keys);\n if (steps.length !== 1) return undefined;\n\n return steps[0]\n ?.map((token) => {\n const canonical = canonicalKey(token);\n if (canonical === 'mod') return platform === 'mac' ? 'Meta' : 'Control';\n if (canonical !== undefined && canonical in ARIA_MODIFIERS) {\n return ARIA_MODIFIERS[canonical] as string;\n }\n const word = canonical ?? token;\n return word.length === 1 ? word.toUpperCase() : `${word[0]?.toUpperCase()}${word.slice(1)}`;\n })\n .join('+');\n}\n\n/** The legends a reader sees, in the order the platform writes them, in the language of `t`. */\nexport function shortcutLegends(keys: string, platform: KbdPlatform, t: KeysTranslator): string {\n const shortcut = resolveShortcut(keys, { platform, t });\n return shortcut.steps\n .map((step) => step.map((key) => key.legend).join(shortcut.separator))\n .join(` ${shortcut.thenLabel} `);\n}\n\n/** What an item reports when it runs. */\nexport interface MenuSelectEvent {\n readonly reason: MenuValueReason;\n readonly source: Event | undefined;\n readonly defaultPrevented: boolean;\n preventDefault: () => void;\n}\n\n/**\n * One command, one option, or one choice among others.\n *\n * A native `button` carrying `role=\"menuitem\"`: the platform gives the press,\n * the `Enter` and `Space` handling and the pointer semantics, and the role\n * replaces `button` so a reader hears an item. Which of the three roles it\n * takes is decided by the attribute the consumer wrote, read once through\n * `HostAttributeToken`, because one element cannot carry two components.\n *\n * A disabled item keeps its place in the ring and takes `aria-disabled`: the\n * pattern asks that disabled items stay focusable, and the native attribute\n * would remove them.\n */\n@Component({\n selector:\n 'button[slMenuItem], a[slMenuItem], button[slMenuCheckboxItem], button[slMenuRadioItem]',\n standalone: true,\n exportAs: 'slMenuItem',\n imports: [SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'item',\n tabindex: '-1',\n '[attr.role]': 'role',\n '[attr.type]': 'isLink ? null : \"button\"',\n '[attr.aria-checked]': 'role === \"menuitem\" ? null : isChecked()',\n '[attr.aria-disabled]': 'disabled() ? true : null',\n '[attr.aria-describedby]': 'describedBy() ?? null',\n '[attr.aria-keyshortcuts]': 'announced()',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-checked]': 'isChecked() ? \"\" : null',\n '[attr.data-text-value]': 'textValue() ?? null',\n '[attr.data-tone]': 'tone() ?? null',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)',\n '(pointermove)': 'onPointerMove()',\n },\n template: `\n @if (role !== 'menuitem') {\n <span data-part=\"indicator\"\n ><span slIcon><svg slGlyph [name]=\"role === 'menuitemradio' ? 'dot' : 'check'\"></svg></span\n ></span>\n }\n <ng-content select=\"[slMenuItemIcon]\" />\n <span data-part=\"label\"><ng-content /></span>\n <ng-content select=\"[slMenuItemDescription]\" />\n <ng-content select=\"[slMenuItemMeta]\" />\n @if (legend(); as printed) {\n <span data-part=\"shortcut\" aria-hidden=\"true\">{{ printed }}</span>\n }\n @if (opensSubmenu()) {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n `,\n})\nexport class SlMenuItem {\n readonly disabled = input(false, { transform: booleanAttribute });\n /** What typeahead matches on, when the visible label is not the word. */\n readonly textValue = input<string | undefined>(undefined);\n readonly tone = input<MenuTone | undefined>(undefined);\n /**\n * A shortcut in this library's own notation — `Mod+K`. It is printed with the\n * platform's legends and announced with `aria-keyshortcuts`; the family does\n * not listen for it, because a menu that bound keys would fire commands while\n * it was closed.\n */\n readonly shortcut = input<string | undefined>(undefined);\n readonly closeOnSelect = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n\n /** The value this item stands for inside a radio group. */\n readonly value = input<string | undefined>(undefined);\n readonly checked = model<boolean>(false);\n readonly checkedChangeRequest = output<ChangeRequest<boolean>>();\n readonly select = output<MenuSelectEvent>();\n\n /** The line under the label, which describes the item rather than naming it. */\n readonly describedBy = signal<string | null>(null);\n\n private readonly menu = inject(SlMenu);\n private readonly group = inject(SlMenuRadioGroup, { optional: true });\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n private readonly platform = resolvePlatform('auto');\n /** The words a shortcut's keys are written in, from the `keys` catalog of the language in force. */\n private readonly keysT = injectMessages(keysMessages);\n\n private readonly isCheckbox =\n inject(new HostAttributeToken('slMenuCheckboxItem'), {\n optional: true,\n }) !== null;\n private readonly isRadio =\n inject(new HostAttributeToken('slMenuRadioItem'), { optional: true }) !== null;\n protected readonly isLink = this.element.tagName === 'A';\n\n /**\n * Set by `slMenuTriggerFor` on the same element: an item that opens a\n * submenu ends in a chevron that points along the reading direction.\n */\n readonly opensSubmenu = signal(false);\n\n protected readonly role = this.isCheckbox\n ? 'menuitemcheckbox'\n : this.isRadio\n ? 'menuitemradio'\n : 'menuitem';\n\n protected readonly isChecked = computed(() =>\n this.isRadio ? this.group?.value() === this.value() : this.checked(),\n );\n\n protected readonly legend = computed(() => {\n const keys = this.shortcut();\n return keys === undefined ? undefined : shortcutLegends(keys, this.platform, this.keysT);\n });\n\n protected readonly announced = computed(() => {\n const keys = this.shortcut();\n return keys === undefined ? null : (announceShortcut(keys, this.platform) ?? null);\n });\n\n /**\n * The host is a `button` or an `a`, so the template compiler types the event\n * as the one thing both have in common and the narrowing happens here.\n */\n protected onClick(event: Event) {\n /* A click a keyboard produced carries no pointer coordinates, which is how\n `Enter` on a button is told from a press without listening for both. */\n const detail = (event as MouseEvent).detail;\n this.run(detail === 0 ? 'keyboard' : 'pointer', event);\n }\n\n protected onKeyDown(source: Event) {\n const event = source as KeyboardEvent;\n /* The pattern's optional rule, taken: `Space` on a checkbox or radio item\n changes the state without closing the menu. */\n if (event.key !== ' ' || this.role === 'menuitem') return;\n event.preventDefault();\n if (this.disabled()) return;\n this.commit('keyboard', event);\n }\n\n /**\n * The pointer moving over an item focuses it, which keeps exactly one item\n * highlighted whichever device is driving — and is what lets the stylesheet\n * paint the highlight on `:focus` rather than splitting it in two.\n */\n protected onPointerMove() {\n if (this.element.ownerDocument.activeElement === this.element) return;\n this.element.focus({ preventScroll: true });\n }\n\n private commit(reason: MenuValueReason, source: Event) {\n if (this.isRadio) {\n const value = this.value();\n if (value !== undefined) this.group?.choose(value, reason, source);\n return;\n }\n if (!this.isCheckbox) return;\n\n const next = !this.checked();\n const state = createControllable<boolean>({\n initial: this.checked(),\n onRequest: (request) => this.checkedChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.checked.set(next);\n }\n\n private run(reason: MenuValueReason, source: Event) {\n if (this.disabled()) return;\n\n this.commit(reason, source);\n\n let prevented = false;\n this.select.emit({\n reason,\n source,\n get defaultPrevented() {\n return prevented;\n },\n preventDefault: () => {\n prevented = true;\n },\n });\n if (prevented) return;\n\n /* A checkbox or a radio item keeps the menu open by default: a reader\n turning three things on would otherwise open it three times. */\n const closes =\n this.closeOnSelect() ?? (this.role === 'menuitem' && this.menu.resolvedCloseOnSelect());\n if (closes) this.menu.closeAll('select', source);\n }\n}\n\n/** The mark in the item's first column: the consumer's own element. */\n@Directive({\n selector: '[slMenuItemIcon]',\n standalone: true,\n host: { 'data-part': 'icon' },\n})\nexport class SlMenuItemIcon {}\n\n/**\n * The second line, under the label.\n *\n * It describes the item rather than naming it: the item points at it with\n * `aria-describedby`, so a reader hears \"Delete document\" and then the warning,\n * instead of one name with a sentence stuck to it.\n */\n@Directive({\n selector: '[slMenuItemDescription]',\n standalone: true,\n host: { 'data-part': 'description', '[attr.id]': 'id' },\n})\nexport class SlMenuItemDescription {\n protected readonly id = `sl-menu-description-${Math.random().toString(36).slice(2, 8)}`;\n private readonly item = inject(SlMenuItem, { optional: true });\n\n constructor() {\n this.item?.describedBy.set(this.id);\n }\n}\n\n/**\n * What the item holds or counts — a number, a status, the value a submenu is\n * set to — in a column of its own before the shortcut or the chevron. It reads\n * as part of the item's name; typeahead matches the label alone.\n */\n@Directive({\n selector: '[slMenuItemMeta]',\n standalone: true,\n host: { 'data-part': 'meta' },\n})\nexport class SlMenuItemMeta {}\n\n/**\n * Who the menu belongs to: an avatar, a name, a line under it, above the\n * commands. Not an item — the arrows and typeahead never reach it, because a\n * `menu` owns only items, groups and separators — so the surface names it as\n * its description and a reader hears it once, as the menu opens. The name is a\n * `data-part=\"label\"` element and the line under it `slMenuItemDescription`;\n * any other child is the media, set beside both.\n */\n@Directive({\n selector: '[slMenuHeader]',\n standalone: true,\n host: { 'data-part': 'header', '[attr.id]': 'id' },\n})\nexport class SlMenuHeader {\n protected readonly id = `sl-menu-header-${Math.random().toString(36).slice(2, 8)}`;\n private readonly menu = inject(SlMenu);\n\n constructor() {\n this.menu.headerId.set(this.id);\n inject(DestroyRef).onDestroy(() => {\n if (this.menu.headerId() === this.id) this.menu.headerId.set(null);\n });\n }\n}\n\n/**\n * A set of items with a name. The label is inside the group and named by it,\n * because a heading outside one belongs to nothing a reader can hear.\n */\n@Component({\n selector: 'sl-menu-group',\n standalone: true,\n exportAs: 'slMenuGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'group',\n role: 'group',\n '[attr.aria-labelledby]': 'label() === undefined ? null : labelId',\n },\n template: `\n @if (label(); as words) {\n <div data-part=\"group-label\" [id]=\"labelId\">{{ words }}</div>\n }\n <ng-content />\n `,\n})\nexport class SlMenuGroup {\n readonly label = input<string | undefined>(undefined);\n protected readonly labelId = `sl-menu-group-${Math.random().toString(36).slice(2, 8)}`;\n}\n\n/** One value, chosen among the items inside it. */\n@Component({\n selector: 'sl-menu-radio-group',\n standalone: true,\n exportAs: 'slMenuRadioGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'group', role: 'group' },\n template: '<ng-content />',\n})\nexport class SlMenuRadioGroup {\n readonly value = model<string | undefined>(undefined);\n readonly valueChangeRequest = output<ChangeRequest<string>>();\n\n choose(next: string, reason: MenuValueReason, source: Event) {\n if (next === this.value()) return;\n const state = createControllable<string>({\n initial: this.value() ?? '',\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.value.set(next);\n }\n}\n\n/** Not focusable and not interactive, which is what the pattern asks of it. */\n@Directive({\n selector: 'hr[slMenuSeparator]',\n standalone: true,\n host: { 'data-part': 'separator', role: 'separator', 'aria-orientation': 'horizontal' },\n})\nexport class SlMenuSeparator {}\n\n/** What a menu whose items were all filtered away says instead of nothing. */\n@Directive({\n selector: '[slMenuEmpty]',\n standalone: true,\n host: { 'data-part': 'empty' },\n})\nexport class SlMenuEmpty {}\n","import { createPointerIntent } from '@slotted/core/pointer-intent';\nimport type { PointerIntentHandle } from '@slotted/core/pointer-intent';\nimport { computed, DestroyRef, Directive, effect, ElementRef, inject, input } from '@angular/core';\n\nimport { SlMenu } from './menu';\nimport { MENUBAR_SURFACE } from './menu-context';\nimport { SlMenuItem } from './menu-items';\n\n/**\n * The control that opens a menu.\n *\n * It is put on the consumer's own control — `@slotted/angular` composes with a\n * directive where React composes with a `render` prop, because that is what\n * each ecosystem writes. The three places it can sit decide what it becomes: a\n * plain control on its own, one of a bar's `menuitem`s inside `sl-menubar`, and\n * an item of the surface above when the control also carries `slMenuItem`.\n */\n@Directive({\n selector: '[slMenuTriggerFor]',\n standalone: true,\n exportAs: 'slMenuTrigger',\n host: {\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'menu().isOpen()',\n '[attr.aria-controls]': 'menu().isOpen() ? menu().contentId : null',\n '[attr.id]': 'menu().triggerId',\n '[attr.type]': 'isButton ? \"button\" : null',\n '[attr.data-open]': 'menu().isOpen() ? \"\" : null',\n '[attr.data-disabled]': 'menu().resolvedDisabled() ? \"\" : null',\n '[attr.aria-disabled]': 'menu().resolvedDisabled() ? true : null',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)',\n '(pointerenter)': 'onPointerEnter($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n },\n})\nexport class SlMenuTrigger {\n /** The menu this control opens. */\n readonly menu = input.required<SlMenu>({ alias: 'slMenuTriggerFor' });\n\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n private readonly bar = inject(MENUBAR_SURFACE, { optional: true });\n /** The surface above, when this control is an item of one. */\n private readonly item = inject(SlMenuItem, { optional: true, self: true });\n private readonly parent = inject(SlMenu, { optional: true });\n\n protected readonly isButton = this.element.tagName === 'BUTTON';\n protected readonly onBar = this.parent === null && this.bar !== null;\n\n private timer: ReturnType<typeof setTimeout> | undefined;\n private intent: PointerIntentHandle | null = null;\n\n private readonly isSubmenu = computed(() => this.parent !== null);\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n this.item?.opensSubmenu.set(true);\n /* The trigger binds no `data-part` and no `role`. Two directives binding one\n attribute on one element race, and the order they run in is the\n compiler's: a `null` erased the part `slMenuItem` writes on a submenu's\n trigger, and the attribute's first value overwrote the `menu-trigger` part\n the split button binds. On a plain control both stay the control's own, so\n `slButton` stays the root of its family; on a submenu's item they are\n `slMenuItem`'s; only a bar's trigger takes them from here, written once\n because a bar's trigger is the bar's own element. */\n if (this.onBar) {\n this.element.setAttribute('data-part', 'trigger');\n this.element.setAttribute('role', 'menuitem');\n }\n\n /* The menu is told which control anchors it, and a bar is told which\n trigger answers to which menu, both as soon as the input resolves. */\n effect(() => {\n const menu = this.menu();\n menu.trigger.set(this.element);\n if (!this.onBar || this.bar === null) return;\n this.bar.register(menu.name(), this.element);\n });\n\n destroyRef.onDestroy(() => {\n this.cancelPending();\n if (this.onBar && this.bar !== null) this.bar.register(this.menu().name(), null);\n });\n }\n\n private cancelPending() {\n if (this.timer !== undefined) clearTimeout(this.timer);\n this.timer = undefined;\n this.intent?.destroy();\n this.intent = null;\n }\n\n private openWith(entry: 'first' | 'last', reason: 'pointer' | 'keyboard', source: Event) {\n const menu = this.menu();\n menu.entry.current = entry;\n menu.toggle(true, reason, source);\n }\n\n protected onClick(event: Event) {\n const menu = this.menu();\n if (menu.resolvedDisabled()) return;\n /* A submenu already open stays open under a press: the press is how a\n reader on a touch screen reaches it, not how they close it. */\n if (menu.isOpen() && this.isSubmenu()) return;\n menu.entry.current = 'first';\n menu.toggle(!menu.isOpen(), 'pointer', event);\n }\n\n protected onKeyDown(source: Event) {\n const event = source as KeyboardEvent;\n const menu = this.menu();\n if (menu.resolvedDisabled()) return;\n\n const direction = getComputedStyle(this.element).direction === 'rtl' ? 'rtl' : 'ltr';\n const inlineEnd = direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n const vertical = this.bar?.orientation() === 'vertical';\n\n /* On a bar the block axis opens the menu and the inline axis moves along\n the bar; on a vertical bar the two exchange places, which is the swap the\n pattern's fifth note describes. A submenu's item opens on the inline end\n in both, because that is where the submenu is. */\n const opensDown = !this.isSubmenu() && (!this.onBar || !vertical) && event.key === 'ArrowDown';\n const opensUp = !this.isSubmenu() && (!this.onBar || !vertical) && event.key === 'ArrowUp';\n const opensInline = event.key === inlineEnd && (this.isSubmenu() || (this.onBar && vertical));\n\n if (opensDown || opensInline) {\n event.preventDefault();\n event.stopPropagation();\n this.openWith('first', 'keyboard', event);\n return;\n }\n if (opensUp) {\n event.preventDefault();\n this.openWith('last', 'keyboard', event);\n return;\n }\n if (this.isSubmenu() && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n event.stopPropagation();\n this.openWith('first', 'keyboard', event);\n }\n }\n\n /**\n * Hover opens a submenu, and opens a bar's menu only once the bar already has\n * one open: moving the pointer along a closed bar opens nothing, and along an\n * open one switches menus.\n */\n protected onPointerEnter(event: Event) {\n const menu = this.menu();\n if (menu.resolvedDisabled()) return;\n this.cancelPending();\n\n if (this.isSubmenu()) {\n if (!menu.resolvedOpenOnHover() || menu.isOpen()) return;\n this.timer = setTimeout(\n () => this.openWith('first', 'pointer', event),\n menu.resolvedSubmenuOpenDelay(),\n );\n return;\n }\n\n if (this.onBar && this.bar !== null && this.bar.value() !== undefined) {\n if (this.bar.value() === menu.name()) return;\n this.element.focus({ preventScroll: true });\n this.openWith('first', 'pointer', event);\n }\n }\n\n /**\n * The grace area: the submenu stays open while the pointer's own path still\n * points into it, so the diagonal from this item to the surface may cross\n * three items it has no interest in.\n */\n protected onPointerLeave(event: Event) {\n if (this.timer !== undefined) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n\n const menu = this.menu();\n if (!this.isSubmenu() || !menu.isOpen()) return;\n\n const surface = menu.surface();\n if (surface === null) return;\n\n this.intent?.destroy();\n this.intent = createPointerIntent({\n target: () => surface.getBoundingClientRect(),\n origin: () => this.element.getBoundingClientRect(),\n timeout: menu.resolvedSubmenuCloseDelay(),\n onSettled: () => {\n if (this.element.matches(':hover') || surface.matches(':hover')) return;\n menu.toggle(false, 'pointer', event);\n },\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -585,7 +585,7 @@ class SlSavedViews {
|
|
|
585
585
|
</div>
|
|
586
586
|
</form>
|
|
587
587
|
</ng-template>
|
|
588
|
-
`, isInline: true, styles: ["@layer slotted.components{[data-ui=saved-views]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_hover: var(--slotted-tone-secondary-subtle-hover, ButtonFace);--_active: var(--slotted-tone-secondary-subtle-active, ButtonFace);--_height: var(--slotted-control-height-md, 34px);--_height-sm: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_gap: var(--slotted-control-gap-md, 8px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_icon-size-sm: var(--slotted-control-icon-size-sm, 14px);--_radius: var(--slotted-control-radius, 4px);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);box-sizing:border-box;color:var(--_text);font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--_font-size);line-height:var(--slotted-line-height-md, 1.5)}[data-ui=saved-views][data-part=root]{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--slotted-space-3, .375rem);min-inline-size:0;max-inline-size:100%}[data-ui=saved-views]>[data-part=trigger]{display:inline-flex;align-items:center;gap:var(--_gap);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--_padding-inline);border:var(--slotted-control-border-width, 1px) solid var(--slotted-control-border-color, ButtonBorder);border-radius:var(--_radius);background:var(--slotted-control-surface, Canvas);box-shadow:var(--slotted-control-shadow, none);color:var(--_text);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=trigger]>[data-label]{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=saved-views]>[data-part=trigger]>[data-ui=icon]{margin-inline-end:calc(var(--slotted-space-2, .25rem) * -1);color:var(--_muted);transition:rotate var(--_duration) var(--_easing)}[data-ui=saved-views][data-open]>[data-part=trigger]>[data-ui=icon]{rotate:180deg}[data-ui=saved-views]>[data-part=trigger]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views]>[data-part=trigger]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]{display:inline-flex;flex:none;align-items:center;gap:var(--slotted-space-2, .25rem);color:var(--_muted);font-size:inherit;font-weight:var(--slotted-font-weight-regular, 400)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{content:\"\";flex:none;inline-size:var(--slotted-space-4, .5rem);block-size:var(--slotted-space-4, .5rem);border-radius:var(--slotted-radius-full, 9999px);background-color:var(--slotted-tone-accent-solid)}[data-ui=saved-views]>[data-part=revert]{display:inline-flex;align-items:center;gap:var(--slotted-space-3, .375rem);box-sizing:border-box;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--slotted-space-4, .5rem);border:var(--slotted-control-border-width, 1px) solid transparent;border-radius:var(--_radius);background:transparent;color:var(--slotted-tone-accent-text, LinkText);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=revert]:hover:not(:disabled){background:var(--slotted-tone-accent-subtle-hover, ButtonFace)}[data-ui=saved-views]>[data-part=revert]:active:not(:disabled){background:var(--slotted-tone-accent-subtle-active, ButtonFace);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]:focus-visible,[data-ui=saved-views]>[data-part=revert]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=saved-views][data-part=panel]{display:grid;grid-template-columns:minmax(0,var(--slotted-saved-views-panel-inline-size, 18rem));gap:var(--slotted-space-4, .5rem);max-inline-size:100%;padding:var(--slotted-space-2, .25rem)}[data-ui=saved-views][data-part=panel]>[data-part=list]{display:grid;gap:var(--slotted-space-1, .125rem);margin:0;padding:0;list-style:none}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--slotted-space-1, .125rem);margin:0}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item][data-editing]{grid-template-columns:minmax(0,1fr)}[data-ui=saved-views][data-part=panel] [data-part=apply]{display:grid;grid-template-columns:var(--_icon-size-sm) minmax(0,max-content) auto;justify-content:start;align-content:center;align-items:baseline;column-gap:var(--slotted-space-4, .5rem);box-sizing:border-box;inline-size:100%;min-block-size:var(--_height-sm);margin:0;padding-block:var(--slotted-space-2, .25rem);padding-inline:var(--slotted-space-4, .5rem);border:0;border-radius:var(--_radius);background:transparent;color:var(--_text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-ui=icon]{color:var(--slotted-tone-accent-text);translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4)}[data-ui=saved-views][data-part=panel] [data-part=item][data-current]>[data-part=apply]{font-weight:var(--slotted-font-weight-medium, 500)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-label]{grid-column:2;min-inline-size:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] [data-part=apply]:hover:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views][data-part=panel] [data-part=apply]:active:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-part=default-mark]{display:flex;position:relative;inline-size:var(--_icon-size-sm);block-size:var(--_icon-size-sm);margin-inline-start:calc(var(--slotted-space-2, .25rem) - var(--slotted-space-4, .5rem));translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);color:var(--_muted)}[data-ui=saved-views][data-part=panel] [data-part=default-mark]>span:not([data-ui=icon]){position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}[data-ui=saved-views][data-part=panel] [data-part=actions]{display:inline-grid;place-items:center;box-sizing:border-box;inline-size:var(--_height-sm);block-size:var(--_height-sm);margin:0;padding:0;border:0;border-radius:var(--_radius);background:transparent;color:var(--_muted);cursor:pointer;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=actions][data-open],[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){color:var(--_text)}[data-ui=saved-views][data-part=panel] [data-part=apply]:focus-visible,[data-ui=saved-views][data-part=panel] [data-part=actions]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=saved-views][data-part=panel] [data-part=form],[data-ui=saved-views][data-part=panel] [data-part=confirm]{display:grid;gap:var(--slotted-space-4, .5rem);margin:0;padding:var(--slotted-space-4, .5rem);border-radius:var(--_radius);background:var(--slotted-surface-sunken, Canvas)}[data-ui=saved-views][data-part=panel] [data-part=confirm]>p{margin:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] :is([data-part=form],[data-part=confirm])>[data-buttons]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem)}[data-ui=saved-views][data-part=panel]>[data-part=footer]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem);padding-block-start:var(--slotted-space-4, .5rem);border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-subtle, transparent)}@media(forced-colors:active){[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{forced-color-adjust:none}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlButton, selector: "button[slButton]", inputs: ["disabled", "focusableWhenDisabled", "fullWidth", "justify", "loading", "loadingDelay", "messages", "size", "tone", "type", "variant"], exportAs: ["slButton"] }, { kind: "component", type: SlField, selector: "[slField]", inputs: ["size", "labelPlacement", "necessity", "messages", "disabled", "invalid", "required", "readOnly"], exportAs: ["slField"] }, { kind: "directive", type: SlFieldError, selector: "[slFieldError]", exportAs: ["slFieldError"] }, { kind: "component", type: SlFieldLabel, selector: "label[slFieldLabel]", exportAs: ["slFieldLabel"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "component", type: SlMenuItem, selector: "button[slMenuItem], a[slMenuItem], button[slMenuCheckboxItem], button[slMenuRadioItem]", inputs: ["disabled", "textValue", "tone", "shortcut", "closeOnSelect", "value", "checked"], outputs: ["checkedChange", "checkedChangeRequest", "select"], exportAs: ["slMenuItem"] }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }, { kind: "directive", type: SlPopover, selector: "[slPopover]", inputs: ["open", "defaultOpen", "disabled", "size", "width", "side", "align", "mount", "strategy", "messages", "initialFocus", "finalFocus", "arrow", "autoFocus", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "sideOffset", "alignOffset", "collisionPadding", "arrowPadding"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slPopover"] }, { kind: "component", type: SlPopoverContent, selector: "[slPopoverContent]", exportAs: ["slPopoverContent"] }, { kind: "directive", type: SlPopoverLayer, selector: "ng-template[slPopoverLayer]", exportAs: ["slPopoverLayer"] }, { kind: "directive", type: SlPopoverTrigger, selector: "[slPopoverTrigger]", exportAs: ["slPopoverTrigger"] }, { kind: "directive", type: SlSavedViewsPart, selector: "[slSavedViewsPart]", inputs: ["slSavedViewsPart"] }, { kind: "component", type: SlTextField, selector: "[slTextField]", inputs: ["size", "variant", "mono", "clearable", "revealable", "copyable", "messages", "loading"], outputs: ["valueCopy"], exportAs: ["slTextField"] }, { kind: "directive", type: SlTextFieldInput, selector: "input[slTextFieldInput]", inputs: ["value", "defaultValue", "disabled", "readOnly", "invalid", "showCount", "countMax", "revealed", "defaultRevealed", "type"], outputs: ["valueChange", "revealedChange"], exportAs: ["slTextFieldInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
588
|
+
`, isInline: true, styles: ["@layer slotted.components{[data-ui=saved-views]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_hover: var(--slotted-tone-secondary-subtle-hover, ButtonFace);--_active: var(--slotted-tone-secondary-subtle-active, ButtonFace);--_height: var(--slotted-control-height-md, 34px);--_height-sm: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_gap: var(--slotted-control-gap-md, 8px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_icon-size-sm: var(--slotted-control-icon-size-sm, 14px);--_radius: var(--slotted-control-radius, 4px);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);box-sizing:border-box;color:var(--_text);font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--_font-size);line-height:var(--slotted-line-height-md, 1.5)}[data-ui=saved-views][data-part=root]{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--slotted-space-3, .375rem);min-inline-size:0;max-inline-size:100%}[data-ui=saved-views]>[data-part=trigger]{display:inline-flex;align-items:center;gap:var(--_gap);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--_padding-inline);border:var(--slotted-control-border-width, 1px) solid var(--slotted-control-border-color, ButtonBorder);border-radius:var(--_radius);background:var(--slotted-control-surface, Canvas);box-shadow:var(--slotted-control-shadow, none);color:var(--_text);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=trigger]>[data-label]{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=saved-views]>[data-part=trigger]>[data-ui=icon]{margin-inline-end:calc(var(--slotted-space-2, .25rem) * -1);color:var(--_muted);transition:rotate var(--_duration) var(--_easing)}[data-ui=saved-views][data-open]>[data-part=trigger]>[data-ui=icon]{rotate:180deg}[data-ui=saved-views]>[data-part=trigger]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views]>[data-part=trigger]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]{display:inline-flex;flex:none;align-items:center;gap:var(--slotted-space-2, .25rem);color:var(--_muted);font-size:inherit;font-weight:var(--slotted-font-weight-regular, 400)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{content:\"\";flex:none;inline-size:var(--slotted-space-4, .5rem);block-size:var(--slotted-space-4, .5rem);border-radius:var(--slotted-radius-full, 9999px);background-color:var(--slotted-tone-accent-solid)}[data-ui=saved-views]>[data-part=revert]{display:inline-flex;align-items:center;gap:var(--slotted-space-3, .375rem);box-sizing:border-box;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--slotted-space-4, .5rem);border:var(--slotted-control-border-width, 1px) solid transparent;border-radius:var(--_radius);background:transparent;color:var(--slotted-tone-accent-text, LinkText);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=revert]:hover:not(:disabled){background:var(--slotted-tone-accent-subtle-hover, ButtonFace)}[data-ui=saved-views]>[data-part=revert]:active:not(:disabled){background:var(--slotted-tone-accent-subtle-active, ButtonFace);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]:focus-visible,[data-ui=saved-views]>[data-part=revert]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=saved-views][data-part=panel]{display:grid;grid-template-columns:minmax(0,var(--slotted-saved-views-panel-inline-size, 18rem));gap:var(--slotted-space-4, .5rem);max-inline-size:100%;padding:var(--slotted-space-2, .25rem)}[data-ui=saved-views][data-part=panel]>[data-part=list]{display:grid;gap:var(--slotted-space-1, .125rem);margin:0;padding:0;list-style:none}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--slotted-space-1, .125rem);margin:0}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item][data-editing]{grid-template-columns:minmax(0,1fr)}[data-ui=saved-views][data-part=panel] [data-part=apply]{display:grid;grid-template-columns:var(--_icon-size-sm) minmax(0,max-content) auto;justify-content:start;align-content:center;align-items:baseline;column-gap:var(--slotted-space-4, .5rem);box-sizing:border-box;inline-size:100%;min-block-size:var(--_height-sm);margin:0;padding-block:var(--slotted-space-2, .25rem);padding-inline:var(--slotted-space-4, .5rem);border:0;border-radius:var(--_radius);background:transparent;color:var(--_text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-ui=icon]{color:var(--slotted-tone-accent-text);translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4)}[data-ui=saved-views][data-part=panel] [data-part=item][data-current]>[data-part=apply]{font-weight:var(--slotted-font-weight-medium, 500)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-label]{grid-column:2;min-inline-size:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] [data-part=apply]:hover:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views][data-part=panel] [data-part=apply]:active:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-part=default-mark]{display:flex;position:relative;inline-size:var(--_icon-size-sm);block-size:var(--_icon-size-sm);margin-inline-start:calc(var(--slotted-space-2, .25rem) - var(--slotted-space-4, .5rem));translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);color:var(--_muted)}[data-ui=saved-views][data-part=panel] [data-part=default-mark]>span:not([data-ui=icon]){position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}[data-ui=saved-views][data-part=panel] [data-part=actions]{display:inline-grid;place-items:center;box-sizing:border-box;inline-size:var(--_height-sm);block-size:var(--_height-sm);margin:0;padding:0;border:0;border-radius:var(--_radius);background:transparent;color:var(--_muted);cursor:pointer;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=actions][data-open],[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){color:var(--_text)}[data-ui=saved-views][data-part=panel] [data-part=apply]:focus-visible,[data-ui=saved-views][data-part=panel] [data-part=actions]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=saved-views][data-part=panel] [data-part=form],[data-ui=saved-views][data-part=panel] [data-part=confirm]{display:grid;gap:var(--slotted-space-4, .5rem);margin:0;padding:var(--slotted-space-4, .5rem);border-radius:var(--_radius);background:var(--slotted-surface-sunken, Canvas)}[data-ui=saved-views][data-part=panel] [data-part=confirm]>p{margin:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] :is([data-part=form],[data-part=confirm])>[data-buttons]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem)}[data-ui=saved-views][data-part=panel]>[data-part=footer]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem);padding-block-start:var(--slotted-space-4, .5rem);border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-subtle, transparent)}@media(forced-colors:active){[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{forced-color-adjust:none}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlButton, selector: "button[slButton]", inputs: ["disabled", "focusableWhenDisabled", "fullWidth", "justify", "loading", "loadingDelay", "messages", "size", "tone", "type", "variant"], exportAs: ["slButton"] }, { kind: "component", type: SlField, selector: "[slField]", inputs: ["size", "labelPlacement", "necessity", "messages", "disabled", "invalid", "required", "readOnly"], exportAs: ["slField"] }, { kind: "directive", type: SlFieldError, selector: "[slFieldError]", exportAs: ["slFieldError"] }, { kind: "component", type: SlFieldLabel, selector: "label[slFieldLabel]", exportAs: ["slFieldLabel"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "width", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "component", type: SlMenuItem, selector: "button[slMenuItem], a[slMenuItem], button[slMenuCheckboxItem], button[slMenuRadioItem]", inputs: ["disabled", "textValue", "tone", "shortcut", "closeOnSelect", "value", "checked"], outputs: ["checkedChange", "checkedChangeRequest", "select"], exportAs: ["slMenuItem"] }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }, { kind: "directive", type: SlPopover, selector: "[slPopover]", inputs: ["open", "defaultOpen", "disabled", "size", "width", "side", "align", "mount", "strategy", "messages", "initialFocus", "finalFocus", "arrow", "autoFocus", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "sideOffset", "alignOffset", "collisionPadding", "arrowPadding"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slPopover"] }, { kind: "component", type: SlPopoverContent, selector: "[slPopoverContent]", exportAs: ["slPopoverContent"] }, { kind: "directive", type: SlPopoverLayer, selector: "ng-template[slPopoverLayer]", exportAs: ["slPopoverLayer"] }, { kind: "directive", type: SlPopoverTrigger, selector: "[slPopoverTrigger]", exportAs: ["slPopoverTrigger"] }, { kind: "directive", type: SlSavedViewsPart, selector: "[slSavedViewsPart]", inputs: ["slSavedViewsPart"] }, { kind: "component", type: SlTextField, selector: "[slTextField]", inputs: ["size", "variant", "mono", "clearable", "revealable", "copyable", "messages", "loading"], outputs: ["valueCopy"], exportAs: ["slTextField"] }, { kind: "directive", type: SlTextFieldInput, selector: "input[slTextFieldInput]", inputs: ["value", "defaultValue", "disabled", "readOnly", "invalid", "showCount", "countMax", "revealed", "defaultRevealed", "type"], outputs: ["valueChange", "revealedChange"], exportAs: ["slTextFieldInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
589
589
|
}
|
|
590
590
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSavedViews, decorators: [{
|
|
591
591
|
type: Component,
|