@sanity/form-builder
Version:
Sanity form builder
73 lines • 2.76 kB
TypeScript
import { FormFieldPresence } from '@sanity/base/presence';
import { ArraySchemaType, Marker, ObjectSchemaType, Path, SchemaType } from '@sanity/types';
import { ToastParams } from '@sanity/ui';
import React from 'react';
import { Subscription } from 'rxjs';
import { PatchEvent } from '../../../PatchEvent';
import { FileLike, Uploader } from '../../../sanity/uploads/types';
import ArrayFunctions from '../common/ArrayFunctions';
import { ArrayItem } from './item';
import type { ArrayMember, InsertEvent, ReferenceItemComponentType } from './types';
declare type Toast = {
push: (params: ToastParams) => void;
};
export declare function createProtoValue(type: SchemaType): ArrayMember;
export interface Props {
type: ArraySchemaType;
value: ArrayMember[];
compareValue: ArrayMember[];
markers: Marker[];
level: number;
onChange: (event: PatchEvent) => void;
onFocus: (path: Path) => void;
onBlur: () => void;
focusPath: Path;
readOnly: boolean;
ReferenceItemComponent: ReferenceItemComponentType;
filterField: () => any;
ArrayFunctionsImpl: typeof ArrayFunctions;
ArrayItemImpl: typeof ArrayItem;
resolveUploader?: (type: SchemaType, file: FileLike) => Uploader | null;
resolveInitialValue?: (type: ObjectSchemaType, value: any) => Promise<any>;
presence: FormFieldPresence[];
}
interface State {
isResolvingInitialValue: boolean;
}
export declare class ArrayInput extends React.Component<Props> {
static defaultProps: {
focusPath: any[];
};
_focusArea: HTMLElement | null;
toast: Toast | null;
uploadSubscriptions: Record<string, Subscription>;
state: State;
insert: (item: ArrayMember, position: 'before' | 'after', path: Path) => void;
handlePrepend: (value: ArrayMember) => void;
handleAppend: (value: ArrayMember) => void;
handleInsert: (event: InsertEvent) => void;
handleRemoveItem: (item: ArrayMember) => void;
handleFocus: (event: any) => void;
openItem: (key: string) => void;
removeItem(item: ArrayMember): void;
handleItemChange: (event: PatchEvent, item: ArrayMember) => void;
handleSortEnd: (event: {
newIndex: number;
oldIndex: number;
}) => void;
getMemberTypeOfItem(item: ArrayMember): SchemaType;
focus(): void;
setFocusArea: (el: HTMLElement | null) => void;
handleFixMissingKeys: () => void;
setToast: (toast: any | null) => void;
handleRemoveNonObjectValues: () => void;
handleUpload: ({ file, type, uploader }: {
file: File;
type: SchemaType;
uploader: Uploader;
}) => void;
handleFocusItem: (item: ArrayMember) => void;
render(): React.JSX.Element;
}
export {};
//# sourceMappingURL=ArrayInput.d.ts.map