react-crud-mui 0.2.46 → 0.2.48

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.
@@ -4,10 +4,11 @@ import { UseFormReturn } from '../../form/hooks/useForm';
4
4
  import { CloseReason } from '../../page/Page';
5
5
  import { DetailPageCommandsFlag } from '../hooks/useDetailPageStates';
6
6
  import { NeedDataReason } from '../pages/DetailPageContent';
7
- import { SaveMode } from '../pages/DetailPageData';
7
+ import { NavigationDirection, SaveMode } from '../pages/DetailPageData';
8
8
  import { StepPane } from './DetailPageStepsHeader';
9
9
  export type DetailPageStandartCommandsOptions = {
10
10
  saveCommandMode?: SaveMode;
11
+ reason: NeedDataReason;
11
12
  };
12
13
  export type DetailPageStepCommandsOptions = {
13
14
  nextButtonTitle?: React.ReactNode;
@@ -32,6 +33,7 @@ export type DetailPageStandartCommandsEvents = {
32
33
  onDelete?: () => void;
33
34
  onClose?: (reason?: CloseReason) => void;
34
35
  onSaveClose?: () => void;
36
+ onNavigate?: (direction: NavigationDirection) => void;
35
37
  };
36
38
  export type DetailPageStepCommandsEvents = {
37
39
  onNextClick?: () => void;
@@ -1,14 +1,16 @@
1
1
  import { ReactNode } from 'react';
2
+ import { FieldValues } from 'react-hook-form';
2
3
  import { NeedDataReason } from '../pages/DetailPageContent';
3
- export type DetailPageLayoutOptions = {
4
+ export type DetailPageLayoutOptions<TModel extends FieldValues = FieldValues> = {
4
5
  loading?: boolean;
5
6
  reason: NeedDataReason;
7
+ data?: TModel;
6
8
  };
7
- export type DetailPageLayoutProps = {
9
+ export type DetailPageLayoutProps<TModel extends FieldValues = FieldValues> = {
8
10
  content?: ReactNode;
9
11
  stepsContent?: ReactNode;
10
12
  autoSaveContent?: ReactNode;
11
- options: DetailPageLayoutOptions;
13
+ options: DetailPageLayoutOptions<TModel>;
12
14
  };
13
15
  type DetailPageDefaultLayoutProps = DetailPageLayoutProps;
14
16
  declare function DetailPageDefaultLayout({ content, stepsContent, autoSaveContent, }: DetailPageDefaultLayoutProps): import("react/jsx-runtime").JSX.Element;
@@ -6,5 +6,5 @@ export type DetailPageContextType<TModel extends FieldValues = FieldValues> = Pi
6
6
  setActiveSegmentIndex: (index: number) => void;
7
7
  };
8
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;
9
+ declare function DetailPageProvider<TModel extends FieldValues = FieldValues>({ children, data, reason, loading, enableCopy, enableCreate, enableClose, enableDiscardChanges, enableDelete, onSave, enableSave, disabled, activeSegmentIndex, setActiveSegmentIndex, }: PropsWithChildren & DetailPageContextType<TModel>): import("react/jsx-runtime").JSX.Element;
10
10
  export default DetailPageProvider;
@@ -1,5 +1,6 @@
1
1
  import { FieldValues } from 'react-hook-form';
2
2
  import { NeedDataReason } from '../pages/DetailPageContent';
3
+ import { NavigatePayload } from '../pages/DetailPageData';
3
4
  import { DetailPageModalProps } from '../pages/DetailPageModal';
4
5
  export type SelectedModelOptions<TModel extends FieldValues> = Pick<DetailPageModalProps<TModel>, 'reason' | 'data' | 'disabled' | 'onAfterSave' | 'onAfterDelete'>;
5
6
  type HelperModelFields = {
@@ -17,6 +18,7 @@ export interface UseDetailPageModalProps {
17
18
  declare function useDetailPageModal<TModel extends FieldValues>({ models, uniqueIdParamName, }?: UseDetailPageModalProps): readonly [({ data, disabled, reason, onAfterDelete, onAfterSave }?: SelectedModelOptions<TModel>) => void, {
18
19
  readonly onReasonChange: (reason: NeedDataReason) => void;
19
20
  readonly onClose: () => void;
21
+ readonly onNavigate: ({ direction }: Pick<NavigatePayload<TModel>, "direction">) => void;
20
22
  readonly modalProps?: Omit<import('../../..').ModalProps, "children" | "open">;
21
23
  readonly open?: boolean;
22
24
  readonly promptOptions?: import('./useFormPrompt').UseFormPromptProps;
@@ -470,9 +472,9 @@ declare function useDetailPageModal<TModel extends FieldValues>({ models, unique
470
472
  readonly steps?: import('../components/DetailPageStepsHeader').StepPane<TModel>[] | undefined;
471
473
  readonly customSteps?: React.ComponentType<import('../components/DetailPageStepsHeader').DetailPageStepsHeaderProps>;
472
474
  readonly stepsProps?: Partial<import('../components/DetailPageStepsHeader').DetailPageStepsHeaderProps>;
473
- readonly showSuccessMessages?: boolean;
474
- readonly onAfterSave?: ((result: void | Awaited<TModel> | undefined, variables: import('../pages/DetailPageData').SavePayload<TModel>, form: import('../../form/hooks/useForm').UseFormReturn<TModel>) => void) | undefined;
475
475
  readonly onAfterDelete?: ((variables: import('../pages/DetailPageData').DeletePayload<TModel>, form: import('../../form/hooks/useForm').UseFormReturn<TModel>) => void) | undefined;
476
+ readonly onAfterSave?: ((result: void | Awaited<TModel> | undefined, variables: import('../pages/DetailPageData').SavePayload<TModel>, form: import('../../form/hooks/useForm').UseFormReturn<TModel>) => void) | undefined;
477
+ readonly showSuccessMessages?: boolean;
476
478
  readonly uid?: string;
477
479
  readonly index?: number;
478
480
  }];
@@ -6,16 +6,17 @@ import { PageProps } from '../../page/Page';
6
6
  import { ServerError } from '../../utils';
7
7
  import { AutoSaveOptions } from '../components/AutoSave';
8
8
  import { CommandsProps, CommandsPropsFn, DetailPageCommandsProps } from '../components/DetailPageCommands';
9
- import { DetailPageLayoutProps } from '../components/DetailPageDefaultLayout';
9
+ import { DetailPageLayoutOptions, DetailPageLayoutProps } from '../components/DetailPageDefaultLayout';
10
10
  import { DetailPageHeaderProps } from '../components/DetailPageHeader';
11
11
  import { DetailPageStepsHeaderProps, StepPane } from '../components/DetailPageStepsHeader';
12
- import { SaveMode } from './DetailPageData';
12
+ import { NavigationDirection, SaveMode } from './DetailPageData';
13
13
  export type NeedDataReason = 'create' | 'fetch' | 'copy' | 'view';
14
- export type DetailPageWrapperLayoutProps = {
14
+ export type DetailPageWrapperLayoutProps<TModel extends FieldValues = FieldValues> = {
15
15
  content: ReactNode;
16
16
  pageContent: ReactNode;
17
17
  commandsContent: ReactNode;
18
18
  alertsContent: ReactNode;
19
+ options: DetailPageLayoutOptions<TModel>;
19
20
  };
20
21
  export interface DetailPageContentProps<TModel extends FieldValues> extends Omit<PageProps, 'commandsContent' | 'alertsContent' | 'autoSave' | 'onHeader' | 'tabExtraContent'> {
21
22
  commandsProps?: CommandsProps | CommandsPropsFn;
@@ -84,6 +85,10 @@ export interface DetailPageContentProps<TModel extends FieldValues> extends Omit
84
85
  * Delete event
85
86
  */
86
87
  onDelete: () => void;
88
+ /**
89
+ * Navigation callback when one of which navigate buttons is pressed
90
+ */
91
+ onNavigate: (direction: NavigationDirection) => void;
87
92
  /**
88
93
  * Custom header function
89
94
  */
@@ -143,5 +148,5 @@ export interface DetailPageContentProps<TModel extends FieldValues> extends Omit
143
148
  stepsProps?: Partial<DetailPageStepsHeaderProps>;
144
149
  tabExtraContent?: ReactNode | ((data?: TModel) => ReactNode);
145
150
  }
146
- declare function DetailPageContent<TModel extends FieldValues>({ activeSegmentIndex, alerts, autoSave, children, commandsPosition, commandsProps, customSteps: CustomSteps, 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, showHeader, steps, stepsProps, tabExtraContent, ...pageProps }: DetailPageContentProps<TModel>): import("react/jsx-runtime").JSX.Element;
151
+ declare function DetailPageContent<TModel extends FieldValues>({ activeSegmentIndex, alerts, autoSave, children, commandsPosition, commandsProps, customSteps: CustomSteps, data, defaultSaveMode, disabled, disableShortCuts, enableClose, enableCopy, enableCreate, enableDelete, enableDiscardChanges, enableSave, error, form, hotkeyScopes, loading, onClose, onCommands, onContentLayout, onCopy, onCreate, onDelete, onDiscardChanges, onSegmentChanged, onExtraCommands, onHeader, onNavigate, onSave, onSaveClose, onSaveCreate, onWrapperLayout, reason, showHeader, steps, stepsProps, tabExtraContent, ...pageProps }: DetailPageContentProps<TModel>): import("react/jsx-runtime").JSX.Element;
147
152
  export default DetailPageContent;
@@ -18,12 +18,22 @@ export interface DeletePayload<TModel extends FieldValues = FieldValues> extends
18
18
  model: TModel;
19
19
  data?: TModel;
20
20
  }
21
- export interface DetailPageDataProps<TModel extends FieldValues> extends Omit<DetailPageContentProps<TModel>, 'onSave' | 'onDelete' | 'onDiscardChanges' | 'onCopy' | 'onSaveCreate' | 'onSaveClose'> {
21
+ export interface NavigatePayload<TModel extends FieldValues = FieldValues> extends BasePayload {
22
+ direction: NavigationDirection;
23
+ model: TModel;
24
+ }
25
+ export type NavigationDirection = 'next' | 'prev';
26
+ export interface DetailPageDataProps<TModel extends FieldValues> extends Omit<DetailPageContentProps<TModel>, 'onSave' | 'onDelete' | 'onDiscardChanges' | 'onCopy' | 'onSaveCreate' | 'onSaveClose' | 'onNavigate'> {
22
27
  /**
23
28
  * Save event
24
29
  * @returns if returns data,either in promise or object will bind to form data
25
30
  */
26
31
  onSave?: DataEvent<TModel, SavePayload<TModel>>;
32
+ /**
33
+ * Navigation buttons event when navigation is active
34
+ * @returns if returns data,either in promise or object will bind to form data
35
+ */
36
+ onNavigate?: DataEvent<TModel, NavigatePayload<TModel>>;
27
37
  /**
28
38
  * Delete event
29
39
  * @returns if returns data,either in promise or object will bind to form data
@@ -53,5 +63,5 @@ export interface DetailPageDataProps<TModel extends FieldValues> extends Omit<De
53
63
  /**
54
64
  * Page component that all data manupulation is handled
55
65
  */
56
- declare function DetailPageData<TModel extends FieldValues>({ alerts, autoSave, data, error, form, loading, onAfterDelete, onAfterSave, onClose, onDelete, onDiscardChanges, onReasonChange, onSave, reason, showSuccessMessages, ...dpProps }: DetailPageDataProps<TModel>): import("react/jsx-runtime").JSX.Element;
66
+ declare function DetailPageData<TModel extends FieldValues>({ alerts, autoSave, data, error, form, loading, onAfterDelete, onAfterSave, onClose, onDelete, onDiscardChanges, onReasonChange, onNavigate, onSave, reason, showSuccessMessages, ...dpProps }: DetailPageDataProps<TModel>): import("react/jsx-runtime").JSX.Element;
57
67
  export default DetailPageData;
@@ -0,0 +1,22 @@
1
+ import { default as React, PropsWithChildren } from 'react';
2
+ import { FieldValues } from 'react-hook-form';
3
+ import { NeedDataReason } from '../../detail-page/pages/DetailPageContent';
4
+ import { ListPageProps } from '../pages/ListPage';
5
+ export type ListPageContextType<TModel extends FieldValues = FieldValues> = {
6
+ data?: TModel[];
7
+ /**
8
+ * Clear all form controls in filter
9
+ */
10
+ clear: () => void;
11
+ /**
12
+ * Trigger search with defined filter criterias
13
+ */
14
+ search: () => void;
15
+ /**
16
+ * Used for built in detailpage opener
17
+ */
18
+ triggerAction: (reason: NeedDataReason, data?: TModel) => void;
19
+ } & Pick<ListPageProps<TModel>, 'loading' | 'enableClear' | 'enableCreateItem' | 'enableExport' | 'enableSearch'>;
20
+ export declare const ListPageContext: React.Context<ListPageContextType<any> | null>;
21
+ declare function ListPageProvider<TModel extends FieldValues = FieldValues>({ children, data, loading, enableClear, enableCreateItem, enableExport, enableSearch, search: onSearch, clear: onClear, triggerAction, }: PropsWithChildren & ListPageContextType<TModel>): import("react/jsx-runtime").JSX.Element;
22
+ export default ListPageProvider;
@@ -1,22 +1,4 @@
1
- import { default as React } from 'react';
2
1
  import { FieldValues } from 'react-hook-form';
3
- import { NeedDataReason } from '../../detail-page/pages/DetailPageContent';
4
- import { ListPageProps } from '../pages/ListPage';
5
- export type ListPageContextType<TModel extends FieldValues> = {
6
- data?: TModel[];
7
- /**
8
- * Clear all form controls in filter
9
- */
10
- clear: () => void;
11
- /**
12
- * Trigger search with defined filter criterias
13
- */
14
- search: () => void;
15
- /**
16
- * Used for built in detailpage opener
17
- */
18
- triggerAction: (reason: NeedDataReason, data?: TModel) => void;
19
- } & Pick<ListPageProps<TModel>, 'loading' | 'enableClear' | 'enableCreateItem' | 'enableExport' | 'enableSearch'>;
20
- export declare const ListPageContext: React.Context<ListPageContextType<any> | null>;
2
+ import { ListPageContextType } from '../components/ListPageProvider';
21
3
  declare const useListPage: <TModel extends FieldValues>() => ListPageContextType<TModel>;
22
4
  export default useListPage;