Skip to content

Commit

Permalink
- add focus trap to the under menu
Browse files Browse the repository at this point in the history
- fix ResizeObserver loop issue
  • Loading branch information
ahmadkadri committed Aug 27, 2024
1 parent ec22c1f commit fa0439a
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,7 @@ const AudioSettingsContent = ({

return (
<ContextMenu
activateFocusTrap = { true }
aria-labelledby = 'audio-settings-button'
className = { classes.contextMenu }
hidden = { false }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ const VideoSettingsContent = ({

return (
<ContextMenu
activateFocusTrap = { true }
aria-labelledby = 'video-settings-button'
className = { classes.container }
hidden = { false }
Expand Down
28 changes: 24 additions & 4 deletions react/features/toolbox/components/web/DialogPortal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import { ZINDEX_DIALOG_PORTAL } from '../../constants';
interface IProps {

/**
* The component(s) to be displayed within the drawer portal.
*/
* The component(s) to be displayed within the drawer portal.
*/
children: ReactNode;

/**
Expand Down Expand Up @@ -44,6 +44,24 @@ interface IProps {
targetSelector?: string;
}

/**
* Utility function to debounce the execution of a callback function.
*
* @param {Function} callback - The callback to debounce.
* @param {number} delay - The debounce delay in milliseconds.
* @returns {Function} - A debounced function that delays the execution of the callback.
*/
const debounce = (callback: (...args: any[]) => void, delay: number) => {
let timerId: any;

return (...args: any[]) => {
if (timerId) {
clearTimeout(timerId);
}
timerId = setTimeout(() => callback(...args), delay);
};
};

/**
* Component meant to render a drawer at the bottom of the screen,
* by creating a portal containing the component's children.
Expand Down Expand Up @@ -86,7 +104,7 @@ function DialogPortal({ children, className, style, getRef, setSize, targetSelec
width: 1,
height: 1
};
const observer = new ResizeObserver(entries => {
const debouncedResizeCallback = debounce((entries: ResizeObserverEntry[]) => {
const { contentRect } = entries[0];

if (contentRect.width !== size.width || contentRect.height !== size.height) {
Expand All @@ -97,8 +115,10 @@ function DialogPortal({ children, className, style, getRef, setSize, targetSelec
onVisible?.();
}, 100);
}
});
}, 20); // 20ms delay

// Create and observe ResizeObserver
const observer = new ResizeObserver(debouncedResizeCallback);
const target = targetSelector ? portalTarget.querySelector(targetSelector) : portalTarget;

if (document.body) {
Expand Down

0 comments on commit fa0439a

Please sign in to comment.