@acvl/frontend-components 0.0.27 → 0.0.28
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/dist/cjs/index.js +73 -48
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/src/components/v1/forms/utils.d.ts +2 -2
- package/dist/cjs/types/src/components/v1/layout/pages/DetailPage/FieldArrayField/index.d.ts +5 -3
- package/dist/esm/index.js +74 -49
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/src/components/v1/forms/utils.d.ts +2 -2
- package/dist/esm/types/src/components/v1/layout/pages/DetailPage/FieldArrayField/index.d.ts +5 -3
- package/dist/index.d.ts +6 -4
- package/package.json +1 -1
|
@@ -13,6 +13,6 @@ export interface JSONFormProps {
|
|
|
13
13
|
useLabel?: boolean;
|
|
14
14
|
props?: JSONParserProps;
|
|
15
15
|
}
|
|
16
|
-
export declare const jsonForm: ({ submitData, data, useLabel, props }: JSONFormProps) => any;
|
|
17
|
-
export declare const formDataForm: ({ submitData, data, useLabel, props }: JSONFormProps) => FormData;
|
|
16
|
+
export declare const jsonForm: ({ submitData, data, useLabel, props, }: JSONFormProps) => any;
|
|
17
|
+
export declare const formDataForm: ({ submitData, data, useLabel, props, }: JSONFormProps) => FormData;
|
|
18
18
|
export declare const setErrors: (form: any, error: any) => void;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { DataGridProps } from "@mui/x-data-grid";
|
|
2
2
|
import { GridProps } from "@mui/material";
|
|
3
|
-
import { FieldProps } from "../Field";
|
|
4
3
|
import { PageType } from "../../../../types";
|
|
4
|
+
import { JSONParserProps } from "../../../../forms";
|
|
5
5
|
declare module "@mui/x-data-grid" {
|
|
6
6
|
interface ToolbarPropsOverrides {
|
|
7
|
-
selected: number;
|
|
8
7
|
handleCreate: () => void;
|
|
9
8
|
handleDelete: () => void;
|
|
10
9
|
pageType: PageType;
|
|
@@ -13,11 +12,14 @@ declare module "@mui/x-data-grid" {
|
|
|
13
12
|
export interface ArrayFieldProps {
|
|
14
13
|
name: string;
|
|
15
14
|
label: string;
|
|
15
|
+
defaultValues: {
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
};
|
|
16
18
|
form?: any;
|
|
17
|
-
fields: FieldProps[];
|
|
18
19
|
dataGridProps: DataGridProps;
|
|
19
20
|
gridProps?: GridProps;
|
|
20
21
|
pageType?: PageType;
|
|
22
|
+
parser?: JSONParserProps;
|
|
21
23
|
}
|
|
22
24
|
declare const FieldArrayField: (props: ArrayFieldProps) => import("react/jsx-runtime").JSX.Element;
|
|
23
25
|
export default FieldArrayField;
|
package/dist/esm/index.js
CHANGED
|
@@ -74,7 +74,7 @@ import AddIcon from '@mui/icons-material/Add';
|
|
|
74
74
|
import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
|
|
75
75
|
import LinearProgress$1 from '@mui/material/LinearProgress';
|
|
76
76
|
import AttachFileIcon from '@mui/icons-material/AttachFile';
|
|
77
|
-
import { useGridApiContext, ToolbarButton, QuickFilter, QuickFilterTrigger, QuickFilterControl, QuickFilterClear, ColumnsPanelTrigger, Toolbar, useGridSelector, gridPaginationSelector, GridRow, GridRowEditStartReasons, GridRowModes, GridActionsCellItem, useGridApiRef, DataGrid, GridRowEditStopReasons, GridEditSingleSelectCell, GridEditInputCell, GridEditBooleanCell } from '@mui/x-data-grid';
|
|
77
|
+
import { useGridApiContext, ToolbarButton, QuickFilter, QuickFilterTrigger, QuickFilterControl, QuickFilterClear, ColumnsPanelTrigger, Toolbar, useGridSelector, gridPaginationSelector, GridRow, GridRowEditStartReasons, GridRowModes, GridActionsCellItem, useGridApiRef, DataGrid, GridRowEditStopReasons, GridEditSingleSelectCell, GridEditInputCell, GridEditBooleanCell, GridActionsCell } from '@mui/x-data-grid';
|
|
78
78
|
import Tooltip$1 from '@mui/material/Tooltip';
|
|
79
79
|
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
80
80
|
import ExpandLessIcon from '@mui/icons-material/ExpandLess';
|
|
@@ -25742,8 +25742,7 @@ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, dat
|
|
|
25742
25742
|
}
|
|
25743
25743
|
else {
|
|
25744
25744
|
forEach(object, (value, key2) => {
|
|
25745
|
-
if (
|
|
25746
|
-
isEqual(get$1(data, `${key}.${key2}`), value))
|
|
25745
|
+
if (key2 !== "id" && isEqual(get$1(data, `${key}.${key2}`), value))
|
|
25747
25746
|
return;
|
|
25748
25747
|
typeSwitch({
|
|
25749
25748
|
base_object: value,
|
|
@@ -25763,7 +25762,7 @@ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, dat
|
|
|
25763
25762
|
break;
|
|
25764
25763
|
}
|
|
25765
25764
|
};
|
|
25766
|
-
const jsonForm = ({ submitData, data, useLabel, props }) => {
|
|
25765
|
+
const jsonForm = ({ submitData, data, useLabel, props, }) => {
|
|
25767
25766
|
const response = {};
|
|
25768
25767
|
forEach(submitData, function (value, key) {
|
|
25769
25768
|
if (key != "id" && isEqual(get$1(data, key), value))
|
|
@@ -25781,7 +25780,7 @@ const jsonForm = ({ submitData, data, useLabel, props }) => {
|
|
|
25781
25780
|
});
|
|
25782
25781
|
return response;
|
|
25783
25782
|
};
|
|
25784
|
-
const formDataForm = ({ submitData, data, useLabel, props }) => {
|
|
25783
|
+
const formDataForm = ({ submitData, data, useLabel, props, }) => {
|
|
25785
25784
|
const formData = new FormData();
|
|
25786
25785
|
forEach(submitData, function (value, key) {
|
|
25787
25786
|
if (key != "id" && isEqual(get$1(data, key), value))
|
|
@@ -27468,7 +27467,7 @@ const editColumn = (props) => {
|
|
|
27468
27467
|
width: 80,
|
|
27469
27468
|
cellClassName: "actions",
|
|
27470
27469
|
getActions: ({ id, row }) => {
|
|
27471
|
-
const canEdit = get$1(row, "obj_permissions.edit");
|
|
27470
|
+
const canEdit = get$1(row, "obj_permissions.edit", true);
|
|
27472
27471
|
const isInEditMode = props.rowModesModel[id]?.mode === GridRowModes.Edit;
|
|
27473
27472
|
if (isInEditMode) {
|
|
27474
27473
|
return [
|
|
@@ -28086,60 +28085,81 @@ const Field = (props) => {
|
|
|
28086
28085
|
};
|
|
28087
28086
|
|
|
28088
28087
|
const EditToolbar = (props) => {
|
|
28089
|
-
return (
|
|
28088
|
+
return (jsx(Toolbar, { children: props.pageType != "detail" && (jsx(Tooltip$1, { title: "Crear", children: jsx(ToolbarButton, { onClick: props.handleCreate, children: jsx(AddIcon, { fontSize: "small" }) }) })) }));
|
|
28090
28089
|
};
|
|
28091
28090
|
const FieldArrayField = (props) => {
|
|
28092
|
-
const
|
|
28091
|
+
const detail = useMemo(() => props.pageType === "detail", [props.pageType]);
|
|
28092
|
+
const { fields, append, update, remove } = useFieldArray({
|
|
28093
28093
|
control: props.form.control,
|
|
28094
28094
|
name: props.name,
|
|
28095
28095
|
keyName: "_id",
|
|
28096
28096
|
});
|
|
28097
|
-
const [
|
|
28098
|
-
open: false,
|
|
28099
|
-
data: undefined,
|
|
28100
|
-
});
|
|
28101
|
-
const [rowSelectionModel, setRowSelectionModel] = useState({
|
|
28102
|
-
type: "include",
|
|
28103
|
-
ids: new Set(),
|
|
28104
|
-
});
|
|
28097
|
+
const [rowModesModel, setRowModesModel] = useState({});
|
|
28105
28098
|
const getIndex = useCallback((id) => findIndex(fields, function (field) {
|
|
28106
28099
|
return field._id == id;
|
|
28107
28100
|
}), [fields]);
|
|
28108
28101
|
const handleCreate = () => {
|
|
28109
|
-
|
|
28102
|
+
append(props.defaultValues);
|
|
28110
28103
|
};
|
|
28111
|
-
const handleDelete = () => {
|
|
28112
|
-
remove(
|
|
28104
|
+
const handleDelete = (id) => {
|
|
28105
|
+
remove(getIndex(id));
|
|
28113
28106
|
};
|
|
28114
|
-
const
|
|
28115
|
-
|
|
28116
|
-
|
|
28117
|
-
|
|
28118
|
-
|
|
28119
|
-
|
|
28120
|
-
|
|
28121
|
-
|
|
28122
|
-
// } else {
|
|
28123
|
-
// append(props.form.watch(`${props.name}.${index}`));
|
|
28124
|
-
// }
|
|
28125
|
-
//
|
|
28126
|
-
// }
|
|
28127
|
-
const handleRowClick = (e) => {
|
|
28128
|
-
setDrawer({ open: true, data: e.row });
|
|
28107
|
+
const processRowUpdate = async (newRow, originalRow) => {
|
|
28108
|
+
const original_data = jsonForm({ submitData: originalRow, props: props.parser });
|
|
28109
|
+
const data = jsonForm({ submitData: newRow, props: props.parser });
|
|
28110
|
+
if (isEqual$1(data, original_data))
|
|
28111
|
+
return originalRow;
|
|
28112
|
+
const index = getIndex(data._id);
|
|
28113
|
+
update(index, data);
|
|
28114
|
+
return newRow;
|
|
28129
28115
|
};
|
|
28130
|
-
|
|
28131
|
-
|
|
28132
|
-
|
|
28133
|
-
|
|
28134
|
-
|
|
28135
|
-
|
|
28136
|
-
|
|
28137
|
-
|
|
28138
|
-
|
|
28139
|
-
|
|
28140
|
-
|
|
28141
|
-
|
|
28142
|
-
|
|
28116
|
+
const handleProcessRowUpdateError = () => { };
|
|
28117
|
+
const dataGridProps = mergeSettings({
|
|
28118
|
+
columns: !detail
|
|
28119
|
+
? [
|
|
28120
|
+
...editColumn({
|
|
28121
|
+
displayEdit: true,
|
|
28122
|
+
rowModesModel,
|
|
28123
|
+
setRowModesModel,
|
|
28124
|
+
}),
|
|
28125
|
+
{
|
|
28126
|
+
field: "delete",
|
|
28127
|
+
type: "actions",
|
|
28128
|
+
headerName: "Borrar",
|
|
28129
|
+
renderCell: (params) => (jsx(GridActionsCell, { ...params, children: jsx(GridActionsCellItem, { icon: jsx(DeleteIcon, {}), label: "Delete", color: "primary", onClick: () => handleDelete(params.row._id) }) })),
|
|
28130
|
+
},
|
|
28131
|
+
]
|
|
28132
|
+
: [],
|
|
28133
|
+
rows: fields,
|
|
28134
|
+
disableRowSelectionOnClick: true,
|
|
28135
|
+
disableColumnSelector: true,
|
|
28136
|
+
showToolbar: !detail,
|
|
28137
|
+
slots: { toolbar: EditToolbar },
|
|
28138
|
+
slotProps: {
|
|
28139
|
+
toolbar: {
|
|
28140
|
+
handleCreate: handleCreate,
|
|
28141
|
+
handleDelete: handleDelete,
|
|
28142
|
+
pageType: props.pageType,
|
|
28143
|
+
},
|
|
28144
|
+
baseCheckbox: {
|
|
28145
|
+
size: "small",
|
|
28146
|
+
},
|
|
28147
|
+
},
|
|
28148
|
+
getRowId: (row) => row._id,
|
|
28149
|
+
getRowClassName: (params) => params.indexRelativeToCurrentPage % 2 === 0 ? "even" : "odd",
|
|
28150
|
+
density: "compact",
|
|
28151
|
+
onRowClick: undefined,
|
|
28152
|
+
editMode: "row",
|
|
28153
|
+
rowModesModel: rowModesModel,
|
|
28154
|
+
onRowModesModelChange: setRowModesModel,
|
|
28155
|
+
processRowUpdate: processRowUpdate,
|
|
28156
|
+
onProcessRowUpdateError: handleProcessRowUpdateError,
|
|
28157
|
+
onRowEditStart: ({ reason }, event) => {
|
|
28158
|
+
if (reason === GridRowEditStartReasons.cellDoubleClick && detail)
|
|
28159
|
+
event.defaultMuiPrevented = true;
|
|
28160
|
+
},
|
|
28161
|
+
}, props.dataGridProps);
|
|
28162
|
+
return (jsx(Fragment, { children: jsxs(Grid, { rowSpacing: 1, container: true, size: "grow", direction: "column", ...props.gridProps, children: [jsx(Grid, { size: 12, children: jsx(Typography$1, { variant: "body1", fontWeight: "bold", children: props.label }) }), jsx(Grid, { size: 12, children: jsx(DataGrid, { ...dataGridProps }) })] }) }));
|
|
28143
28163
|
};
|
|
28144
28164
|
|
|
28145
28165
|
const Section = (props) => {
|
|
@@ -28386,7 +28406,11 @@ function DetailPage(props) {
|
|
|
28386
28406
|
// ==============================|| SUBMIT ||============================== //
|
|
28387
28407
|
const onSubmitHandler = (submitedData) => {
|
|
28388
28408
|
const formData = "nativeEvent" in submitedData ? form.getValues() : submitedData;
|
|
28389
|
-
const params = {
|
|
28409
|
+
const params = {
|
|
28410
|
+
submitData: formData,
|
|
28411
|
+
data: data,
|
|
28412
|
+
props: props.slotProps?.parser,
|
|
28413
|
+
};
|
|
28390
28414
|
const dataToSend = props.edit.useFormData ? formDataForm(params) : jsonForm(params);
|
|
28391
28415
|
mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args })
|
|
28392
28416
|
.unwrap()
|
|
@@ -28412,6 +28436,7 @@ function DetailPage(props) {
|
|
|
28412
28436
|
}
|
|
28413
28437
|
});
|
|
28414
28438
|
};
|
|
28439
|
+
const onError = (errors) => console.log("Validation Errors:", errors);
|
|
28415
28440
|
// ==============================|| RENDER SECTIONS ||============================== //
|
|
28416
28441
|
const renderContent = () => {
|
|
28417
28442
|
let displayed_sections = -1;
|
|
@@ -28477,7 +28502,7 @@ function DetailPage(props) {
|
|
|
28477
28502
|
}
|
|
28478
28503
|
};
|
|
28479
28504
|
return (jsxs(Fragment, { children: [jsx(ContentLayout, { button: renderButton(), badge: props.pageType == "detail" &&
|
|
28480
|
-
badgeInfo && (jsx(StatusBadge, { title: badgeInfo["label"], severity: badgeInfo["value"] })), children: jsx(LoadingComponent, { height: 0.7, isLoading: isLoading || isFetching, children: jsx(FormProvider, { ...form, children: jsx(Box, { id: "formulario", component: "form", autoComplete: "off", noValidate: true, onSubmit: form.handleSubmit(onSubmitHandler), width: "100%", position: "relative", children: renderContent() }) }) }) }), renderPostAction()] }));
|
|
28505
|
+
badgeInfo && (jsx(StatusBadge, { title: badgeInfo["label"], severity: badgeInfo["value"] })), children: jsx(LoadingComponent, { height: 0.7, isLoading: isLoading || isFetching, children: jsx(FormProvider, { ...form, children: jsx(Box, { id: "formulario", component: "form", autoComplete: "off", noValidate: true, onSubmit: form.handleSubmit(onSubmitHandler, onError), width: "100%", position: "relative", children: renderContent() }) }) }) }), renderPostAction()] }));
|
|
28481
28506
|
}
|
|
28482
28507
|
|
|
28483
28508
|
const ListPage = (props) => {
|