@acvl/frontend-components 0.0.27 → 0.0.29

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,86 @@ 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 });
28130
- };
28131
- const handleDelete = () => {
28132
- remove(Array.from(rowSelectionModel.ids).map((id) => getIndex(id)));
28122
+ append(props.defaultValues);
28133
28123
  };
28134
- const closeDrawer = () => {
28135
- setDrawer({ open: false, data: undefined });
28124
+ const handleDelete = (id) => {
28125
+ remove(getIndex(id));
28136
28126
  };
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
+ onRowEditStop: (params, event) => {
28182
+ if (params.reason === xDataGrid.GridRowEditStopReasons.rowFocusOut) {
28183
+ event.defaultMuiPrevented = true;
28184
+ }
28185
+ },
28186
+ }, props.dataGridProps);
28187
+ 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
28188
  };
28164
28189
 
28165
28190
  const Section = (props) => {
@@ -28406,7 +28431,11 @@ function DetailPage(props) {
28406
28431
  // ==============================|| SUBMIT ||============================== //
28407
28432
  const onSubmitHandler = (submitedData) => {
28408
28433
  const formData = "nativeEvent" in submitedData ? form.getValues() : submitedData;
28409
- const params = { submitData: formData, data: data, props: props.slotProps?.parser };
28434
+ const params = {
28435
+ submitData: formData,
28436
+ data: data,
28437
+ props: props.slotProps?.parser,
28438
+ };
28410
28439
  const dataToSend = props.edit.useFormData ? formDataForm(params) : jsonForm(params);
28411
28440
  mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args })
28412
28441
  .unwrap()
@@ -28432,6 +28461,7 @@ function DetailPage(props) {
28432
28461
  }
28433
28462
  });
28434
28463
  };
28464
+ const onError = (errors) => console.log("Validation Errors:", errors);
28435
28465
  // ==============================|| RENDER SECTIONS ||============================== //
28436
28466
  const renderContent = () => {
28437
28467
  let displayed_sections = -1;
@@ -28497,7 +28527,7 @@ function DetailPage(props) {
28497
28527
  }
28498
28528
  };
28499
28529
  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()] }));
28530
+ 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
28531
  }
28502
28532
 
28503
28533
  const ListPage = (props) => {