import { ElementKeyAdapterProps } from '../../elements/RecordPage/shared/types/key'; import type { RecordPageType } from './types'; import type { ExecuteSaveType, RecordFooterAreaProps, RecordFormAreaProps, RecordFormSegmentProps, RecordHeaderAreaProps } from '../../index'; import type { BaseResource } from '../../pages/types'; import type { GetNestedValue, NestedKeyOf } from '../../types'; /** * フォームの状態管理ロジックを切り出したカスタムフック * RecordPageTemplateからRecordPageContainerに移行する際にロジックをそのまま流用したい場合は使用してください * * NOTE: react-hook-formなど別のライブラリに移行が可能であればそちらを推奨します */ export declare const useMigrateRecordPageTemplate: = NestedKeyOf, V extends GetNestedValue = GetNestedValue>({ page, initialResource, resource, dirtyOnly, onRequestSave, onFieldEdit, }: { /** * 現在のページのモード * RecordPageContainerと同じものを指定してください */ page: RecordPageType; /** * この画面でメインに扱うリソース * RecordPageTemplateに渡していたものを指定してください */ resource?: R | undefined; /** * 作成画面で設定可能な初期値 * RecordFormAreaのeditorOptions.initialResourceと同じものを指定してください */ initialResource?: Partial | (() => Partial | undefined) | undefined; /** * 保存時に送信するリソースを、未保存状態の項目のみに限定するか * RecordFormAreaのeditorOptions.dirtyOnlyと同じものを指定してください */ dirtyOnly?: boolean | undefined; /** * 保存時の処理 * RecordFooterAreaのonRequestSaveと同じものを指定してください */ onRequestSave?: ExecuteSaveType | undefined; /** * 編集状態を通知し、ドロワーを閉じる場合に離脱防止ダイアログを表示するかの判定に利用します * ドロワーから呼び出している場合は、windowControlOptions?.onFieldEditを渡してください */ onFieldEdit?: ((isFieldEdited: boolean) => void) | undefined; }) => { /** * の形で渡してください */ recordHeaderAreaProps: Pick, "updateEditingResource">; /** * の形で渡してください */ recordFormAreaProps: Pick, "isDirty">; /** * の形で渡してください */ recordFormSegmentProps: Pick, "resource" | "updateEditingResource" | "onRequestSave">; /** * の形で渡してください */ recordFooterAreaProps: Pick, "edit" | "cancel" | "save" | "setErrorFields" | "onRequestSave" | "onRequestCancel" | "onRequestEdit" | "sequentialCreate" | "sequentialEdit">; /** * の形で渡してください */ elementKeyAdapterProps: Pick, "resource" | "updateEditingResource" | "errorFields">; };