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.
- package/dist/components/detail-page/components/DetailPageCommands.d.ts +32 -66
- package/dist/components/detail-page/components/DetailPageDefaultLayout.d.ts +1 -3
- package/dist/components/detail-page/components/DetailPageDrawerCommands.d.ts +2 -2
- package/dist/components/detail-page/components/DetailPageProvider.d.ts +10 -0
- package/dist/components/detail-page/components/DetailPageStepForm.d.ts +13 -0
- package/dist/components/detail-page/components/DetailPageStepsHeader.d.ts +21 -0
- package/dist/components/detail-page/hooks/useDetailPage.d.ts +1 -7
- package/dist/components/detail-page/hooks/useDetailPageModal.d.ts +6 -7
- package/dist/components/detail-page/hooks/useDetailPageStates.d.ts +21 -8
- package/dist/components/detail-page/pages/DetailPage.d.ts +4 -2
- package/dist/components/detail-page/pages/DetailPageContent.d.ts +27 -18
- package/dist/components/detail-page/pages/DetailPageData.d.ts +0 -1
- package/dist/components/detail-page/pages/DetailPageForm.d.ts +2 -2
- package/dist/components/form/components/FormCollectionProvider.d.ts +15 -0
- package/dist/components/form/hooks/index.d.ts +1 -0
- package/dist/components/form/hooks/useForm.d.ts +1 -1
- package/dist/components/form/hooks/useFormCollectionContext.d.ts +3 -0
- package/dist/components/form/hooks/useRegisterForm.d.ts +8 -0
- package/dist/components/page/Page.d.ts +1 -1
- package/dist/coreui.js +8478 -8451
- package/dist/index.d.ts +2 -2
- package/package.json +1 -1
- package/dist/components/detail-page/components/DetailPageStepCommands.d.ts +0 -38
- package/dist/components/detail-page/components/DetailPageSteps.d.ts +0 -20
- package/dist/components/form/components/FormErrorsTracker.d.ts +0 -6
- package/dist/components/form/components/FormValuesTracker.d.ts +0 -6
|
@@ -1,36 +1,27 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
props: DetailPageCommandsState & DetailPageCommandsOptions;
|
|
60
|
-
data?: TModel;
|
|
34
|
+
export type DetailPageStepCommandsEvents = {
|
|
35
|
+
onNextClick?: () => void;
|
|
36
|
+
onPrevClick?: () => void;
|
|
61
37
|
};
|
|
62
|
-
export
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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,
|
|
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 {
|
|
2
|
-
declare function DetailPageDrawerCommands(
|
|
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 {
|
|
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/
|
|
473
|
-
readonly customSteps?: React.ComponentType<import('../components/
|
|
474
|
-
readonly stepsProps?: Partial<import('../components/
|
|
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
|
|
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
|
|
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 {
|
|
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 {
|
|
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<
|
|
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<
|
|
138
|
+
customSteps?: React.ComponentType<DetailPageStepsHeaderProps>;
|
|
130
139
|
/**
|
|
131
140
|
* Optional steps props
|
|
132
141
|
*/
|
|
133
|
-
stepsProps?: Partial<
|
|
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,
|
|
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,
|
|
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,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;
|