@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
29 lines (28 loc) • 1.31 kB
TypeScript
import type { RefObject } from 'react';
import type { ProvideAdditionalEventArgs } from '../types';
export type TransformerFns<Value> = {
transformIn(external: unknown): Value;
transformOut(internal: Value, args?: unknown): unknown;
toInput(value: Value): Value;
fromInput(value: Value): Value;
toEvent(value: Value, eventName?: string): Value;
transformValue(value: Value, currentValue?: Value): Value;
provideAdditionalArgs(value: Value, additionalArgs?: ProvideAdditionalEventArgs): ProvideAdditionalEventArgs;
fromExternal(value: Value): Value;
validateRequired(value: Value, options: {
emptyValue: unknown;
required: boolean;
isChanged: boolean;
error: Error;
}): Error | undefined;
};
export default function useFieldTransform<Value>({ transformIn, transformOut, toInput, fromInput, toEvent, transformValue, provideAdditionalArgs, fromExternal, validateRequired, valueRef, }: TransformerFns<Value> & {
valueRef: RefObject<Value>;
}): {
transformers: RefObject<TransformerFns<Value>>;
getEventArgs: ({ eventName, additionalArgs, overrideValue, }: {
eventName: string;
additionalArgs: ProvideAdditionalEventArgs;
overrideValue?: Value;
}) => [Value] | [Value, ProvideAdditionalEventArgs];
};