mui-custom-form 1.1.5 → 1.1.7

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.
@@ -43,14 +43,15 @@ const CustomForm = ({ fieldsGroups, onSubmit, formControl, submitButton = true,
43
43
  case "file":
44
44
  return (react_1.default.createElement(material_1.FormControl, { fullWidth: true, error: !!field.required },
45
45
  react_1.default.createElement(material_1.FormLabel, { component: "legend", required: field.required }, field.label),
46
- react_1.default.createElement(material_1.Button, { variant: "contained", component: "label" },
47
- "Upload File",
48
- react_1.default.createElement("input", Object.assign({ type: "file", hidden: true, onChange: (e) => {
49
- const fileValue = e.target.files && e.target.files.length > 0
50
- ? e.target.files
51
- : undefined;
52
- setValue(field.name, fileValue);
53
- } }, field.otherProps)))));
46
+ react_1.default.createElement(react_1.default.Fragment, null,
47
+ react_1.default.createElement(material_1.Box, Object.assign({ component: "label" }, field.otherProps),
48
+ field.component,
49
+ react_1.default.createElement("input", { type: "file", hidden: true, onChange: (e) => {
50
+ const fileValue = e.target.files && e.target.files.length > 0
51
+ ? e.target.files
52
+ : undefined;
53
+ setValue(field.name, fileValue);
54
+ } })))));
54
55
  case "switch":
55
56
  return (react_1.default.createElement(react_hook_form_1.Controller, { name: field.name, control: control, rules: { required: field.required }, render: ({ field: controlField, fieldState: { error } }) => (react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Switch, Object.assign({}, controlField, { checked: !!controlField.value, onChange: (e) => controlField.onChange(e.target.checked) }, field.otherProps)), label: field.label })) }));
56
57
  case "checkbox-group":
package/dist/types.d.ts CHANGED
@@ -1,40 +1,39 @@
1
1
  import { ButtonProps, StackProps } from "@mui/material";
2
2
  import { CSSProperties } from "react";
3
- import { FieldValues, SubmitErrorHandler, SubmitHandler, UseFormReturn } from "react-hook-form";
4
- type name<T> = T extends string ? string : keyof T;
3
+ import { FieldPath, FieldValues, SubmitErrorHandler, SubmitHandler, UseFormReturn } from "react-hook-form";
5
4
  type SelectTypes = "single-select" | "multi-select";
6
5
  type BaseTypes = "text" | "number" | "date" | "file" | "password" | "textarea" | "switch" | "checkbox-group" | "radio-group" | "custom";
7
6
  export interface ISelectField {
8
7
  type: SelectTypes;
9
- list: $option[];
8
+ list: TOption[];
10
9
  }
11
10
  export interface IOtherField {
12
11
  type: BaseTypes;
13
- list?: $option[];
12
+ list?: TOption[];
14
13
  component?: React.ComponentType<CustomComponentProps>;
15
14
  }
16
- export type ICustomField<T = string> = {
15
+ export type ICustomField<T extends string> = {
17
16
  label: string;
18
- name: name<T> | name<T>[];
17
+ name: T;
19
18
  required?: boolean;
20
19
  otherProps?: any;
21
20
  span?: number;
22
21
  } & ({
23
22
  type: SelectTypes;
24
- list: $option[];
23
+ list: TOption[];
25
24
  } | {
26
25
  type: BaseTypes;
27
- list?: $option[];
26
+ list?: TOption[];
28
27
  component?: React.ComponentType<CustomComponentProps>;
29
28
  });
30
- export type $option<T = any> = {
29
+ export type TOption<T = any> = {
31
30
  icon?: React.ReactNode;
32
31
  label: string;
33
32
  value: T;
34
33
  };
35
- export type IFieldGroup<T = any> = ICustomField<T>[][];
34
+ export type IFieldGroup<TFormValues extends FieldValues = FieldValues> = ICustomField<FieldPath<TFormValues>>[][];
36
35
  export interface ICustomForm<T extends FieldValues> {
37
- fieldsGroups: IFieldGroup<any>;
36
+ fieldsGroups: IFieldGroup<T>;
38
37
  onSubmit: [SubmitHandler<T>, SubmitErrorHandler<T>?];
39
38
  formControl: UseFormReturn<T>;
40
39
  actionButtonsPlacement?: CSSProperties["justifyContent"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mui-custom-form",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "A versatile React form component utilizing MUI components and react-hook-form.",
5
5
  "main": "dist/CustomForm.js",
6
6
  "types": "dist/CustomForm.d.ts",
@@ -32,8 +32,8 @@
32
32
  "dayjs": "^1.11.13",
33
33
  "moment": "^2.30.1",
34
34
  "react": "^18.0.0 || ^19.0.0",
35
- "react-hook-form": "^7.56.3",
36
- "react-dom": "^18.0.0 || ^19.0.0"
35
+ "react-dom": "^18.0.0 || ^19.0.0",
36
+ "react-hook-form": "^7.56.3"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/node": "^22.15.18",
@@ -42,8 +42,8 @@
42
42
  "typescript": "^5.8.3"
43
43
  },
44
44
  "dependencies": {
45
- "react-hook-form": "^7.56.3",
46
45
  "@mui/material": "^7.1.0",
47
- "@mui/x-date-pickers": "^8.3.1"
46
+ "@mui/x-date-pickers": "^8.3.1",
47
+ "react-hook-form": "^7.56.3"
48
48
  }
49
49
  }