UNPKG

@navikt/ds-react

Version:

React components from the Norwegian Labour and Welfare Administration.

39 lines 1.11 kB
import { useEffect, useState } from "react"; import { useId } from "../util/index.js"; import { useControllableState } from "../util/hooks/useControllableState.js"; export function useTabs({ onChange, value, defaultValue = "", id, }) { const [focusedValue, setFocusedValue] = useState(defaultValue); const [selectedValue, setSelectedValue] = useControllableState({ defaultValue, value, onChange, }); /** * Sync focused `value` with controlled `selectedValue` */ useEffect(() => { if (value != null) { setFocusedValue(value); } }, [value]); /** * Scope ids for better tracking */ const uuid = useId(); return { id: `tabs-${id !== null && id !== void 0 ? id : uuid}`, selectedValue, setSelectedValue, focusedValue, setFocusedValue, makeTabId, makeTabPanelId, }; } function makeTabId(id, value) { return `${id}--tab-${value}`; } function makeTabPanelId(id, value) { return `${id}--tabpanel-${value}`; } //# sourceMappingURL=useTabs.js.map