@saas-ui/modals 2.0.0-next.9 → 2.0.0-rc.23
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 +127 -0
- package/dist/index.d.ts +108 -64
- package/dist/index.js +88 -69
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +94 -76
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -5
- package/src/create-modals.tsx +3 -7
- package/src/drawer.tsx +47 -9
- package/src/form.tsx +161 -89
- package/src/provider.tsx +10 -10
- package/src/types.ts +83 -0
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,112 @@
|
|
1
1
|
# @saas-ui/modals
|
2
2
|
|
3
|
+
## 2.0.0-rc.23
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- Bump version
|
8
|
+
- Updated dependencies
|
9
|
+
- @saas-ui/react-utils@2.0.0-rc.4
|
10
|
+
- @saas-ui/forms@2.0.0-rc.23
|
11
|
+
- @saas-ui/hooks@2.0.0-rc.5
|
12
|
+
|
13
|
+
## 2.0.0-rc.22
|
14
|
+
|
15
|
+
### Patch Changes
|
16
|
+
|
17
|
+
- @saas-ui/forms@2.0.0-rc.22
|
18
|
+
|
19
|
+
## 2.0.0-next.21
|
20
|
+
|
21
|
+
### Patch Changes
|
22
|
+
|
23
|
+
- @saas-ui/forms@2.0.0-next.21
|
24
|
+
|
25
|
+
## 2.0.0-next.20
|
26
|
+
|
27
|
+
### Patch Changes
|
28
|
+
|
29
|
+
- Updated dependencies [a9ca90dd]
|
30
|
+
- @saas-ui/forms@2.0.0-next.20
|
31
|
+
|
32
|
+
## 2.0.0-next.19
|
33
|
+
|
34
|
+
### Patch Changes
|
35
|
+
|
36
|
+
- @saas-ui/forms@2.0.0-next.19
|
37
|
+
|
38
|
+
## 2.0.0-next.18
|
39
|
+
|
40
|
+
### Patch Changes
|
41
|
+
|
42
|
+
- Updated dependencies [01ac442f]
|
43
|
+
- @saas-ui/forms@2.0.0-next.18
|
44
|
+
|
45
|
+
## 2.0.0-next.17
|
46
|
+
|
47
|
+
### Patch Changes
|
48
|
+
|
49
|
+
- @saas-ui/forms@2.0.0-next.17
|
50
|
+
|
51
|
+
## 2.0.0-next.16
|
52
|
+
|
53
|
+
### Patch Changes
|
54
|
+
|
55
|
+
- cc713117: Fix issue where onCloseComplete would not be called
|
56
|
+
- @saas-ui/forms@2.0.0-next.16
|
57
|
+
|
58
|
+
## 2.0.0-next.15
|
59
|
+
|
60
|
+
### Minor Changes
|
61
|
+
|
62
|
+
- 2d18cdc2: New createFormDialog function to create Zod or Yup specific FormDialogs
|
63
|
+
|
64
|
+
### Patch Changes
|
65
|
+
|
66
|
+
- Updated dependencies [2d18cdc2]
|
67
|
+
- @saas-ui/forms@2.0.0-next.15
|
68
|
+
|
69
|
+
## 2.0.0-next.14
|
70
|
+
|
71
|
+
### Patch Changes
|
72
|
+
|
73
|
+
- Fix esm bundle import
|
74
|
+
- Updated dependencies
|
75
|
+
- @saas-ui/react-utils@2.0.0-next.3
|
76
|
+
- @saas-ui/forms@2.0.0-next.14
|
77
|
+
- @saas-ui/hooks@2.0.0-next.4
|
78
|
+
|
79
|
+
## 2.0.0-next.13
|
80
|
+
|
81
|
+
### Patch Changes
|
82
|
+
|
83
|
+
- 1563cc9a: BaseDrawer now accepts header, content and footer props.
|
84
|
+
- Bump version
|
85
|
+
- Updated dependencies
|
86
|
+
- Updated dependencies [6c63217c]
|
87
|
+
- @saas-ui/react-utils@2.0.0-next.2
|
88
|
+
- @saas-ui/forms@2.0.0-next.13
|
89
|
+
- @saas-ui/hooks@2.0.0-next.3
|
90
|
+
|
91
|
+
## 2.0.0-next.12
|
92
|
+
|
93
|
+
### Patch Changes
|
94
|
+
|
95
|
+
- Updated dependencies [a7ef6dd9]
|
96
|
+
- @saas-ui/forms@2.0.0-next.12
|
97
|
+
|
98
|
+
## 2.0.0-next.11
|
99
|
+
|
100
|
+
### Patch Changes
|
101
|
+
|
102
|
+
- @saas-ui/forms@2.0.0-next.11
|
103
|
+
|
104
|
+
## 2.0.0-next.10
|
105
|
+
|
106
|
+
### Patch Changes
|
107
|
+
|
108
|
+
- @saas-ui/forms@2.0.0-next.10
|
109
|
+
|
3
110
|
## 2.0.0-next.9
|
4
111
|
|
5
112
|
### Minor Changes
|
@@ -90,6 +197,26 @@
|
|
90
197
|
- @saas-ui/hooks@2.0.0-next.0
|
91
198
|
- @saas-ui/react-utils@2.0.0-next.0
|
92
199
|
|
200
|
+
## 1.5.7
|
201
|
+
|
202
|
+
### Patch Changes
|
203
|
+
|
204
|
+
- Fix types path
|
205
|
+
- Updated dependencies
|
206
|
+
- @saas-ui/button@1.4.2
|
207
|
+
- @saas-ui/forms@1.5.5
|
208
|
+
- @saas-ui/menu@1.4.3
|
209
|
+
|
210
|
+
## 1.5.6
|
211
|
+
|
212
|
+
### Patch Changes
|
213
|
+
|
214
|
+
- b2302a3: Add types to package.json exports
|
215
|
+
- Updated dependencies [b2302a3]
|
216
|
+
- @saas-ui/button@1.4.1
|
217
|
+
- @saas-ui/forms@1.5.4
|
218
|
+
- @saas-ui/menu@1.4.2
|
219
|
+
|
93
220
|
## 1.5.5
|
94
221
|
|
95
222
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
@@ -1,24 +1,28 @@
|
|
1
|
-
import * as React from 'react';
|
2
|
-
import { AlertDialogProps, ButtonProps, ButtonGroupProps, DrawerProps as DrawerProps$1,
|
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
3
|
import { MaybeRenderProp } from '@chakra-ui/react-utils';
|
4
4
|
import * as _chakra_ui_system_dist_system_types from '@chakra-ui/system/dist/system.types';
|
5
5
|
import * as _saas_ui_forms from '@saas-ui/forms';
|
6
|
-
import { FieldValues, FieldProps, FormProps, FieldResolver } from '@saas-ui/forms';
|
7
|
-
import
|
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';
|
8
12
|
|
9
13
|
interface ConfirmDialogProps extends Omit<AlertDialogProps, 'leastDestructiveRef'> {
|
10
14
|
/**
|
11
15
|
* The dialog title
|
12
16
|
*/
|
13
|
-
title?: React.ReactNode;
|
17
|
+
title?: React$1.ReactNode;
|
14
18
|
/**
|
15
19
|
* The cancel button label
|
16
20
|
*/
|
17
|
-
cancelLabel?: React.ReactNode;
|
21
|
+
cancelLabel?: React$1.ReactNode;
|
18
22
|
/**
|
19
23
|
* The confirm button label
|
20
24
|
*/
|
21
|
-
confirmLabel?: React.ReactNode;
|
25
|
+
confirmLabel?: React$1.ReactNode;
|
22
26
|
/**
|
23
27
|
* The cancel button props
|
24
28
|
*/
|
@@ -55,13 +59,24 @@ interface ConfirmDialogProps extends Omit<AlertDialogProps, 'leastDestructiveRef
|
|
55
59
|
*/
|
56
60
|
onConfirm?: () => void;
|
57
61
|
}
|
58
|
-
declare const ConfirmDialog: React.FC<ConfirmDialogProps>;
|
62
|
+
declare const ConfirmDialog: React$1.FC<ConfirmDialogProps>;
|
59
63
|
|
60
64
|
interface BaseDrawerProps extends Omit<DrawerProps$1, 'children'> {
|
61
65
|
/**
|
62
66
|
* The drawer title
|
63
67
|
*/
|
64
|
-
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;
|
65
80
|
/**
|
66
81
|
* Hide the close button
|
67
82
|
*/
|
@@ -70,22 +85,33 @@ interface BaseDrawerProps extends Omit<DrawerProps$1, 'children'> {
|
|
70
85
|
* Hide the overflow
|
71
86
|
*/
|
72
87
|
hideOverlay?: boolean;
|
73
|
-
|
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;
|
74
100
|
}
|
75
|
-
declare const BaseDrawer: React.FC<BaseDrawerProps>;
|
101
|
+
declare const BaseDrawer: React$1.FC<BaseDrawerProps>;
|
76
102
|
interface DrawerProps extends BaseDrawerProps {
|
77
103
|
/**
|
78
104
|
* Drawer footer content, wrapped with `DrawerFooter`
|
79
105
|
*/
|
80
|
-
footer?: React.ReactNode;
|
106
|
+
footer?: React$1.ReactNode;
|
81
107
|
}
|
82
|
-
declare const Drawer: React.FC<DrawerProps>;
|
108
|
+
declare const Drawer: React$1.FC<DrawerProps>;
|
83
109
|
|
84
110
|
interface BaseModalProps extends Omit<ModalProps, 'children'> {
|
85
111
|
/**
|
86
112
|
* The modal title
|
87
113
|
*/
|
88
|
-
title?: React.ReactNode;
|
114
|
+
title?: React$1.ReactNode;
|
89
115
|
/**
|
90
116
|
* The modal children
|
91
117
|
*/
|
@@ -96,7 +122,7 @@ interface BaseModalProps extends Omit<ModalProps, 'children'> {
|
|
96
122
|
/**
|
97
123
|
* The modal footer
|
98
124
|
*/
|
99
|
-
footer?: React.ReactNode;
|
125
|
+
footer?: React$1.ReactNode;
|
100
126
|
/**
|
101
127
|
* Hide the close button
|
102
128
|
*/
|
@@ -118,76 +144,94 @@ interface BaseModalProps extends Omit<ModalProps, 'children'> {
|
|
118
144
|
*/
|
119
145
|
footerProps?: ModalFooterProps;
|
120
146
|
}
|
121
|
-
declare const BaseModal: React.FC<BaseModalProps>;
|
122
|
-
declare const Modal: React.FC<BaseModalProps>;
|
147
|
+
declare const BaseModal: React$1.FC<BaseModalProps>;
|
148
|
+
declare const Modal: React$1.FC<BaseModalProps>;
|
123
149
|
|
124
150
|
interface MenuDialogProps extends BaseModalProps {
|
125
151
|
/**
|
126
152
|
* The modal footer, wrapped with `ModalFooter`
|
127
153
|
*/
|
128
|
-
footer?: React.ReactNode;
|
154
|
+
footer?: React$1.ReactNode;
|
129
155
|
}
|
130
|
-
declare const MenuDialog: React.FC<MenuDialogProps>;
|
156
|
+
declare const MenuDialog: React$1.FC<MenuDialogProps>;
|
131
157
|
interface MenuDialogListProps extends Omit<BaseModalProps, 'isOpen' | 'onClose' | 'children' | 'scrollBehavior'>, Omit<MenuListProps, 'title'> {
|
132
158
|
}
|
133
159
|
declare const MenuDialogList: _chakra_ui_system_dist_system_types.ComponentWithAs<"div", MenuDialogListProps>;
|
134
160
|
|
135
|
-
|
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'> {
|
136
165
|
/**
|
137
166
|
* The modal footer, will be wrapped with `ModalFooter`.
|
138
167
|
* Defaults to a cancel and submit button.
|
139
168
|
*/
|
140
|
-
footer?: React.ReactNode;
|
141
|
-
/**
|
142
|
-
* The cancel button label
|
143
|
-
* @default "Cancel"
|
144
|
-
*/
|
145
|
-
cancelLabel?: React.ReactNode;
|
146
|
-
/**
|
147
|
-
* The submit button label
|
148
|
-
* @default "Submit"
|
149
|
-
*/
|
150
|
-
submitLabel?: React.ReactNode;
|
169
|
+
footer?: React$1.ReactNode;
|
151
170
|
/**
|
152
171
|
* A schema field resolver used to auto generate form fields.
|
153
172
|
*/
|
154
173
|
fieldResolver?: FieldResolver;
|
174
|
+
/**
|
175
|
+
* Field overrides
|
176
|
+
*/
|
177
|
+
fields?: FormDialogFieldOverrides;
|
155
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>;
|
156
188
|
/**
|
157
189
|
* Can be used to quickly request information from people without leaving the current page.
|
158
190
|
*
|
159
191
|
* @see Docs https://saas-ui.dev/docs/components/overlay/form-dialog
|
160
192
|
*/
|
161
|
-
declare const FormDialog: <
|
162
|
-
|
163
|
-
}
|
193
|
+
declare const FormDialog: FormType<unknown, object & Omit<BaseModalProps, "children">, object & DefaultFieldOverrides & {
|
194
|
+
cancel?: ButtonProps | undefined;
|
195
|
+
}>;
|
164
196
|
|
165
|
-
|
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>> {
|
166
210
|
open: <T extends OpenOptions<TTypes>>(componentOrOptions: T extends {
|
167
|
-
component: infer TComponent extends React.FC<any>;
|
168
|
-
} ? WithModalOptions<React.ComponentPropsWithRef<TComponent>> : T extends {
|
211
|
+
component: infer TComponent extends React$1.FC<any>;
|
212
|
+
} ? WithModalOptions<React$1.ComponentPropsWithRef<TComponent>> : T extends {
|
169
213
|
type: infer TType extends keyof TModals;
|
170
|
-
} ? WithModalOptions<React.ComponentPropsWithRef<TModals[TType]>> : T, options?: T extends React.FC<any> ? WithModalOptions<React.ComponentPropsWithRef<T>> : never) => ModalId;
|
214
|
+
} ? WithModalOptions<React$1.ComponentPropsWithRef<TModals[TType]>> : T, options?: T extends React$1.FC<any> ? WithModalOptions<React$1.ComponentPropsWithRef<T>> : never) => ModalId;
|
171
215
|
drawer: (options: DrawerOptions) => ModalId;
|
172
216
|
alert: (options: ConfirmDialogOptions) => ModalId;
|
173
217
|
confirm: (options: ConfirmDialogOptions) => ModalId;
|
174
218
|
menu: (options: MenuDialogOptions) => ModalId;
|
175
|
-
form: <
|
219
|
+
form: FormDialogHandler<TModals['form']>;
|
176
220
|
close: (id: ModalId) => void;
|
177
221
|
closeAll: () => void;
|
178
222
|
}
|
179
|
-
declare const ModalsContext: React.Context<ModalsContextValue<{
|
180
|
-
alert: React.FC<ConfirmDialogProps>;
|
181
|
-
confirm: React.FC<ConfirmDialogProps>;
|
182
|
-
drawer: React.FC<DrawerProps>;
|
183
|
-
modal: React.FC<BaseModalProps>;
|
184
|
-
menu: React.FC<MenuDialogProps>;
|
185
|
-
form: <
|
186
|
-
|
187
|
-
}
|
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
|
+
}>;
|
188
232
|
}, "confirm" | "form" | "menu" | "alert" | "modal" | "drawer"> | null>;
|
189
|
-
interface ModalsProviderProps<TModals extends Record<string, React.FC<any>> = Record<string, React.FC<any>>> {
|
190
|
-
children: React.ReactNode;
|
233
|
+
interface ModalsProviderProps<TModals extends Record<string, React$1.FC<any>> = Record<string, React$1.FC<any>>> {
|
234
|
+
children: React$1.ReactNode;
|
191
235
|
modals?: TModals;
|
192
236
|
}
|
193
237
|
type ModalId = string | number;
|
@@ -238,7 +282,7 @@ interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions, TModalT
|
|
238
282
|
* Render a custom modal component.
|
239
283
|
* This will ignore the `type` param.
|
240
284
|
*/
|
241
|
-
component?: React.FC<BaseModalProps>;
|
285
|
+
component?: React$1.FC<BaseModalProps>;
|
242
286
|
/**
|
243
287
|
* Whether the modal is open or not.
|
244
288
|
* This is used internally to keep track of the modal state.
|
@@ -246,24 +290,24 @@ interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions, TModalT
|
|
246
290
|
isOpen?: boolean;
|
247
291
|
}
|
248
292
|
declare function ModalsProvider({ children, modals }: ModalsProviderProps): JSX.Element;
|
249
|
-
declare const useModalsContext: () => ModalsContextValue<Record<string, React.FC<any>>, string>;
|
250
|
-
declare const useModals: () => ModalsContextValue<Record<string, React.FC<any>>, string>;
|
293
|
+
declare const useModalsContext: () => ModalsContextValue<Record<string, React$1.FC<any>>, string>;
|
294
|
+
declare const useModals: () => ModalsContextValue<Record<string, React$1.FC<any>>, string>;
|
251
295
|
|
252
|
-
interface CreateModalsOptions<TModalDefs
|
296
|
+
interface CreateModalsOptions<TModalDefs extends Record<string, React.FC<any>>> {
|
253
297
|
modals: TModalDefs;
|
254
298
|
}
|
255
|
-
declare const createModals: <TModalDefs extends Record<string, React.FC<any>>>(options: CreateModalsOptions<TModalDefs>) => {
|
299
|
+
declare const createModals: <TModalDefs extends Record<string, React$1.FC<any>>>(options: CreateModalsOptions<TModalDefs>) => {
|
256
300
|
ModalsProvider: (props: Omit<ModalsProviderProps, 'modals'>) => JSX.Element;
|
257
301
|
useModals: () => ModalsContextValue<{
|
258
|
-
alert: React.FC<ConfirmDialogProps>;
|
259
|
-
confirm: React.FC<ConfirmDialogProps>;
|
260
|
-
drawer: React.FC<DrawerProps>;
|
261
|
-
modal: React.FC<BaseModalProps>;
|
262
|
-
menu: React.FC<MenuDialogProps>;
|
263
|
-
form: <
|
264
|
-
|
265
|
-
}
|
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
|
+
}>;
|
266
310
|
} & TModalDefs, "confirm" | "form" | "menu" | "alert" | "modal" | "drawer" | Extract<keyof TModalDefs, string>>;
|
267
311
|
};
|
268
312
|
|
269
|
-
export { BaseDrawer, BaseDrawerProps, BaseModal, BaseModalProps, ConfirmDialog, ConfirmDialogOptions, ConfirmDialogProps, CreateModalsOptions, Drawer, DrawerOptions, DrawerProps, FormDialog, FormDialogOptions, FormDialogProps, MenuDialog, MenuDialogList, MenuDialogListProps, MenuDialogOptions, MenuDialogProps, Modal, ModalConfig, ModalId, ModalScopes, ModalsContext, ModalsContextValue, ModalsProvider, ModalsProviderProps, OpenOptions, createModals, useModals, useModalsContext };
|
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 };
|
package/dist/index.js
CHANGED
@@ -92,27 +92,35 @@ var BaseDrawer = (props) => {
|
|
92
92
|
const {
|
93
93
|
title,
|
94
94
|
children,
|
95
|
+
footer,
|
95
96
|
isOpen,
|
96
97
|
onClose,
|
97
98
|
hideCloseButton,
|
98
99
|
hideOverlay,
|
100
|
+
headerProps,
|
101
|
+
contentProps,
|
102
|
+
footerProps,
|
99
103
|
...rest
|
100
104
|
} = props;
|
101
105
|
return /* @__PURE__ */ jsxRuntime.jsxs(react.Drawer, { isOpen, onClose, ...rest, children: [
|
102
106
|
!hideOverlay && /* @__PURE__ */ jsxRuntime.jsx(react.DrawerOverlay, {}),
|
103
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react.DrawerContent, { children: [
|
104
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.DrawerHeader, { children: title }),
|
107
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.DrawerContent, { ...contentProps, children: [
|
108
|
+
title && /* @__PURE__ */ jsxRuntime.jsx(react.DrawerHeader, { ...headerProps, children: title }),
|
105
109
|
!hideCloseButton && /* @__PURE__ */ jsxRuntime.jsx(react.DrawerCloseButton, {}),
|
106
|
-
children
|
110
|
+
utils.runIfFn(children, {
|
111
|
+
isOpen,
|
112
|
+
onClose
|
113
|
+
}),
|
114
|
+
footer && /* @__PURE__ */ jsxRuntime.jsx(react.DrawerFooter, { ...footerProps, children: footer })
|
107
115
|
] })
|
108
116
|
] });
|
109
117
|
};
|
110
118
|
var Drawer = (props) => {
|
111
|
-
const {
|
112
|
-
return /* @__PURE__ */ jsxRuntime.
|
113
|
-
|
114
|
-
|
115
|
-
|
119
|
+
const { children, isOpen, onClose, ...rest } = props;
|
120
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BaseDrawer, { isOpen, onClose, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(react.DrawerBody, { children: utils.runIfFn(children, {
|
121
|
+
isOpen,
|
122
|
+
onClose
|
123
|
+
}) }) });
|
116
124
|
};
|
117
125
|
var BaseModal = (props) => {
|
118
126
|
const {
|
@@ -219,67 +227,76 @@ var MenuDialogList = react.forwardRef(
|
|
219
227
|
);
|
220
228
|
}
|
221
229
|
);
|
222
|
-
var
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
};
|
267
|
-
return /* @__PURE__ */ jsxRuntime.jsx(BaseModal, { isOpen, onClose,
|
268
|
-
|
269
|
-
|
270
|
-
{
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
)
|
230
|
+
var useFormProps = (props) => {
|
231
|
+
const {
|
232
|
+
schema,
|
233
|
+
resolver,
|
234
|
+
fieldResolver,
|
235
|
+
defaultValues,
|
236
|
+
values,
|
237
|
+
context,
|
238
|
+
onChange,
|
239
|
+
onSubmit,
|
240
|
+
onError,
|
241
|
+
mode,
|
242
|
+
reValidateMode,
|
243
|
+
shouldFocusError = true,
|
244
|
+
shouldUnregister,
|
245
|
+
shouldUseNativeValidation,
|
246
|
+
criteriaMode,
|
247
|
+
delayError = 100,
|
248
|
+
fields,
|
249
|
+
...modalProps
|
250
|
+
} = props;
|
251
|
+
const formProps = {
|
252
|
+
schema,
|
253
|
+
resolver,
|
254
|
+
defaultValues,
|
255
|
+
values,
|
256
|
+
context,
|
257
|
+
onChange,
|
258
|
+
onSubmit,
|
259
|
+
onError,
|
260
|
+
mode,
|
261
|
+
reValidateMode,
|
262
|
+
shouldFocusError,
|
263
|
+
shouldUnregister,
|
264
|
+
shouldUseNativeValidation,
|
265
|
+
criteriaMode,
|
266
|
+
delayError,
|
267
|
+
fields
|
268
|
+
};
|
269
|
+
return { modalProps, formProps, fields };
|
270
|
+
};
|
271
|
+
function createFormDialog(Form2) {
|
272
|
+
const Dialog = react.forwardRef((props, ref) => {
|
273
|
+
const { isOpen, onClose, footer, children, ...rest } = props;
|
274
|
+
const { modalProps, formProps, fields } = useFormProps(rest);
|
275
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BaseModal, { ...modalProps, isOpen, onClose, children: /* @__PURE__ */ jsxRuntime.jsx(Form2, { ref, ...formProps, children: (form) => {
|
276
|
+
var _a, _b;
|
277
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
278
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.ModalBody, { children: reactUtils.runIfFn(children, form) || /* @__PURE__ */ jsxRuntime.jsx(forms.AutoFields, {}) }),
|
279
|
+
footer || /* @__PURE__ */ jsxRuntime.jsxs(react.ModalFooter, { children: [
|
280
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
281
|
+
react.Button,
|
282
|
+
{
|
283
|
+
variant: "ghost",
|
284
|
+
mr: 3,
|
285
|
+
onClick: onClose,
|
286
|
+
...fields == null ? void 0 : fields.cancel,
|
287
|
+
children: (_b = (_a = fields == null ? void 0 : fields.cancel) == null ? void 0 : _a.children) != null ? _b : "Cancel"
|
288
|
+
}
|
289
|
+
),
|
290
|
+
/* @__PURE__ */ jsxRuntime.jsx(forms.SubmitButton, { ...fields == null ? void 0 : fields.submit })
|
291
|
+
] })
|
292
|
+
] });
|
293
|
+
} }) });
|
294
|
+
});
|
295
|
+
Dialog.displayName = `${Form2.displayName || Form2.name}Dialog`;
|
296
|
+
Dialog.id = Form2.id;
|
297
|
+
return Dialog;
|
298
|
+
}
|
299
|
+
var FormDialog = createFormDialog(forms.Form);
|
283
300
|
|
284
301
|
// src/default-modals.ts
|
285
302
|
var defaultModals = {
|
@@ -423,6 +440,7 @@ function ModalsProvider({ children, modals }) {
|
|
423
440
|
modal.scope
|
424
441
|
);
|
425
442
|
}
|
443
|
+
closeComplete(id);
|
426
444
|
};
|
427
445
|
const closeComplete = (id) => {
|
428
446
|
const modals2 = [...Array.from(_instances)];
|
@@ -503,6 +521,7 @@ exports.MenuDialogList = MenuDialogList;
|
|
503
521
|
exports.Modal = Modal;
|
504
522
|
exports.ModalsContext = ModalsContext;
|
505
523
|
exports.ModalsProvider = ModalsProvider;
|
524
|
+
exports.createFormDialog = createFormDialog;
|
506
525
|
exports.createModals = createModals;
|
507
526
|
exports.useModals = useModals;
|
508
527
|
exports.useModalsContext = useModalsContext;
|