@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.
- package/CHANGELOG.md +11 -5
- package/dist/index.cjs +206 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +182 -0
- package/dist/index.d.ts +110 -185
- package/dist/index.js +86 -531
- package/dist/index.js.map +1 -1
- package/package.json +15 -33
- package/src/alert-dialog.tsx +156 -0
- package/src/default-modals.ts +3 -7
- package/src/drawer.tsx +46 -60
- package/src/form.tsx +15 -22
- package/src/index.ts +22 -38
- package/src/modal.tsx +43 -52
- package/src/types.ts +46 -33
- package/dist/chunk-FRC2HTO7.mjs +0 -154
- package/dist/chunk-FRC2HTO7.mjs.map +0 -1
- package/dist/form-BtCUKHAs.d.mts +0 -82
- package/dist/form-BtCUKHAs.d.ts +0 -82
- package/dist/index.d.mts +0 -257
- package/dist/index.mjs +0 -469
- package/dist/index.mjs.map +0 -1
- package/dist/yup/index.d.mts +0 -15
- package/dist/yup/index.d.ts +0 -15
- package/dist/yup/index.js +0 -165
- package/dist/yup/index.js.map +0 -1
- package/dist/yup/index.mjs +0 -20
- package/dist/yup/index.mjs.map +0 -1
- package/dist/zod/index.d.mts +0 -15
- package/dist/zod/index.d.ts +0 -15
- package/dist/zod/index.js +0 -165
- package/dist/zod/index.js.map +0 -1
- package/dist/zod/index.mjs +0 -20
- package/dist/zod/index.mjs.map +0 -1
- package/src/create-modals.tsx +0 -30
- package/src/dialog.tsx +0 -151
- package/src/menu.tsx +0 -107
- package/src/provider.tsx +0 -357
package/dist/yup/index.js
DELETED
@@ -1,165 +0,0 @@
|
|
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
|
package/dist/yup/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
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'\n\nimport { runIfFn, MaybeRenderProp } 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"]}
|
package/dist/yup/index.mjs
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
'use client'
|
2
|
-
import {
|
3
|
-
createFormDialog
|
4
|
-
} from "../chunk-FRC2HTO7.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
|
package/dist/yup/index.mjs.map
DELETED
@@ -1 +0,0 @@
|
|
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"]}
|
package/dist/zod/index.d.mts
DELETED
@@ -1,15 +0,0 @@
|
|
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-BtCUKHAs.mjs';
|
6
|
-
import 'react';
|
7
|
-
import '@chakra-ui/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 };
|
package/dist/zod/index.d.ts
DELETED
@@ -1,15 +0,0 @@
|
|
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-BtCUKHAs.js';
|
6
|
-
import 'react';
|
7
|
-
import '@chakra-ui/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 };
|
package/dist/zod/index.js
DELETED
@@ -1,165 +0,0 @@
|
|
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
|
package/dist/zod/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
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'\n\nimport { runIfFn, MaybeRenderProp } 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"]}
|
package/dist/zod/index.mjs
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
'use client'
|
2
|
-
import {
|
3
|
-
createFormDialog
|
4
|
-
} from "../chunk-FRC2HTO7.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
|
package/dist/zod/index.mjs.map
DELETED
@@ -1 +0,0 @@
|
|
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/src/create-modals.tsx
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
import { defaultModals } from './default-modals'
|
2
|
-
import {
|
3
|
-
ModalsContextValue,
|
4
|
-
ModalsProvider,
|
5
|
-
ModalsProviderProps,
|
6
|
-
useModals,
|
7
|
-
} from './provider'
|
8
|
-
|
9
|
-
export interface CreateModalsOptions<
|
10
|
-
TModalDefs extends Record<string, React.FC<any>>
|
11
|
-
> {
|
12
|
-
modals: TModalDefs
|
13
|
-
}
|
14
|
-
|
15
|
-
export const createModals = <TModalDefs extends Record<string, React.FC<any>>>(
|
16
|
-
options: CreateModalsOptions<TModalDefs>
|
17
|
-
) => {
|
18
|
-
const modals = {
|
19
|
-
...defaultModals,
|
20
|
-
...options.modals,
|
21
|
-
}
|
22
|
-
const Provider = (props: Omit<ModalsProviderProps, 'modals'>) => {
|
23
|
-
return <ModalsProvider children={props.children} modals={modals} />
|
24
|
-
}
|
25
|
-
|
26
|
-
return {
|
27
|
-
ModalsProvider: Provider,
|
28
|
-
useModals: useModals as () => ModalsContextValue<typeof modals>,
|
29
|
-
}
|
30
|
-
}
|
package/src/dialog.tsx
DELETED
@@ -1,151 +0,0 @@
|
|
1
|
-
import * as React from 'react'
|
2
|
-
|
3
|
-
import {
|
4
|
-
AlertDialog,
|
5
|
-
AlertDialogBody,
|
6
|
-
AlertDialogFooter,
|
7
|
-
AlertDialogHeader,
|
8
|
-
AlertDialogContent,
|
9
|
-
AlertDialogOverlay,
|
10
|
-
AlertDialogProps,
|
11
|
-
ButtonGroup,
|
12
|
-
ButtonGroupProps,
|
13
|
-
Button,
|
14
|
-
ButtonProps,
|
15
|
-
} from '@chakra-ui/react'
|
16
|
-
|
17
|
-
export interface ConfirmDialogProps
|
18
|
-
extends Omit<AlertDialogProps, 'leastDestructiveRef'> {
|
19
|
-
/**
|
20
|
-
* The dialog title
|
21
|
-
*/
|
22
|
-
title?: React.ReactNode
|
23
|
-
/**
|
24
|
-
* The cancel button label
|
25
|
-
*/
|
26
|
-
cancelLabel?: React.ReactNode
|
27
|
-
/**
|
28
|
-
* The confirm button label
|
29
|
-
*/
|
30
|
-
confirmLabel?: React.ReactNode
|
31
|
-
/**
|
32
|
-
* The cancel button props
|
33
|
-
*/
|
34
|
-
cancelProps?: ButtonProps
|
35
|
-
/**
|
36
|
-
* The confirm button props
|
37
|
-
*/
|
38
|
-
confirmProps?: ButtonProps
|
39
|
-
/**
|
40
|
-
* The button group props
|
41
|
-
*/
|
42
|
-
buttonGroupProps?: ButtonGroupProps
|
43
|
-
/**
|
44
|
-
* Close the dialog on cancel
|
45
|
-
* @default true
|
46
|
-
*/
|
47
|
-
closeOnCancel?: boolean
|
48
|
-
/**
|
49
|
-
* Close the dialog on confirm
|
50
|
-
* @default true
|
51
|
-
*/
|
52
|
-
closeOnConfirm?: boolean
|
53
|
-
/**
|
54
|
-
* Defines which button gets initial focus
|
55
|
-
* https://www.w3.org/TR/wai-aria-practices/#alertdialog
|
56
|
-
*/
|
57
|
-
leastDestructiveFocus?: 'cancel' | 'confirm'
|
58
|
-
/**
|
59
|
-
* Function that's called when cancel is clicked
|
60
|
-
*/
|
61
|
-
onCancel?: () => void
|
62
|
-
/**
|
63
|
-
* Function that's called when confirm is clicked.
|
64
|
-
*/
|
65
|
-
onConfirm?: () => Promise<void> | void
|
66
|
-
}
|
67
|
-
|
68
|
-
export const ConfirmDialog: React.FC<ConfirmDialogProps> = (props) => {
|
69
|
-
const {
|
70
|
-
title,
|
71
|
-
cancelLabel = 'Cancel',
|
72
|
-
confirmLabel = 'Confirm',
|
73
|
-
cancelProps,
|
74
|
-
confirmProps,
|
75
|
-
buttonGroupProps,
|
76
|
-
isOpen,
|
77
|
-
closeOnCancel = true,
|
78
|
-
closeOnConfirm = true,
|
79
|
-
leastDestructiveFocus = 'cancel',
|
80
|
-
onClose,
|
81
|
-
onCancel,
|
82
|
-
onConfirm,
|
83
|
-
children,
|
84
|
-
...rest
|
85
|
-
} = props
|
86
|
-
|
87
|
-
const cancelRef = React.useRef(null)
|
88
|
-
const confirmRef = React.useRef(null)
|
89
|
-
const [isLoading, setIsLoading] = React.useState(false)
|
90
|
-
|
91
|
-
const handleConfirm = async () => {
|
92
|
-
try {
|
93
|
-
const result = onConfirm?.()
|
94
|
-
if (typeof result?.then === 'function') {
|
95
|
-
setIsLoading(true)
|
96
|
-
await result
|
97
|
-
}
|
98
|
-
|
99
|
-
closeOnConfirm && onClose()
|
100
|
-
/* eslint-disable no-useless-catch */
|
101
|
-
} catch (e: any) {
|
102
|
-
throw e
|
103
|
-
} finally {
|
104
|
-
setIsLoading(false)
|
105
|
-
}
|
106
|
-
/* eslint-enable */
|
107
|
-
}
|
108
|
-
|
109
|
-
return (
|
110
|
-
<AlertDialog
|
111
|
-
isOpen={isOpen}
|
112
|
-
onClose={onClose}
|
113
|
-
{...rest}
|
114
|
-
leastDestructiveRef={
|
115
|
-
leastDestructiveFocus === 'cancel' ? cancelRef : confirmRef
|
116
|
-
}
|
117
|
-
>
|
118
|
-
<AlertDialogOverlay>
|
119
|
-
<AlertDialogContent>
|
120
|
-
<AlertDialogHeader>{title}</AlertDialogHeader>
|
121
|
-
|
122
|
-
<AlertDialogBody>{children}</AlertDialogBody>
|
123
|
-
|
124
|
-
<AlertDialogFooter>
|
125
|
-
<ButtonGroup {...buttonGroupProps}>
|
126
|
-
<Button
|
127
|
-
ref={cancelRef}
|
128
|
-
{...cancelProps}
|
129
|
-
onClick={() => {
|
130
|
-
onCancel?.()
|
131
|
-
|
132
|
-
closeOnCancel && onClose()
|
133
|
-
}}
|
134
|
-
>
|
135
|
-
{cancelProps?.children || cancelLabel}
|
136
|
-
</Button>
|
137
|
-
<Button
|
138
|
-
ref={confirmRef}
|
139
|
-
isLoading={isLoading}
|
140
|
-
{...confirmProps}
|
141
|
-
onClick={handleConfirm}
|
142
|
-
>
|
143
|
-
{confirmProps?.children || confirmLabel}
|
144
|
-
</Button>
|
145
|
-
</ButtonGroup>
|
146
|
-
</AlertDialogFooter>
|
147
|
-
</AlertDialogContent>
|
148
|
-
</AlertDialogOverlay>
|
149
|
-
</AlertDialog>
|
150
|
-
)
|
151
|
-
}
|