@saas-ui/modals 2.4.2 → 3.0.0-alpha.0

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.
@@ -1,82 +0,0 @@
1
- import * as React from 'react';
2
- import { ModalProps, ModalHeaderProps, ModalContentProps, ModalFooterProps, ButtonProps } from '@chakra-ui/react';
3
- import { DefaultFieldOverrides, FieldValues, FieldProps, FormProps, FieldResolver, FormType } from '@saas-ui/forms';
4
- import { MaybeRenderProp } from '@chakra-ui/utils';
5
-
6
- interface BaseModalProps extends Omit<ModalProps, 'children'> {
7
- /**
8
- * The modal title
9
- */
10
- title?: React.ReactNode;
11
- /**
12
- * The modal children
13
- */
14
- children: MaybeRenderProp<{
15
- isOpen: boolean;
16
- onClose: () => void;
17
- }>;
18
- /**
19
- * The modal footer
20
- */
21
- footer?: React.ReactNode;
22
- /**
23
- * Hide the close button
24
- */
25
- hideCloseButton?: boolean;
26
- /**
27
- * Hide the overlay
28
- */
29
- hideOverlay?: boolean;
30
- /**
31
- * Props for the modal header
32
- */
33
- headerProps?: ModalHeaderProps;
34
- /**
35
- * Props for the modal content
36
- */
37
- contentProps?: ModalContentProps;
38
- /**
39
- * Props for the modal footer
40
- */
41
- footerProps?: ModalFooterProps;
42
- }
43
- declare const BaseModal: React.FC<BaseModalProps>;
44
- declare const Modal: React.FC<BaseModalProps>;
45
-
46
- type FormDialogFieldOverrides = DefaultFieldOverrides & {
47
- cancel?: ButtonProps;
48
- };
49
- interface FormDialogProps<TSchema = any, TFieldValues extends FieldValues = FieldValues, TContext extends object = object, TExtraFieldProps extends object = object, TFieldTypes = FieldProps<TFieldValues>> extends Omit<BaseModalProps, 'children'>, Pick<FormProps<TSchema, TFieldValues, TContext, TExtraFieldProps, TFieldTypes>, 'schema' | 'defaultValues' | 'values' | 'context' | 'onChange' | 'onSubmit' | 'onError' | 'resolver' | 'mode' | 'reValidateMode' | 'shouldFocusError' | 'shouldUnregister' | 'shouldUseNativeValidation' | 'criteriaMode' | 'delayError' | 'resetOptions' | 'formRef' | 'children'> {
50
- /**
51
- * The modal footer, will be wrapped with `ModalFooter`.
52
- * Defaults to a cancel and submit button.
53
- */
54
- footer?: React.ReactNode;
55
- /**
56
- * A schema field resolver used to auto generate form fields.
57
- */
58
- fieldResolver?: FieldResolver;
59
- /**
60
- * Field overrides
61
- */
62
- fields?: FormDialogFieldOverrides;
63
- }
64
- /**
65
- * @todo make this dynamic to support other schema types
66
- */
67
- type MergeDialogProps<T> = T extends FormType<infer FieldDefs, infer ExtraProps, infer ExtraFieldProps, infer ExtraOverrides> ? FormType<FieldDefs, ExtraProps & Omit<BaseModalProps, 'children'>, ExtraFieldProps, ExtraOverrides & FormDialogFieldOverrides> : never;
68
- type DefaultFormType<FieldDefs = any, ExtraProps = object, ExtraFieldProps extends object = object, ExtraOverrides = FormDialogFieldOverrides> = (<TSchema = unknown, TFieldValues extends Record<string, any> = any, TContext extends object = object>(props: any) => React.ReactElement) & {
69
- displayName?: string;
70
- id?: string;
71
- };
72
- declare function createFormDialog<FieldDefs = any, ExtraProps = object, ExtraFieldProps extends object = object, ExtraOverrides = FormDialogFieldOverrides, TFormType extends DefaultFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides> = DefaultFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>>(Form: TFormType): MergeDialogProps<TFormType>;
73
- /**
74
- * Can be used to quickly request information from people without leaving the current page.
75
- *
76
- * @see Docs https://saas-ui.dev/docs/components/overlay/form-dialog
77
- */
78
- declare const FormDialog: FormType<unknown, object & Omit<BaseModalProps, "children">, any, object & DefaultFieldOverrides & {
79
- cancel?: ButtonProps;
80
- }>;
81
-
82
- export { type BaseModalProps as B, type DefaultFormType as D, type FormDialogFieldOverrides as F, Modal as M, type FormDialogProps as a, BaseModal as b, FormDialog as c, createFormDialog as d };
package/dist/index.d.mts DELETED
@@ -1,257 +0,0 @@
1
- import * as React$1 from 'react';
2
- import * as _chakra_ui_react from '@chakra-ui/react';
3
- import { AlertDialogProps, ButtonProps, ButtonGroupProps, DrawerProps as DrawerProps$1, ModalHeaderProps, ModalContentProps, ModalFooterProps, MenuListProps } from '@chakra-ui/react';
4
- import { MaybeRenderProp } from '@chakra-ui/utils';
5
- import { B as BaseModalProps, F as FormDialogFieldOverrides, a as FormDialogProps } from './form-BtCUKHAs.mjs';
6
- export { b as BaseModal, D as DefaultFormType, c as FormDialog, M as Modal, d as createFormDialog } from './form-BtCUKHAs.mjs';
7
- import * as react_jsx_runtime from 'react/jsx-runtime';
8
- import * as _saas_ui_forms from '@saas-ui/forms';
9
- import { FormType, WithFields, FormProps, FieldValues } from '@saas-ui/forms';
10
- import { YupFormType, AnyObjectSchema } from '@saas-ui/forms/yup';
11
- import { z } from 'zod';
12
- import { InferType } from 'yup';
13
- import { ZodFormType } from '@saas-ui/forms/zod';
14
-
15
- interface ConfirmDialogProps extends Omit<AlertDialogProps, 'leastDestructiveRef'> {
16
- /**
17
- * The dialog title
18
- */
19
- title?: React$1.ReactNode;
20
- /**
21
- * The cancel button label
22
- */
23
- cancelLabel?: React$1.ReactNode;
24
- /**
25
- * The confirm button label
26
- */
27
- confirmLabel?: React$1.ReactNode;
28
- /**
29
- * The cancel button props
30
- */
31
- cancelProps?: ButtonProps;
32
- /**
33
- * The confirm button props
34
- */
35
- confirmProps?: ButtonProps;
36
- /**
37
- * The button group props
38
- */
39
- buttonGroupProps?: ButtonGroupProps;
40
- /**
41
- * Close the dialog on cancel
42
- * @default true
43
- */
44
- closeOnCancel?: boolean;
45
- /**
46
- * Close the dialog on confirm
47
- * @default true
48
- */
49
- closeOnConfirm?: boolean;
50
- /**
51
- * Defines which button gets initial focus
52
- * https://www.w3.org/TR/wai-aria-practices/#alertdialog
53
- */
54
- leastDestructiveFocus?: 'cancel' | 'confirm';
55
- /**
56
- * Function that's called when cancel is clicked
57
- */
58
- onCancel?: () => void;
59
- /**
60
- * Function that's called when confirm is clicked.
61
- */
62
- onConfirm?: () => Promise<void> | void;
63
- }
64
- declare const ConfirmDialog: React$1.FC<ConfirmDialogProps>;
65
-
66
- interface BaseDrawerProps extends Omit<DrawerProps$1, 'children'> {
67
- /**
68
- * The drawer title
69
- */
70
- title: React$1.ReactNode;
71
- /**
72
- * The modal children
73
- */
74
- children: MaybeRenderProp<{
75
- isOpen: boolean;
76
- onClose: () => void;
77
- }>;
78
- /**
79
- * The modal footer
80
- */
81
- footer?: React$1.ReactNode;
82
- /**
83
- * Hide the close button
84
- */
85
- hideCloseButton?: boolean;
86
- /**
87
- * Hide the overflow
88
- */
89
- hideOverlay?: boolean;
90
- /**
91
- * Props for the modal header
92
- */
93
- headerProps?: ModalHeaderProps;
94
- /**
95
- * Props for the modal content
96
- */
97
- contentProps?: ModalContentProps;
98
- /**
99
- * Props for the modal footer
100
- */
101
- footerProps?: ModalFooterProps;
102
- }
103
- declare const BaseDrawer: React$1.FC<BaseDrawerProps>;
104
- interface DrawerProps extends BaseDrawerProps {
105
- /**
106
- * Drawer footer content, wrapped with `DrawerFooter`
107
- */
108
- footer?: React$1.ReactNode;
109
- }
110
- declare const Drawer: React$1.FC<DrawerProps>;
111
-
112
- interface MenuDialogProps extends BaseModalProps {
113
- /**
114
- * The modal footer, wrapped with `ModalFooter`
115
- */
116
- footer?: React$1.ReactNode;
117
- }
118
- declare const MenuDialog: React$1.FC<MenuDialogProps>;
119
- interface MenuDialogListProps extends Omit<BaseModalProps, 'isOpen' | 'onClose' | 'children' | 'scrollBehavior'>, Omit<MenuListProps, 'title'> {
120
- }
121
- declare const MenuDialogList: _chakra_ui_react.ComponentWithAs<"div", MenuDialogListProps>;
122
-
123
- 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;
124
- 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> & {
125
- ref?: React.ForwardedRef<HTMLFormElement>;
126
- } & ExtraProps) => ModalId;
127
- 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> & {
128
- ref?: React.ForwardedRef<HTMLFormElement>;
129
- } & ExtraProps) => ModalId;
130
- type YupHandler<FieldDefs, ExtraProps = object, ExtraOverrides = object, Type extends 'yup' = 'yup'> = <TSchema extends AnyObjectSchema = AnyObjectSchema, TFieldValues extends InferType<TSchema> = InferType<TSchema>, // placeholder
131
- TContext extends object = object>(props: WithFields<FormProps<TFieldValues, TContext, TSchema>, FieldDefs, ExtraOverrides> & {
132
- ref?: React.ForwardedRef<HTMLFormElement>;
133
- } & ExtraProps) => ModalId;
134
-
135
- 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>> {
136
- open: <T extends OpenOptions<TTypes>>(componentOrOptions: T extends {
137
- component: infer TComponent extends React$1.FC<any>;
138
- } ? WithModalOptions<React$1.ComponentPropsWithRef<TComponent>> : T extends {
139
- type: infer TType extends keyof TModals;
140
- } ? WithModalOptions<React$1.ComponentPropsWithRef<TModals[TType]>> : T, options?: T extends React$1.FC<any> ? WithModalOptions<React$1.ComponentPropsWithRef<T>> : never) => ModalId;
141
- drawer: (options: DrawerOptions) => ModalId;
142
- alert: (options: ConfirmDialogOptions) => ModalId;
143
- confirm: (options: ConfirmDialogOptions) => ModalId;
144
- menu: (options: MenuDialogOptions) => ModalId;
145
- form: FormDialogHandler<TModals['form']>;
146
- close: (id: ModalId) => void;
147
- closeAll: () => void;
148
- }
149
- declare const ModalsContext: React$1.Context<ModalsContextValue<{
150
- alert: React$1.FC<ConfirmDialogProps>;
151
- confirm: React$1.FC<ConfirmDialogProps>;
152
- drawer: React$1.FC<DrawerProps>;
153
- modal: React$1.FC<BaseModalProps>;
154
- menu: React$1.FC<MenuDialogProps>;
155
- form: FormType<unknown, object & Omit<BaseModalProps, "children">, any, object & _saas_ui_forms.DefaultFieldOverrides & {
156
- cancel?: _chakra_ui_react.ButtonProps;
157
- }>;
158
- }, "confirm" | "form" | "menu" | "alert" | "modal" | "drawer"> | null>;
159
- interface ModalsProviderProps<TModals extends Record<string, React$1.FC<any>> = Record<string, React$1.FC<any>>> {
160
- children: React$1.ReactNode;
161
- modals?: TModals;
162
- }
163
- type ModalId = string | number;
164
- type WithModalOptions<T> = Omit<T, 'isOpen' | 'onClose'> & ModalOptions;
165
- interface ModalOptions extends Omit<BaseModalProps, 'isOpen' | 'onClose' | 'children'> {
166
- onClose?: (args: {
167
- force?: boolean;
168
- }) => Promise<boolean | undefined> | void;
169
- [key: string]: any;
170
- }
171
- interface DrawerOptions extends ModalOptions, Omit<DrawerProps, 'onClose' | 'isOpen' | 'children' | 'title' | 'size'> {
172
- }
173
- interface ConfirmDialogOptions extends ModalOptions, Omit<ConfirmDialogProps, 'onClose' | 'isOpen' | 'children'> {
174
- }
175
- interface MenuDialogOptions extends ModalOptions, Omit<MenuDialogProps, 'onClose' | 'isOpen' | 'children'> {
176
- }
177
- interface FormDialogOptions extends ModalOptions, Omit<FormDialogProps, 'onClose' | 'isOpen' | 'children'> {
178
- }
179
- interface OpenOptions<TModalTypes extends string> extends ModalOptions {
180
- type?: TModalTypes;
181
- scope?: ModalScopes;
182
- }
183
- type ModalScopes = 'modal' | 'alert';
184
- interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions, TModalTypes extends string = string> {
185
- /**
186
- * The modal id, autogenerated when not set.
187
- * Can be used to close modals.
188
- */
189
- id?: ModalId | null;
190
- /**
191
- * The modal props
192
- */
193
- props?: TModalOptions | null;
194
- /**
195
- * The modal scope
196
- * Modals can only have one level per scope.
197
- * The default scopes are 'modal' and 'alert', alerts can be openend above modals.
198
- */
199
- scope?: ModalScopes | string;
200
- /**
201
- * The modal type to open.
202
- * Build in types are 'modal', 'drawer', 'alert', 'confirm'
203
- *
204
- * Custom types can be configured using the `modals` prop of `ModalProvider`
205
- */
206
- type?: TModalTypes;
207
- /**
208
- * Render a custom modal component.
209
- * This will ignore the `type` param.
210
- */
211
- component?: React$1.FC<BaseModalProps>;
212
- /**
213
- * Whether the modal is open or not.
214
- * This is used internally to keep track of the modal state.
215
- */
216
- isOpen?: boolean;
217
- }
218
- declare function ModalsProvider({ children, modals }: ModalsProviderProps): react_jsx_runtime.JSX.Element;
219
- declare const useModalsContext: () => ModalsContextValue<{
220
- alert: React$1.FC<ConfirmDialogProps>;
221
- confirm: React$1.FC<ConfirmDialogProps>;
222
- drawer: React$1.FC<DrawerProps>;
223
- modal: React$1.FC<BaseModalProps>;
224
- menu: React$1.FC<MenuDialogProps>;
225
- form: FormType<unknown, object & Omit<BaseModalProps, "children">, any, object & _saas_ui_forms.DefaultFieldOverrides & {
226
- cancel?: _chakra_ui_react.ButtonProps;
227
- }>;
228
- }, "confirm" | "form" | "menu" | "alert" | "modal" | "drawer"> | null;
229
- declare const useModals: () => ModalsContextValue<{
230
- alert: React$1.FC<ConfirmDialogProps>;
231
- confirm: React$1.FC<ConfirmDialogProps>;
232
- drawer: React$1.FC<DrawerProps>;
233
- modal: React$1.FC<BaseModalProps>;
234
- menu: React$1.FC<MenuDialogProps>;
235
- form: FormType<unknown, object & Omit<BaseModalProps, "children">, any, object & _saas_ui_forms.DefaultFieldOverrides & {
236
- cancel?: _chakra_ui_react.ButtonProps;
237
- }>;
238
- }, "confirm" | "form" | "menu" | "alert" | "modal" | "drawer">;
239
-
240
- interface CreateModalsOptions<TModalDefs extends Record<string, React.FC<any>>> {
241
- modals: TModalDefs;
242
- }
243
- declare const createModals: <TModalDefs extends Record<string, React.FC<any>>>(options: CreateModalsOptions<TModalDefs>) => {
244
- ModalsProvider: (props: Omit<ModalsProviderProps, "modals">) => react_jsx_runtime.JSX.Element;
245
- useModals: () => ModalsContextValue<{
246
- alert: React$1.FC<ConfirmDialogProps>;
247
- confirm: React$1.FC<ConfirmDialogProps>;
248
- drawer: React$1.FC<DrawerProps>;
249
- modal: React$1.FC<BaseModalProps>;
250
- menu: React$1.FC<MenuDialogProps>;
251
- form: _saas_ui_forms.FormType<unknown, object & Omit<BaseModalProps, "children">, any, object & _saas_ui_forms.DefaultFieldOverrides & {
252
- cancel?: _chakra_ui_react.ButtonProps;
253
- }>;
254
- } & TModalDefs>;
255
- };
256
-
257
- export { BaseDrawer, type BaseDrawerProps, BaseModalProps, ConfirmDialog, type ConfirmDialogOptions, type ConfirmDialogProps, type CreateModalsOptions, Drawer, type DrawerOptions, type DrawerProps, FormDialogFieldOverrides, type FormDialogOptions, FormDialogProps, MenuDialog, MenuDialogList, type MenuDialogListProps, type MenuDialogOptions, type MenuDialogProps, type ModalConfig, type ModalId, type ModalScopes, ModalsContext, type ModalsContextValue, ModalsProvider, type ModalsProviderProps, type OpenOptions, createModals, useModals, useModalsContext };