Skip to content

Commit cc7248d

Browse files
committed
refactor(cross-package): move getDeepActiveElement to @radix-ui/primitives
1 parent e7eb5b5 commit cc7248d

File tree

24 files changed

+25
-145
lines changed

24 files changed

+25
-145
lines changed

packages/core/deep-active-element/README.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/core/deep-active-element/eslint.config.mjs

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/core/deep-active-element/package.json

Lines changed: 0 additions & 51 deletions
This file was deleted.

packages/core/deep-active-element/src/deep-active-element.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

packages/core/deep-active-element/src/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/core/deep-active-element/tsconfig.json

Lines changed: 0 additions & 9 deletions
This file was deleted.

packages/core/primitive/src/primitive.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,17 @@ export function getActiveElement(
7373
export function isFrame(element: Element): element is HTMLIFrameElement {
7474
return element.tagName === 'IFRAME';
7575
}
76+
77+
/**
78+
* Utility to get the currently focused element even across Shadow DOM boundaries
79+
*/
80+
export function getDeepActiveElement(): Element | null {
81+
let activeElement = document.activeElement;
82+
83+
// Traverse through shadow DOMs to find the deepest active element
84+
while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {
85+
activeElement = activeElement.shadowRoot.activeElement;
86+
}
87+
88+
return activeElement;
89+
}

packages/react/focus-scope/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"build": "radix-build"
3535
},
3636
"dependencies": {
37-
"@radix-ui/deep-active-element": "workspace:*",
37+
"@radix-ui/primitive": "workspace:*",
3838
"@radix-ui/react-compose-refs": "workspace:*",
3939
"@radix-ui/react-primitive": "workspace:*",
4040
"@radix-ui/react-use-callback-ref": "workspace:*"

packages/react/focus-scope/src/focus-scope.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as React from 'react';
22
import { useComposedRefs } from '@radix-ui/react-compose-refs';
33
import { Primitive } from '@radix-ui/react-primitive';
44
import { useCallbackRef } from '@radix-ui/react-use-callback-ref';
5-
import { getDeepActiveElement } from '@radix-ui/deep-active-element';
5+
import { getDeepActiveElement } from '@radix-ui/primitive'
66

77
const AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';
88
const AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';

packages/react/menu/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
"build": "radix-build"
3535
},
3636
"dependencies": {
37-
"@radix-ui/deep-active-element": "workspace:*",
3837
"@radix-ui/primitive": "workspace:*",
3938
"@radix-ui/react-collection": "workspace:*",
4039
"@radix-ui/react-compose-refs": "workspace:*",

0 commit comments

Comments
 (0)