UI & Layout
useFullscreen
Manages fullscreen mode for a DOM element, with enter/exit controls.
About
Use the Fullscreen API to present content using the entire screen.
Examples
Toggle fullscreen for the document
import { useFullscreen } from "rooks";
export default function App() {
const { isFullscreenAvailable, isFullscreenEnabled, toggleFullscreen } =
useFullscreen();
if (!isFullscreenAvailable) {
return <p>Fullscreen API is not available.</p>;
}
return (
<button onClick={() => void toggleFullscreen()}>
{isFullscreenEnabled ? "Exit fullscreen" : "Enter fullscreen"}
</button>
);
}Toggle fullscreen for a specific panel and react to changes
import { useRef, useState } from "react";
import { useFullscreen } from "rooks";
export default function App() {
const panelRef = useRef<HTMLDivElement>(null);
const [status, setStatus] = useState("Windowed");
const { enableFullscreen, disableFullscreen, isFullscreenEnabled } =
useFullscreen({
target: panelRef,
onChange: () => {
setStatus(document.fullscreenElement ? "Fullscreen" : "Windowed");
},
});
return (
<div>
<div ref={panelRef} style={{ padding: 24, border: "1px solid #999" }}>
<p>Status: {status}</p>
<button onClick={() => void enableFullscreen()}>Open panel</button>
<button
onClick={() => void disableFullscreen()}
disabled={!isFullscreenEnabled}
>
Close panel
</button>
</div>
</div>
);
}Arguments
An object with the following optional properties:
| Argument value | Type | Description |
|---|---|---|
options.target | React.RefObject<Element> | DOM node that should enter fullscreen |
options.onChange | (event: Event) => void | Called after fullscreen state changes |
options.onError | (event: Event) => void | Called after a fullscreen error |
options.requestFullscreenOptions | FullscreenOptions | Options passed to requestFullscreen |
If target is omitted, the document element is used.
Returns
| Property Name | Type | Description |
|---|---|---|
isFullscreenAvailable | boolean | Whether the Fullscreen API is available |
isFullscreenEnabled | boolean | Whether fullscreen is currently active |
fullscreenElement | Element | null | The current fullscreen element |
enableFullscreen | () => Promise<void> | Enters fullscreen |
disableFullscreen | () => Promise<void> | Exits fullscreen |
toggleFullscreen | () => Promise<void> | Toggles fullscreen on or off |