UNPKG

@kodingdotninja/use-toggle

Version:

Toggle custom hook and component wrapper for React 🔦

85 lines (80 loc) • 2.26 kB
import * as react from 'react'; import { ReactNode } from 'react'; interface ClientOnlyProps { children: ReactNode; } /** * Same as `<ToggleWrap enableOnMount />`, usually used on client-side only components.Same as `<ToggleWrap enableOnMount initialState={false} />`, usually used on client-side only components. * * --- * * @example * * ```jsx * <ClientOnly> * <div>...</div> * </ClientOnly> * ``` */ declare function ClientOnly({ children }: ClientOnlyProps): react.JSX.Element; type UseToggleReturnType = { state: boolean; disable: () => void; enable: () => void; set: (newState: boolean) => void; toggle: () => void; }; type UseToggleType = (initialState?: boolean) => UseToggleReturnType; /** * Toggle hook which accepts initial state and returns the toggle state and controls. * * --- * * @param initalState Initial value for toggle hook * * @returns Toggle value and controls * * @example * * ```jsx * const { state, disable, enable, set, toggle } = useToggle(initalState); * ``` */ declare const useToggle: UseToggleType; declare const ENABLE_ON_MOUNT_KEY = "enableOnMount"; declare const DISABLE_ON_MOUNT_KEY = "disableOnMount"; /** * Toggle wrap props for determining if toggle should be enabled or disabled on mount. */ type OnMountProps = { [ENABLE_ON_MOUNT_KEY]?: boolean; } | { [DISABLE_ON_MOUNT_KEY]?: boolean; }; type ToggleWrapProps = OnMountProps & { initialState?: boolean; children: (toggle: UseToggleReturnType) => ReactNode; }; type ToggleWrapType = (props: ToggleWrapProps) => JSX.Element; /** * Toggle wrap component which accepts initial state and enable/disable on mount prop. * Returns a render function to consume the toggle hook. * * --- * * @param props Toggle wrap props * * @returns Render function to consume the toggle hook * * @example * * ```jsx * <ToggleWrap> * {({ state, disable, enable, set, toggle }) => ( * <div>...</div> * )} * </ToggleWrap> * ``` */ declare const ToggleWrap: ToggleWrapType; export { ClientOnly, type ClientOnlyProps, DISABLE_ON_MOUNT_KEY, ENABLE_ON_MOUNT_KEY, type OnMountProps, ToggleWrap, type ToggleWrapProps, type ToggleWrapType, type UseToggleReturnType, type UseToggleType, useToggle };