@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 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 (!includes(["id", "transporte.tarifa.cargos_adicionales"], key) &&
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.jsxs(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" }) }) })), !!props.selected && (jsxRuntime.jsx(Tooltip, { title: "Borrar", children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { onClick: props.handleDelete, children: jsxRuntime.jsx(DeleteIcon, { fontSize: "small" }) }) }))] }));
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 { fields, remove } = reactHookForm.useFieldArray({
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 [drawer, setDrawer] = React.useState({
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
- setDrawer({ open: true, data: undefined });
28122
+ append(props.defaultValues);
28130
28123
  };
28131
- const handleDelete = () => {
28132
- remove(Array.from(rowSelectionModel.ids).map((id) => getIndex(id)));
28124
+ const handleDelete = (id) => {
28125
+ remove(getIndex(id));
28133
28126
  };
28134
- const closeDrawer = () => {
28135
- setDrawer({ open: false, data: undefined });
28136
- };
28137
- // const handleSave = () => {
28138
- // const index = getIndex(drawer.data?._id);
28139
- // closeDrawer();
28140
- // if (index > -1) {
28141
- // update(index, props.form.watch(`${props.name}.${index}`));
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
- return (jsxRuntime.jsxs(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, { ...props.dataGridProps, rows: fields, checkboxSelection: props.pageType != "detail", onRowSelectionModelChange: (newRowSelectionModel) => {
28151
- setRowSelectionModel(newRowSelectionModel);
28152
- }, showToolbar: true, slots: { toolbar: EditToolbar }, slotProps: {
28153
- toolbar: {
28154
- selected: rowSelectionModel.ids.size,
28155
- handleCreate: handleCreate,
28156
- handleDelete: handleDelete,
28157
- pageType: props.pageType,
28158
- },
28159
- }, disableRowSelectionOnClick: true, onRowClick: handleRowClick, getRowId: (row) => row._id }) })] }), jsxRuntime.jsx(MainDrawer, { open: drawer.open, drawerToggle: closeDrawer, title: "Cargo Adicional", children: jsxRuntime.jsx(material.Grid, { size: 12, container: true, children: props.fields.map((field) => {
28160
- const fieldName = `${props.name}.${getIndex(drawer.data?._id)}.${field.name}`;
28161
- return (jsxRuntime.jsx(Field, { ...field, form: props.form, name: fieldName, fieldData: lodash.get(drawer.data, field.name) }, fieldName));
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 = { submitData: formData, data: data, props: props.slotProps?.parser };
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) => {