react-crud-mui 0.2.39 → 0.2.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/components/detail-page/components/DetailPageCommands.d.ts +32 -66
  2. package/dist/components/detail-page/components/DetailPageDefaultLayout.d.ts +1 -3
  3. package/dist/components/detail-page/components/DetailPageDrawerCommands.d.ts +2 -2
  4. package/dist/components/detail-page/components/DetailPageProvider.d.ts +10 -0
  5. package/dist/components/detail-page/components/DetailPageStepForm.d.ts +13 -0
  6. package/dist/components/detail-page/components/DetailPageStepsHeader.d.ts +21 -0
  7. package/dist/components/detail-page/hooks/useDetailPage.d.ts +1 -7
  8. package/dist/components/detail-page/hooks/useDetailPageModal.d.ts +6 -7
  9. package/dist/components/detail-page/hooks/useDetailPageStates.d.ts +21 -8
  10. package/dist/components/detail-page/pages/DetailPage.d.ts +4 -2
  11. package/dist/components/detail-page/pages/DetailPageContent.d.ts +27 -18
  12. package/dist/components/detail-page/pages/DetailPageData.d.ts +0 -1
  13. package/dist/components/detail-page/pages/DetailPageForm.d.ts +2 -2
  14. package/dist/components/form/components/FormCollectionProvider.d.ts +15 -0
  15. package/dist/components/form/hooks/index.d.ts +1 -0
  16. package/dist/components/form/hooks/useForm.d.ts +1 -1
  17. package/dist/components/form/hooks/useFormCollectionContext.d.ts +3 -0
  18. package/dist/components/form/hooks/useRegisterForm.d.ts +8 -0
  19. package/dist/components/page/Page.d.ts +1 -1
  20. package/dist/coreui.js +8478 -8451
  21. package/dist/index.d.ts +2 -2
  22. package/package.json +1 -1
  23. package/dist/components/detail-page/components/DetailPageStepCommands.d.ts +0 -38
  24. package/dist/components/detail-page/components/DetailPageSteps.d.ts +0 -20
  25. package/dist/components/form/components/FormErrorsTracker.d.ts +0 -6
  26. package/dist/components/form/components/FormValuesTracker.d.ts +0 -6
@@ -1,36 +1,27 @@
1
- import { ReactNode } from 'react';
2
- import { FieldValues } from 'react-hook-form';
3
- import { LoadingButtonProps } from '@mui/lab/LoadingButton';
4
- import { MoreButtonItem } from '../../more-button/MoreButton';
5
- import { CloseReason, CommandsPosition } from '../../page/Page';
1
+ import { PropsWithChildren, ReactNode } from 'react';
2
+ import { UseFormReturn } from '../../form/hooks/useForm';
3
+ import { CloseReason } from '../../page/Page';
4
+ import { DetailPageCommandsFlag } from '../hooks/useDetailPageStates';
6
5
  import { SaveMode } from '../pages/DetailPageData';
7
- export interface DetailPageCommandsFlag {
8
- copy?: boolean;
9
- save?: boolean;
10
- savecreate?: boolean;
11
- saveclose?: boolean;
12
- discardchanges?: boolean;
13
- delete?: boolean;
14
- close?: boolean;
15
- navigate?: boolean;
16
- create?: boolean;
17
- }
18
- export interface DetailPageCommandsExtraProps {
19
- save?: LoadingButtonProps;
20
- discardchanges?: LoadingButtonProps;
21
- delete?: LoadingButtonProps;
22
- close?: LoadingButtonProps;
23
- navigate?: LoadingButtonProps;
24
- create?: LoadingButtonProps;
25
- }
26
- export interface DetailPageCommandsOptions {
27
- visible: DetailPageCommandsFlag;
28
- disabled: DetailPageCommandsFlag;
29
- loading?: boolean;
30
- isNew: boolean;
31
- isDisabled?: boolean;
32
- }
33
- export type DetailPageCommandsState = {
6
+ import { StepPane } from './DetailPageStepsHeader';
7
+ export type DetailPageStandartCommandsOptions = {
8
+ saveCommandMode?: SaveMode;
9
+ createCommandLabel?: ReactNode;
10
+ saveCommandLabel?: ReactNode;
11
+ };
12
+ export type DetailPageStepCommandsOptions = {
13
+ nextButtonTitle?: React.ReactNode;
14
+ prevButtonTitle?: React.ReactNode;
15
+ showNextButton?: boolean;
16
+ showPrevButton?: boolean;
17
+ currentKey: React.Key;
18
+ name: string;
19
+ activeStepIndex: number;
20
+ steps: StepPane[];
21
+ currentForm?: UseFormReturn;
22
+ };
23
+ export type DetailPageCommandsOptions = DetailPageStandartCommandsOptions & DetailPageStepCommandsOptions;
24
+ export type DetailPageStandartCommandsEvents = {
34
25
  onSave?: () => void;
35
26
  onSaveCreate?: () => void;
36
27
  onCreate?: () => void;
@@ -39,40 +30,15 @@ export type DetailPageCommandsState = {
39
30
  onDelete?: () => void;
40
31
  onClose?: (reason?: CloseReason) => void;
41
32
  onSaveClose?: () => void;
42
- saveCommandMode?: SaveMode;
43
- createCommandLabel?: ReactNode;
44
- commandsPosition?: CommandsPosition;
45
- };
46
- export type DetailPageCommandsLayoutContents = {
47
- save: ReactNode;
48
- create: ReactNode;
49
- discardChanges: ReactNode;
50
- delete: ReactNode;
51
- close: ReactNode;
52
- content: ReactNode;
53
- renderMoreCommand: (items: MoreButtonItem[]) => ReactNode;
54
- extra?: ReactNode;
55
33
  };
56
- export type DetailPageCommmandsSettings<TModel extends FieldValues = FieldValues> = {
57
- content: ReactNode;
58
- layout: DetailPageCommandsLayoutContents;
59
- props: DetailPageCommandsState & DetailPageCommandsOptions;
60
- data?: TModel;
34
+ export type DetailPageStepCommandsEvents = {
35
+ onNextClick?: () => void;
36
+ onPrevClick?: () => void;
61
37
  };
62
- export interface DetailPageCommandsProps<TModel extends FieldValues = FieldValues> extends DetailPageCommandsState {
63
- onCommands?: (props: DetailPageCommmandsSettings<TModel>) => ReactNode;
64
- onExtraCommands?: () => ReactNode;
65
- commandsExtraProps?: DetailPageCommandsExtraProps;
66
- data?: TModel;
67
- }
68
- export declare enum DetailPageCommandNames {
69
- SAVE = "save",
70
- CREATE = "create",
71
- COPY = "copy",
72
- DISCARD = "discard",
73
- DELETE = "delete",
74
- CLOSE = "close",
75
- NAVIGATE = "navigate"
76
- }
77
- declare function DetailPageCommands<TModel extends FieldValues = FieldValues>(props: DetailPageCommandsProps<TModel>): import("react/jsx-runtime").JSX.Element;
38
+ export type DetailPageCommandsProps = DetailPageStandartCommandsEvents & DetailPageStepCommandsEvents & {
39
+ options: DetailPageCommandsOptions;
40
+ mode: 'standard' | 'steps';
41
+ moreCommands?: Partial<Record<keyof DetailPageCommandsFlag, true>>;
42
+ } & PropsWithChildren;
43
+ declare function DetailPageCommands(props: DetailPageCommandsProps): import("react/jsx-runtime").JSX.Element;
78
44
  export default DetailPageCommands;
@@ -8,10 +8,8 @@ export type DetailPageLayoutProps = {
8
8
  content?: ReactNode;
9
9
  stepsContent?: ReactNode;
10
10
  autoSaveContent?: ReactNode;
11
- valuesChangeContent?: ReactNode;
12
- errorsContent?: ReactNode;
13
11
  options: DetailPageLayoutOptions;
14
12
  };
15
13
  type DetailPageDefaultLayoutProps = DetailPageLayoutProps;
16
- declare function DetailPageDefaultLayout({ content, stepsContent, autoSaveContent, valuesChangeContent, errorsContent, }: DetailPageDefaultLayoutProps): import("react/jsx-runtime").JSX.Element;
14
+ declare function DetailPageDefaultLayout({ content, stepsContent, autoSaveContent, }: DetailPageDefaultLayoutProps): import("react/jsx-runtime").JSX.Element;
17
15
  export default DetailPageDefaultLayout;
@@ -1,3 +1,3 @@
1
- import { DetailPageCommmandsSettings } from './DetailPageCommands';
2
- declare function DetailPageDrawerCommands({ layout, props }: DetailPageCommmandsSettings): import("react/jsx-runtime").JSX.Element;
1
+ import { DetailPageCommandsProps } from './DetailPageCommands';
2
+ declare function DetailPageDrawerCommands(props: DetailPageCommandsProps): import("react/jsx-runtime").JSX.Element;
3
3
  export default DetailPageDrawerCommands;
@@ -0,0 +1,10 @@
1
+ import { default as React, PropsWithChildren } from 'react';
2
+ import { FieldValues } from 'react-hook-form';
3
+ import { DetailPageContentProps } from '../pages/DetailPageContent';
4
+ export type DetailPageContextType<TModel extends FieldValues = FieldValues> = Pick<DetailPageContentProps<TModel>, 'loading' | 'enableClose' | 'enableCopy' | 'enableCreate' | 'enableDelete' | 'enableDiscardChanges' | 'enableSave' | 'reason' | 'disabled' | 'data' | 'activeSegmentIndex'> & {
5
+ onSave: () => void;
6
+ setActiveSegmentIndex: (index: number) => void;
7
+ };
8
+ export declare const DetailPageContext: React.Context<DetailPageContextType<FieldValues> | null>;
9
+ declare function DetailPageProvider({ children, data, reason, loading, enableCopy, enableCreate, enableClose, enableDiscardChanges, enableDelete, onSave, enableSave, disabled, activeSegmentIndex, setActiveSegmentIndex, }: PropsWithChildren & DetailPageContextType): import("react/jsx-runtime").JSX.Element;
10
+ export default DetailPageProvider;
@@ -0,0 +1,13 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { DefaultValues, FieldValues, Path } from 'react-hook-form';
3
+ import { z } from 'zod';
4
+ interface DetailPageStepContentProps<TModel extends FieldValues> {
5
+ schema?: z.ZodType<TModel>;
6
+ defaultValues?: DefaultValues<TModel>;
7
+ name: Path<TModel>;
8
+ }
9
+ /**
10
+ * This component is used to create a form for each step in the detail page.
11
+ */
12
+ declare function DetailPageStepForm<TModel extends FieldValues>({ schema, name, children, defaultValues, }: DetailPageStepContentProps<TModel> & PropsWithChildren): import("react/jsx-runtime").JSX.Element;
13
+ export default DetailPageStepForm;
@@ -0,0 +1,21 @@
1
+ import { default as React, ReactNode } from 'react';
2
+ import { DefaultValues, FieldValues, Path, PathValue } from 'react-hook-form';
3
+ import { StepProps } from '@mui/material/Step';
4
+ import { StepLabelProps } from '@mui/material/StepLabel';
5
+ import { StepperProps } from '@mui/material/Stepper';
6
+ import { z } from 'zod';
7
+ export interface DetailPageStepsHeaderProps<TModel extends FieldValues = FieldValues> extends Omit<StepperProps, 'onChange'> {
8
+ items: StepPane<TModel>[];
9
+ status?: StepStatus;
10
+ }
11
+ export type StepPane<TModel extends FieldValues = FieldValues, TFieldStepName extends Path<TModel> = Path<TModel>> = Omit<StepProps & StepLabelProps, 'children' | 'key'> & {
12
+ name?: TFieldStepName;
13
+ key: React.Key;
14
+ schema?: z.ZodType<PathValue<TModel, TFieldStepName>>;
15
+ defaultValues?: DefaultValues<PathValue<TModel, TFieldStepName>>;
16
+ label: ReactNode;
17
+ children: ReactNode;
18
+ };
19
+ export type StepStatus = 'wait' | 'process' | 'finish' | 'error';
20
+ declare function DetailPageStepsHeader<TModel extends FieldValues = FieldValues>({ activeStep, items, ...stepperProps }: DetailPageStepsHeaderProps<TModel>): import("react/jsx-runtime").JSX.Element;
21
+ export default DetailPageStepsHeader;
@@ -1,10 +1,4 @@
1
- import { default as React } from 'react';
2
1
  import { FieldValues } from 'react-hook-form';
3
- import { DetailPageContentProps } from '../pages/DetailPageContent';
4
- export type DetailPageContextType<TModel extends FieldValues = FieldValues> = Pick<DetailPageContentProps<TModel>, 'loading' | 'enableClose' | 'enableCopy' | 'enableCreate' | 'enableDelete' | 'enableDiscardChanges' | 'enableSave' | 'reason' | 'disabled' | 'data' | 'activeSegmentIndex'> & {
5
- onSave: () => void;
6
- setActiveSegmentIndex: (index: number) => void;
7
- };
8
- export declare const DetailPageContext: React.Context<DetailPageContextType<FieldValues> | null>;
2
+ import { DetailPageContextType } from '../components/DetailPageProvider';
9
3
  declare const useDetailPage: <TModel extends FieldValues = FieldValues>() => DetailPageContextType<TModel>;
10
4
  export default useDetailPage;
@@ -427,7 +427,6 @@ declare function useDetailPageModal<TModel extends FieldValues>({ models, unique
427
427
  readonly moreOptions?: import('../../..').MoreButtonProps["options"];
428
428
  readonly useHeaderIconWrapper?: boolean;
429
429
  readonly tabs?: import('../../..').TabPane[];
430
- readonly onValuesChange?: ((values: Partial<TModel>) => void) | undefined;
431
430
  readonly error?: import('../../utils').ServerError;
432
431
  readonly footerContent?: import('react').ReactNode;
433
432
  readonly moreContent?: import('react').ReactNode;
@@ -456,22 +455,22 @@ declare function useDetailPageModal<TModel extends FieldValues>({ models, unique
456
455
  readonly enableSave?: boolean;
457
456
  readonly reason?: NeedDataReason;
458
457
  readonly activeSegmentIndex?: number;
459
- readonly onCommands?: ((props: import('../components/DetailPageCommands').DetailPageCommmandsSettings<TModel>) => import('react').ReactNode) | undefined;
460
- readonly onExtraCommands?: () => import('react').ReactNode;
461
458
  readonly createCommandLabel?: import('react').ReactNode;
459
+ readonly saveCommandLabel?: import('react').ReactNode;
460
+ readonly onCommands?: (props: import('../components/DetailPageCommands').DetailPageCommandsProps) => import('react').ReactNode;
461
+ readonly onExtraCommands?: () => import('react').ReactNode;
462
462
  readonly alerts?: import('../../page/hooks/useNormalizeMessages').Message[];
463
463
  readonly onSegmentChanged?: (index: number) => void;
464
464
  readonly hotkeyScopes?: string;
465
465
  readonly onCreate?: () => void;
466
466
  readonly onSave?: import('../pages/DetailPageData').DataEvent<TModel, import('../pages/DetailPageData').SavePayload<TModel>> | undefined;
467
467
  readonly onDiscardChanges?: () => void;
468
- readonly onFormErrors?: ((errors: import('react-hook-form').FieldErrors<TModel>, isValid?: boolean) => void) | undefined;
469
468
  readonly onContentLayout?: (props: import('../components/DetailPageDefaultLayout').DetailPageLayoutProps) => React.ReactNode;
470
469
  readonly onWrapperLayout?: (props: import('../pages/DetailPageContent').DetailPageWrapperLayoutProps) => React.ReactNode;
471
470
  readonly defaultSaveMode?: import('../pages/DetailPageData').SaveMode;
472
- readonly steps?: import('../components/DetailPageSteps').StepPane[];
473
- readonly customSteps?: React.ComponentType<import('../components/DetailPageSteps').DetailPageStepsProps>;
474
- readonly stepsProps?: Partial<import('../components/DetailPageSteps').DetailPageStepsProps>;
471
+ readonly steps?: import('../components/DetailPageStepsHeader').StepPane<TModel>[] | undefined;
472
+ readonly customSteps?: React.ComponentType<import('../components/DetailPageStepsHeader').DetailPageStepsHeaderProps>;
473
+ readonly stepsProps?: Partial<import('../components/DetailPageStepsHeader').DetailPageStepsHeaderProps>;
475
474
  readonly showSuccessMessages?: boolean;
476
475
  readonly onAfterSave?: ((result: void | Awaited<TModel> | undefined, variables: import('../pages/DetailPageData').SavePayload<TModel>, form: import('../../form/hooks/useForm').UseFormReturn<TModel>) => void) | undefined;
477
476
  readonly onAfterDelete?: ((variables: import('../pages/DetailPageData').DeletePayload<TModel>, form: import('../../form/hooks/useForm').UseFormReturn<TModel>) => void) | undefined;
@@ -1,13 +1,26 @@
1
+ export interface DetailPageCommandsFlag {
2
+ copy?: boolean;
3
+ save?: boolean;
4
+ savecreate?: boolean;
5
+ saveclose?: boolean;
6
+ discardchanges?: boolean;
7
+ delete?: boolean;
8
+ close?: boolean;
9
+ navigate?: boolean;
10
+ create?: boolean;
11
+ prev?: boolean;
12
+ next?: boolean;
13
+ }
14
+ export interface DetailPageCommandsOptions {
15
+ visible: DetailPageCommandsFlag;
16
+ disabled: DetailPageCommandsFlag;
17
+ loading?: boolean;
18
+ isNew: boolean;
19
+ isDisabled?: boolean;
20
+ }
1
21
  /**
2
22
  * Returns buttons props depending on validation,loading etc
3
23
  * Beware of rerender when state of form changes
4
24
  */
5
- declare function useDetailPageStates(): {
6
- formStates: import('react-hook-form').UseFormStateReturn<import('react-hook-form').FieldValues>;
7
- visible: import('../components/DetailPageCommands').DetailPageCommandsFlag;
8
- disabled: import('../components/DetailPageCommands').DetailPageCommandsFlag;
9
- loading?: boolean;
10
- isNew: boolean;
11
- isDisabled?: boolean;
12
- };
25
+ declare function useDetailPageStates(): DetailPageCommandsOptions;
13
26
  export default useDetailPageStates;
@@ -1,7 +1,8 @@
1
1
  import { FieldValues } from 'react-hook-form';
2
+ import { default as DetailPageCommands } from '../components/DetailPageCommands';
2
3
  import { default as DetailPageDefaultLayout } from '../components/DetailPageDefaultLayout';
3
4
  import { default as DetailPageHeader } from '../components/DetailPageHeader';
4
- import { default as DetailPageSteps } from '../components/DetailPageSteps';
5
+ import { default as DetailPageStepsHeader } from '../components/DetailPageStepsHeader';
5
6
  import { NeedDataReason } from './DetailPageContent';
6
7
  import { default as DetailPageDrawer } from './DetailPageDrawer';
7
8
  import { DetailPageFormProps } from './DetailPageForm';
@@ -22,6 +23,7 @@ declare namespace DetailPage {
22
23
  var Drawer: typeof DetailPageDrawer;
23
24
  var Route: typeof DetailPageRoute;
24
25
  var Layout: typeof DetailPageDefaultLayout;
25
- var Steps: typeof DetailPageSteps;
26
+ var Steps: typeof DetailPageStepsHeader;
27
+ var Commands: typeof DetailPageCommands;
26
28
  }
27
29
  export default DetailPage;
@@ -1,13 +1,14 @@
1
1
  import { default as React, ReactNode } from 'react';
2
- import { FieldErrors, FieldValues } from 'react-hook-form';
2
+ import { FieldValues } from 'react-hook-form';
3
+ import { UseFormReturn } from '../../form/hooks/useForm';
3
4
  import { Message } from '../../page/hooks/useNormalizeMessages';
4
5
  import { PageProps } from '../../page/Page';
5
6
  import { ServerError } from '../../utils';
6
7
  import { AutoSaveOptions } from '../components/AutoSave';
7
- import { DetailPageCommandsProps } from '../components/DetailPageCommands';
8
+ import { DetailPageCommandsProps, DetailPageStandartCommandsOptions } from '../components/DetailPageCommands';
8
9
  import { DetailPageLayoutProps } from '../components/DetailPageDefaultLayout';
9
10
  import { DetailPageHeaderProps } from '../components/DetailPageHeader';
10
- import { DetailPageStepsProps, StepPane } from '../components/DetailPageSteps';
11
+ import { DetailPageStepsHeaderProps, StepPane } from '../components/DetailPageStepsHeader';
11
12
  import { SaveMode } from './DetailPageData';
12
13
  export type NeedDataReason = 'create' | 'fetch' | 'copy' | 'view';
13
14
  export type DetailPageWrapperLayoutProps = {
@@ -16,7 +17,19 @@ export type DetailPageWrapperLayoutProps = {
16
17
  commandsContent: ReactNode;
17
18
  alertsContent: ReactNode;
18
19
  };
19
- export interface DetailPageContentProps<TModel extends FieldValues> extends Omit<PageProps, 'commandsContent' | 'alertsContent' | 'autoSave' | 'onHeader' | 'tabExtraContent'>, Pick<DetailPageCommandsProps<TModel>, 'onCommands' | 'onExtraCommands' | 'createCommandLabel'> {
20
+ export interface DetailPageContentProps<TModel extends FieldValues> extends Omit<PageProps, 'commandsContent' | 'alertsContent' | 'autoSave' | 'onHeader' | 'tabExtraContent'>, Pick<DetailPageStandartCommandsOptions, 'createCommandLabel' | 'saveCommandLabel'> {
21
+ /**
22
+ * Custom commands node
23
+ */
24
+ onCommands?: (props: DetailPageCommandsProps) => ReactNode;
25
+ /**
26
+ * Extra commands positioned left side in commands section
27
+ */
28
+ onExtraCommands?: () => ReactNode;
29
+ /**
30
+ * Main rhf instance of page
31
+ */
32
+ form: UseFormReturn<TModel>;
20
33
  data?: TModel;
21
34
  /**
22
35
  * External error indicator
@@ -74,16 +87,6 @@ export interface DetailPageContentProps<TModel extends FieldValues> extends Omit
74
87
  * Custom header function
75
88
  */
76
89
  onHeader?: (props: DetailPageHeaderProps) => ReactNode;
77
- /**
78
- * Values change tracker
79
- * MUST BE MEMOIZED
80
- */
81
- onValuesChange?: (values: Partial<TModel>) => void;
82
- /**
83
- * Error tracker,called when form errors has changed
84
- * MUST BE MEMOIZED
85
- */
86
- onFormErrors?: (errors: FieldErrors<TModel>, isValid?: boolean) => void;
87
90
  /**
88
91
  * Page opening reason Default create.
89
92
  */
@@ -116,22 +119,28 @@ export interface DetailPageContentProps<TModel extends FieldValues> extends Omit
116
119
  * Having called "onSave" once changing form values
117
120
  */
118
121
  autoSave?: boolean | AutoSaveOptions;
122
+ /**
123
+ * Custom content layout
124
+ */
119
125
  onContentLayout?: (props: DetailPageLayoutProps) => React.ReactNode;
120
126
  onWrapperLayout?: (props: DetailPageWrapperLayoutProps) => React.ReactNode;
127
+ /**
128
+ *Default save mode (save,saveclose,savecreate) default is 'save'
129
+ */
121
130
  defaultSaveMode?: SaveMode;
122
131
  /**
123
132
  * Steps definitons
124
133
  */
125
- steps?: StepPane[];
134
+ steps?: StepPane<TModel>[];
126
135
  /**
127
136
  * Custom steps component
128
137
  */
129
- customSteps?: React.ComponentType<DetailPageStepsProps>;
138
+ customSteps?: React.ComponentType<DetailPageStepsHeaderProps>;
130
139
  /**
131
140
  * Optional steps props
132
141
  */
133
- stepsProps?: Partial<DetailPageStepsProps>;
142
+ stepsProps?: Partial<DetailPageStepsHeaderProps>;
134
143
  tabExtraContent?: ReactNode | ((data?: TModel) => ReactNode);
135
144
  }
136
- declare function DetailPageContent<TModel extends FieldValues>({ activeSegmentIndex, alerts, autoSave, children, commandsPosition, customSteps: CustomSteps, createCommandLabel, data, defaultSaveMode, disabled, disableShortCuts, enableClose, enableCopy, enableCreate, enableDelete, enableDiscardChanges, enableSave, error, hotkeyScopes, loading, onClose, onCommands, onContentLayout, onCopy, onCreate, onDelete, onDiscardChanges, onFormErrors, onSegmentChanged, onExtraCommands, onHeader, onSave, onSaveClose, onSaveCreate, onValuesChange, onWrapperLayout, reason, showHeader, steps, stepsProps, tabExtraContent, ...pageProps }: DetailPageContentProps<TModel>): import("react/jsx-runtime").JSX.Element;
145
+ declare function DetailPageContent<TModel extends FieldValues>({ activeSegmentIndex, alerts, autoSave, children, commandsPosition, customSteps: CustomSteps, createCommandLabel, data, defaultSaveMode, disabled, disableShortCuts, enableClose, enableCopy, enableCreate, enableDelete, enableDiscardChanges, enableSave, error, form, hotkeyScopes, loading, onClose, onCommands, onContentLayout, onCopy, onCreate, onDelete, onDiscardChanges, onSegmentChanged, onExtraCommands, onHeader, onSave, onSaveClose, onSaveCreate, onWrapperLayout, reason, saveCommandLabel, showHeader, steps, stepsProps, tabExtraContent, ...pageProps }: DetailPageContentProps<TModel>): import("react/jsx-runtime").JSX.Element;
137
146
  export default DetailPageContent;
@@ -19,7 +19,6 @@ export interface DeletePayload<TModel extends FieldValues = FieldValues> extends
19
19
  data?: TModel;
20
20
  }
21
21
  export interface DetailPageDataProps<TModel extends FieldValues> extends Omit<DetailPageContentProps<TModel>, 'onSave' | 'onDelete' | 'onDiscardChanges' | 'onCopy' | 'onSaveCreate' | 'onSaveClose'> {
22
- form: UseFormReturn<TModel>;
23
22
  /**
24
23
  * Save event
25
24
  * @returns if returns data,either in promise or object will bind to form data
@@ -5,7 +5,7 @@ import { DeepNullable } from '../../utils';
5
5
  import { NeedDataReason } from './DetailPageContent';
6
6
  import { DetailPageDataProps } from './DetailPageData';
7
7
  export type DefaultDataFn<TModel extends FieldValues> = (reason: NeedDataReason, data?: TModel) => DeepNullable<TModel> | Promise<DeepNullable<TModel>>;
8
- export type DefaultData<TModel extends FieldValues> = DeepNullable<TModel> | DefaultDataFn<TModel>;
8
+ export type DefaultData<TModel extends FieldValues = FieldValues> = DeepNullable<TModel> | DefaultDataFn<TModel>;
9
9
  export interface DetailPageFormProps<TModel extends FieldValues> extends Omit<DetailPageDataProps<TModel>, 'form'> {
10
10
  form?: UseFormReturn<TModel>;
11
11
  schema?: z.ZodType<TModel>;
@@ -13,5 +13,5 @@ export interface DetailPageFormProps<TModel extends FieldValues> extends Omit<De
13
13
  defaultValues?: DefaultData<TModel>;
14
14
  formProps?: Partial<UseFormProps<TModel>>;
15
15
  }
16
- declare function DetailPageForm<TModel extends FieldValues>({ activeSegmentIndex, schema, defaultValues, validationOptions, data, reason, formProps, ...dpProps }: DetailPageFormProps<TModel>): import("react/jsx-runtime").JSX.Element;
16
+ declare function DetailPageForm<TModel extends FieldValues>({ activeSegmentIndex, data, defaultValues, formProps, reason, schema, validationOptions, ...dpProps }: DetailPageFormProps<TModel>): import("react/jsx-runtime").JSX.Element;
17
17
  export default DetailPageForm;
@@ -0,0 +1,15 @@
1
+ import { default as React, PropsWithChildren } from 'react';
2
+ import { FieldValues } from 'react-hook-form';
3
+ import { UseFormReturn } from '../hooks/useForm';
4
+ export interface FormCollectionContextType {
5
+ forms?: Map<string, UseFormReturn>;
6
+ registerForm?: (data: FormData) => void;
7
+ unRegisterForm?: (name: string) => void;
8
+ }
9
+ export declare const FormCollectionContext: React.Context<FormCollectionContextType>;
10
+ export type FormData<TFieldValues extends FieldValues = FieldValues> = {
11
+ name: string;
12
+ form: UseFormReturn<TFieldValues>;
13
+ };
14
+ declare function FormCollectionProvider({ children }: PropsWithChildren): import("react/jsx-runtime").JSX.Element;
15
+ export default FormCollectionProvider;
@@ -11,4 +11,5 @@ export { default as useArrayFieldHelpers } from './useArrayFieldHelpers';
11
11
  export { default as useUniqueFieldsInArray } from './useUniqueFieldsInArray';
12
12
  export { default as useFormInitEffect } from './useFormInitEffect';
13
13
  export { default as useFieldWithContext } from './useFieldWithContext';
14
+ export { default as useFormCollectionContext } from './useFormCollectionContext';
14
15
  export { UNIQUE_IDENTIFIER_FIELD_NAME } from './useArrayFieldHelpers';
@@ -12,7 +12,7 @@ export type ValidationOptions<TFieldValues extends FieldValues = FieldValues> =
12
12
  export interface UseFormOptions<TFieldValues extends FieldValues> extends UseFormProps<TFieldValues> {
13
13
  schema?: z.ZodType<Partial<TFieldValues>>;
14
14
  }
15
- export interface UseFormReturn<TFieldValues extends FieldValues> extends ReactHookFormUseFormReturn<TFieldValues> {
15
+ export interface UseFormReturn<TFieldValues extends FieldValues = FieldValues> extends ReactHookFormUseFormReturn<TFieldValues> {
16
16
  /**
17
17
  * Shortcut method for handleSubmit()()
18
18
  * @returns Returns form model when validation successed
@@ -0,0 +1,3 @@
1
+ import { FormCollectionContextType } from '../components/FormCollectionProvider';
2
+ declare function useFormCollectionContext(): Required<FormCollectionContextType>;
3
+ export default useFormCollectionContext;
@@ -0,0 +1,8 @@
1
+ import { FieldValues, Path } from 'react-hook-form';
2
+ import { UseFormReturn } from './useForm';
3
+ interface UseRegisterFormOptions<TFieldValues extends FieldValues> {
4
+ name: Path<TFieldValues>;
5
+ form: UseFormReturn<TFieldValues>;
6
+ }
7
+ declare function useRegisterForm<TFieldValues extends FieldValues>({ name, form, }: UseRegisterFormOptions<TFieldValues>): void;
8
+ export default useRegisterForm;
@@ -11,7 +11,7 @@ import { default as PageProvider, PaddingSize } from './components/PageProvider'
11
11
  import { default as PageDrawer } from './PageDrawer';
12
12
  import { default as PageModal } from './PageModal';
13
13
  export type CloseReason = 'backdrop' | 'close-button' | 'action';
14
- export type CommandsPosition = 'top-right' | 'top-left' | 'bottom-left' | 'bottom-right' | 'bottom' | 'top';
14
+ export type CommandsPosition = 'top-right' | 'top-left' | 'bottom-left' | 'bottom-right' | 'bottom-between' | 'top-between' | 'bottom' | 'top';
15
15
  export type TabsPosition = 'in-center' | 'in-subrow';
16
16
  export interface PageProps extends HeaderProps {
17
17
  commandsContent?: ReactNode;