@saas-ui/modals 2.0.0-next.8 → 2.0.0-rc.22
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/CHANGELOG.md +129 -0
- package/dist/index.d.ts +147 -57
- package/dist/index.js +139 -89
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +141 -93
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -4
- package/src/create-modals.tsx +30 -0
- package/src/default-modals.ts +14 -0
- package/src/drawer.tsx +47 -9
- package/src/form.tsx +166 -93
- package/src/index.ts +2 -0
- package/src/menu.tsx +7 -1
- package/src/modal.tsx +43 -8
- package/src/provider.tsx +65 -52
- package/src/types.ts +83 -0
- package/src/create-modals.ts +0 -0
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,114 @@
|
|
1
1
|
# @saas-ui/modals
|
2
2
|
|
3
|
+
## 2.0.0-rc.22
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- @saas-ui/forms@2.0.0-rc.22
|
8
|
+
|
9
|
+
## 2.0.0-next.21
|
10
|
+
|
11
|
+
### Patch Changes
|
12
|
+
|
13
|
+
- @saas-ui/forms@2.0.0-next.21
|
14
|
+
|
15
|
+
## 2.0.0-next.20
|
16
|
+
|
17
|
+
### Patch Changes
|
18
|
+
|
19
|
+
- Updated dependencies [a9ca90dd]
|
20
|
+
- @saas-ui/forms@2.0.0-next.20
|
21
|
+
|
22
|
+
## 2.0.0-next.19
|
23
|
+
|
24
|
+
### Patch Changes
|
25
|
+
|
26
|
+
- @saas-ui/forms@2.0.0-next.19
|
27
|
+
|
28
|
+
## 2.0.0-next.18
|
29
|
+
|
30
|
+
### Patch Changes
|
31
|
+
|
32
|
+
- Updated dependencies [01ac442f]
|
33
|
+
- @saas-ui/forms@2.0.0-next.18
|
34
|
+
|
35
|
+
## 2.0.0-next.17
|
36
|
+
|
37
|
+
### Patch Changes
|
38
|
+
|
39
|
+
- @saas-ui/forms@2.0.0-next.17
|
40
|
+
|
41
|
+
## 2.0.0-next.16
|
42
|
+
|
43
|
+
### Patch Changes
|
44
|
+
|
45
|
+
- cc713117: Fix issue where onCloseComplete would not be called
|
46
|
+
- @saas-ui/forms@2.0.0-next.16
|
47
|
+
|
48
|
+
## 2.0.0-next.15
|
49
|
+
|
50
|
+
### Minor Changes
|
51
|
+
|
52
|
+
- 2d18cdc2: New createFormDialog function to create Zod or Yup specific FormDialogs
|
53
|
+
|
54
|
+
### Patch Changes
|
55
|
+
|
56
|
+
- Updated dependencies [2d18cdc2]
|
57
|
+
- @saas-ui/forms@2.0.0-next.15
|
58
|
+
|
59
|
+
## 2.0.0-next.14
|
60
|
+
|
61
|
+
### Patch Changes
|
62
|
+
|
63
|
+
- Fix esm bundle import
|
64
|
+
- Updated dependencies
|
65
|
+
- @saas-ui/react-utils@2.0.0-next.3
|
66
|
+
- @saas-ui/forms@2.0.0-next.14
|
67
|
+
- @saas-ui/hooks@2.0.0-next.4
|
68
|
+
|
69
|
+
## 2.0.0-next.13
|
70
|
+
|
71
|
+
### Patch Changes
|
72
|
+
|
73
|
+
- 1563cc9a: BaseDrawer now accepts header, content and footer props.
|
74
|
+
- Bump version
|
75
|
+
- Updated dependencies
|
76
|
+
- Updated dependencies [6c63217c]
|
77
|
+
- @saas-ui/react-utils@2.0.0-next.2
|
78
|
+
- @saas-ui/forms@2.0.0-next.13
|
79
|
+
- @saas-ui/hooks@2.0.0-next.3
|
80
|
+
|
81
|
+
## 2.0.0-next.12
|
82
|
+
|
83
|
+
### Patch Changes
|
84
|
+
|
85
|
+
- Updated dependencies [a7ef6dd9]
|
86
|
+
- @saas-ui/forms@2.0.0-next.12
|
87
|
+
|
88
|
+
## 2.0.0-next.11
|
89
|
+
|
90
|
+
### Patch Changes
|
91
|
+
|
92
|
+
- @saas-ui/forms@2.0.0-next.11
|
93
|
+
|
94
|
+
## 2.0.0-next.10
|
95
|
+
|
96
|
+
### Patch Changes
|
97
|
+
|
98
|
+
- @saas-ui/forms@2.0.0-next.10
|
99
|
+
|
100
|
+
## 2.0.0-next.9
|
101
|
+
|
102
|
+
### Minor Changes
|
103
|
+
|
104
|
+
- 84e59fec: Added new createModals method to create typesafe modals managers with support for custom modals
|
105
|
+
- 1177329d: BaseModal now accepts header, content and footer props
|
106
|
+
|
107
|
+
### Patch Changes
|
108
|
+
|
109
|
+
- Updated dependencies [84e59fec]
|
110
|
+
- @saas-ui/forms@2.0.0-next.9
|
111
|
+
|
3
112
|
## 2.0.0-next.8
|
4
113
|
|
5
114
|
### Patch Changes
|
@@ -78,6 +187,26 @@
|
|
78
187
|
- @saas-ui/hooks@2.0.0-next.0
|
79
188
|
- @saas-ui/react-utils@2.0.0-next.0
|
80
189
|
|
190
|
+
## 1.5.7
|
191
|
+
|
192
|
+
### Patch Changes
|
193
|
+
|
194
|
+
- Fix types path
|
195
|
+
- Updated dependencies
|
196
|
+
- @saas-ui/button@1.4.2
|
197
|
+
- @saas-ui/forms@1.5.5
|
198
|
+
- @saas-ui/menu@1.4.3
|
199
|
+
|
200
|
+
## 1.5.6
|
201
|
+
|
202
|
+
### Patch Changes
|
203
|
+
|
204
|
+
- b2302a3: Add types to package.json exports
|
205
|
+
- Updated dependencies [b2302a3]
|
206
|
+
- @saas-ui/button@1.4.1
|
207
|
+
- @saas-ui/forms@1.5.4
|
208
|
+
- @saas-ui/menu@1.4.2
|
209
|
+
|
81
210
|
## 1.5.5
|
82
211
|
|
83
212
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
@@ -1,21 +1,28 @@
|
|
1
|
-
import * as React from 'react';
|
2
|
-
import { AlertDialogProps, ButtonProps, ButtonGroupProps, DrawerProps as DrawerProps$1, ModalProps, MenuListProps } from '@chakra-ui/react';
|
1
|
+
import * as React$1 from 'react';
|
2
|
+
import { AlertDialogProps, ButtonProps, ButtonGroupProps, DrawerProps as DrawerProps$1, ModalHeaderProps, ModalContentProps, ModalFooterProps, ModalProps, MenuListProps } from '@chakra-ui/react';
|
3
|
+
import { MaybeRenderProp } from '@chakra-ui/react-utils';
|
3
4
|
import * as _chakra_ui_system_dist_system_types from '@chakra-ui/system/dist/system.types';
|
4
|
-
import
|
5
|
+
import * as _saas_ui_forms from '@saas-ui/forms';
|
6
|
+
import { DefaultFieldOverrides, FieldValues, FieldProps, FormProps, FieldResolver, FormType, WithFields } from '@saas-ui/forms';
|
7
|
+
import { YupFormType, AnyObjectSchema } from '@saas-ui/forms/yup';
|
8
|
+
import { ZodFormType } from '@saas-ui/forms/zod';
|
9
|
+
import * as _chakra_ui_button_dist_button from '@chakra-ui/button/dist/button';
|
10
|
+
import { z } from 'zod';
|
11
|
+
import { InferType } from 'yup';
|
5
12
|
|
6
13
|
interface ConfirmDialogProps extends Omit<AlertDialogProps, 'leastDestructiveRef'> {
|
7
14
|
/**
|
8
15
|
* The dialog title
|
9
16
|
*/
|
10
|
-
title?: React.ReactNode;
|
17
|
+
title?: React$1.ReactNode;
|
11
18
|
/**
|
12
19
|
* The cancel button label
|
13
20
|
*/
|
14
|
-
cancelLabel?: React.ReactNode;
|
21
|
+
cancelLabel?: React$1.ReactNode;
|
15
22
|
/**
|
16
23
|
* The confirm button label
|
17
24
|
*/
|
18
|
-
confirmLabel?: React.ReactNode;
|
25
|
+
confirmLabel?: React$1.ReactNode;
|
19
26
|
/**
|
20
27
|
* The cancel button props
|
21
28
|
*/
|
@@ -52,13 +59,24 @@ interface ConfirmDialogProps extends Omit<AlertDialogProps, 'leastDestructiveRef
|
|
52
59
|
*/
|
53
60
|
onConfirm?: () => void;
|
54
61
|
}
|
55
|
-
declare const ConfirmDialog: React.FC<ConfirmDialogProps>;
|
62
|
+
declare const ConfirmDialog: React$1.FC<ConfirmDialogProps>;
|
56
63
|
|
57
64
|
interface BaseDrawerProps extends Omit<DrawerProps$1, 'children'> {
|
58
65
|
/**
|
59
66
|
* The drawer title
|
60
67
|
*/
|
61
|
-
title: React.ReactNode;
|
68
|
+
title: React$1.ReactNode;
|
69
|
+
/**
|
70
|
+
* The modal children
|
71
|
+
*/
|
72
|
+
children: MaybeRenderProp<{
|
73
|
+
isOpen: boolean;
|
74
|
+
onClose: () => void;
|
75
|
+
}>;
|
76
|
+
/**
|
77
|
+
* The modal footer
|
78
|
+
*/
|
79
|
+
footer?: React$1.ReactNode;
|
62
80
|
/**
|
63
81
|
* Hide the close button
|
64
82
|
*/
|
@@ -67,26 +85,44 @@ interface BaseDrawerProps extends Omit<DrawerProps$1, 'children'> {
|
|
67
85
|
* Hide the overflow
|
68
86
|
*/
|
69
87
|
hideOverlay?: boolean;
|
70
|
-
|
88
|
+
/**
|
89
|
+
* Props for the modal header
|
90
|
+
*/
|
91
|
+
headerProps?: ModalHeaderProps;
|
92
|
+
/**
|
93
|
+
* Props for the modal content
|
94
|
+
*/
|
95
|
+
contentProps?: ModalContentProps;
|
96
|
+
/**
|
97
|
+
* Props for the modal footer
|
98
|
+
*/
|
99
|
+
footerProps?: ModalFooterProps;
|
71
100
|
}
|
72
|
-
declare const BaseDrawer: React.FC<BaseDrawerProps>;
|
101
|
+
declare const BaseDrawer: React$1.FC<BaseDrawerProps>;
|
73
102
|
interface DrawerProps extends BaseDrawerProps {
|
74
103
|
/**
|
75
104
|
* Drawer footer content, wrapped with `DrawerFooter`
|
76
105
|
*/
|
77
|
-
footer?: React.ReactNode;
|
106
|
+
footer?: React$1.ReactNode;
|
78
107
|
}
|
79
|
-
declare const Drawer: React.FC<DrawerProps>;
|
108
|
+
declare const Drawer: React$1.FC<DrawerProps>;
|
80
109
|
|
81
|
-
interface BaseModalProps extends ModalProps {
|
110
|
+
interface BaseModalProps extends Omit<ModalProps, 'children'> {
|
82
111
|
/**
|
83
112
|
* The modal title
|
84
113
|
*/
|
85
|
-
title?: React.ReactNode;
|
114
|
+
title?: React$1.ReactNode;
|
115
|
+
/**
|
116
|
+
* The modal children
|
117
|
+
*/
|
118
|
+
children: MaybeRenderProp<{
|
119
|
+
isOpen: boolean;
|
120
|
+
onClose: () => void;
|
121
|
+
}>;
|
86
122
|
/**
|
87
123
|
* The modal footer
|
88
124
|
*/
|
89
|
-
footer?: React.ReactNode;
|
125
|
+
footer?: React$1.ReactNode;
|
90
126
|
/**
|
91
127
|
* Hide the close button
|
92
128
|
*/
|
@@ -95,77 +131,115 @@ interface BaseModalProps extends ModalProps {
|
|
95
131
|
* Hide the overlay
|
96
132
|
*/
|
97
133
|
hideOverlay?: boolean;
|
134
|
+
/**
|
135
|
+
* Props for the modal header
|
136
|
+
*/
|
137
|
+
headerProps?: ModalHeaderProps;
|
138
|
+
/**
|
139
|
+
* Props for the modal content
|
140
|
+
*/
|
141
|
+
contentProps?: ModalContentProps;
|
142
|
+
/**
|
143
|
+
* Props for the modal footer
|
144
|
+
*/
|
145
|
+
footerProps?: ModalFooterProps;
|
98
146
|
}
|
99
|
-
declare const BaseModal: React.FC<BaseModalProps>;
|
100
|
-
declare const Modal: React.FC<BaseModalProps>;
|
147
|
+
declare const BaseModal: React$1.FC<BaseModalProps>;
|
148
|
+
declare const Modal: React$1.FC<BaseModalProps>;
|
101
149
|
|
102
150
|
interface MenuDialogProps extends BaseModalProps {
|
103
151
|
/**
|
104
152
|
* The modal footer, wrapped with `ModalFooter`
|
105
153
|
*/
|
106
|
-
footer?: React.ReactNode;
|
154
|
+
footer?: React$1.ReactNode;
|
107
155
|
}
|
108
|
-
declare const MenuDialog: React.FC<MenuDialogProps>;
|
156
|
+
declare const MenuDialog: React$1.FC<MenuDialogProps>;
|
109
157
|
interface MenuDialogListProps extends Omit<BaseModalProps, 'isOpen' | 'onClose' | 'children' | 'scrollBehavior'>, Omit<MenuListProps, 'title'> {
|
110
158
|
}
|
111
159
|
declare const MenuDialogList: _chakra_ui_system_dist_system_types.ComponentWithAs<"div", MenuDialogListProps>;
|
112
160
|
|
113
|
-
|
161
|
+
type FormDialogFieldOverrides = DefaultFieldOverrides & {
|
162
|
+
cancel?: ButtonProps;
|
163
|
+
};
|
164
|
+
interface FormDialogProps<TSchema = any, TFieldValues extends FieldValues = FieldValues, TContext extends object = object, TFieldTypes = FieldProps<TFieldValues>> extends Omit<BaseModalProps, 'children'>, Pick<FormProps<TSchema, TFieldValues, TContext, TFieldTypes>, 'schema' | 'defaultValues' | 'values' | 'context' | 'onChange' | 'onSubmit' | 'onError' | 'resolver' | 'mode' | 'reValidateMode' | 'shouldFocusError' | 'shouldUnregister' | 'shouldUseNativeValidation' | 'criteriaMode' | 'delayError' | 'resetOptions' | 'children'> {
|
114
165
|
/**
|
115
166
|
* The modal footer, will be wrapped with `ModalFooter`.
|
116
167
|
* Defaults to a cancel and submit button.
|
117
168
|
*/
|
118
|
-
footer?: React.ReactNode;
|
119
|
-
/**
|
120
|
-
* The cancel button label
|
121
|
-
* @default "Cancel"
|
122
|
-
*/
|
123
|
-
cancelLabel?: React.ReactNode;
|
124
|
-
/**
|
125
|
-
* The submit button label
|
126
|
-
* @default "Submit"
|
127
|
-
*/
|
128
|
-
submitLabel?: React.ReactNode;
|
129
|
-
/**
|
130
|
-
* If no children are passed, this will auto render fields based on the supplied schema.
|
131
|
-
*/
|
132
|
-
children?: React.ReactNode;
|
169
|
+
footer?: React$1.ReactNode;
|
133
170
|
/**
|
134
171
|
* A schema field resolver used to auto generate form fields.
|
135
172
|
*/
|
136
173
|
fieldResolver?: FieldResolver;
|
174
|
+
/**
|
175
|
+
* Field overrides
|
176
|
+
*/
|
177
|
+
fields?: FormDialogFieldOverrides;
|
137
178
|
}
|
179
|
+
/**
|
180
|
+
* @todo make this dynamic to support other schema types
|
181
|
+
*/
|
182
|
+
type MergeDialogProps<T> = T extends YupFormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides, 'yup'> ? YupFormType<FieldDefs, ExtraProps & Omit<BaseModalProps, 'children'>, ExtraOverrides & FormDialogFieldOverrides> : T extends ZodFormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides, 'zod'> ? ZodFormType<FieldDefs, ExtraProps & Omit<BaseModalProps, 'children'>, ExtraOverrides & FormDialogFieldOverrides> : T extends FormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides> ? FormType<FieldDefs, ExtraProps & Omit<BaseModalProps, 'children'>, ExtraOverrides & FormDialogFieldOverrides> : never;
|
183
|
+
type DefaultFormType<FieldDefs = any, ExtraProps = object, ExtraOverrides = FormDialogFieldOverrides> = (<TSchema = unknown, TFieldValues extends Record<string, any> = any, TContext extends object = object>(props: any) => React$1.ReactElement) & {
|
184
|
+
displayName?: string;
|
185
|
+
id?: string;
|
186
|
+
};
|
187
|
+
declare function createFormDialog<FieldDefs = any, ExtraProps = object, ExtraOverrides = FormDialogFieldOverrides, TFormType extends DefaultFormType<FieldDefs, ExtraProps, ExtraOverrides> = DefaultFormType<FieldDefs, ExtraProps, ExtraOverrides>>(Form: TFormType): MergeDialogProps<TFormType>;
|
138
188
|
/**
|
139
189
|
* Can be used to quickly request information from people without leaving the current page.
|
140
190
|
*
|
141
191
|
* @see Docs https://saas-ui.dev/docs/components/overlay/form-dialog
|
142
192
|
*/
|
143
|
-
declare const FormDialog: <
|
144
|
-
|
145
|
-
}
|
193
|
+
declare const FormDialog: FormType<unknown, object & Omit<BaseModalProps, "children">, object & DefaultFieldOverrides & {
|
194
|
+
cancel?: ButtonProps | undefined;
|
195
|
+
}>;
|
196
|
+
|
197
|
+
type FormDialogHandler<T> = T extends YupFormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides, 'yup'> ? YupHandler<FieldDefs, object, ExtraOverrides & FormDialogFieldOverrides> : T extends ZodFormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides, 'zod'> ? ZodHandler<FieldDefs, object, ExtraOverrides & FormDialogFieldOverrides> : T extends FormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides> ? FormHandler<FieldDefs, object, ExtraOverrides & FormDialogFieldOverrides> : never;
|
198
|
+
type ZodHandler<FieldDefs, ExtraProps = object, ExtraOverrides = object, Type extends 'zod' = 'zod'> = <TSchema extends z.AnyZodObject = z.AnyZodObject, TFieldValues extends z.infer<TSchema> = z.infer<TSchema>, TContext extends object = object>(props: WithFields<FormProps<TSchema, TFieldValues, TContext>, FieldDefs, ExtraOverrides> & {
|
199
|
+
ref?: React.ForwardedRef<HTMLFormElement>;
|
200
|
+
} & ExtraProps) => ModalId;
|
201
|
+
type FormHandler<FieldDefs, ExtraProps = object, ExtraOverrides = object> = <TSchema = unknown, TFieldValues extends FieldValues = FieldValues, TContext extends object = object>(props: WithFields<FormProps<TSchema, TFieldValues, TContext>, FieldDefs, ExtraOverrides> & {
|
202
|
+
ref?: React.ForwardedRef<HTMLFormElement>;
|
203
|
+
} & ExtraProps) => ModalId;
|
204
|
+
type YupHandler<FieldDefs, ExtraProps = object, ExtraOverrides = object, Type extends 'yup' = 'yup'> = <TSchema extends AnyObjectSchema = AnyObjectSchema, TFieldValues extends InferType<TSchema> = InferType<TSchema>, // placeholder
|
205
|
+
TContext extends object = object>(props: WithFields<FormProps<TFieldValues, TContext, TSchema>, FieldDefs, ExtraOverrides> & {
|
206
|
+
ref?: React.ForwardedRef<HTMLFormElement>;
|
207
|
+
} & ExtraProps) => ModalId;
|
146
208
|
|
147
|
-
interface ModalsContextValue {
|
148
|
-
open: (
|
209
|
+
interface ModalsContextValue<TModals extends Record<string, React$1.FC<any>> = Record<string, React$1.FC<any>>, TTypes extends Extract<keyof TModals, string> = Extract<keyof TModals, string>> {
|
210
|
+
open: <T extends OpenOptions<TTypes>>(componentOrOptions: T extends {
|
211
|
+
component: infer TComponent extends React$1.FC<any>;
|
212
|
+
} ? WithModalOptions<React$1.ComponentPropsWithRef<TComponent>> : T extends {
|
213
|
+
type: infer TType extends keyof TModals;
|
214
|
+
} ? WithModalOptions<React$1.ComponentPropsWithRef<TModals[TType]>> : T, options?: T extends React$1.FC<any> ? WithModalOptions<React$1.ComponentPropsWithRef<T>> : never) => ModalId;
|
149
215
|
drawer: (options: DrawerOptions) => ModalId;
|
150
216
|
alert: (options: ConfirmDialogOptions) => ModalId;
|
151
217
|
confirm: (options: ConfirmDialogOptions) => ModalId;
|
152
218
|
menu: (options: MenuDialogOptions) => ModalId;
|
153
|
-
form:
|
219
|
+
form: FormDialogHandler<TModals['form']>;
|
154
220
|
close: (id: ModalId) => void;
|
155
221
|
closeAll: () => void;
|
156
222
|
}
|
157
|
-
declare const ModalsContext: React.Context<ModalsContextValue
|
158
|
-
|
159
|
-
|
160
|
-
|
223
|
+
declare const ModalsContext: React$1.Context<ModalsContextValue<{
|
224
|
+
alert: React$1.FC<ConfirmDialogProps>;
|
225
|
+
confirm: React$1.FC<ConfirmDialogProps>;
|
226
|
+
drawer: React$1.FC<DrawerProps>;
|
227
|
+
modal: React$1.FC<BaseModalProps>;
|
228
|
+
menu: React$1.FC<MenuDialogProps>;
|
229
|
+
form: FormType<unknown, object & Omit<BaseModalProps, "children">, object & _saas_ui_forms.DefaultFieldOverrides & {
|
230
|
+
cancel?: _chakra_ui_button_dist_button.ButtonProps | undefined;
|
231
|
+
}>;
|
232
|
+
}, "confirm" | "form" | "menu" | "alert" | "modal" | "drawer"> | null>;
|
233
|
+
interface ModalsProviderProps<TModals extends Record<string, React$1.FC<any>> = Record<string, React$1.FC<any>>> {
|
234
|
+
children: React$1.ReactNode;
|
235
|
+
modals?: TModals;
|
161
236
|
}
|
162
237
|
type ModalId = string | number;
|
163
|
-
|
238
|
+
type WithModalOptions<T> = Omit<T, 'isOpen' | 'onClose'> & ModalOptions;
|
239
|
+
interface ModalOptions extends Omit<BaseModalProps, 'isOpen' | 'onClose' | 'children'> {
|
164
240
|
onClose?: (args: {
|
165
241
|
force?: boolean;
|
166
242
|
}) => Promise<boolean | undefined> | void;
|
167
|
-
body?: React.ReactNode;
|
168
|
-
children?: React.ReactNode;
|
169
243
|
[key: string]: any;
|
170
244
|
}
|
171
245
|
interface DrawerOptions extends ModalOptions, Omit<DrawerProps, 'onClose' | 'isOpen' | 'children' | 'title' | 'size'> {
|
@@ -176,13 +250,12 @@ interface MenuDialogOptions extends ModalOptions, Omit<MenuDialogProps, 'onClose
|
|
176
250
|
}
|
177
251
|
interface FormDialogOptions extends ModalOptions, Omit<FormDialogProps, 'onClose' | 'isOpen' | 'children'> {
|
178
252
|
}
|
179
|
-
interface OpenOptions extends ModalOptions {
|
180
|
-
type?:
|
253
|
+
interface OpenOptions<TModalTypes extends string> extends ModalOptions {
|
254
|
+
type?: TModalTypes;
|
181
255
|
scope?: ModalScopes;
|
182
256
|
}
|
183
257
|
type ModalScopes = 'modal' | 'alert';
|
184
|
-
|
185
|
-
interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions> {
|
258
|
+
interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions, TModalTypes extends string = string> {
|
186
259
|
/**
|
187
260
|
* The modal id, autogenerated when not set.
|
188
261
|
* Can be used to close modals.
|
@@ -204,12 +277,12 @@ interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions> {
|
|
204
277
|
*
|
205
278
|
* Custom types can be configured using the `modals` prop of `ModalProvider`
|
206
279
|
*/
|
207
|
-
type?:
|
280
|
+
type?: TModalTypes;
|
208
281
|
/**
|
209
282
|
* Render a custom modal component.
|
210
283
|
* This will ignore the `type` param.
|
211
284
|
*/
|
212
|
-
component?: React.FC<BaseModalProps>;
|
285
|
+
component?: React$1.FC<BaseModalProps>;
|
213
286
|
/**
|
214
287
|
* Whether the modal is open or not.
|
215
288
|
* This is used internally to keep track of the modal state.
|
@@ -217,7 +290,24 @@ interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions> {
|
|
217
290
|
isOpen?: boolean;
|
218
291
|
}
|
219
292
|
declare function ModalsProvider({ children, modals }: ModalsProviderProps): JSX.Element;
|
220
|
-
declare const useModalsContext: () => ModalsContextValue
|
221
|
-
declare const useModals: () => ModalsContextValue
|
293
|
+
declare const useModalsContext: () => ModalsContextValue<Record<string, React$1.FC<any>>, string>;
|
294
|
+
declare const useModals: () => ModalsContextValue<Record<string, React$1.FC<any>>, string>;
|
295
|
+
|
296
|
+
interface CreateModalsOptions<TModalDefs extends Record<string, React.FC<any>>> {
|
297
|
+
modals: TModalDefs;
|
298
|
+
}
|
299
|
+
declare const createModals: <TModalDefs extends Record<string, React$1.FC<any>>>(options: CreateModalsOptions<TModalDefs>) => {
|
300
|
+
ModalsProvider: (props: Omit<ModalsProviderProps, 'modals'>) => JSX.Element;
|
301
|
+
useModals: () => ModalsContextValue<{
|
302
|
+
alert: React$1.FC<ConfirmDialogProps>;
|
303
|
+
confirm: React$1.FC<ConfirmDialogProps>;
|
304
|
+
drawer: React$1.FC<DrawerProps>;
|
305
|
+
modal: React$1.FC<BaseModalProps>;
|
306
|
+
menu: React$1.FC<MenuDialogProps>;
|
307
|
+
form: _saas_ui_forms.FormType<unknown, object & Omit<BaseModalProps, "children">, object & _saas_ui_forms.DefaultFieldOverrides & {
|
308
|
+
cancel?: _chakra_ui_button_dist_button.ButtonProps | undefined;
|
309
|
+
}>;
|
310
|
+
} & TModalDefs, "confirm" | "form" | "menu" | "alert" | "modal" | "drawer" | Extract<keyof TModalDefs, string>>;
|
311
|
+
};
|
222
312
|
|
223
|
-
export { BaseDrawer, BaseDrawerProps, BaseModal, BaseModalProps, ConfirmDialog, ConfirmDialogOptions, ConfirmDialogProps, Drawer, DrawerOptions, DrawerProps, FormDialog, FormDialogOptions, FormDialogProps, MenuDialog, MenuDialogList, MenuDialogListProps, MenuDialogOptions, MenuDialogProps, Modal, ModalConfig, ModalId, ModalScopes,
|
313
|
+
export { BaseDrawer, BaseDrawerProps, BaseModal, BaseModalProps, ConfirmDialog, ConfirmDialogOptions, ConfirmDialogProps, CreateModalsOptions, DefaultFormType, Drawer, DrawerOptions, DrawerProps, FormDialog, FormDialogFieldOverrides, FormDialogOptions, FormDialogProps, MenuDialog, MenuDialogList, MenuDialogListProps, MenuDialogOptions, MenuDialogProps, Modal, ModalConfig, ModalId, ModalScopes, ModalsContext, ModalsContextValue, ModalsProvider, ModalsProviderProps, OpenOptions, createFormDialog, createModals, useModals, useModalsContext };
|