@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
37 lines (36 loc) • 1.82 kB
TypeScript
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, }: {
transformIn: TransformerFns<Value>['transformIn'];
transformOut: TransformerFns<Value>['transformOut'];
toInput: TransformerFns<Value>['toInput'];
fromInput: TransformerFns<Value>['fromInput'];
toEvent: TransformerFns<Value>['toEvent'];
transformValue: TransformerFns<Value>['transformValue'];
provideAdditionalArgs: TransformerFns<Value>['provideAdditionalArgs'];
fromExternal: TransformerFns<Value>['fromExternal'];
validateRequired: TransformerFns<Value>['validateRequired'];
valueRef: React.RefObject<Value>;
}): {
transformers: import("react").RefObject<TransformerFns<Value>>;
getEventArgs: ({ eventName, additionalArgs, overrideValue, }: {
eventName: string;
additionalArgs: ProvideAdditionalEventArgs;
overrideValue?: Value;
}) => [Value] | [Value, ProvideAdditionalEventArgs];
};