UNPKG

@payfit/unity-components

Version:

47 lines (46 loc) 1.96 kB
import { InlineFieldMode } from '../InlineField.context.js'; export interface UseInlineFieldModeProps { /** * Controlled mode value. When provided, the component operates in controlled mode. */ mode?: InlineFieldMode; /** * Default mode value for uncontrolled mode. * @default 'read' */ defaultMode?: InlineFieldMode; /** * Callback fired when mode changes. */ onModeChange?: (mode: InlineFieldMode) => void; /** * Callback to intercept and potentially prevent mode changes. * Return `false` to prevent the mode transition. * Return `true` or `undefined` to allow the transition. */ shouldModeChange?: (fromMode: InlineFieldMode, toMode: InlineFieldMode) => boolean | undefined; } export interface UseInlineFieldModeReturn { /** Current mode value */ mode: InlineFieldMode; /** Switch to edit mode */ enterEditMode: () => void; /** Exit edit mode (return to read mode) */ exitEditMode: () => void; /** Check if component is in controlled mode */ isControlled: boolean; } /** * Hook to manage the mode state (read/edit) for InlineField. * Supports both controlled and uncontrolled modes, following the pattern * established by NavGroup.tsx * @param props - Configuration for the mode hook * @param props.mode - Controlled mode value. When provided, the component operates in controlled mode. * @param props.defaultMode - Default mode value for uncontrolled mode. * @param props.onModeChange - Callback fired when mode changes. * @param props.shouldModeChange - Callback to intercept and potentially prevent mode changes. * Return `false` to prevent the mode transition. * Return `true` or `undefined` to allow the transition. * @returns Mode state and handlers */ export declare function useInlineFieldMode({ mode: controlledMode, defaultMode, onModeChange, shouldModeChange, }: UseInlineFieldModeProps): UseInlineFieldModeReturn;