@radix-ng/primitives 1.0.0-beta.3 → 1.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/fesm2022/radix-ng-primitives-accordion.mjs +5 -3
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +3 -2
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +617 -659
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +5 -3
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +1305 -572
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs +13 -4
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +1345 -64
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +240 -112
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
- package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +3 -3
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +3 -2
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +517 -0
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +296 -70
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +861 -286
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +144 -159
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +220 -205
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +94 -51
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +141 -173
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +211 -156
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +5 -3
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +5 -3
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +5 -3
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +73 -110
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/package.json +10 -1
- package/types/radix-ng-primitives-accordion.d.ts +4 -3
- package/types/radix-ng-primitives-autocomplete.d.ts +217 -152
- package/types/radix-ng-primitives-calendar.d.ts +5 -3
- package/types/radix-ng-primitives-combobox.d.ts +672 -283
- package/types/radix-ng-primitives-config.d.ts +1 -1
- package/types/radix-ng-primitives-context-menu.d.ts +15 -5
- package/types/radix-ng-primitives-core.d.ts +762 -14
- package/types/radix-ng-primitives-date-field.d.ts +3 -2
- package/types/radix-ng-primitives-dialog.d.ts +77 -32
- package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
- package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
- package/types/radix-ng-primitives-field.d.ts +1 -0
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +175 -0
- package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
- package/types/radix-ng-primitives-menu.d.ts +186 -103
- package/types/radix-ng-primitives-navigation-menu.d.ts +37 -75
- package/types/radix-ng-primitives-popover.d.ts +59 -92
- package/types/radix-ng-primitives-popper.d.ts +39 -9
- package/types/radix-ng-primitives-preview-card.d.ts +39 -72
- package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
- package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
- package/types/radix-ng-primitives-select.d.ts +145 -108
- package/types/radix-ng-primitives-slider.d.ts +5 -4
- package/types/radix-ng-primitives-stepper.d.ts +4 -3
- package/types/radix-ng-primitives-time-field.d.ts +3 -2
- package/types/radix-ng-primitives-toast.d.ts +7 -7
- package/types/radix-ng-primitives-toggle-group.d.ts +5 -4
- package/types/radix-ng-primitives-toolbar.d.ts +3 -2
- package/types/radix-ng-primitives-tooltip.d.ts +24 -67
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-dismissable-layer.mjs","sources":["../../../packages/primitives/dismissable-layer/src/dismissable-layer.config.ts","../../../packages/primitives/dismissable-layer/src/utils.ts","../../../packages/primitives/dismissable-layer/src/dismissable-layer.ts","../../../packages/primitives/dismissable-layer/src/dismissable-layer-branch.ts","../../../packages/primitives/dismissable-layer/radix-ng-primitives-dismissable-layer.ts"],"sourcesContent":["import { computed, InjectionToken, Provider, Signal, signal } from '@angular/core';\nimport { RdxDismissableLayer } from './dismissable-layer';\n\nexport const RdxDismissableLayersContextToken = new InjectionToken('RdxDismissableLayersContextToken', {\n factory() {\n const layersRoot = signal<RdxDismissableLayer[]>([]);\n\n return {\n layersRoot,\n layersWithOutsidePointerEventsDisabled: computed(() =>\n layersRoot().filter((i) => i.isOutsidePointerEventsDisabled())\n ),\n branches: signal<HTMLElement[]>([])\n };\n }\n});\n\nexport type RdxDismissableLayerConfig = {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents: Signal<boolean>;\n};\n\nexport const RdxDismissableLayerConfigToken = new InjectionToken<RdxDismissableLayerConfig>(\n 'RdxDismissableLayerConfig',\n {\n factory: () => {\n return {\n disableOutsidePointerEvents: signal(false)\n };\n }\n }\n);\n\nexport function provideRdxDismissableLayerConfig(factory: () => RdxDismissableLayerConfig): Provider {\n return { provide: RdxDismissableLayerConfigToken, useFactory: factory };\n}\n","import {\n afterNextRender,\n booleanAttribute,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n output,\n signal\n} from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\n\nfunction isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {\n const targetLayer = targetElement.closest('[data-dismissable-layer]');\n\n const mainLayer =\n layerElement.dataset['dismissableLayer'] === ''\n ? layerElement\n : (layerElement.querySelector('[data-dismissable-layer]') as HTMLElement);\n\n const nodeList = Array.from(layerElement.ownerDocument.querySelectorAll('[data-dismissable-layer]'));\n\n if (targetLayer && (mainLayer === targetLayer || nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer))) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Listens for when focus happens outside a DOM subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\n@Directive({\n selector: '[rdxFocusOutside]',\n exportAs: 'rdxFocusOutside'\n})\nexport class RdxFocusOutside {\n readonly enabledInput = input<boolean, BooleanInput>(true, { transform: booleanAttribute, alias: 'enabled' });\n\n readonly #enabled = linkedSignal(() => this.enabledInput());\n\n set enabled(value: boolean) {\n if (this.#enabled() !== value) {\n this.#enabled.set(value);\n }\n }\n\n get enabled() {\n return this.#enabled();\n }\n\n readonly focusOutside = output<FocusEvent>();\n\n /*\n * Flag to indicate if the focus is currently within the DOM subtree\n */\n private readonly isFocusInsideDOMTree = signal(false);\n\n /*\n * Handles capturing the focus event to mark focus as inside the DOM subtree\n */\n private readonly focusCaptureHandler = () => {\n if (!this.enabled) return;\n this.isFocusInsideDOMTree.set(true);\n };\n\n /*\n * Handles capturing the blur event to mark focus as outside the DOM subtree\n */\n private readonly blurCaptureHandler = () => {\n if (!this.enabled) return;\n this.isFocusInsideDOMTree.set(false);\n };\n\n constructor() {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n effect((onCleanup) => {\n if (!this.#enabled()) {\n return;\n }\n\n const ownerDocument = elementRef.nativeElement.ownerDocument ?? globalThis.document;\n\n const focusHandler = async (event: FocusEvent) => {\n if (!elementRef?.nativeElement) {\n return;\n }\n\n // Defer past the focus settling: the first microtask lets the matching capture\n // `focus`/`blur` handler update `isFocusInsideDOMTree`, the second lets the browser\n // finish moving focus, so the check below reflects the final focus target.\n await Promise.resolve();\n await Promise.resolve();\n\n const target = event.target as HTMLElement | undefined;\n if (!elementRef.nativeElement || !target || isLayerExist(elementRef.nativeElement, target)) {\n return;\n }\n\n if (target && !this.isFocusInsideDOMTree()) {\n this.focusOutside.emit(event);\n }\n };\n\n elementRef.nativeElement.addEventListener('focus', this.focusCaptureHandler, {\n capture: true\n });\n elementRef.nativeElement.addEventListener('blur', this.blurCaptureHandler, {\n capture: true\n });\n\n ownerDocument.addEventListener('focusin', focusHandler);\n\n onCleanup(() => {\n elementRef.nativeElement.removeEventListener('focus', this.focusCaptureHandler, {\n capture: true\n });\n\n elementRef.nativeElement.removeEventListener('blur', this.blurCaptureHandler, {\n capture: true\n });\n\n ownerDocument.removeEventListener('focusin', focusHandler);\n });\n });\n }\n}\n\n/**\n * Listens for `pointerdown` outside a DOM subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behavior present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\n@Directive({\n selector: '[rdxPointerDownOutside]',\n exportAs: 'rdxPointerDownOutside'\n})\nexport class RdxPointerDownOutside {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly enabledInput = input<boolean, BooleanInput>(true, { transform: booleanAttribute, alias: 'enabled' });\n\n readonly #enabled = linkedSignal(() => this.enabledInput());\n\n set enabled(value: boolean) {\n if (this.#enabled() !== value) {\n this.#enabled.set(value);\n }\n }\n\n get enabled() {\n return this.#enabled();\n }\n\n readonly pointerDownOutside = output<PointerEvent>();\n\n private readonly isPointerInsideDOMTree = signal(false);\n\n private readonly handleAndDispatchPointerDownOutsideEvent = (e: PointerEvent) => () =>\n this.pointerDownOutside.emit(e);\n\n private handleClick?: () => void;\n\n constructor() {\n effect((onCleanup) => {\n if (!this.#enabled()) {\n return;\n }\n\n const ownerDocument = this.elementRef.nativeElement.ownerDocument ?? globalThis.document;\n // Avoid the global `window` so this stays safe under SSR; `globalThis` provides\n // `setTimeout`/`clearTimeout` in both the browser and Node.\n const ownerWindow = ownerDocument.defaultView ?? globalThis;\n\n const removeClickListener = () => {\n if (this.handleClick) {\n ownerDocument.removeEventListener('click', this.handleClick);\n this.handleClick = undefined;\n }\n };\n\n const handlePointerDown = async (event: PointerEvent) => {\n if (event.target && !this.isPointerInsideDOMTree()) {\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executres events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n removeClickListener();\n this.handleClick = this.handleAndDispatchPointerDownOutsideEvent(event);\n ownerDocument.addEventListener('click', this.handleClick, {\n once: true\n });\n } else {\n this.pointerDownOutside.emit(event);\n }\n } else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n removeClickListener();\n }\n this.isPointerInsideDOMTree.set(false);\n };\n /**\n * if this directive executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is not Angular specific, but rather how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = ownerWindow.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n }, 0);\n\n const onPointerDownCapture = () => {\n if (!this.enabled) {\n return;\n }\n this.isPointerInsideDOMTree.set(true);\n };\n\n this.elementRef.nativeElement.addEventListener('pointerdown', onPointerDownCapture, { capture: true });\n\n onCleanup(() => {\n ownerWindow.clearTimeout(timerId);\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n removeClickListener();\n this.elementRef.nativeElement.removeEventListener('pointerdown', onPointerDownCapture, {\n capture: true\n });\n });\n });\n }\n}\n\n@Directive({\n selector: '[rdxEscapeKeyDown]',\n exportAs: 'rdxEscapeKeyDown'\n})\nexport class RdxEscapeKeyDown {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly escapeKeyDown = output<KeyboardEvent>();\n\n constructor() {\n afterNextRender(() => {\n const ownerDocument = this.elementRef.nativeElement.ownerDocument ?? globalThis.document;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.escapeKeyDown.emit(event);\n }\n };\n\n ownerDocument.addEventListener('keydown', handleKeyDown, {\n capture: true\n });\n\n this.destroyRef.onDestroy(() =>\n ownerDocument.removeEventListener('keydown', handleKeyDown, {\n capture: true\n })\n );\n });\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n output,\n untracked\n} from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { RdxDismissableLayerConfigToken, RdxDismissableLayersContextToken } from './dismissable-layer.config';\nimport { RdxEscapeKeyDown, RdxFocusOutside, RdxPointerDownOutside } from './utils';\n\n/**\n * Shared across all layers. Holds the body's original `pointer-events` value while at least one\n * layer disables outside pointer events. `null` means the body is not currently overridden — it\n * doubles as the \"ownership\" flag so stacked layers don't overwrite the saved original with\n * `none`.\n */\nlet originalBodyPointerEvents: string | null = null;\n\n@Directive({\n selector: '[rdxDismissableLayer]',\n exportAs: 'rdxDismissableLayer',\n hostDirectives: [RdxPointerDownOutside, RdxFocusOutside, RdxEscapeKeyDown],\n host: {\n 'data-dismissable-layer': '',\n '[style]': `{\n pointerEvents: isBodyPointerEventsDisabled() ? (isPointerEventsEnabled() ? 'auto' : 'none') : undefined\n }`\n }\n})\nexport class RdxDismissableLayer {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly context = inject(RdxDismissableLayersContextToken);\n private readonly config = inject(RdxDismissableLayerConfigToken);\n\n private readonly rdxPointerDownOutside = inject(RdxPointerDownOutside);\n private readonly rdxFocusOutside = inject(RdxFocusOutside);\n private readonly rdxEscapeKeyDown = inject(RdxEscapeKeyDown);\n\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n readonly escapeKeyDown = output<KeyboardEvent>();\n\n /**\n * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n readonly pointerDownOutside = output<PointerEvent>();\n\n /**\n * Event handler called when the focus moves outside of the `DismissableLayer`.\n * Can be prevented.\n */\n readonly focusOutside = output<FocusEvent>();\n\n /**\n * Event handler called when an interaction happens outside the `DismissableLayer`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n readonly interactOutside = output<PointerEvent | FocusEvent>();\n\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n readonly dismiss = output<void>();\n\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n readonly disableOutsidePointerEvents = input<boolean | undefined, BooleanInput | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value))\n });\n\n readonly isOutsidePointerEventsDisabled = computed(\n () => this.disableOutsidePointerEvents() ?? this.config.disableOutsidePointerEvents()\n );\n\n protected readonly isBodyPointerEventsDisabled = computed(\n () => this.context.layersWithOutsidePointerEventsDisabled().length > 0\n );\n\n protected readonly isPointerEventsEnabled = computed(() => {\n const layers = this.context.layersRoot();\n const disabledLayers = this.context.layersWithOutsidePointerEventsDisabled();\n const highestDisabledLayer = disabledLayers[disabledLayers.length - 1];\n\n return this.index() >= layers.indexOf(highestDisabledLayer);\n });\n\n private readonly index = computed(() => this.context.layersRoot().indexOf(this));\n\n /** The topmost layer in the stack — the only one that should react to the Escape key. */\n private readonly isHighestLayer = computed(() => {\n const layers = this.context.layersRoot();\n return layers.indexOf(this) === layers.length - 1;\n });\n\n constructor() {\n this.context.layersRoot.update((v) => [...v, this]);\n this.destroyRef.onDestroy(() => {\n this.context.layersRoot.update((v) => v.filter((i) => i !== this));\n });\n\n this.setupBodyPointerEvents();\n\n this.rdxPointerDownOutside.pointerDownOutside.subscribe((event: PointerEvent) => {\n const isPointerDownOnBranch = this.context\n .branches()\n .some((branch) => branch.contains(event.target as HTMLElement));\n\n if (!this.isPointerEventsEnabled() || isPointerDownOnBranch) {\n return;\n }\n\n this.pointerDownOutside.emit(event);\n this.interactOutside.emit(event);\n\n if (!event.defaultPrevented) {\n this.dismiss.emit();\n }\n });\n\n this.rdxFocusOutside.focusOutside.subscribe((event: FocusEvent) => {\n const isFocusInBranch = this.context\n .branches()\n .some((branch) => branch.contains(event.target as HTMLElement));\n\n if (isFocusInBranch) {\n return;\n }\n\n this.focusOutside.emit(event);\n this.interactOutside.emit(event);\n\n if (!event.defaultPrevented) {\n this.dismiss.emit();\n }\n });\n\n this.rdxEscapeKeyDown.escapeKeyDown.subscribe((event: KeyboardEvent) => {\n // Only the topmost layer is dismissed by Escape; stacked layers close one at a time.\n if (!this.isHighestLayer()) {\n return;\n }\n\n this.escapeKeyDown.emit(event);\n\n if (!event.defaultPrevented) {\n event.preventDefault();\n this.dismiss.emit();\n }\n });\n }\n\n /**\n * Toggles `pointer-events: none` on the document body while any layer has\n * `disableOutsidePointerEvents`. Ownership is shared across all layers via\n * {@link originalBodyPointerEvents}: the original value is saved only on the global\n * `0 -> >0` transition and restored only when the count returns to `0`.\n */\n private setupBodyPointerEvents(): void {\n afterNextRender(() => {\n const ownerDocument = this.elementRef.nativeElement.ownerDocument ?? globalThis.document;\n\n effect(\n (onCleanup) => {\n const disabledCount = this.context.layersWithOutsidePointerEventsDisabled().length;\n\n if (disabledCount > 0 && originalBodyPointerEvents === null) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = 'none';\n }\n\n onCleanup(() => {\n const remaining = untracked(() => this.context.layersWithOutsidePointerEventsDisabled().length);\n if (remaining === 0 && originalBodyPointerEvents !== null) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n originalBodyPointerEvents = null;\n }\n });\n },\n { injector: this.injector }\n );\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxDismissableLayersContextToken } from './dismissable-layer.config';\n\n@Directive({\n selector: '[rdxDismissableLayerBranch]'\n})\nexport class RdxDismissableLayerBranch {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly dismissableLayersContext = inject(RdxDismissableLayersContextToken);\n\n constructor() {\n this.dismissableLayersContext.branches.update((elements) => [...elements, this.elementRef.nativeElement]);\n\n this.destroyRef.onDestroy(() =>\n this.dismissableLayersContext.branches.update((elements) =>\n elements.filter((el) => el !== this.elementRef.nativeElement)\n )\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RdxPointerDownOutside","i1.RdxFocusOutside","i1.RdxEscapeKeyDown"],"mappings":";;;MAGa,gCAAgC,GAAG,IAAI,cAAc,CAAC,kCAAkC,EAAE;IACnG,OAAO,GAAA;AACH,QAAA,MAAM,UAAU,GAAG,MAAM,CAAwB,EAAE,iFAAC;QAEpD,OAAO;YACH,UAAU;YACV,sCAAsC,EAAE,QAAQ,CAAC,MAC7C,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,8BAA8B,EAAE,CAAC,CACjE;AACD,YAAA,QAAQ,EAAE,MAAM,CAAgB,EAAE;SACrC;IACL;AACH,CAAA;MAWY,8BAA8B,GAAG,IAAI,cAAc,CAC5D,2BAA2B,EAC3B;IACI,OAAO,EAAE,MAAK;QACV,OAAO;AACH,YAAA,2BAA2B,EAAE,MAAM,CAAC,KAAK;SAC5C;IACL;AACH,CAAA;AAGC,SAAU,gCAAgC,CAAC,OAAwC,EAAA;IACrF,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,UAAU,EAAE,OAAO,EAAE;AAC3E;;ACxBA,SAAS,YAAY,CAAC,YAAyB,EAAE,aAA0B,EAAA;IACvE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAErE,MAAM,SAAS,GACX,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK;AACzC,UAAE;AACF,UAAG,YAAY,CAAC,aAAa,CAAC,0BAA0B,CAAiB;AAEjF,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;IAEpG,IAAI,WAAW,KAAK,SAAS,KAAK,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE;AAC3G,QAAA,OAAO,IAAI;IACf;SAAO;AACH,QAAA,OAAO,KAAK;IAChB;AACJ;AAEA;;;AAGG;MAKU,eAAe,CAAA;AAGf,IAAA,QAAQ;IAEjB,IAAI,OAAO,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B;IACJ;AAEA,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;IAC1B;AAyBA,IAAA,WAAA,GAAA;AArCS,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAwB,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,GAAG;QAEpG,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;QAYlD,IAAA,CAAA,YAAY,GAAG,MAAM,EAAc;AAE5C;;AAEG;AACc,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,KAAK,2FAAC;AAErD;;AAEG;QACc,IAAA,CAAA,mBAAmB,GAAG,MAAK;YACxC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE;AACnB,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AACvC,QAAA,CAAC;AAED;;AAEG;QACc,IAAA,CAAA,kBAAkB,GAAG,MAAK;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE;AACnB,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;AACxC,QAAA,CAAC;AAGG,QAAA,MAAM,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAE9D,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;gBAClB;YACJ;YAEA,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,IAAI,UAAU,CAAC,QAAQ;AAEnF,YAAA,MAAM,YAAY,GAAG,OAAO,KAAiB,KAAI;AAC7C,gBAAA,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE;oBAC5B;gBACJ;;;;AAKA,gBAAA,MAAM,OAAO,CAAC,OAAO,EAAE;AACvB,gBAAA,MAAM,OAAO,CAAC,OAAO,EAAE;AAEvB,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAiC;AACtD,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE;oBACxF;gBACJ;gBAEA,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACxC,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;gBACjC;AACJ,YAAA,CAAC;YAED,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE;AACzE,gBAAA,OAAO,EAAE;AACZ,aAAA,CAAC;YACF,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE;AACvE,gBAAA,OAAO,EAAE;AACZ,aAAA,CAAC;AAEF,YAAA,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;YAEvD,SAAS,CAAC,MAAK;gBACX,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC5E,oBAAA,OAAO,EAAE;AACZ,iBAAA,CAAC;gBAEF,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC1E,oBAAA,OAAO,EAAE;AACZ,iBAAA,CAAC;AAEF,gBAAA,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;AAC9D,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;8GA1FS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE;AACb,iBAAA;;AA8FD;;;;AAIG;MAKU,qBAAqB,CAAA;AAKrB,IAAA,QAAQ;IAEjB,IAAI,OAAO,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B;IACJ;AAEA,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;IAC1B;AAWA,IAAA,WAAA,GAAA;AAzBiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEhE,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAwB,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,GAAG;QAEpG,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;QAYlD,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAgB;AAEnC,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,KAAK,6FAAC;AAEtC,QAAA,IAAA,CAAA,wCAAwC,GAAG,CAAC,CAAe,KAAK,MAC7E,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAK/B,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;gBAClB;YACJ;AAEA,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,IAAI,UAAU,CAAC,QAAQ;;;AAGxF,YAAA,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,IAAI,UAAU;YAE3D,MAAM,mBAAmB,GAAG,MAAK;AAC7B,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;oBAClB,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;AAC5D,oBAAA,IAAI,CAAC,WAAW,GAAG,SAAS;gBAChC;AACJ,YAAA,CAAC;AAED,YAAA,MAAM,iBAAiB,GAAG,OAAO,KAAmB,KAAI;gBACpD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE;AAChD;;;;;;;;;;;AAWG;AACH,oBAAA,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE;AAC/B,wBAAA,mBAAmB,EAAE;wBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,wCAAwC,CAAC,KAAK,CAAC;wBACvE,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;AACtD,4BAAA,IAAI,EAAE;AACT,yBAAA,CAAC;oBACN;yBAAO;AACH,wBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;oBACvC;gBACJ;qBAAO;;;AAGH,oBAAA,mBAAmB,EAAE;gBACzB;AACA,gBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1C,YAAA,CAAC;AACD;;;;;;;;;;;;AAYG;AACH,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,MAAK;AACxC,gBAAA,aAAa,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC;YACpE,CAAC,EAAE,CAAC,CAAC;YAEL,MAAM,oBAAoB,GAAG,MAAK;AAC9B,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBACf;gBACJ;AACA,gBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,YAAA,CAAC;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAEtG,SAAS,CAAC,MAAK;AACX,gBAAA,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC;AACjC,gBAAA,aAAa,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,CAAC;AACnE,gBAAA,mBAAmB,EAAE;gBACrB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,aAAa,EAAE,oBAAoB,EAAE;AACnF,oBAAA,OAAO,EAAE;AACZ,iBAAA,CAAC;AACN,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;8GA7GS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE;AACb,iBAAA;;MAqHY,gBAAgB,CAAA;AAMzB,IAAA,WAAA,GAAA;AALiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEvC,IAAA,CAAA,aAAa,GAAG,MAAM,EAAiB;QAG5C,eAAe,CAAC,MAAK;AACjB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,IAAI,UAAU,CAAC,QAAQ;AACxF,YAAA,MAAM,aAAa,GAAG,CAAC,KAAoB,KAAI;AAC3C,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxB,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBAClC;AACJ,YAAA,CAAC;AAED,YAAA,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE;AACrD,gBAAA,OAAO,EAAE;AACZ,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MACtB,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,EAAE;AACxD,gBAAA,OAAO,EAAE;AACZ,aAAA,CAAC,CACL;AACL,QAAA,CAAC,CAAC;IACN;8GAzBS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;AC/OD;;;;;AAKG;AACH,IAAI,yBAAyB,GAAkB,IAAI;MAatC,mBAAmB,CAAA;AA2E5B,IAAA,WAAA,GAAA;AA1EiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gCAAgC,CAAC;AAClD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAE/C,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE5D;;;AAGG;QACM,IAAA,CAAA,aAAa,GAAG,MAAM,EAAiB;AAEhD;;;AAGG;QACM,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAgB;AAEpD;;;AAGG;QACM,IAAA,CAAA,YAAY,GAAG,MAAM,EAAc;AAE5C;;;;AAIG;QACM,IAAA,CAAA,eAAe,GAAG,MAAM,EAA6B;AAE9D;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,MAAM,EAAQ;AAEjC;;;;AAIG;AACM,QAAA,IAAA,CAAA,2BAA2B,GAAG,KAAK,CAAgD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,CAAA,EACjG,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GACnF;AAEO,QAAA,IAAA,CAAA,8BAA8B,GAAG,QAAQ,CAC9C,MAAM,IAAI,CAAC,2BAA2B,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,qGACxF;AAEkB,QAAA,IAAA,CAAA,2BAA2B,GAAG,QAAQ,CACrD,MAAM,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC,MAAM,GAAG,CAAC,kGACzE;AAEkB,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACxC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE;YAC5E,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;YAEtE,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC/D,QAAA,CAAC,6FAAC;AAEe,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,4EAAC;;AAG/D,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACxC,YAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC;AACrD,QAAA,CAAC,qFAAC;AAGE,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;AACtE,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,sBAAsB,EAAE;QAE7B,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAmB,KAAI;AAC5E,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC9B,iBAAA,QAAQ;AACR,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;YAEnE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,qBAAqB,EAAE;gBACzD;YACJ;AAEA,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAEhC,YAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACvB;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAiB,KAAI;AAC9D,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC;AACxB,iBAAA,QAAQ;AACR,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;YAEnE,IAAI,eAAe,EAAE;gBACjB;YACJ;AAEA,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAEhC,YAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACvB;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAoB,KAAI;;AAEnE,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;gBACxB;YACJ;AAEA,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAE9B,YAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBACzB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACvB;AACJ,QAAA,CAAC,CAAC;IACN;AAEA;;;;;AAKG;IACK,sBAAsB,GAAA;QAC1B,eAAe,CAAC,MAAK;AACjB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,IAAI,UAAU,CAAC,QAAQ;AAExF,YAAA,MAAM,CACF,CAAC,SAAS,KAAI;gBACV,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC,MAAM;gBAElF,IAAI,aAAa,GAAG,CAAC,IAAI,yBAAyB,KAAK,IAAI,EAAE;oBACzD,yBAAyB,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;oBAClE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;gBACnD;gBAEA,SAAS,CAAC,MAAK;AACX,oBAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC,MAAM,CAAC;oBAC/F,IAAI,SAAS,KAAK,CAAC,IAAI,yBAAyB,KAAK,IAAI,EAAE;wBACvD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,yBAAyB;wBAClE,yBAAyB,GAAG,IAAI;oBACpC;AACJ,gBAAA,CAAC,CAAC;YACN,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC9B;AACL,QAAA,CAAC,CAAC;IACN;8GAlKS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,mIAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,SAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAX/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,cAAc,EAAE,CAAC,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,CAAC;AAC1E,oBAAA,IAAI,EAAE;AACF,wBAAA,wBAAwB,EAAE,EAAE;AAC5B,wBAAA,SAAS,EAAE,CAAA;;AAET,SAAA;AACL;AACJ,iBAAA;;;MC9BY,yBAAyB,CAAA;AAMlC,IAAA,WAAA,GAAA;AALiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,gCAAgC,CAAC;QAGhF,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAEzG,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MACtB,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,KACnD,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAChE,CACJ;IACL;8GAdS,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACLD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-dismissable-layer.mjs","sources":["../../../packages/primitives/dismissable-layer/src/dismiss.ts","../../../packages/primitives/dismissable-layer/src/floating-inside-element.ts","../../../packages/primitives/dismissable-layer/src/utils.ts","../../../packages/primitives/dismissable-layer/radix-ng-primitives-dismissable-layer.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, inject, PLATFORM_ID } from '@angular/core';\nimport { RdxFloatingNode, RdxFloatingRootContext } from '@radix-ng/primitives/core';\nimport { RDX_FLOATING_MARKER } from '@radix-ng/primitives/floating-focus-manager';\n\n/** Why a dismissal was requested — mirrors Base UI's open-change `reason` strings (`useDismiss.ts`). */\nexport type RdxDismissReason = 'escape-key' | 'outside-press' | 'focus-outside';\nexport type RdxOutsidePressDomEvent = MouseEvent | PointerEvent | TouchEvent;\n\n/**\n * Configuration for {@link RdxDismiss}. Every flag is a getter so it can be a signal\n * read (reactive) or a plain predicate. The `on*` pre-hooks are **preventable**: call\n * `event.preventDefault()` inside one to veto that dismissal (the layer then stays open).\n */\n/** When an outside press dismisses: `'sloppy'` closes on `pointerdown`, `'intentional'` on `click`. */\nexport type RdxOutsidePressEvent = 'sloppy' | 'intentional';\n\n/**\n * `outsidePressEvent` config (Base UI). Either a single mode for every pointer type, or a per-pointer-type\n * map (`{ mouse, touch, pen }`) resolved against the pointer type of the active press. A missing key falls\n * back to `'sloppy'`.\n */\nexport type RdxOutsidePressEventConfig =\n | RdxOutsidePressEvent\n | { mouse?: RdxOutsidePressEvent; touch?: RdxOutsidePressEvent; pen?: RdxOutsidePressEvent };\n\nexport interface RdxDismissProps {\n /** Whole-capability gate (on top of `context.open()`). Default `() => true`. */\n enabled?: () => boolean;\n /** Whether Escape requests dismissal. Default `() => true`. */\n escapeKey?: () => boolean;\n /**\n * Whether this layer's Escape **bubbles** to ancestor layers (Base UI `bubbles.escapeKey`). Default\n * `() => false` — Escape closes only the deepest layer. `true` re-emits to the parent too (this is\n * Menu's `closeParentOnEsc`: a submenu's Escape also closes the parent menu).\n */\n escapeKeyBubbles?: () => boolean;\n /**\n * Whether an outside pointer press requests dismissal. Default `() => true`. Receives the press\n * **event**, so a layer can decide per target / button / pointer (e.g. Dialog: only the topmost\n * dialog dismisses; only its own backdrop counts).\n */\n outsidePress?: (event: Event) => boolean;\n /**\n * When an outside press dismisses (Base UI `outsidePressEvent`). `'sloppy'` (default) closes on\n * `pointerdown` — immediate, OS-like. `'intentional'` closes on `click` — requires a full\n * press-and-release on the same outside target, and suppresses the click when the press **started\n * inside** (so selecting text and dragging out does not dismiss). May be a per-pointer-type map\n * resolved against the active press (`{ mouse: 'intentional', touch: 'sloppy' }`).\n */\n outsidePressEvent?: () => RdxOutsidePressEventConfig;\n /**\n * Whether this layer's outside-press **bubbles** to ancestor layers (Base UI `bubbles.outsidePress`).\n * Default `() => true` — an outside press closes the whole stack. `false` makes an open non-bubbling\n * child block the parent (only the deepest closes).\n */\n outsidePressBubbles?: () => boolean;\n /** Whether focus leaving the layer requests dismissal. Default `() => true`. */\n focusOutside?: () => boolean;\n /** Preventable pre-hook for Escape. */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n /** Preventable pre-hook for an outside pointer press. */\n onPointerDownOutside?: (event: RdxOutsidePressDomEvent) => void;\n /** Preventable pre-hook for focus moving outside. */\n onFocusOutside?: (event: FocusEvent) => void;\n /** Called when a non-prevented dismissal is requested. */\n onDismiss?: (reason: RdxDismissReason, event: Event) => void;\n}\n\nconst alwaysTrue = (): boolean => true;\nconst alwaysFalse = (): boolean => false;\nconst sloppy = (): 'sloppy' => 'sloppy';\n\n/** Duck-types an `EventTarget` to `Node` (cross-realm-safe; `Node.contains` throws on a non-Node). */\nfunction isNode(target: EventTarget | null): target is Node {\n return target !== null && typeof (target as Node).nodeType === 'number';\n}\n\n/**\n * Owner-document-safe `HTMLElement` check. A raw `target instanceof HTMLElement` is realm-sensitive — it\n * returns `false` for an element from another document (iframe / popup window) because that realm has its\n * own `HTMLElement` constructor. Resolve the constructor from the node's own `defaultView` (Base UI\n * `isHTMLElement`).\n */\nfunction isHTMLElement(target: EventTarget | null): target is HTMLElement {\n if (!isNode(target)) {\n return false;\n }\n const view = target.ownerDocument?.defaultView;\n return view ? target instanceof view.HTMLElement : target instanceof HTMLElement;\n}\n\n/** Owner-document-safe `Element` check for SVG/custom-element outside targets. */\nfunction isElement(target: EventTarget | null): target is Element {\n if (!isNode(target)) {\n return false;\n }\n const view = target.ownerDocument?.defaultView;\n return view ? target instanceof view.Element : target instanceof Element;\n}\n\n/**\n * Whether `window` is a WebKit (Safari / any iOS browser) engine — its IME `compositionend`/`keydown`\n * ordering needs a longer guard. Requires the `Safari` token and excludes desktop Blink (Chrome /\n * Edge / Android), so jsdom (`AppleWebKit/537.36 … jsdom`, no `Safari`) is correctly **not** WebKit and\n * the unit timing stays 0ms.\n */\nfunction isWebKit(window: { navigator: Navigator }): boolean {\n const ua = window.navigator.userAgent;\n return /AppleWebKit/i.test(ua) && /Safari/i.test(ua) && !/Chrome|Chromium|Edg|Android/i.test(ua);\n}\n\n/** Only a primary (left / default) press dismisses — a non-primary mouse button is ignored. */\nfunction isPrimaryButton(event: Event): boolean {\n return !('button' in event) || (event as MouseEvent).button === 0;\n}\n\nfunction isRootElement(element: Element): boolean {\n const document = element.ownerDocument;\n return element === document.documentElement || element === document.body;\n}\n\nfunction isShadowRoot(value: Node | null): value is ShadowRoot {\n return value !== null && value.nodeType === 11 && 'host' in value;\n}\n\nfunction getParentNode(element: Element): Node | null {\n const parent = element.parentNode;\n if (parent) {\n return parent;\n }\n const root = element.getRootNode();\n return isShadowRoot(root) ? root.host : null;\n}\n\nfunction isLastTraversableNode(node: Node | null): boolean {\n return (\n node === null ||\n node.nodeType === Node.DOCUMENT_NODE ||\n isShadowRoot(node) ||\n (isElement(node) && isRootElement(node))\n );\n}\n\nfunction getTargetRootAncestor(target: Element): Element {\n let ancestor = target;\n while (!isLastTraversableNode(ancestor)) {\n const parent = getParentNode(ancestor);\n if (isLastTraversableNode(parent) || !isElement(parent)) {\n break;\n }\n ancestor = parent;\n }\n return ancestor;\n}\n\n/**\n * Base UI third-party guard: ignore elements injected after `markOthers` ran. A normal outside target sits\n * in a root subtree that contains at least one marker; an injected root does not.\n */\nfunction isInjectedAfterMark(target: EventTarget | null, context: RdxFloatingRootContext): boolean {\n if (!isElement(target) || isRootElement(target)) {\n return false;\n }\n if (\n target.closest(\n '[data-rdx-internal-backdrop], [data-rdx-menu-internal-backdrop], [data-rdx-dialog-internal-backdrop]'\n )\n ) {\n return false;\n }\n const targetRoot = target.getRootNode();\n const queryRoot: ParentNode = isShadowRoot(targetRoot) ? targetRoot : context.ownerDocument;\n const markers = Array.from(queryRoot.querySelectorAll(`[${RDX_FLOATING_MARKER}]`));\n if (markers.length === 0) {\n return false;\n }\n const floating = context.floatingElement;\n if (floating && target.contains(floating)) {\n return false;\n }\n const targetRootAncestor = getTargetRootAncestor(target);\n return markers.every((marker) => !targetRootAncestor.contains(marker));\n}\n\n/**\n * Whether the press landed on `target`'s scrollbar (a scrollbar drag must not dismiss). Mirrors Base\n * UI's geometry check (`useDismiss.ts`): skipped for touch (scrollbars get no touch events) and resolved\n * from the element's scroll metrics + the press offset.\n *\n * @remarks Layout-dependent — verified by Playwright, not jsdom (which reports zero box metrics, so this\n * correctly returns `false` there). See `apps/visual-regression`.\n */\nfunction isScrollbarPress(event: Event): boolean {\n const target = event.target;\n if (!isHTMLElement(target) || 'touches' in event || typeof (event as MouseEvent).offsetX !== 'number') {\n return false;\n }\n const view = target.ownerDocument.defaultView;\n if (!view) {\n return false;\n }\n const press = event as MouseEvent;\n const style = view.getComputedStyle(target);\n const scrollable = /auto|scroll/;\n const lastTraversableNode = isLastTraversableNode(target);\n const isScrollableX = lastTraversableNode || scrollable.test(style.overflowX);\n const isScrollableY = lastTraversableNode || scrollable.test(style.overflowY);\n const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n const isRtl = style.direction === 'rtl';\n\n const onVerticalScrollbar =\n canScrollY &&\n (isRtl ? press.offsetX <= target.offsetWidth - target.clientWidth : press.offsetX > target.clientWidth);\n const onHorizontalScrollbar = canScrollX && press.offsetY > target.clientHeight;\n\n return onVerticalScrollbar || onHorizontalScrollbar;\n}\n\n/** A layer's per-event \"bubbles to ancestors\" policy, published for its ancestors to read. */\ninterface DismissBubbles {\n escapeKey: () => boolean;\n outsidePress: () => boolean;\n}\n\n/**\n * Each capability publishes its bubbles policy here, keyed by its root context, so an **ancestor**'s\n * `hasBlockingChild` can read a child's flags — the Angular counterpart of Base UI storing\n * `__escapeKeyBubbles` / `__outsidePressBubbles` on the context's `dataRef` (`useDismiss.ts`). Kept in a\n * dismissal-private `WeakMap` (not on the neutral context) so the context stays capability-agnostic.\n */\nconst dismissBubblesByContext = new WeakMap<RdxFloatingRootContext, DismissBubbles>();\n\n/**\n * Whether a child `context` lets the given event bubble past it to its ancestors. Defaults match Base\n * UI for a child that has no dismissal policy (e.g. focus-only): Escape does **not** bubble (so it\n * blocks), an outside press **does** (so it does not block).\n */\nfunction childBubbles(context: RdxFloatingRootContext, reason: RdxDismissReason): boolean {\n const bubbles = dismissBubblesByContext.get(context);\n if (reason === 'escape-key') {\n return bubbles ? bubbles.escapeKey() : false;\n }\n return bubbles ? bubbles.outsidePress() : true;\n}\n\n/**\n * The **dismiss** mechanism (ADR 0015) — the Angular counterpart of Base UI's `useDismiss`. It\n * **references** a {@link RdxFloatingRootContext} (mandatory: `open` / `triggers` / elements live there)\n * and a {@link RdxFloatingNode} (**optional**: a node-optional / Navigation-Menu state has `node ===\n * null`); it never creates them. It listens for Escape / outside-press / focus-out and **requests** a\n * dismissal via `onDismiss` when an interaction lands outside the logical layer and this layer owns the\n * event.\n *\n * **Logical, not DOM-order, containment.** \"Inside\" is resolved through the shared tree — this popup's\n * floating element + its registered triggers, **plus** the same for every open descendant node, **plus**\n * this layer's own {@link branches}. So a portal-relocated child still counts as inside its parent — which\n * a DOM-order containment check cannot do.\n *\n * **Ownership & propagation (`hasBlockingChild`).** Each layer publishes per-event `bubbles` flags\n * (`escapeKeyBubbles` default `false`, `outsidePressBubbles` default `true`); an ancestor reads its open\n * children's flags via {@link childBubbles}. A non-bubbling layer **yields** to a non-bubbling open child,\n * so by default Escape closes only the **deepest** layer while an outside press closes the **whole stack**.\n * A layer with `escapeKeyBubbles = true` re-emits to its parent (Menu's `closeParentOnEsc`). The owning\n * non-bubbling Escape layer also `stopPropagation()`s so the key does not reach app handlers.\n *\n * **Press / IME hardening.** Outside-press honors `outsidePressEvent` (`'sloppy'` → `pointerdown`,\n * `'intentional'` → `click` with press-start-inside drag-out suppression), ignores non-primary mouse\n * buttons and scrollbar presses, resets on `pointercancel`, and ignores Escape while an IME composition is\n * active. **Touch** sloppy-mode gesture hardening (long-press / drag-distance thresholds) is ported here\n * but only unit-exercisable via synthetic events — real on-device behavior is covered by\n * `apps/visual-regression` (Playwright).\n *\n * **Scope.** Must be constructed in an injection context (`DestroyRef` / `PLATFORM_ID`). No-op on the\n * server.\n */\nexport class RdxDismiss {\n /** This layer's own inside-content set (branches that live outside the popup DOM). */\n readonly branches = new Set<Element>();\n\n /** This mechanism's active-ness: the popup is open **and** dismissal is enabled. */\n readonly active: () => boolean;\n\n constructor(\n readonly context: RdxFloatingRootContext,\n readonly node: () => RdxFloatingNode | null,\n config: RdxDismissProps = {}\n ) {\n const enabled = config.enabled ?? alwaysTrue;\n const escapeKey = config.escapeKey ?? alwaysTrue;\n const escapeKeyBubbles = config.escapeKeyBubbles ?? alwaysFalse;\n const outsidePress = config.outsidePress ?? alwaysTrue;\n const outsidePressBubbles = config.outsidePressBubbles ?? alwaysTrue;\n const outsidePressEvent = config.outsidePressEvent ?? sloppy;\n const focusOutside = config.focusOutside ?? alwaysTrue;\n\n // Plain function (not `computed`) so it re-reads `open()` per event even when `open` is not a\n // signal — while still tracking signals when read inside a reactive context.\n this.active = () => this.context.open() && enabled();\n\n // Publish this layer's bubbles policy so an ANCESTOR's hasBlockingChild can read it. Registered\n // (and cleaned up) regardless of platform so SSR leaves no stale entry.\n dismissBubblesByContext.set(this.context, { escapeKey: escapeKeyBubbles, outsidePress: outsidePressBubbles });\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => dismissBubblesByContext.delete(this.context));\n\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return; // SSR: no listeners, no DOM access.\n }\n\n const ownerDocument = this.context.ownerDocument;\n const ownerWindow = ownerDocument.defaultView ?? globalThis;\n\n const dismiss = (reason: RdxDismissReason, event: Event): void => {\n config.onDismiss?.(reason, event);\n };\n\n // IME: a press of Escape while composing should close the compose menu, not the popup.\n let isComposing = false;\n // Press-start-inside tracking (drag-out suppression for `intentional` mode).\n let pressStartedInside = false;\n // Pointer type of the active press, used to resolve a per-pointer-type `outsidePressEvent` map.\n let currentPointerType: 'mouse' | 'touch' | 'pen' | '' = '';\n // Touch outside-press hardening (Base UI `useDismiss`). For touch, a `sloppy` outside-press is\n // NOT decided on the initial `pointerdown` (that would dismiss the moment a finger lands, even on\n // the start of a scroll): a small drag (>5px) arms a close on `touchend`, a larger one (>10px)\n // closes immediately (the user is scrolling away), and a plain tap closes via the synthetic\n // `mousedown` that follows — unless the finger is held past a 1s grace window (a long-press).\n let touchState: {\n startX: number;\n startY: number;\n dismissOnTouchEnd: boolean;\n dismissOnMouseDown: boolean;\n } | null = null;\n let touchGraceTimer: ReturnType<typeof ownerWindow.setTimeout> | undefined;\n let touchClearTimer: ReturnType<typeof ownerWindow.setTimeout> | undefined;\n const clearTouchTimers = (): void => {\n ownerWindow.clearTimeout(touchGraceTimer);\n ownerWindow.clearTimeout(touchClearTimer);\n };\n\n // Resolve `outsidePressEvent` to a concrete mode for the active pointer type (pen / unknown → mouse).\n const resolveOutsidePressEvent = (): RdxOutsidePressEvent => {\n const value = outsidePressEvent();\n if (typeof value === 'string') {\n return value;\n }\n const type = currentPointerType === 'pen' || currentPointerType === '' ? 'mouse' : currentPointerType;\n return value[type] ?? 'sloppy';\n };\n\n const handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== 'Escape' || !this.active() || !escapeKey() || isComposing) {\n return;\n }\n // A non-bubbling layer yields to a deeper non-bubbling open layer (Base UI:\n // `!escapeKeyBubbles && hasBlockingChild`). A bubbling layer never yields.\n if (!escapeKeyBubbles() && this.hasBlockingChild('escape-key')) {\n return;\n }\n config.onEscapeKeyDown?.(event);\n if (!event.defaultPrevented) {\n dismiss('escape-key', event);\n }\n // Propagation control: the owning non-bubbling layer consumes the Escape so it does not\n // reach ancestor layers / app-level handlers (Base UI `event.stopPropagation()`).\n if (!escapeKeyBubbles()) {\n event.stopPropagation();\n }\n };\n\n const handleCompositionStart = (): void => {\n isComposing = true;\n };\n const handleCompositionEnd = (): void => {\n // Safari fires `compositionend` before `keydown`, so clear on a later tick. 0ms/1ms are\n // unreliable in Safari — WebKit needs ~5ms; other engines stay at 0ms (Base UI `useDismiss`).\n ownerWindow.setTimeout(\n () => {\n isComposing = false;\n },\n isWebKit(ownerWindow) ? 5 : 0\n );\n };\n\n const tryOutsidePress = (event: Event): void => {\n if (!this.active() || !isPrimaryButton(event) || this.isInside(event.target) || !outsidePress(event)) {\n return;\n }\n if (isInjectedAfterMark(event.target, this.context)) {\n return;\n }\n if (isScrollbarPress(event)) {\n return; // a scrollbar drag is not an outside press\n }\n // By default outside-press bubbles (closes the whole stack); only a non-bubbling layer with\n // a non-bubbling open child yields to it.\n if (!outsidePressBubbles() && this.hasBlockingChild('outside-press')) {\n return;\n }\n config.onPointerDownOutside?.(event as RdxOutsidePressDomEvent);\n if (!event.defaultPrevented) {\n dismiss('outside-press', event);\n }\n };\n\n // Capture-phase, so it records where the press began (and its pointer type) before any dismiss\n // handler runs.\n const handlePressStart = (event: Event): void => {\n pressStartedInside = this.isInside(event.target);\n currentPointerType = ((event as PointerEvent).pointerType as 'mouse' | 'touch' | 'pen') || '';\n };\n const handlePointerCancel = (): void => {\n pressStartedInside = false;\n };\n\n const handlePointerDown = (event: Event): void => {\n if (resolveOutsidePressEvent() !== 'sloppy') {\n return; // `intentional` dismisses on click, not pointerdown\n }\n if ((event as PointerEvent).pointerType === 'touch') {\n return; // touch is decided by the touchstart/move/end + synthetic-mousedown machine below\n }\n tryOutsidePress(event);\n };\n const handleClick = (event: Event): void => {\n if (resolveOutsidePressEvent() !== 'intentional') {\n return;\n }\n // A press that started inside (text selection dragged out) consumes its one outside click.\n if (pressStartedInside) {\n pressStartedInside = false;\n return;\n }\n tryOutsidePress(event);\n };\n\n // ─── Touch sloppy-mode hardening (Base UI `useDismiss`) ───────────────────\n const handleTouchStart = (event: Event): void => {\n currentPointerType = 'touch'; // a touch's pointer type, independent of pointerdown ordering\n if (resolveOutsidePressEvent() !== 'sloppy' || !this.active() || this.isInside(event.target)) {\n return;\n }\n const touch = (event as TouchEvent).touches?.[0];\n if (!touch) {\n return;\n }\n clearTouchTimers();\n touchState = {\n startX: touch.clientX,\n startY: touch.clientY,\n dismissOnTouchEnd: false,\n dismissOnMouseDown: true\n };\n // After 1s the press is a long-press, not a dismissal — disarm both the touchend and the\n // synthetic-mousedown close.\n touchGraceTimer = ownerWindow.setTimeout(() => {\n if (touchState) {\n touchState.dismissOnTouchEnd = false;\n touchState.dismissOnMouseDown = false;\n }\n }, 1000);\n };\n const handleTouchMove = (event: Event): void => {\n if (!touchState || resolveOutsidePressEvent() !== 'sloppy' || this.isInside(event.target)) {\n return;\n }\n const touch = (event as TouchEvent).touches?.[0];\n if (!touch) {\n return;\n }\n const dx = touch.clientX - touchState.startX;\n const dy = touch.clientY - touchState.startY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance > 5) {\n touchState.dismissOnTouchEnd = true; // a deliberate drag — close when the finger lifts\n }\n if (distance > 10) {\n tryOutsidePress(event); // scrolling away — close now\n clearTouchTimers();\n touchState = null;\n }\n };\n const handleTouchEnd = (event: Event): void => {\n if (!touchState || resolveOutsidePressEvent() !== 'sloppy' || this.isInside(event.target)) {\n return;\n }\n if (touchState.dismissOnTouchEnd) {\n tryOutsidePress(event);\n clearTouchTimers();\n touchState = null;\n return;\n }\n // A plain tap: defer to the synthetic `mousedown` (which also lets us absorb the click-through),\n // but drop the state shortly after in case no mouse event follows on this platform.\n ownerWindow.clearTimeout(touchClearTimer);\n touchClearTimer = ownerWindow.setTimeout(() => {\n touchState = null;\n }, 400);\n };\n const handleMouseDown = (event: Event): void => {\n // Only the synthetic `mousedown` that follows a touch is handled here — a real mouse leaves\n // `touchState` null and is dismissed by `handlePointerDown` instead (no double-close).\n if (!touchState || resolveOutsidePressEvent() !== 'sloppy') {\n return;\n }\n if (!touchState.dismissOnMouseDown) {\n touchState = null; // grace expired (long-press) — do not dismiss\n clearTouchTimers();\n return;\n }\n tryOutsidePress(event);\n clearTouchTimers();\n touchState = null;\n };\n\n const handleFocusIn = (event: FocusEvent): void => {\n // Defer two microtasks so focus settles before reading containment (matches the standalone\n // RdxFocusOutside; the `on*` hook still runs synchronously, so `preventDefault` is honored).\n void Promise.resolve()\n .then(() => Promise.resolve())\n .then(() => {\n if (!this.active() || !focusOutside() || this.isInside(event.target)) {\n return;\n }\n config.onFocusOutside?.(event);\n if (!event.defaultPrevented) {\n dismiss('focus-outside', event);\n }\n });\n };\n\n ownerDocument.addEventListener('keydown', handleKeyDown, { capture: true });\n ownerDocument.addEventListener('compositionstart', handleCompositionStart, { capture: true });\n ownerDocument.addEventListener('compositionend', handleCompositionEnd, { capture: true });\n ownerDocument.addEventListener('focusin', handleFocusIn);\n ownerDocument.addEventListener('pointerdown', handlePressStart, { capture: true });\n ownerDocument.addEventListener('pointercancel', handlePointerCancel, { capture: true });\n\n // Defer attaching the dismiss listeners past the current event loop so the very interaction that\n // opened this layer doesn't immediately dismiss it (the opening press is still propagating).\n const pointerTimer = ownerWindow.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n ownerDocument.addEventListener('click', handleClick);\n ownerDocument.addEventListener('touchstart', handleTouchStart, { capture: true, passive: true });\n ownerDocument.addEventListener('touchmove', handleTouchMove, { capture: true, passive: true });\n ownerDocument.addEventListener('touchend', handleTouchEnd, { capture: true, passive: true });\n ownerDocument.addEventListener('mousedown', handleMouseDown, { capture: true });\n }, 0);\n\n destroyRef.onDestroy(() => {\n ownerWindow.clearTimeout(pointerTimer);\n ownerDocument.removeEventListener('keydown', handleKeyDown, { capture: true });\n ownerDocument.removeEventListener('compositionstart', handleCompositionStart, { capture: true });\n ownerDocument.removeEventListener('compositionend', handleCompositionEnd, { capture: true });\n ownerDocument.removeEventListener('focusin', handleFocusIn);\n ownerDocument.removeEventListener('pointerdown', handlePressStart, { capture: true });\n ownerDocument.removeEventListener('pointercancel', handlePointerCancel, { capture: true });\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n ownerDocument.removeEventListener('click', handleClick);\n ownerDocument.removeEventListener('touchstart', handleTouchStart, { capture: true });\n ownerDocument.removeEventListener('touchmove', handleTouchMove, { capture: true });\n ownerDocument.removeEventListener('touchend', handleTouchEnd, { capture: true });\n ownerDocument.removeEventListener('mousedown', handleMouseDown, { capture: true });\n clearTouchTimers();\n });\n }\n\n /**\n * Whether `target` is logically inside this layer: within this popup's floating element or one of its\n * registered triggers, within any **open descendant** node's floating element / triggers, or within a\n * registered branch.\n */\n private isInside(target: EventTarget | null): boolean {\n if (this.contextContains(this.context, target)) {\n return true;\n }\n\n const node = this.node();\n if (node) {\n for (const child of node.tree.children(node, { onlyOpen: true })) {\n if (child.context && this.contextContains(child.context, target)) {\n return true;\n }\n }\n }\n\n if (isNode(target)) {\n for (const branch of this.branches) {\n if (branch.contains(target)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /** `target` is inside a context's floating element or one of its registered triggers. */\n private contextContains(context: RdxFloatingRootContext, target: EventTarget | null): boolean {\n const floating = context.floatingElement;\n if (floating && isNode(target) && floating.contains(target)) {\n return true;\n }\n return context.triggers.contains(target);\n }\n\n /**\n * Whether an open descendant blocks this layer for `reason` (so it should yield). A child blocks when\n * it does **not** let the event bubble past it ({@link childBubbles} is `false`). Base UI's\n * `hasBlockingChild` (`useDismiss.ts:170`) is a capability-local function — **not** a tree method — so\n * the tree stays neutral.\n */\n private hasBlockingChild(reason: RdxDismissReason): boolean {\n const node = this.node();\n if (!node) {\n return false;\n }\n return node.tree\n .children(node, { onlyOpen: true })\n .some((child) => child.context !== null && !childBubbles(child.context, reason));\n }\n}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { RDX_FLOATING_ROOT_CONTEXT } from '@radix-ng/primitives/core';\n\n/**\n * Marks its host as **inside** the enclosing floating layer (ADR 0015): a pointer / focus interaction on\n * it does not count as \"outside\", so it never dismisses the popup. It registers the host into the\n * floating root context's trigger registry — {@link RdxDismiss}'s `isInside` check reads it.\n *\n * Use it for an element that lives **outside** the popup DOM but logically belongs to the layer — e.g. a\n * Combobox input / trigger / chips / clear button that keeps focus (or is clicked) while the listbox is\n * open.\n */\n@Directive({\n selector: '[rdxFloatingInside]',\n exportAs: 'rdxFloatingInside'\n})\nexport class RdxFloatingInsideElement {\n constructor() {\n const context = inject(RDX_FLOATING_ROOT_CONTEXT, { optional: true });\n if (!context) {\n return;\n }\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n context.triggers.add(host);\n inject(DestroyRef).onDestroy(() => context.triggers.delete(host));\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n output,\n signal\n} from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\n\nfunction isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {\n const targetLayer = targetElement.closest('[data-dismissable-layer]');\n\n const mainLayer =\n layerElement.dataset['dismissableLayer'] === ''\n ? layerElement\n : (layerElement.querySelector('[data-dismissable-layer]') as HTMLElement);\n\n const nodeList = Array.from(layerElement.ownerDocument.querySelectorAll('[data-dismissable-layer]'));\n\n if (targetLayer && (mainLayer === targetLayer || nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer))) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Listens for when focus happens outside a DOM subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\n@Directive({\n selector: '[rdxFocusOutside]',\n exportAs: 'rdxFocusOutside'\n})\nexport class RdxFocusOutside {\n readonly enabledInput = input<boolean, BooleanInput>(true, { transform: booleanAttribute, alias: 'enabled' });\n\n readonly #enabled = linkedSignal(() => this.enabledInput());\n\n set enabled(value: boolean) {\n if (this.#enabled() !== value) {\n this.#enabled.set(value);\n }\n }\n\n get enabled() {\n return this.#enabled();\n }\n\n readonly focusOutside = output<FocusEvent>();\n\n /*\n * Flag to indicate if the focus is currently within the DOM subtree\n */\n private readonly isFocusInsideDOMTree = signal(false);\n\n /*\n * Handles capturing the focus event to mark focus as inside the DOM subtree\n */\n private readonly focusCaptureHandler = () => {\n if (!this.enabled) return;\n this.isFocusInsideDOMTree.set(true);\n };\n\n /*\n * Handles capturing the blur event to mark focus as outside the DOM subtree\n */\n private readonly blurCaptureHandler = () => {\n if (!this.enabled) return;\n this.isFocusInsideDOMTree.set(false);\n };\n\n constructor() {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n effect((onCleanup) => {\n if (!this.#enabled()) {\n return;\n }\n\n const ownerDocument = elementRef.nativeElement.ownerDocument ?? globalThis.document;\n\n const focusHandler = async (event: FocusEvent) => {\n if (!elementRef?.nativeElement) {\n return;\n }\n\n // Defer past the focus settling: the first microtask lets the matching capture\n // `focus`/`blur` handler update `isFocusInsideDOMTree`, the second lets the browser\n // finish moving focus, so the check below reflects the final focus target.\n await Promise.resolve();\n await Promise.resolve();\n\n const target = event.target as HTMLElement | undefined;\n if (!elementRef.nativeElement || !target || isLayerExist(elementRef.nativeElement, target)) {\n return;\n }\n\n if (target && !this.isFocusInsideDOMTree()) {\n this.focusOutside.emit(event);\n }\n };\n\n elementRef.nativeElement.addEventListener('focus', this.focusCaptureHandler, {\n capture: true\n });\n elementRef.nativeElement.addEventListener('blur', this.blurCaptureHandler, {\n capture: true\n });\n\n ownerDocument.addEventListener('focusin', focusHandler);\n\n onCleanup(() => {\n elementRef.nativeElement.removeEventListener('focus', this.focusCaptureHandler, {\n capture: true\n });\n\n elementRef.nativeElement.removeEventListener('blur', this.blurCaptureHandler, {\n capture: true\n });\n\n ownerDocument.removeEventListener('focusin', focusHandler);\n });\n });\n }\n}\n\n/**\n * Listens for `pointerdown` outside a DOM subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behavior present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\n@Directive({\n selector: '[rdxPointerDownOutside]',\n exportAs: 'rdxPointerDownOutside'\n})\nexport class RdxPointerDownOutside {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly enabledInput = input<boolean, BooleanInput>(true, { transform: booleanAttribute, alias: 'enabled' });\n\n readonly #enabled = linkedSignal(() => this.enabledInput());\n\n set enabled(value: boolean) {\n if (this.#enabled() !== value) {\n this.#enabled.set(value);\n }\n }\n\n get enabled() {\n return this.#enabled();\n }\n\n readonly pointerDownOutside = output<PointerEvent>();\n\n private readonly isPointerInsideDOMTree = signal(false);\n\n private readonly handleAndDispatchPointerDownOutsideEvent = (e: PointerEvent) => () =>\n this.pointerDownOutside.emit(e);\n\n private handleClick?: () => void;\n\n constructor() {\n effect((onCleanup) => {\n if (!this.#enabled()) {\n return;\n }\n\n const ownerDocument = this.elementRef.nativeElement.ownerDocument ?? globalThis.document;\n // Avoid the global `window` so this stays safe under SSR; `globalThis` provides\n // `setTimeout`/`clearTimeout` in both the browser and Node.\n const ownerWindow = ownerDocument.defaultView ?? globalThis;\n\n const removeClickListener = () => {\n if (this.handleClick) {\n ownerDocument.removeEventListener('click', this.handleClick);\n this.handleClick = undefined;\n }\n };\n\n const handlePointerDown = async (event: PointerEvent) => {\n if (event.target && !this.isPointerInsideDOMTree()) {\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executres events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n removeClickListener();\n this.handleClick = this.handleAndDispatchPointerDownOutsideEvent(event);\n ownerDocument.addEventListener('click', this.handleClick, {\n once: true\n });\n } else {\n this.pointerDownOutside.emit(event);\n }\n } else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n removeClickListener();\n }\n this.isPointerInsideDOMTree.set(false);\n };\n /**\n * if this directive executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is not Angular specific, but rather how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = ownerWindow.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n }, 0);\n\n const onPointerDownCapture = () => {\n if (!this.enabled) {\n return;\n }\n this.isPointerInsideDOMTree.set(true);\n };\n\n this.elementRef.nativeElement.addEventListener('pointerdown', onPointerDownCapture, { capture: true });\n\n onCleanup(() => {\n ownerWindow.clearTimeout(timerId);\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n removeClickListener();\n this.elementRef.nativeElement.removeEventListener('pointerdown', onPointerDownCapture, {\n capture: true\n });\n });\n });\n }\n}\n\n@Directive({\n selector: '[rdxEscapeKeyDown]',\n exportAs: 'rdxEscapeKeyDown'\n})\nexport class RdxEscapeKeyDown {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly escapeKeyDown = output<KeyboardEvent>();\n\n constructor() {\n afterNextRender(() => {\n const ownerDocument = this.elementRef.nativeElement.ownerDocument ?? globalThis.document;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.escapeKeyDown.emit(event);\n }\n };\n\n ownerDocument.addEventListener('keydown', handleKeyDown, {\n capture: true\n });\n\n this.destroyRef.onDestroy(() =>\n ownerDocument.removeEventListener('keydown', handleKeyDown, {\n capture: true\n })\n );\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { signal, computed, Injectable, Directive, inject, input, model, booleanAttribute, output, effect, untracked, assertInInjectionContext, DestroyRef, ElementRef, Injector, isDevMode, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@radix-ng/primitives/dialog';
|
|
4
4
|
import { RdxDialogRoot, RdxDialogBackdrop, RdxDialogClose, RdxDialogDescription, injectRdxDialogRootContext, RdxDialogPopup, RdxDialogPortal, RdxDialogTitle, RdxDialogTrigger, RdxDialogViewport, RdxDialogHandle, createRdxDialogHandle } from '@radix-ng/primitives/dialog';
|
|
5
|
-
import { createContext, clamp, usePointerDrag, elementSize } from '@radix-ng/primitives/core';
|
|
5
|
+
import { createContext, clamp, usePointerDrag, elementSize, rdxDevError } from '@radix-ng/primitives/core';
|
|
6
6
|
export { usePointerDrag } from '@radix-ng/primitives/core';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -811,9 +811,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
811
811
|
class RdxDrawerPortalMisuseGuard {
|
|
812
812
|
constructor() {
|
|
813
813
|
if (isDevMode()) {
|
|
814
|
-
|
|
814
|
+
rdxDevError('drawer/portal-on-element', '`rdxDrawerPortal` is now a structural directive. ' +
|
|
815
815
|
'Use `<ng-template rdxDrawerPortal>` around the backdrop and popup. ' +
|
|
816
|
-
'rdxDrawerPortalPresence has been removed.
|
|
816
|
+
'rdxDrawerPortalPresence has been removed.', 'components/drawer');
|
|
817
817
|
}
|
|
818
818
|
}
|
|
819
819
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDrawerPortalMisuseGuard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|