mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-09 18:53:38 +02:00
Remove most of Radix UI
This commit is contained in:
20
src-web/hooks/usePortal.ts
Normal file
20
src-web/hooks/usePortal.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { useRef } from 'react';
|
||||
|
||||
const PORTAL_CONTAINER_ID = 'react-portal';
|
||||
|
||||
export function usePortal(name: string) {
|
||||
const ref = useRef(getOrCreatePortal(name));
|
||||
return ref.current;
|
||||
}
|
||||
|
||||
function getOrCreatePortal(name: string) {
|
||||
const portalContainer = document.getElementById(PORTAL_CONTAINER_ID) as HTMLDivElement;
|
||||
let existing = portalContainer.querySelector(`:scope > [data-portal-name="${name}"]`);
|
||||
if (!existing) {
|
||||
const el: HTMLDivElement = document.createElement('div');
|
||||
el.setAttribute('data-portal-name', name);
|
||||
portalContainer.appendChild(el);
|
||||
existing = el;
|
||||
}
|
||||
return existing;
|
||||
}
|
||||
Reference in New Issue
Block a user