@payfit/unity-components
Version:
47 lines (46 loc) • 1.96 kB
TypeScript
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;