@saas-ui/modals 2.0.0-next.2 → 2.0.0-next.20
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 +169 -0
- package/dist/index.d.ts +152 -57
- package/dist/index.js +262 -166
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +261 -168
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -5
- package/src/create-modals.tsx +30 -0
- package/src/default-modals.ts +14 -0
- package/src/drawer.tsx +47 -9
- package/src/form.tsx +168 -91
- package/src/index.ts +2 -0
- package/src/menu.tsx +12 -1
- package/src/modal.tsx +43 -8
- package/src/provider.tsx +65 -52
- package/src/types.ts +83 -0
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,147 @@
|
|
1
1
|
# @saas-ui/modals
|
2
2
|
|
3
|
+
## 2.0.0-next.20
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- Updated dependencies [a9ca90dd]
|
8
|
+
- @saas-ui/forms@2.0.0-next.20
|
9
|
+
|
10
|
+
## 2.0.0-next.19
|
11
|
+
|
12
|
+
### Patch Changes
|
13
|
+
|
14
|
+
- @saas-ui/forms@2.0.0-next.19
|
15
|
+
|
16
|
+
## 2.0.0-next.18
|
17
|
+
|
18
|
+
### Patch Changes
|
19
|
+
|
20
|
+
- Updated dependencies [01ac442f]
|
21
|
+
- @saas-ui/forms@2.0.0-next.18
|
22
|
+
|
23
|
+
## 2.0.0-next.17
|
24
|
+
|
25
|
+
### Patch Changes
|
26
|
+
|
27
|
+
- @saas-ui/forms@2.0.0-next.17
|
28
|
+
|
29
|
+
## 2.0.0-next.16
|
30
|
+
|
31
|
+
### Patch Changes
|
32
|
+
|
33
|
+
- cc713117: Fix issue where onCloseComplete would not be called
|
34
|
+
- @saas-ui/forms@2.0.0-next.16
|
35
|
+
|
36
|
+
## 2.0.0-next.15
|
37
|
+
|
38
|
+
### Minor Changes
|
39
|
+
|
40
|
+
- 2d18cdc2: New createFormDialog function to create Zod or Yup specific FormDialogs
|
41
|
+
|
42
|
+
### Patch Changes
|
43
|
+
|
44
|
+
- Updated dependencies [2d18cdc2]
|
45
|
+
- @saas-ui/forms@2.0.0-next.15
|
46
|
+
|
47
|
+
## 2.0.0-next.14
|
48
|
+
|
49
|
+
### Patch Changes
|
50
|
+
|
51
|
+
- Fix esm bundle import
|
52
|
+
- Updated dependencies
|
53
|
+
- @saas-ui/react-utils@2.0.0-next.3
|
54
|
+
- @saas-ui/forms@2.0.0-next.14
|
55
|
+
- @saas-ui/hooks@2.0.0-next.4
|
56
|
+
|
57
|
+
## 2.0.0-next.13
|
58
|
+
|
59
|
+
### Patch Changes
|
60
|
+
|
61
|
+
- 1563cc9a: BaseDrawer now accepts header, content and footer props.
|
62
|
+
- Bump version
|
63
|
+
- Updated dependencies
|
64
|
+
- Updated dependencies [6c63217c]
|
65
|
+
- @saas-ui/react-utils@2.0.0-next.2
|
66
|
+
- @saas-ui/forms@2.0.0-next.13
|
67
|
+
- @saas-ui/hooks@2.0.0-next.3
|
68
|
+
|
69
|
+
## 2.0.0-next.12
|
70
|
+
|
71
|
+
### Patch Changes
|
72
|
+
|
73
|
+
- Updated dependencies [a7ef6dd9]
|
74
|
+
- @saas-ui/forms@2.0.0-next.12
|
75
|
+
|
76
|
+
## 2.0.0-next.11
|
77
|
+
|
78
|
+
### Patch Changes
|
79
|
+
|
80
|
+
- @saas-ui/forms@2.0.0-next.11
|
81
|
+
|
82
|
+
## 2.0.0-next.10
|
83
|
+
|
84
|
+
### Patch Changes
|
85
|
+
|
86
|
+
- @saas-ui/forms@2.0.0-next.10
|
87
|
+
|
88
|
+
## 2.0.0-next.9
|
89
|
+
|
90
|
+
### Minor Changes
|
91
|
+
|
92
|
+
- 84e59fec: Added new createModals method to create typesafe modals managers with support for custom modals
|
93
|
+
- 1177329d: BaseModal now accepts header, content and footer props
|
94
|
+
|
95
|
+
### Patch Changes
|
96
|
+
|
97
|
+
- Updated dependencies [84e59fec]
|
98
|
+
- @saas-ui/forms@2.0.0-next.9
|
99
|
+
|
100
|
+
## 2.0.0-next.8
|
101
|
+
|
102
|
+
### Patch Changes
|
103
|
+
|
104
|
+
- Updated dependencies [6d3f5717]
|
105
|
+
- @saas-ui/forms@2.0.0-next.8
|
106
|
+
|
107
|
+
## 2.0.0-next.7
|
108
|
+
|
109
|
+
### Patch Changes
|
110
|
+
|
111
|
+
- @saas-ui/forms@2.0.0-next.7
|
112
|
+
|
113
|
+
## 2.0.0-next.6
|
114
|
+
|
115
|
+
### Patch Changes
|
116
|
+
|
117
|
+
- Updated dependencies [532011d6]
|
118
|
+
- Updated dependencies [532011d6]
|
119
|
+
- Updated dependencies [6dd737ce]
|
120
|
+
- Updated dependencies [c85541cb]
|
121
|
+
- Updated dependencies [39e778d8]
|
122
|
+
- @saas-ui/forms@2.0.0-next.6
|
123
|
+
|
124
|
+
## 2.0.0-next.5
|
125
|
+
|
126
|
+
### Patch Changes
|
127
|
+
|
128
|
+
- Updated dependencies [a8ea24da]
|
129
|
+
- @saas-ui/forms@2.0.0-next.5
|
130
|
+
|
131
|
+
## 2.0.0-next.4
|
132
|
+
|
133
|
+
### Patch Changes
|
134
|
+
|
135
|
+
- Updated dependencies [27a68bca]
|
136
|
+
- @saas-ui/hooks@2.0.0-next.2
|
137
|
+
- @saas-ui/forms@2.0.0-next.4
|
138
|
+
|
139
|
+
## 2.0.0-next.3
|
140
|
+
|
141
|
+
### Patch Changes
|
142
|
+
|
143
|
+
- @saas-ui/forms@2.0.0-next.3
|
144
|
+
|
3
145
|
## 2.0.0-next.2
|
4
146
|
|
5
147
|
### Patch Changes
|
@@ -33,6 +175,33 @@
|
|
33
175
|
- @saas-ui/hooks@2.0.0-next.0
|
34
176
|
- @saas-ui/react-utils@2.0.0-next.0
|
35
177
|
|
178
|
+
## 1.5.7
|
179
|
+
|
180
|
+
### Patch Changes
|
181
|
+
|
182
|
+
- Fix types path
|
183
|
+
- Updated dependencies
|
184
|
+
- @saas-ui/button@1.4.2
|
185
|
+
- @saas-ui/forms@1.5.5
|
186
|
+
- @saas-ui/menu@1.4.3
|
187
|
+
|
188
|
+
## 1.5.6
|
189
|
+
|
190
|
+
### Patch Changes
|
191
|
+
|
192
|
+
- b2302a3: Add types to package.json exports
|
193
|
+
- Updated dependencies [b2302a3]
|
194
|
+
- @saas-ui/button@1.4.1
|
195
|
+
- @saas-ui/forms@1.5.4
|
196
|
+
- @saas-ui/menu@1.4.2
|
197
|
+
|
198
|
+
## 1.5.5
|
199
|
+
|
200
|
+
### Patch Changes
|
201
|
+
|
202
|
+
- Updated dependencies [382e095]
|
203
|
+
- @saas-ui/forms@1.5.3
|
204
|
+
|
36
205
|
## 1.5.4
|
37
206
|
|
38
207
|
### 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,72 +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
|
}
|
138
|
-
|
139
|
-
|
140
|
-
|
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>;
|
188
|
+
/**
|
189
|
+
* Can be used to quickly request information from people without leaving the current page.
|
190
|
+
*
|
191
|
+
* @see Docs https://saas-ui.dev/docs/components/overlay/form-dialog
|
192
|
+
*/
|
193
|
+
declare const FormDialog: FormType<unknown, object & Omit<BaseModalProps, "children">, object & DefaultFieldOverrides & {
|
194
|
+
cancel?: ButtonProps | undefined;
|
195
|
+
}>;
|
141
196
|
|
142
|
-
|
143
|
-
|
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;
|
208
|
+
|
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;
|
144
215
|
drawer: (options: DrawerOptions) => ModalId;
|
145
216
|
alert: (options: ConfirmDialogOptions) => ModalId;
|
146
217
|
confirm: (options: ConfirmDialogOptions) => ModalId;
|
147
218
|
menu: (options: MenuDialogOptions) => ModalId;
|
148
|
-
form:
|
219
|
+
form: FormDialogHandler<TModals['form']>;
|
149
220
|
close: (id: ModalId) => void;
|
150
221
|
closeAll: () => void;
|
151
222
|
}
|
152
|
-
declare const ModalsContext: React.Context<ModalsContextValue
|
153
|
-
|
154
|
-
|
155
|
-
|
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;
|
156
236
|
}
|
157
237
|
type ModalId = string | number;
|
158
|
-
|
238
|
+
type WithModalOptions<T> = Omit<T, 'isOpen' | 'onClose'> & ModalOptions;
|
239
|
+
interface ModalOptions extends Omit<BaseModalProps, 'isOpen' | 'onClose' | 'children'> {
|
159
240
|
onClose?: (args: {
|
160
241
|
force?: boolean;
|
161
242
|
}) => Promise<boolean | undefined> | void;
|
162
|
-
body?: React.ReactNode;
|
163
|
-
children?: React.ReactNode;
|
164
243
|
[key: string]: any;
|
165
244
|
}
|
166
245
|
interface DrawerOptions extends ModalOptions, Omit<DrawerProps, 'onClose' | 'isOpen' | 'children' | 'title' | 'size'> {
|
@@ -171,13 +250,12 @@ interface MenuDialogOptions extends ModalOptions, Omit<MenuDialogProps, 'onClose
|
|
171
250
|
}
|
172
251
|
interface FormDialogOptions extends ModalOptions, Omit<FormDialogProps, 'onClose' | 'isOpen' | 'children'> {
|
173
252
|
}
|
174
|
-
interface OpenOptions extends ModalOptions {
|
175
|
-
type?:
|
253
|
+
interface OpenOptions<TModalTypes extends string> extends ModalOptions {
|
254
|
+
type?: TModalTypes;
|
176
255
|
scope?: ModalScopes;
|
177
256
|
}
|
178
257
|
type ModalScopes = 'modal' | 'alert';
|
179
|
-
|
180
|
-
interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions> {
|
258
|
+
interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions, TModalTypes extends string = string> {
|
181
259
|
/**
|
182
260
|
* The modal id, autogenerated when not set.
|
183
261
|
* Can be used to close modals.
|
@@ -199,12 +277,12 @@ interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions> {
|
|
199
277
|
*
|
200
278
|
* Custom types can be configured using the `modals` prop of `ModalProvider`
|
201
279
|
*/
|
202
|
-
type?:
|
280
|
+
type?: TModalTypes;
|
203
281
|
/**
|
204
282
|
* Render a custom modal component.
|
205
283
|
* This will ignore the `type` param.
|
206
284
|
*/
|
207
|
-
component?: React.FC<BaseModalProps>;
|
285
|
+
component?: React$1.FC<BaseModalProps>;
|
208
286
|
/**
|
209
287
|
* Whether the modal is open or not.
|
210
288
|
* This is used internally to keep track of the modal state.
|
@@ -212,7 +290,24 @@ interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions> {
|
|
212
290
|
isOpen?: boolean;
|
213
291
|
}
|
214
292
|
declare function ModalsProvider({ children, modals }: ModalsProviderProps): JSX.Element;
|
215
|
-
declare const useModalsContext: () => ModalsContextValue
|
216
|
-
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
|
+
};
|
217
312
|
|
218
|
-
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 };
|