@saas-ui/modals 2.1.41 → 2.2.1
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 +22 -0
- package/dist/chunk-I63K4ILP.mjs +154 -0
- package/dist/chunk-I63K4ILP.mjs.map +1 -0
- package/dist/form-Cdu466OH.d.mts +82 -0
- package/dist/form-Cdu466OH.d.ts +82 -0
- package/dist/index.d.mts +10 -85
- package/dist/index.d.ts +10 -85
- package/dist/index.mjs +17 -156
- package/dist/index.mjs.map +1 -1
- package/dist/yup/index.d.mts +15 -0
- package/dist/yup/index.d.ts +15 -0
- package/dist/yup/index.js +165 -0
- package/dist/yup/index.js.map +1 -0
- package/dist/yup/index.mjs +20 -0
- package/dist/yup/index.mjs.map +1 -0
- package/dist/zod/index.d.mts +15 -0
- package/dist/zod/index.d.ts +15 -0
- package/dist/zod/index.js +165 -0
- package/dist/zod/index.js.map +1 -0
- package/dist/zod/index.mjs +20 -0
- package/dist/zod/index.mjs.map +1 -0
- package/package.json +39 -6
- package/src/yup/create-yup-form-dialog.ts +18 -0
- package/src/yup/index.ts +6 -0
- package/src/zod/create-zod-form-dialog.ts +17 -0
- package/src/zod/index.ts +6 -0
@@ -0,0 +1,165 @@
|
|
1
|
+
'use client'
|
2
|
+
"use strict";
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __export = (target, all) => {
|
8
|
+
for (var name in all)
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
10
|
+
};
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
13
|
+
for (let key of __getOwnPropNames(from))
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
16
|
+
}
|
17
|
+
return to;
|
18
|
+
};
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
20
|
+
|
21
|
+
// src/yup/index.ts
|
22
|
+
var yup_exports = {};
|
23
|
+
__export(yup_exports, {
|
24
|
+
FormDialog: () => FormDialog2,
|
25
|
+
createYupFormDialog: () => createYupFormDialog
|
26
|
+
});
|
27
|
+
module.exports = __toCommonJS(yup_exports);
|
28
|
+
var import_yup = require("@saas-ui/forms/yup");
|
29
|
+
|
30
|
+
// src/form.tsx
|
31
|
+
var import_react2 = require("@chakra-ui/react");
|
32
|
+
var import_react_utils = require("@saas-ui/react-utils");
|
33
|
+
var import_forms = require("@saas-ui/forms");
|
34
|
+
|
35
|
+
// src/modal.tsx
|
36
|
+
var import_react = require("@chakra-ui/react");
|
37
|
+
var import_utils = require("@chakra-ui/utils");
|
38
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
39
|
+
var BaseModal = (props) => {
|
40
|
+
const {
|
41
|
+
title,
|
42
|
+
footer,
|
43
|
+
children,
|
44
|
+
isOpen,
|
45
|
+
onClose,
|
46
|
+
hideCloseButton,
|
47
|
+
hideOverlay,
|
48
|
+
headerProps,
|
49
|
+
contentProps,
|
50
|
+
footerProps,
|
51
|
+
...rest
|
52
|
+
} = props;
|
53
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.Modal, { isOpen, onClose, ...rest, children: [
|
54
|
+
!hideOverlay && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.ModalOverlay, {}),
|
55
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.ModalContent, { ...contentProps, children: [
|
56
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.ModalHeader, { ...headerProps, children: title }),
|
57
|
+
!hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.ModalCloseButton, {}),
|
58
|
+
(0, import_utils.runIfFn)(children, {
|
59
|
+
isOpen,
|
60
|
+
onClose
|
61
|
+
}),
|
62
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.ModalFooter, { ...footerProps, children: footer })
|
63
|
+
] })
|
64
|
+
] });
|
65
|
+
};
|
66
|
+
|
67
|
+
// src/form.tsx
|
68
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
69
|
+
var useFormProps = (props) => {
|
70
|
+
const {
|
71
|
+
schema,
|
72
|
+
resolver,
|
73
|
+
fieldResolver,
|
74
|
+
defaultValues,
|
75
|
+
values,
|
76
|
+
context,
|
77
|
+
onChange,
|
78
|
+
onSubmit,
|
79
|
+
onError,
|
80
|
+
mode,
|
81
|
+
reValidateMode,
|
82
|
+
shouldFocusError = true,
|
83
|
+
shouldUnregister,
|
84
|
+
shouldUseNativeValidation,
|
85
|
+
criteriaMode,
|
86
|
+
delayError = 100,
|
87
|
+
fields,
|
88
|
+
formRef,
|
89
|
+
...modalProps
|
90
|
+
} = props;
|
91
|
+
const formProps = {
|
92
|
+
schema,
|
93
|
+
resolver,
|
94
|
+
defaultValues,
|
95
|
+
values,
|
96
|
+
context,
|
97
|
+
onChange,
|
98
|
+
onSubmit,
|
99
|
+
onError,
|
100
|
+
mode,
|
101
|
+
reValidateMode,
|
102
|
+
shouldFocusError,
|
103
|
+
shouldUnregister,
|
104
|
+
shouldUseNativeValidation,
|
105
|
+
criteriaMode,
|
106
|
+
delayError,
|
107
|
+
fields,
|
108
|
+
formRef
|
109
|
+
};
|
110
|
+
return { modalProps, formProps, fields };
|
111
|
+
};
|
112
|
+
function createFormDialog(Form3) {
|
113
|
+
const Dialog = (0, import_react2.forwardRef)((props, ref) => {
|
114
|
+
const { isOpen, onClose, footer, children, ...rest } = props;
|
115
|
+
const { modalProps, formProps, fields } = useFormProps(rest);
|
116
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(BaseModal, { ...modalProps, isOpen, onClose, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
117
|
+
Form3,
|
118
|
+
{
|
119
|
+
ref,
|
120
|
+
...formProps,
|
121
|
+
flex: "1",
|
122
|
+
minHeight: "0px",
|
123
|
+
display: "flex",
|
124
|
+
flexDirection: "column",
|
125
|
+
children: (form) => {
|
126
|
+
var _a, _b;
|
127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react2.ModalBody, { height: "100%", children: (0, import_react_utils.runIfFn)(children, form) || /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_forms.AutoFields, {}) }),
|
129
|
+
footer || /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_react2.ModalFooter, { children: [
|
130
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
131
|
+
import_react2.Button,
|
132
|
+
{
|
133
|
+
variant: "ghost",
|
134
|
+
mr: 3,
|
135
|
+
onClick: onClose,
|
136
|
+
...fields == null ? void 0 : fields.cancel,
|
137
|
+
children: (_b = (_a = fields == null ? void 0 : fields.cancel) == null ? void 0 : _a.children) != null ? _b : "Cancel"
|
138
|
+
}
|
139
|
+
),
|
140
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_forms.SubmitButton, { ...fields == null ? void 0 : fields.submit })
|
141
|
+
] })
|
142
|
+
] });
|
143
|
+
}
|
144
|
+
}
|
145
|
+
) });
|
146
|
+
});
|
147
|
+
Dialog.displayName = `${Form3.displayName || Form3.name}Dialog`;
|
148
|
+
Dialog.id = Form3.id;
|
149
|
+
return Dialog;
|
150
|
+
}
|
151
|
+
var FormDialog = createFormDialog(import_forms.Form);
|
152
|
+
|
153
|
+
// src/yup/create-yup-form-dialog.ts
|
154
|
+
function createYupFormDialog(Form3) {
|
155
|
+
return createFormDialog(Form3);
|
156
|
+
}
|
157
|
+
|
158
|
+
// src/yup/index.ts
|
159
|
+
var FormDialog2 = createYupFormDialog(import_yup.Form);
|
160
|
+
// Annotate the CommonJS export names for ESM import in node:
|
161
|
+
0 && (module.exports = {
|
162
|
+
FormDialog,
|
163
|
+
createYupFormDialog
|
164
|
+
});
|
165
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/yup/index.ts","../../src/form.tsx","../../src/modal.tsx","../../src/yup/create-yup-form-dialog.ts"],"sourcesContent":["import { Form } from '@saas-ui/forms/yup'\nimport { createYupFormDialog } from './create-yup-form-dialog'\n\nexport { createYupFormDialog }\n\nexport const FormDialog = createYupFormDialog(Form)\n","import * as React from 'react'\n\nimport {\n ModalBody,\n ModalFooter,\n Button,\n forwardRef,\n ButtonProps,\n} from '@chakra-ui/react'\nimport { runIfFn } from '@saas-ui/react-utils'\n\nimport {\n Form,\n AutoFields,\n SubmitButton,\n FormProps,\n FieldValues,\n FieldResolver,\n FieldProps,\n FormType,\n DefaultFieldOverrides,\n} from '@saas-ui/forms'\n\nimport { BaseModal, BaseModalProps } from './modal'\n\nexport type FormDialogFieldOverrides = DefaultFieldOverrides & {\n cancel?: ButtonProps\n}\n\nexport interface FormDialogProps<\n TSchema = any,\n TFieldValues extends FieldValues = FieldValues,\n TContext extends object = object,\n TExtraFieldProps extends object = object,\n TFieldTypes = FieldProps<TFieldValues>,\n> extends Omit<BaseModalProps, 'children'>,\n Pick<\n FormProps<TSchema, TFieldValues, TContext, TExtraFieldProps, TFieldTypes>,\n | 'schema'\n | 'defaultValues'\n | 'values'\n | 'context'\n | 'onChange'\n | 'onSubmit'\n | 'onError'\n | 'resolver'\n | 'mode'\n | 'reValidateMode'\n | 'shouldFocusError'\n | 'shouldUnregister'\n | 'shouldUseNativeValidation'\n | 'criteriaMode'\n | 'delayError'\n | 'resetOptions'\n | 'formRef'\n | 'children'\n > {\n /**\n * The modal footer, will be wrapped with `ModalFooter`.\n * Defaults to a cancel and submit button.\n */\n footer?: React.ReactNode\n /**\n * A schema field resolver used to auto generate form fields.\n */\n fieldResolver?: FieldResolver\n /**\n * Field overrides\n */\n fields?: FormDialogFieldOverrides\n}\n\nconst useFormProps = (props: FormDialogProps) => {\n const {\n schema,\n resolver,\n fieldResolver,\n defaultValues,\n values,\n context,\n onChange,\n onSubmit,\n onError,\n mode,\n reValidateMode,\n shouldFocusError = true,\n shouldUnregister,\n shouldUseNativeValidation,\n criteriaMode,\n delayError = 100,\n fields,\n formRef,\n ...modalProps\n } = props\n\n const formProps = {\n schema,\n resolver,\n defaultValues,\n values,\n context,\n onChange,\n onSubmit,\n onError,\n mode,\n reValidateMode,\n shouldFocusError,\n shouldUnregister,\n shouldUseNativeValidation,\n criteriaMode,\n delayError,\n fields,\n formRef,\n }\n\n return { modalProps, formProps, fields }\n}\n\n/**\n * @todo make this dynamic to support other schema types\n */\ntype MergeDialogProps<T> =\n T extends FormType<\n infer FieldDefs,\n infer ExtraProps,\n infer ExtraFieldProps,\n infer ExtraOverrides\n >\n ? FormType<\n FieldDefs,\n ExtraProps & Omit<BaseModalProps, 'children'>,\n ExtraFieldProps,\n ExtraOverrides & FormDialogFieldOverrides\n >\n : never\n\ntype IsSchemaType<T, Schema, FieldDefs> =\n T extends DefaultFormType<FieldDefs>\n ? T extends (\n props: FormProps<infer TSchema, infer TFieldValues, infer TContext>\n ) => any\n ? Schema extends TSchema\n ? true\n : false\n : false\n : false\n\nexport type DefaultFormType<\n FieldDefs = any,\n ExtraProps = object,\n ExtraFieldProps extends object = object,\n ExtraOverrides = FormDialogFieldOverrides,\n> = (<\n TSchema = unknown,\n TFieldValues extends Record<string, any> = any,\n TContext extends object = object,\n>(\n props: any\n) => React.ReactElement) & {\n displayName?: string\n id?: string\n}\n\nexport function createFormDialog<\n FieldDefs = any,\n ExtraProps = object,\n ExtraFieldProps extends object = object,\n ExtraOverrides = FormDialogFieldOverrides,\n TFormType extends DefaultFormType<\n FieldDefs,\n ExtraProps,\n ExtraFieldProps,\n ExtraOverrides\n > = DefaultFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>,\n>(Form: TFormType) {\n const Dialog = forwardRef<any, 'div'>((props, ref) => {\n const { isOpen, onClose, footer, children, ...rest } = props\n const { modalProps, formProps, fields } = useFormProps(rest)\n return (\n <BaseModal {...modalProps} isOpen={isOpen} onClose={onClose}>\n <Form\n ref={ref}\n {...(formProps as any)}\n flex=\"1\"\n minHeight=\"0px\"\n display=\"flex\"\n flexDirection=\"column\"\n >\n {(form: any) => (\n <>\n <ModalBody height=\"100%\">\n {runIfFn(children, form) || <AutoFields />}\n </ModalBody>\n\n {footer || (\n <ModalFooter>\n <Button\n variant=\"ghost\"\n mr={3}\n onClick={onClose}\n {...fields?.cancel}\n >\n {fields?.cancel?.children ?? 'Cancel'}\n </Button>\n <SubmitButton {...fields?.submit} />\n </ModalFooter>\n )}\n </>\n )}\n </Form>\n </BaseModal>\n )\n }) as MergeDialogProps<TFormType>\n\n Dialog.displayName = `${Form.displayName || Form.name}Dialog`\n Dialog.id = Form.id\n\n return Dialog\n}\n\n/**\n * Can be used to quickly request information from people without leaving the current page.\n *\n * @see Docs https://saas-ui.dev/docs/components/overlay/form-dialog\n */\nexport const FormDialog = createFormDialog(Form)\n","import * as React from 'react'\n\nimport {\n Modal as ChakraModal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalFooter,\n ModalBody,\n ModalCloseButton,\n ModalProps as ChakraModalProps,\n ModalContentProps,\n ModalHeaderProps,\n ModalFooterProps,\n} from '@chakra-ui/react'\nimport { MaybeRenderProp } from '@chakra-ui/react-utils'\nimport { runIfFn } from '@chakra-ui/utils'\n\nexport interface BaseModalProps extends Omit<ChakraModalProps, 'children'> {\n /**\n * The modal title\n */\n title?: React.ReactNode\n /**\n * The modal children\n */\n children: MaybeRenderProp<{\n isOpen: boolean\n onClose: () => void\n }>\n /**\n * The modal footer\n */\n footer?: React.ReactNode\n /**\n * Hide the close button\n */\n hideCloseButton?: boolean\n /**\n * Hide the overlay\n */\n hideOverlay?: boolean\n /**\n * Props for the modal header\n */\n headerProps?: ModalHeaderProps\n /**\n * Props for the modal content\n */\n contentProps?: ModalContentProps\n /**\n * Props for the modal footer\n */\n footerProps?: ModalFooterProps\n}\n\nexport const BaseModal: React.FC<BaseModalProps> = (props) => {\n const {\n title,\n footer,\n children,\n isOpen,\n onClose,\n hideCloseButton,\n hideOverlay,\n headerProps,\n contentProps,\n footerProps,\n ...rest\n } = props\n return (\n <ChakraModal isOpen={isOpen} onClose={onClose} {...rest}>\n {!hideOverlay && <ModalOverlay />}\n <ModalContent {...contentProps}>\n {title && <ModalHeader {...headerProps}>{title}</ModalHeader>}\n {!hideCloseButton && <ModalCloseButton />}\n {runIfFn(children, {\n isOpen,\n onClose,\n })}\n {footer && <ModalFooter {...footerProps}>{footer}</ModalFooter>}\n </ModalContent>\n </ChakraModal>\n )\n}\n\nexport const Modal: React.FC<BaseModalProps> = (props) => {\n const { children, isOpen, onClose, ...rest } = props\n return (\n <BaseModal {...rest} isOpen={isOpen} onClose={onClose}>\n <ModalBody>\n {runIfFn(children, {\n isOpen,\n onClose,\n })}\n </ModalBody>\n </BaseModal>\n )\n}\n","import type { YupFormType } from '@saas-ui/forms/yup'\nimport { FormDialogFieldOverrides, createFormDialog } from '../form'\n\nimport type { BaseModalProps } from '../modal'\n\nexport function createYupFormDialog<\n FieldDefs = any,\n ExtraProps = object,\n ExtraFieldProps extends object = object,\n ExtraOverrides = object,\n>(Form: YupFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>) {\n return createFormDialog(Form) as unknown as YupFormType<\n FieldDefs,\n ExtraProps & Omit<BaseModalProps, 'children'>,\n ExtraFieldProps,\n ExtraOverrides & FormDialogFieldOverrides\n >\n}\n"],"mappings":"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","names":["FormDialog","import_react","ChakraModal","import_jsx_runtime","Form","Form","FormDialog"]}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
'use client'
|
2
|
+
import {
|
3
|
+
createFormDialog
|
4
|
+
} from "../chunk-I63K4ILP.mjs";
|
5
|
+
|
6
|
+
// src/yup/index.ts
|
7
|
+
import { Form } from "@saas-ui/forms/yup";
|
8
|
+
|
9
|
+
// src/yup/create-yup-form-dialog.ts
|
10
|
+
function createYupFormDialog(Form2) {
|
11
|
+
return createFormDialog(Form2);
|
12
|
+
}
|
13
|
+
|
14
|
+
// src/yup/index.ts
|
15
|
+
var FormDialog = createYupFormDialog(Form);
|
16
|
+
export {
|
17
|
+
FormDialog,
|
18
|
+
createYupFormDialog
|
19
|
+
};
|
20
|
+
//# sourceMappingURL=index.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/yup/index.ts","../../src/yup/create-yup-form-dialog.ts"],"sourcesContent":["import { Form } from '@saas-ui/forms/yup'\nimport { createYupFormDialog } from './create-yup-form-dialog'\n\nexport { createYupFormDialog }\n\nexport const FormDialog = createYupFormDialog(Form)\n","import type { YupFormType } from '@saas-ui/forms/yup'\nimport { FormDialogFieldOverrides, createFormDialog } from '../form'\n\nimport type { BaseModalProps } from '../modal'\n\nexport function createYupFormDialog<\n FieldDefs = any,\n ExtraProps = object,\n ExtraFieldProps extends object = object,\n ExtraOverrides = object,\n>(Form: YupFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>) {\n return createFormDialog(Form) as unknown as YupFormType<\n FieldDefs,\n ExtraProps & Omit<BaseModalProps, 'children'>,\n ExtraFieldProps,\n ExtraOverrides & FormDialogFieldOverrides\n >\n}\n"],"mappings":";;;;;;AAAA,SAAS,YAAY;;;ACKd,SAAS,oBAKdA,OAA2E;AAC3E,SAAO,iBAAiBA,KAAI;AAM9B;;;ADZO,IAAM,aAAa,oBAAoB,IAAI;","names":["Form"]}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import * as _saas_ui_forms_zod from '@saas-ui/forms/zod';
|
2
|
+
import { ZodFormType } from '@saas-ui/forms/zod';
|
3
|
+
import * as _chakra_ui_react from '@chakra-ui/react';
|
4
|
+
import * as _saas_ui_forms from '@saas-ui/forms';
|
5
|
+
import { B as BaseModalProps, F as FormDialogFieldOverrides } from '../form-Cdu466OH.mjs';
|
6
|
+
import 'react';
|
7
|
+
import '@chakra-ui/react-utils';
|
8
|
+
|
9
|
+
declare function createZodFormDialog<FieldDefs = any, ExtraProps = object, ExtraFieldProps extends object = object, ExtraOverrides = object>(Form: ZodFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>): ZodFormType<FieldDefs, ExtraProps & Omit<BaseModalProps, "children">, ExtraFieldProps, ExtraOverrides & FormDialogFieldOverrides>;
|
10
|
+
|
11
|
+
declare const FormDialog: _saas_ui_forms_zod.ZodFormType<unknown, object & Omit<BaseModalProps, "children">, any, object & _saas_ui_forms.DefaultFieldOverrides & {
|
12
|
+
cancel?: _chakra_ui_react.ButtonProps;
|
13
|
+
}>;
|
14
|
+
|
15
|
+
export { FormDialog, createZodFormDialog };
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import * as _saas_ui_forms_zod from '@saas-ui/forms/zod';
|
2
|
+
import { ZodFormType } from '@saas-ui/forms/zod';
|
3
|
+
import * as _chakra_ui_react from '@chakra-ui/react';
|
4
|
+
import * as _saas_ui_forms from '@saas-ui/forms';
|
5
|
+
import { B as BaseModalProps, F as FormDialogFieldOverrides } from '../form-Cdu466OH.js';
|
6
|
+
import 'react';
|
7
|
+
import '@chakra-ui/react-utils';
|
8
|
+
|
9
|
+
declare function createZodFormDialog<FieldDefs = any, ExtraProps = object, ExtraFieldProps extends object = object, ExtraOverrides = object>(Form: ZodFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>): ZodFormType<FieldDefs, ExtraProps & Omit<BaseModalProps, "children">, ExtraFieldProps, ExtraOverrides & FormDialogFieldOverrides>;
|
10
|
+
|
11
|
+
declare const FormDialog: _saas_ui_forms_zod.ZodFormType<unknown, object & Omit<BaseModalProps, "children">, any, object & _saas_ui_forms.DefaultFieldOverrides & {
|
12
|
+
cancel?: _chakra_ui_react.ButtonProps;
|
13
|
+
}>;
|
14
|
+
|
15
|
+
export { FormDialog, createZodFormDialog };
|
@@ -0,0 +1,165 @@
|
|
1
|
+
'use client'
|
2
|
+
"use strict";
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __export = (target, all) => {
|
8
|
+
for (var name in all)
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
10
|
+
};
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
13
|
+
for (let key of __getOwnPropNames(from))
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
16
|
+
}
|
17
|
+
return to;
|
18
|
+
};
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
20
|
+
|
21
|
+
// src/zod/index.ts
|
22
|
+
var zod_exports = {};
|
23
|
+
__export(zod_exports, {
|
24
|
+
FormDialog: () => FormDialog2,
|
25
|
+
createZodFormDialog: () => createZodFormDialog
|
26
|
+
});
|
27
|
+
module.exports = __toCommonJS(zod_exports);
|
28
|
+
var import_zod = require("@saas-ui/forms/zod");
|
29
|
+
|
30
|
+
// src/form.tsx
|
31
|
+
var import_react2 = require("@chakra-ui/react");
|
32
|
+
var import_react_utils = require("@saas-ui/react-utils");
|
33
|
+
var import_forms = require("@saas-ui/forms");
|
34
|
+
|
35
|
+
// src/modal.tsx
|
36
|
+
var import_react = require("@chakra-ui/react");
|
37
|
+
var import_utils = require("@chakra-ui/utils");
|
38
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
39
|
+
var BaseModal = (props) => {
|
40
|
+
const {
|
41
|
+
title,
|
42
|
+
footer,
|
43
|
+
children,
|
44
|
+
isOpen,
|
45
|
+
onClose,
|
46
|
+
hideCloseButton,
|
47
|
+
hideOverlay,
|
48
|
+
headerProps,
|
49
|
+
contentProps,
|
50
|
+
footerProps,
|
51
|
+
...rest
|
52
|
+
} = props;
|
53
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.Modal, { isOpen, onClose, ...rest, children: [
|
54
|
+
!hideOverlay && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.ModalOverlay, {}),
|
55
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.ModalContent, { ...contentProps, children: [
|
56
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.ModalHeader, { ...headerProps, children: title }),
|
57
|
+
!hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.ModalCloseButton, {}),
|
58
|
+
(0, import_utils.runIfFn)(children, {
|
59
|
+
isOpen,
|
60
|
+
onClose
|
61
|
+
}),
|
62
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.ModalFooter, { ...footerProps, children: footer })
|
63
|
+
] })
|
64
|
+
] });
|
65
|
+
};
|
66
|
+
|
67
|
+
// src/form.tsx
|
68
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
69
|
+
var useFormProps = (props) => {
|
70
|
+
const {
|
71
|
+
schema,
|
72
|
+
resolver,
|
73
|
+
fieldResolver,
|
74
|
+
defaultValues,
|
75
|
+
values,
|
76
|
+
context,
|
77
|
+
onChange,
|
78
|
+
onSubmit,
|
79
|
+
onError,
|
80
|
+
mode,
|
81
|
+
reValidateMode,
|
82
|
+
shouldFocusError = true,
|
83
|
+
shouldUnregister,
|
84
|
+
shouldUseNativeValidation,
|
85
|
+
criteriaMode,
|
86
|
+
delayError = 100,
|
87
|
+
fields,
|
88
|
+
formRef,
|
89
|
+
...modalProps
|
90
|
+
} = props;
|
91
|
+
const formProps = {
|
92
|
+
schema,
|
93
|
+
resolver,
|
94
|
+
defaultValues,
|
95
|
+
values,
|
96
|
+
context,
|
97
|
+
onChange,
|
98
|
+
onSubmit,
|
99
|
+
onError,
|
100
|
+
mode,
|
101
|
+
reValidateMode,
|
102
|
+
shouldFocusError,
|
103
|
+
shouldUnregister,
|
104
|
+
shouldUseNativeValidation,
|
105
|
+
criteriaMode,
|
106
|
+
delayError,
|
107
|
+
fields,
|
108
|
+
formRef
|
109
|
+
};
|
110
|
+
return { modalProps, formProps, fields };
|
111
|
+
};
|
112
|
+
function createFormDialog(Form3) {
|
113
|
+
const Dialog = (0, import_react2.forwardRef)((props, ref) => {
|
114
|
+
const { isOpen, onClose, footer, children, ...rest } = props;
|
115
|
+
const { modalProps, formProps, fields } = useFormProps(rest);
|
116
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(BaseModal, { ...modalProps, isOpen, onClose, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
117
|
+
Form3,
|
118
|
+
{
|
119
|
+
ref,
|
120
|
+
...formProps,
|
121
|
+
flex: "1",
|
122
|
+
minHeight: "0px",
|
123
|
+
display: "flex",
|
124
|
+
flexDirection: "column",
|
125
|
+
children: (form) => {
|
126
|
+
var _a, _b;
|
127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react2.ModalBody, { height: "100%", children: (0, import_react_utils.runIfFn)(children, form) || /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_forms.AutoFields, {}) }),
|
129
|
+
footer || /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_react2.ModalFooter, { children: [
|
130
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
131
|
+
import_react2.Button,
|
132
|
+
{
|
133
|
+
variant: "ghost",
|
134
|
+
mr: 3,
|
135
|
+
onClick: onClose,
|
136
|
+
...fields == null ? void 0 : fields.cancel,
|
137
|
+
children: (_b = (_a = fields == null ? void 0 : fields.cancel) == null ? void 0 : _a.children) != null ? _b : "Cancel"
|
138
|
+
}
|
139
|
+
),
|
140
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_forms.SubmitButton, { ...fields == null ? void 0 : fields.submit })
|
141
|
+
] })
|
142
|
+
] });
|
143
|
+
}
|
144
|
+
}
|
145
|
+
) });
|
146
|
+
});
|
147
|
+
Dialog.displayName = `${Form3.displayName || Form3.name}Dialog`;
|
148
|
+
Dialog.id = Form3.id;
|
149
|
+
return Dialog;
|
150
|
+
}
|
151
|
+
var FormDialog = createFormDialog(import_forms.Form);
|
152
|
+
|
153
|
+
// src/zod/create-zod-form-dialog.ts
|
154
|
+
function createZodFormDialog(Form3) {
|
155
|
+
return createFormDialog(Form3);
|
156
|
+
}
|
157
|
+
|
158
|
+
// src/zod/index.ts
|
159
|
+
var FormDialog2 = createZodFormDialog(import_zod.Form);
|
160
|
+
// Annotate the CommonJS export names for ESM import in node:
|
161
|
+
0 && (module.exports = {
|
162
|
+
FormDialog,
|
163
|
+
createZodFormDialog
|
164
|
+
});
|
165
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/zod/index.ts","../../src/form.tsx","../../src/modal.tsx","../../src/zod/create-zod-form-dialog.ts"],"sourcesContent":["import { Form } from '@saas-ui/forms/zod'\nimport { createZodFormDialog } from './create-zod-form-dialog'\n\nexport { createZodFormDialog }\n\nexport const FormDialog = createZodFormDialog(Form)\n","import * as React from 'react'\n\nimport {\n ModalBody,\n ModalFooter,\n Button,\n forwardRef,\n ButtonProps,\n} from '@chakra-ui/react'\nimport { runIfFn } from '@saas-ui/react-utils'\n\nimport {\n Form,\n AutoFields,\n SubmitButton,\n FormProps,\n FieldValues,\n FieldResolver,\n FieldProps,\n FormType,\n DefaultFieldOverrides,\n} from '@saas-ui/forms'\n\nimport { BaseModal, BaseModalProps } from './modal'\n\nexport type FormDialogFieldOverrides = DefaultFieldOverrides & {\n cancel?: ButtonProps\n}\n\nexport interface FormDialogProps<\n TSchema = any,\n TFieldValues extends FieldValues = FieldValues,\n TContext extends object = object,\n TExtraFieldProps extends object = object,\n TFieldTypes = FieldProps<TFieldValues>,\n> extends Omit<BaseModalProps, 'children'>,\n Pick<\n FormProps<TSchema, TFieldValues, TContext, TExtraFieldProps, TFieldTypes>,\n | 'schema'\n | 'defaultValues'\n | 'values'\n | 'context'\n | 'onChange'\n | 'onSubmit'\n | 'onError'\n | 'resolver'\n | 'mode'\n | 'reValidateMode'\n | 'shouldFocusError'\n | 'shouldUnregister'\n | 'shouldUseNativeValidation'\n | 'criteriaMode'\n | 'delayError'\n | 'resetOptions'\n | 'formRef'\n | 'children'\n > {\n /**\n * The modal footer, will be wrapped with `ModalFooter`.\n * Defaults to a cancel and submit button.\n */\n footer?: React.ReactNode\n /**\n * A schema field resolver used to auto generate form fields.\n */\n fieldResolver?: FieldResolver\n /**\n * Field overrides\n */\n fields?: FormDialogFieldOverrides\n}\n\nconst useFormProps = (props: FormDialogProps) => {\n const {\n schema,\n resolver,\n fieldResolver,\n defaultValues,\n values,\n context,\n onChange,\n onSubmit,\n onError,\n mode,\n reValidateMode,\n shouldFocusError = true,\n shouldUnregister,\n shouldUseNativeValidation,\n criteriaMode,\n delayError = 100,\n fields,\n formRef,\n ...modalProps\n } = props\n\n const formProps = {\n schema,\n resolver,\n defaultValues,\n values,\n context,\n onChange,\n onSubmit,\n onError,\n mode,\n reValidateMode,\n shouldFocusError,\n shouldUnregister,\n shouldUseNativeValidation,\n criteriaMode,\n delayError,\n fields,\n formRef,\n }\n\n return { modalProps, formProps, fields }\n}\n\n/**\n * @todo make this dynamic to support other schema types\n */\ntype MergeDialogProps<T> =\n T extends FormType<\n infer FieldDefs,\n infer ExtraProps,\n infer ExtraFieldProps,\n infer ExtraOverrides\n >\n ? FormType<\n FieldDefs,\n ExtraProps & Omit<BaseModalProps, 'children'>,\n ExtraFieldProps,\n ExtraOverrides & FormDialogFieldOverrides\n >\n : never\n\ntype IsSchemaType<T, Schema, FieldDefs> =\n T extends DefaultFormType<FieldDefs>\n ? T extends (\n props: FormProps<infer TSchema, infer TFieldValues, infer TContext>\n ) => any\n ? Schema extends TSchema\n ? true\n : false\n : false\n : false\n\nexport type DefaultFormType<\n FieldDefs = any,\n ExtraProps = object,\n ExtraFieldProps extends object = object,\n ExtraOverrides = FormDialogFieldOverrides,\n> = (<\n TSchema = unknown,\n TFieldValues extends Record<string, any> = any,\n TContext extends object = object,\n>(\n props: any\n) => React.ReactElement) & {\n displayName?: string\n id?: string\n}\n\nexport function createFormDialog<\n FieldDefs = any,\n ExtraProps = object,\n ExtraFieldProps extends object = object,\n ExtraOverrides = FormDialogFieldOverrides,\n TFormType extends DefaultFormType<\n FieldDefs,\n ExtraProps,\n ExtraFieldProps,\n ExtraOverrides\n > = DefaultFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>,\n>(Form: TFormType) {\n const Dialog = forwardRef<any, 'div'>((props, ref) => {\n const { isOpen, onClose, footer, children, ...rest } = props\n const { modalProps, formProps, fields } = useFormProps(rest)\n return (\n <BaseModal {...modalProps} isOpen={isOpen} onClose={onClose}>\n <Form\n ref={ref}\n {...(formProps as any)}\n flex=\"1\"\n minHeight=\"0px\"\n display=\"flex\"\n flexDirection=\"column\"\n >\n {(form: any) => (\n <>\n <ModalBody height=\"100%\">\n {runIfFn(children, form) || <AutoFields />}\n </ModalBody>\n\n {footer || (\n <ModalFooter>\n <Button\n variant=\"ghost\"\n mr={3}\n onClick={onClose}\n {...fields?.cancel}\n >\n {fields?.cancel?.children ?? 'Cancel'}\n </Button>\n <SubmitButton {...fields?.submit} />\n </ModalFooter>\n )}\n </>\n )}\n </Form>\n </BaseModal>\n )\n }) as MergeDialogProps<TFormType>\n\n Dialog.displayName = `${Form.displayName || Form.name}Dialog`\n Dialog.id = Form.id\n\n return Dialog\n}\n\n/**\n * Can be used to quickly request information from people without leaving the current page.\n *\n * @see Docs https://saas-ui.dev/docs/components/overlay/form-dialog\n */\nexport const FormDialog = createFormDialog(Form)\n","import * as React from 'react'\n\nimport {\n Modal as ChakraModal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalFooter,\n ModalBody,\n ModalCloseButton,\n ModalProps as ChakraModalProps,\n ModalContentProps,\n ModalHeaderProps,\n ModalFooterProps,\n} from '@chakra-ui/react'\nimport { MaybeRenderProp } from '@chakra-ui/react-utils'\nimport { runIfFn } from '@chakra-ui/utils'\n\nexport interface BaseModalProps extends Omit<ChakraModalProps, 'children'> {\n /**\n * The modal title\n */\n title?: React.ReactNode\n /**\n * The modal children\n */\n children: MaybeRenderProp<{\n isOpen: boolean\n onClose: () => void\n }>\n /**\n * The modal footer\n */\n footer?: React.ReactNode\n /**\n * Hide the close button\n */\n hideCloseButton?: boolean\n /**\n * Hide the overlay\n */\n hideOverlay?: boolean\n /**\n * Props for the modal header\n */\n headerProps?: ModalHeaderProps\n /**\n * Props for the modal content\n */\n contentProps?: ModalContentProps\n /**\n * Props for the modal footer\n */\n footerProps?: ModalFooterProps\n}\n\nexport const BaseModal: React.FC<BaseModalProps> = (props) => {\n const {\n title,\n footer,\n children,\n isOpen,\n onClose,\n hideCloseButton,\n hideOverlay,\n headerProps,\n contentProps,\n footerProps,\n ...rest\n } = props\n return (\n <ChakraModal isOpen={isOpen} onClose={onClose} {...rest}>\n {!hideOverlay && <ModalOverlay />}\n <ModalContent {...contentProps}>\n {title && <ModalHeader {...headerProps}>{title}</ModalHeader>}\n {!hideCloseButton && <ModalCloseButton />}\n {runIfFn(children, {\n isOpen,\n onClose,\n })}\n {footer && <ModalFooter {...footerProps}>{footer}</ModalFooter>}\n </ModalContent>\n </ChakraModal>\n )\n}\n\nexport const Modal: React.FC<BaseModalProps> = (props) => {\n const { children, isOpen, onClose, ...rest } = props\n return (\n <BaseModal {...rest} isOpen={isOpen} onClose={onClose}>\n <ModalBody>\n {runIfFn(children, {\n isOpen,\n onClose,\n })}\n </ModalBody>\n </BaseModal>\n )\n}\n","import type { ZodFormType } from '@saas-ui/forms/zod'\nimport { createFormDialog, FormDialogFieldOverrides } from '../form'\nimport type { BaseModalProps } from '../modal'\n\nexport function createZodFormDialog<\n FieldDefs = any,\n ExtraProps = object,\n ExtraFieldProps extends object = object,\n ExtraOverrides = object,\n>(Form: ZodFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>) {\n return createFormDialog(Form) as unknown as ZodFormType<\n FieldDefs,\n ExtraProps & Omit<BaseModalProps, 'children'>,\n ExtraFieldProps,\n ExtraOverrides & FormDialogFieldOverrides\n >\n}\n"],"mappings":"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","names":["FormDialog","import_react","ChakraModal","import_jsx_runtime","Form","Form","FormDialog"]}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
'use client'
|
2
|
+
import {
|
3
|
+
createFormDialog
|
4
|
+
} from "../chunk-I63K4ILP.mjs";
|
5
|
+
|
6
|
+
// src/zod/index.ts
|
7
|
+
import { Form } from "@saas-ui/forms/zod";
|
8
|
+
|
9
|
+
// src/zod/create-zod-form-dialog.ts
|
10
|
+
function createZodFormDialog(Form2) {
|
11
|
+
return createFormDialog(Form2);
|
12
|
+
}
|
13
|
+
|
14
|
+
// src/zod/index.ts
|
15
|
+
var FormDialog = createZodFormDialog(Form);
|
16
|
+
export {
|
17
|
+
FormDialog,
|
18
|
+
createZodFormDialog
|
19
|
+
};
|
20
|
+
//# sourceMappingURL=index.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/zod/index.ts","../../src/zod/create-zod-form-dialog.ts"],"sourcesContent":["import { Form } from '@saas-ui/forms/zod'\nimport { createZodFormDialog } from './create-zod-form-dialog'\n\nexport { createZodFormDialog }\n\nexport const FormDialog = createZodFormDialog(Form)\n","import type { ZodFormType } from '@saas-ui/forms/zod'\nimport { createFormDialog, FormDialogFieldOverrides } from '../form'\nimport type { BaseModalProps } from '../modal'\n\nexport function createZodFormDialog<\n FieldDefs = any,\n ExtraProps = object,\n ExtraFieldProps extends object = object,\n ExtraOverrides = object,\n>(Form: ZodFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>) {\n return createFormDialog(Form) as unknown as ZodFormType<\n FieldDefs,\n ExtraProps & Omit<BaseModalProps, 'children'>,\n ExtraFieldProps,\n ExtraOverrides & FormDialogFieldOverrides\n >\n}\n"],"mappings":";;;;;;AAAA,SAAS,YAAY;;;ACId,SAAS,oBAKdA,OAA2E;AAC3E,SAAO,iBAAiBA,KAAI;AAM9B;;;ADXO,IAAM,aAAa,oBAAoB,IAAI;","names":["Form"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@saas-ui/modals",
|
3
|
-
"version": "2.1
|
3
|
+
"version": "2.2.1",
|
4
4
|
"description": "A modal manager for Chakra UI",
|
5
5
|
"source": "src/index.ts",
|
6
6
|
"exports": {
|
@@ -9,16 +9,49 @@
|
|
9
9
|
"types": "./dist/index.d.ts",
|
10
10
|
"import": "./dist/index.mjs"
|
11
11
|
},
|
12
|
+
"./zod": {
|
13
|
+
"require": "./dist/zod/index.js",
|
14
|
+
"types": "./dist/zod/index.d.ts",
|
15
|
+
"import": "./dist/zod/index.mjs"
|
16
|
+
},
|
17
|
+
"./zod/src": {
|
18
|
+
"default": "./src/zod/index.ts"
|
19
|
+
},
|
20
|
+
"./yup": {
|
21
|
+
"require": "./dist/yup/index.js",
|
22
|
+
"types": "./dist/yup/index.d.ts",
|
23
|
+
"import": "./dist/yup/index.mjs"
|
24
|
+
},
|
25
|
+
"./yup/src": {
|
26
|
+
"default": "./src/yup/index.ts"
|
27
|
+
},
|
12
28
|
"./src": {
|
13
29
|
"default": "./src/index.ts"
|
14
30
|
}
|
15
31
|
},
|
32
|
+
"typesVersions": {
|
33
|
+
"*": {
|
34
|
+
"*": [
|
35
|
+
"dist/*"
|
36
|
+
]
|
37
|
+
},
|
38
|
+
"zod": {
|
39
|
+
"*": [
|
40
|
+
"dist/zod/*"
|
41
|
+
]
|
42
|
+
},
|
43
|
+
"yup": {
|
44
|
+
"*": [
|
45
|
+
"dist/yup/*"
|
46
|
+
]
|
47
|
+
}
|
48
|
+
},
|
16
49
|
"main": "./dist/index.js",
|
17
50
|
"module": "./dist/index.mjs",
|
18
51
|
"types": "./dist/index.d.ts",
|
19
52
|
"scripts": {
|
20
53
|
"clean": "rimraf dist",
|
21
|
-
"build": "tsup
|
54
|
+
"build": "tsup --config tsup.config.ts",
|
22
55
|
"lint": "eslint src --ext .ts,.tsx,.js,.jsx --config ../../.eslintrc.js",
|
23
56
|
"lint:staged": "lint-staged --allow-empty --config ../../lint-staged.config.js",
|
24
57
|
"typecheck": "tsc --noEmit"
|
@@ -58,10 +91,10 @@
|
|
58
91
|
},
|
59
92
|
"dependencies": {
|
60
93
|
"@chakra-ui/react-utils": "^2.0.12",
|
61
|
-
"@chakra-ui/utils": "^2.
|
62
|
-
"@saas-ui/forms": "2.
|
63
|
-
"@saas-ui/hooks": "2.0
|
64
|
-
"@saas-ui/react-utils": "2.
|
94
|
+
"@chakra-ui/utils": "^2.2.1",
|
95
|
+
"@saas-ui/forms": "2.7.1",
|
96
|
+
"@saas-ui/hooks": "2.1.0",
|
97
|
+
"@saas-ui/react-utils": "2.1.1"
|
65
98
|
},
|
66
99
|
"peerDependencies": {
|
67
100
|
"@chakra-ui/react": ">=2.4.9",
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import type { YupFormType } from '@saas-ui/forms/yup'
|
2
|
+
import { FormDialogFieldOverrides, createFormDialog } from '../form'
|
3
|
+
|
4
|
+
import type { BaseModalProps } from '../modal'
|
5
|
+
|
6
|
+
export function createYupFormDialog<
|
7
|
+
FieldDefs = any,
|
8
|
+
ExtraProps = object,
|
9
|
+
ExtraFieldProps extends object = object,
|
10
|
+
ExtraOverrides = object,
|
11
|
+
>(Form: YupFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>) {
|
12
|
+
return createFormDialog(Form) as unknown as YupFormType<
|
13
|
+
FieldDefs,
|
14
|
+
ExtraProps & Omit<BaseModalProps, 'children'>,
|
15
|
+
ExtraFieldProps,
|
16
|
+
ExtraOverrides & FormDialogFieldOverrides
|
17
|
+
>
|
18
|
+
}
|
package/src/yup/index.ts
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
import type { ZodFormType } from '@saas-ui/forms/zod'
|
2
|
+
import { createFormDialog, FormDialogFieldOverrides } from '../form'
|
3
|
+
import type { BaseModalProps } from '../modal'
|
4
|
+
|
5
|
+
export function createZodFormDialog<
|
6
|
+
FieldDefs = any,
|
7
|
+
ExtraProps = object,
|
8
|
+
ExtraFieldProps extends object = object,
|
9
|
+
ExtraOverrides = object,
|
10
|
+
>(Form: ZodFormType<FieldDefs, ExtraProps, ExtraFieldProps, ExtraOverrides>) {
|
11
|
+
return createFormDialog(Form) as unknown as ZodFormType<
|
12
|
+
FieldDefs,
|
13
|
+
ExtraProps & Omit<BaseModalProps, 'children'>,
|
14
|
+
ExtraFieldProps,
|
15
|
+
ExtraOverrides & FormDialogFieldOverrides
|
16
|
+
>
|
17
|
+
}
|