@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
package/dist/cjs/index.js
CHANGED
|
@@ -25762,8 +25762,7 @@ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, dat
|
|
|
25762
25762
|
}
|
|
25763
25763
|
else {
|
|
25764
25764
|
forEach(object, (value, key2) => {
|
|
25765
|
-
if (
|
|
25766
|
-
isEqual(get(data, `${key}.${key2}`), value))
|
|
25765
|
+
if (key2 !== "id" && isEqual(get(data, `${key}.${key2}`), value))
|
|
25767
25766
|
return;
|
|
25768
25767
|
typeSwitch({
|
|
25769
25768
|
base_object: value,
|
|
@@ -25783,7 +25782,7 @@ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, dat
|
|
|
25783
25782
|
break;
|
|
25784
25783
|
}
|
|
25785
25784
|
};
|
|
25786
|
-
const jsonForm = ({ submitData, data, useLabel, props }) => {
|
|
25785
|
+
const jsonForm = ({ submitData, data, useLabel, props, }) => {
|
|
25787
25786
|
const response = {};
|
|
25788
25787
|
forEach(submitData, function (value, key) {
|
|
25789
25788
|
if (key != "id" && isEqual(get(data, key), value))
|
|
@@ -25801,7 +25800,7 @@ const jsonForm = ({ submitData, data, useLabel, props }) => {
|
|
|
25801
25800
|
});
|
|
25802
25801
|
return response;
|
|
25803
25802
|
};
|
|
25804
|
-
const formDataForm = ({ submitData, data, useLabel, props }) => {
|
|
25803
|
+
const formDataForm = ({ submitData, data, useLabel, props, }) => {
|
|
25805
25804
|
const formData = new FormData();
|
|
25806
25805
|
forEach(submitData, function (value, key) {
|
|
25807
25806
|
if (key != "id" && isEqual(get(data, key), value))
|
|
@@ -27488,7 +27487,7 @@ const editColumn = (props) => {
|
|
|
27488
27487
|
width: 80,
|
|
27489
27488
|
cellClassName: "actions",
|
|
27490
27489
|
getActions: ({ id, row }) => {
|
|
27491
|
-
const canEdit = get(row, "obj_permissions.edit");
|
|
27490
|
+
const canEdit = get(row, "obj_permissions.edit", true);
|
|
27492
27491
|
const isInEditMode = props.rowModesModel[id]?.mode === xDataGrid.GridRowModes.Edit;
|
|
27493
27492
|
if (isInEditMode) {
|
|
27494
27493
|
return [
|
|
@@ -28106,60 +28105,81 @@ const Field = (props) => {
|
|
|
28106
28105
|
};
|
|
28107
28106
|
|
|
28108
28107
|
const EditToolbar = (props) => {
|
|
28109
|
-
return (jsxRuntime.
|
|
28108
|
+
return (jsxRuntime.jsx(xDataGrid.Toolbar, { children: props.pageType != "detail" && (jsxRuntime.jsx(Tooltip, { title: "Crear", children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { onClick: props.handleCreate, children: jsxRuntime.jsx(AddIcon, { fontSize: "small" }) }) })) }));
|
|
28110
28109
|
};
|
|
28111
28110
|
const FieldArrayField = (props) => {
|
|
28112
|
-
const
|
|
28111
|
+
const detail = React.useMemo(() => props.pageType === "detail", [props.pageType]);
|
|
28112
|
+
const { fields, append, update, remove } = reactHookForm.useFieldArray({
|
|
28113
28113
|
control: props.form.control,
|
|
28114
28114
|
name: props.name,
|
|
28115
28115
|
keyName: "_id",
|
|
28116
28116
|
});
|
|
28117
|
-
const [
|
|
28118
|
-
open: false,
|
|
28119
|
-
data: undefined,
|
|
28120
|
-
});
|
|
28121
|
-
const [rowSelectionModel, setRowSelectionModel] = React.useState({
|
|
28122
|
-
type: "include",
|
|
28123
|
-
ids: new Set(),
|
|
28124
|
-
});
|
|
28117
|
+
const [rowModesModel, setRowModesModel] = React.useState({});
|
|
28125
28118
|
const getIndex = React.useCallback((id) => lodash.findIndex(fields, function (field) {
|
|
28126
28119
|
return field._id == id;
|
|
28127
28120
|
}), [fields]);
|
|
28128
28121
|
const handleCreate = () => {
|
|
28129
|
-
|
|
28122
|
+
append(props.defaultValues);
|
|
28130
28123
|
};
|
|
28131
|
-
const handleDelete = () => {
|
|
28132
|
-
remove(
|
|
28124
|
+
const handleDelete = (id) => {
|
|
28125
|
+
remove(getIndex(id));
|
|
28133
28126
|
};
|
|
28134
|
-
const
|
|
28135
|
-
|
|
28136
|
-
|
|
28137
|
-
|
|
28138
|
-
|
|
28139
|
-
|
|
28140
|
-
|
|
28141
|
-
|
|
28142
|
-
// } else {
|
|
28143
|
-
// append(props.form.watch(`${props.name}.${index}`));
|
|
28144
|
-
// }
|
|
28145
|
-
//
|
|
28146
|
-
// }
|
|
28147
|
-
const handleRowClick = (e) => {
|
|
28148
|
-
setDrawer({ open: true, data: e.row });
|
|
28127
|
+
const processRowUpdate = async (newRow, originalRow) => {
|
|
28128
|
+
const original_data = jsonForm({ submitData: originalRow, props: props.parser });
|
|
28129
|
+
const data = jsonForm({ submitData: newRow, props: props.parser });
|
|
28130
|
+
if (lodash.isEqual(data, original_data))
|
|
28131
|
+
return originalRow;
|
|
28132
|
+
const index = getIndex(data._id);
|
|
28133
|
+
update(index, data);
|
|
28134
|
+
return newRow;
|
|
28149
28135
|
};
|
|
28150
|
-
|
|
28151
|
-
|
|
28152
|
-
|
|
28153
|
-
|
|
28154
|
-
|
|
28155
|
-
|
|
28156
|
-
|
|
28157
|
-
|
|
28158
|
-
|
|
28159
|
-
|
|
28160
|
-
|
|
28161
|
-
|
|
28162
|
-
|
|
28136
|
+
const handleProcessRowUpdateError = () => { };
|
|
28137
|
+
const dataGridProps = mergeSettings({
|
|
28138
|
+
columns: !detail
|
|
28139
|
+
? [
|
|
28140
|
+
...editColumn({
|
|
28141
|
+
displayEdit: true,
|
|
28142
|
+
rowModesModel,
|
|
28143
|
+
setRowModesModel,
|
|
28144
|
+
}),
|
|
28145
|
+
{
|
|
28146
|
+
field: "delete",
|
|
28147
|
+
type: "actions",
|
|
28148
|
+
headerName: "Borrar",
|
|
28149
|
+
renderCell: (params) => (jsxRuntime.jsx(xDataGrid.GridActionsCell, { ...params, children: jsxRuntime.jsx(xDataGrid.GridActionsCellItem, { icon: jsxRuntime.jsx(DeleteIcon, {}), label: "Delete", color: "primary", onClick: () => handleDelete(params.row._id) }) })),
|
|
28150
|
+
},
|
|
28151
|
+
]
|
|
28152
|
+
: [],
|
|
28153
|
+
rows: fields,
|
|
28154
|
+
disableRowSelectionOnClick: true,
|
|
28155
|
+
disableColumnSelector: true,
|
|
28156
|
+
showToolbar: !detail,
|
|
28157
|
+
slots: { toolbar: EditToolbar },
|
|
28158
|
+
slotProps: {
|
|
28159
|
+
toolbar: {
|
|
28160
|
+
handleCreate: handleCreate,
|
|
28161
|
+
handleDelete: handleDelete,
|
|
28162
|
+
pageType: props.pageType,
|
|
28163
|
+
},
|
|
28164
|
+
baseCheckbox: {
|
|
28165
|
+
size: "small",
|
|
28166
|
+
},
|
|
28167
|
+
},
|
|
28168
|
+
getRowId: (row) => row._id,
|
|
28169
|
+
getRowClassName: (params) => params.indexRelativeToCurrentPage % 2 === 0 ? "even" : "odd",
|
|
28170
|
+
density: "compact",
|
|
28171
|
+
onRowClick: undefined,
|
|
28172
|
+
editMode: "row",
|
|
28173
|
+
rowModesModel: rowModesModel,
|
|
28174
|
+
onRowModesModelChange: setRowModesModel,
|
|
28175
|
+
processRowUpdate: processRowUpdate,
|
|
28176
|
+
onProcessRowUpdateError: handleProcessRowUpdateError,
|
|
28177
|
+
onRowEditStart: ({ reason }, event) => {
|
|
28178
|
+
if (reason === xDataGrid.GridRowEditStartReasons.cellDoubleClick && detail)
|
|
28179
|
+
event.defaultMuiPrevented = true;
|
|
28180
|
+
},
|
|
28181
|
+
}, props.dataGridProps);
|
|
28182
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(material.Grid, { rowSpacing: 1, container: true, size: "grow", direction: "column", ...props.gridProps, children: [jsxRuntime.jsx(material.Grid, { size: 12, children: jsxRuntime.jsx(material.Typography, { variant: "body1", fontWeight: "bold", children: props.label }) }), jsxRuntime.jsx(material.Grid, { size: 12, children: jsxRuntime.jsx(xDataGrid.DataGrid, { ...dataGridProps }) })] }) }));
|
|
28163
28183
|
};
|
|
28164
28184
|
|
|
28165
28185
|
const Section = (props) => {
|
|
@@ -28406,7 +28426,11 @@ function DetailPage(props) {
|
|
|
28406
28426
|
// ==============================|| SUBMIT ||============================== //
|
|
28407
28427
|
const onSubmitHandler = (submitedData) => {
|
|
28408
28428
|
const formData = "nativeEvent" in submitedData ? form.getValues() : submitedData;
|
|
28409
|
-
const params = {
|
|
28429
|
+
const params = {
|
|
28430
|
+
submitData: formData,
|
|
28431
|
+
data: data,
|
|
28432
|
+
props: props.slotProps?.parser,
|
|
28433
|
+
};
|
|
28410
28434
|
const dataToSend = props.edit.useFormData ? formDataForm(params) : jsonForm(params);
|
|
28411
28435
|
mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args })
|
|
28412
28436
|
.unwrap()
|
|
@@ -28432,6 +28456,7 @@ function DetailPage(props) {
|
|
|
28432
28456
|
}
|
|
28433
28457
|
});
|
|
28434
28458
|
};
|
|
28459
|
+
const onError = (errors) => console.log("Validation Errors:", errors);
|
|
28435
28460
|
// ==============================|| RENDER SECTIONS ||============================== //
|
|
28436
28461
|
const renderContent = () => {
|
|
28437
28462
|
let displayed_sections = -1;
|
|
@@ -28497,7 +28522,7 @@ function DetailPage(props) {
|
|
|
28497
28522
|
}
|
|
28498
28523
|
};
|
|
28499
28524
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ContentLayout, { button: renderButton(), badge: props.pageType == "detail" &&
|
|
28500
|
-
badgeInfo && (jsxRuntime.jsx(StatusBadge, { title: badgeInfo["label"], severity: badgeInfo["value"] })), children: jsxRuntime.jsx(LoadingComponent, { height: 0.7, isLoading: isLoading || isFetching, children: jsxRuntime.jsx(reactHookForm.FormProvider, { ...form, children: jsxRuntime.jsx(material.Box, { id: "formulario", component: "form", autoComplete: "off", noValidate: true, onSubmit: form.handleSubmit(onSubmitHandler), width: "100%", position: "relative", children: renderContent() }) }) }) }), renderPostAction()] }));
|
|
28525
|
+
badgeInfo && (jsxRuntime.jsx(StatusBadge, { title: badgeInfo["label"], severity: badgeInfo["value"] })), children: jsxRuntime.jsx(LoadingComponent, { height: 0.7, isLoading: isLoading || isFetching, children: jsxRuntime.jsx(reactHookForm.FormProvider, { ...form, children: jsxRuntime.jsx(material.Box, { id: "formulario", component: "form", autoComplete: "off", noValidate: true, onSubmit: form.handleSubmit(onSubmitHandler, onError), width: "100%", position: "relative", children: renderContent() }) }) }) }), renderPostAction()] }));
|
|
28501
28526
|
}
|
|
28502
28527
|
|
|
28503
28528
|
const ListPage = (props) => {
|