react-crud-mui 0.2.43 → 0.2.45

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.
@@ -3,6 +3,7 @@ import { ButtonProps } from '@mui/material';
3
3
  import { UseFormReturn } from '../../form/hooks/useForm';
4
4
  import { CloseReason } from '../../page/Page';
5
5
  import { DetailPageCommandsFlag } from '../hooks/useDetailPageStates';
6
+ import { NeedDataReason } from '../pages/DetailPageContent';
6
7
  import { SaveMode } from '../pages/DetailPageData';
7
8
  import { StepPane } from './DetailPageStepsHeader';
8
9
  export type DetailPageStandartCommandsOptions = {
@@ -20,6 +21,8 @@ export type DetailPageStepCommandsOptions = {
20
21
  currentForm?: UseFormReturn;
21
22
  };
22
23
  export type DetailPageCommandsOptions = DetailPageStandartCommandsOptions & DetailPageStepCommandsOptions;
24
+ export type CommandsProps = Partial<Record<keyof DetailPageCommandsFlag, ButtonProps>>;
25
+ export type CommandsPropsFn = (reason: NeedDataReason) => CommandsProps;
23
26
  export type DetailPageStandartCommandsEvents = {
24
27
  onSave?: () => void;
25
28
  onSaveCreate?: () => void;
@@ -38,7 +41,7 @@ export type DetailPageCommandsProps = DetailPageStandartCommandsEvents & DetailP
38
41
  options: DetailPageCommandsOptions;
39
42
  mode: 'standard' | 'steps';
40
43
  moreCommands?: Partial<Record<keyof DetailPageCommandsFlag, true>>;
41
- commandsProps?: Partial<Record<keyof DetailPageCommandsFlag, ButtonProps>>;
44
+ commandsProps?: CommandsProps;
42
45
  } & PropsWithChildren;
43
46
  declare function DetailPageCommands(props: DetailPageCommandsProps): import("react/jsx-runtime").JSX.Element;
44
47
  export default DetailPageCommands;
@@ -446,6 +446,7 @@ declare function useDetailPageModal<TModel extends FieldValues>({ models, unique
446
446
  readonly onTabChanged?: (selected: import('../../page/components/DefaultTabs').TabChangedPayload) => void;
447
447
  readonly onTabs?: (props: import('../../..').DefaultTabsProps) => import('react').ReactNode;
448
448
  readonly bordered?: boolean;
449
+ readonly reason?: NeedDataReason;
449
450
  readonly onDelete?: import('../pages/DetailPageData').DataEvent<TModel, import('../pages/DetailPageData').DeletePayload<TModel>> | undefined;
450
451
  readonly enableClose?: boolean;
451
452
  readonly enableCopy?: boolean;
@@ -453,9 +454,8 @@ declare function useDetailPageModal<TModel extends FieldValues>({ models, unique
453
454
  readonly enableDelete?: boolean;
454
455
  readonly enableDiscardChanges?: boolean;
455
456
  readonly enableSave?: boolean;
456
- readonly reason?: NeedDataReason;
457
457
  readonly activeSegmentIndex?: number;
458
- readonly commandsProps?: Partial<Record<keyof import('./useDetailPageStates').DetailPageCommandsFlag, import('@mui/material').ButtonProps>>;
458
+ readonly commandsProps?: import('../components/DetailPageCommands').CommandsPropsFn | Partial<Record<keyof import('./useDetailPageStates').DetailPageCommandsFlag, import('@mui/material').ButtonProps>> | undefined;
459
459
  readonly onCommands?: (props: import('../components/DetailPageCommands').DetailPageCommandsProps) => import('react').ReactNode;
460
460
  readonly onExtraCommands?: () => import('react').ReactNode;
461
461
  readonly alerts?: import('../../page/hooks/useNormalizeMessages').Message[];
@@ -5,7 +5,7 @@ import { Message } from '../../page/hooks/useNormalizeMessages';
5
5
  import { PageProps } from '../../page/Page';
6
6
  import { ServerError } from '../../utils';
7
7
  import { AutoSaveOptions } from '../components/AutoSave';
8
- import { DetailPageCommandsProps } from '../components/DetailPageCommands';
8
+ import { CommandsProps, CommandsPropsFn, DetailPageCommandsProps } from '../components/DetailPageCommands';
9
9
  import { DetailPageLayoutProps } from '../components/DetailPageDefaultLayout';
10
10
  import { DetailPageHeaderProps } from '../components/DetailPageHeader';
11
11
  import { DetailPageStepsHeaderProps, StepPane } from '../components/DetailPageStepsHeader';
@@ -17,7 +17,8 @@ export type DetailPageWrapperLayoutProps = {
17
17
  commandsContent: ReactNode;
18
18
  alertsContent: ReactNode;
19
19
  };
20
- export interface DetailPageContentProps<TModel extends FieldValues> extends Omit<PageProps, 'commandsContent' | 'alertsContent' | 'autoSave' | 'onHeader' | 'tabExtraContent'>, Pick<DetailPageCommandsProps, 'commandsProps'> {
20
+ export interface DetailPageContentProps<TModel extends FieldValues> extends Omit<PageProps, 'commandsContent' | 'alertsContent' | 'autoSave' | 'onHeader' | 'tabExtraContent'> {
21
+ commandsProps?: CommandsProps | CommandsPropsFn;
21
22
  /**
22
23
  * Custom commands node
23
24
  */
@@ -0,0 +1,8 @@
1
+ import { default as React, PropsWithChildren } from 'react';
2
+ export interface FormStatesProviderProps {
3
+ isTouched?: boolean;
4
+ setTouched?: (value: boolean) => void;
5
+ }
6
+ export declare const FormStatesContext: React.Context<FormStatesProviderProps>;
7
+ declare function FormStatesProvider({ children }: PropsWithChildren): import("react/jsx-runtime").JSX.Element;
8
+ export default FormStatesProvider;
@@ -12,4 +12,5 @@ export { default as useUniqueFieldsInArray } from './useUniqueFieldsInArray';
12
12
  export { default as useFormInitEffect } from './useFormInitEffect';
13
13
  export { default as useFieldWithContext } from './useFieldWithContext';
14
14
  export { default as useFormCollectionContext } from './useFormCollectionContext';
15
+ export { default as useFormStatesContext } from './useFormStatesContext';
15
16
  export { UNIQUE_IDENTIFIER_FIELD_NAME } from './useArrayFieldHelpers';
@@ -0,0 +1,3 @@
1
+ import { FormStatesProviderProps } from '../components/FormStatesProvider';
2
+ declare function useFormStatesContext(): Required<FormStatesProviderProps>;
3
+ export default useFormStatesContext;
@@ -4,10 +4,9 @@ export type MatchFields<TFilter extends FieldValues> = {
4
4
  [k in keyof TFilter]?: true;
5
5
  };
6
6
  type UseURLSearchFilterOptions<TFilter extends FieldValues> = {
7
- defaultValues?: Record<string, unknown>;
8
7
  matcher?: MatchFields<TFilter>;
9
8
  };
10
- declare function useURLSearchFilter<TFilter extends FieldValues>({ defaultValues, matcher, }: UseURLSearchFilterOptions<TFilter>): {
9
+ declare function useURLSearchFilter<TFilter extends FieldValues>({ matcher, }: UseURLSearchFilterOptions<TFilter>): {
11
10
  getFiltersInQS: () => {
12
11
  filter: {
13
12
  [key: string]: unknown;
@@ -3,6 +3,8 @@ import { z } from 'zod';
3
3
  import { UseFormReturn, ValidationOptions } from '../../form/hooks/useForm';
4
4
  import { DeepNullable } from '../../utils';
5
5
  import { ListPageFilterProps } from './ListPageFilter';
6
+ export type DefaultDataFn<TModel extends FieldValues> = (data?: TModel) => Promise<DeepNullable<TModel>>;
7
+ export type DefaultData<TModel extends FieldValues = FieldValues> = DeepNullable<TModel> | DefaultDataFn<TModel>;
6
8
  export interface ListPageFormProps<TModel extends FieldValues, TFilter extends FieldValues = FieldValues> extends Omit<ListPageFilterProps<TModel, TFilter>, 'form'> {
7
9
  form?: UseFormReturn<TFilter>;
8
10
  schema?: z.ZodType<TFilter>;
@@ -13,7 +15,7 @@ export interface ListPageFormProps<TModel extends FieldValues, TFilter extends F
13
15
  /**
14
16
  * Default form fields values
15
17
  */
16
- defaultValues?: DeepNullable<TFilter>;
18
+ defaultValues?: DefaultData<TFilter>;
17
19
  /**
18
20
  * Optional validation options
19
21
  */
@@ -8,5 +8,5 @@ export interface ListPageRouteProps<TModel extends FieldValues, TFilter extends
8
8
  /**
9
9
  * ListPage with routing based on react-router
10
10
  */
11
- declare function ListPageRoute<TModel extends FieldValues, TFilter extends FieldValues = FieldValues>({ defaultFilter, defaultMeta, enableNestedSegments, enableQueryStringFilter, enableSegmentRouting, fallbackSegmentIndex, onNeedData, tabs, defaultValues, onActionClick, ...listPageProps }: ListPageRouteProps<TModel, TFilter>): import("react/jsx-runtime").JSX.Element;
11
+ declare function ListPageRoute<TModel extends FieldValues, TFilter extends FieldValues = FieldValues>({ defaultFilter, defaultMeta, enableNestedSegments, enableQueryStringFilter, enableSegmentRouting, fallbackSegmentIndex, onNeedData, tabs, onActionClick, ...listPageProps }: ListPageRouteProps<TModel, TFilter>): import("react/jsx-runtime").JSX.Element;
12
12
  export default ListPageRoute;