@acvl/frontend-components 0.0.25 → 0.0.27

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.
Files changed (38) hide show
  1. package/dist/cjs/index.js +496 -421
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/src/components/v1/buttons/CreateButton/CreateButtonWithMenuOptions.d.ts +1 -0
  4. package/dist/cjs/types/src/components/v1/buttons/DeleteButton/DeleteButton.d.ts +1 -1
  5. package/dist/cjs/types/src/components/v1/buttons/NormalOrIcon/NormalOrIcon.d.ts +1 -1
  6. package/dist/cjs/types/src/components/v1/datagrids/columns/deleteColumn.d.ts +1 -1
  7. package/dist/cjs/types/src/components/v1/datagrids/columns/editColumn.d.ts +1 -1
  8. package/dist/cjs/types/src/components/v1/datagrids/custom_slots/CustomToolbar/index.d.ts +3 -3
  9. package/dist/cjs/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/ExportButton/ExportCSV.d.ts +1 -1
  10. package/dist/cjs/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/ExportButton/index.d.ts +3 -3
  11. package/dist/cjs/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/FiltersButton/index.d.ts +1 -1
  12. package/dist/cjs/types/src/components/v1/datagrids/wrappers/CreateGridWrapper.d.ts +1 -0
  13. package/dist/cjs/types/src/components/v1/datagrids/wrappers/EditGridWrapper.d.ts +2 -2
  14. package/dist/cjs/types/src/components/v1/drawers/HistorialDrawer/index.d.ts +1 -1
  15. package/dist/cjs/types/src/components/v1/layout/pages/DetailPage/FieldArrayField/index.d.ts +1 -1
  16. package/dist/cjs/types/src/components/v1/layout/pages/DetailPage/index.d.ts +2 -2
  17. package/dist/cjs/types/src/components/v1/layout/shared/Tabs/index.d.ts +1 -1
  18. package/dist/cjs/types/src/components/v1/lib/slices/snackProgress.d.ts +1 -1
  19. package/dist/esm/index.js +499 -424
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/types/src/components/v1/buttons/CreateButton/CreateButtonWithMenuOptions.d.ts +1 -0
  22. package/dist/esm/types/src/components/v1/buttons/DeleteButton/DeleteButton.d.ts +1 -1
  23. package/dist/esm/types/src/components/v1/buttons/NormalOrIcon/NormalOrIcon.d.ts +1 -1
  24. package/dist/esm/types/src/components/v1/datagrids/columns/deleteColumn.d.ts +1 -1
  25. package/dist/esm/types/src/components/v1/datagrids/columns/editColumn.d.ts +1 -1
  26. package/dist/esm/types/src/components/v1/datagrids/custom_slots/CustomToolbar/index.d.ts +3 -3
  27. package/dist/esm/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/ExportButton/ExportCSV.d.ts +1 -1
  28. package/dist/esm/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/ExportButton/index.d.ts +3 -3
  29. package/dist/esm/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/FiltersButton/index.d.ts +1 -1
  30. package/dist/esm/types/src/components/v1/datagrids/wrappers/CreateGridWrapper.d.ts +1 -0
  31. package/dist/esm/types/src/components/v1/datagrids/wrappers/EditGridWrapper.d.ts +2 -2
  32. package/dist/esm/types/src/components/v1/drawers/HistorialDrawer/index.d.ts +1 -1
  33. package/dist/esm/types/src/components/v1/layout/pages/DetailPage/FieldArrayField/index.d.ts +1 -1
  34. package/dist/esm/types/src/components/v1/layout/pages/DetailPage/index.d.ts +2 -2
  35. package/dist/esm/types/src/components/v1/layout/shared/Tabs/index.d.ts +1 -1
  36. package/dist/esm/types/src/components/v1/lib/slices/snackProgress.d.ts +1 -1
  37. package/dist/index.d.ts +14 -12
  38. package/package.json +1 -1
package/dist/cjs/index.js CHANGED
@@ -74,6 +74,7 @@ var SaveIcon = require('@mui/icons-material/Save');
74
74
  var AddIcon = require('@mui/icons-material/Add');
75
75
  var KeyboardArrowDownIcon = require('@mui/icons-material/KeyboardArrowDown');
76
76
  var LinearProgress = require('@mui/material/LinearProgress');
77
+ var AttachFileIcon = require('@mui/icons-material/AttachFile');
77
78
  var xDataGrid = require('@mui/x-data-grid');
78
79
  var Tooltip = require('@mui/material/Tooltip');
79
80
  var ExpandMoreIcon = require('@mui/icons-material/ExpandMore');
@@ -95,6 +96,7 @@ var sortable = require('@dnd-kit/sortable');
95
96
  var utilities = require('@dnd-kit/utilities');
96
97
  var core$1 = require('@dnd-kit/core');
97
98
  var modifiers = require('@dnd-kit/modifiers');
99
+ var DrawIcon = require('@mui/icons-material/Draw');
98
100
  var CloseIcon = require('@mui/icons-material/Close');
99
101
  var ErrorOutlineIcon = require('@mui/icons-material/ErrorOutline');
100
102
  var query$1 = require('@reduxjs/toolkit/query');
@@ -124,10 +126,12 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
124
126
 
125
127
  const NormalOrIcon = (props) => {
126
128
  const theme = material.useTheme();
127
- const belowLG = material.useMediaQuery(theme.breakpoints.down('lg'));
128
- if ((belowLG && !(props.type == 'button')) || props.type == 'icon')
129
- return (jsxRuntime.jsx(material.Tooltip, { title: props.buttonProps.children, children: jsxRuntime.jsx(material.IconButton, { ...props.buttonProps, children: props.buttonProps.startIcon }) }));
130
- return (jsxRuntime.jsx(material.Button, { ...props.buttonProps }));
129
+ const belowLG = material.useMediaQuery(theme.breakpoints.down("lg"));
130
+ if ((belowLG && !(props.type == "button")) || props.type == "icon") {
131
+ const { startIcon, ...others } = props.buttonProps;
132
+ return (jsxRuntime.jsx(material.Tooltip, { title: props.buttonProps.children, children: jsxRuntime.jsx(material.IconButton, { ...others, children: startIcon }) }));
133
+ }
134
+ return jsxRuntime.jsx(material.Button, { ...props.buttonProps });
131
135
  };
132
136
 
133
137
  const EditButton = () => {
@@ -137,23 +141,23 @@ const EditButton = () => {
137
141
  }, [navigate]);
138
142
  // ===== || KEYDOWN || ===== //
139
143
  const handleKeyPress = React.useCallback((event) => {
140
- if (event.ctrlKey && event.key === 'e') {
144
+ if (event.ctrlKey && event.key === "e") {
141
145
  event.preventDefault();
142
146
  handleClick();
143
147
  }
144
148
  }, [handleClick]);
145
149
  React.useEffect(() => {
146
- document.addEventListener('keydown', handleKeyPress);
150
+ document.addEventListener("keydown", handleKeyPress);
147
151
  return () => {
148
- document.removeEventListener('keydown', handleKeyPress);
152
+ document.removeEventListener("keydown", handleKeyPress);
149
153
  };
150
154
  }, [handleKeyPress]);
151
155
  return (jsxRuntime.jsx(NormalOrIcon, { buttonProps: {
152
- color: 'secondary',
153
- variant: 'contained',
156
+ color: "secondary",
157
+ variant: "contained",
154
158
  startIcon: jsxRuntime.jsx(EditIcon, {}),
155
159
  onClick: handleClick,
156
- children: 'Editar',
160
+ children: "Editar",
157
161
  } }));
158
162
  };
159
163
 
@@ -25831,18 +25835,18 @@ const valueLabel = zod.object({
25831
25835
 
25832
25836
  const MainDrawer = (props) => {
25833
25837
  const theme = material.useTheme();
25834
- return (jsxRuntime.jsx(material.Drawer, { variant: 'temporary', anchor: 'right', open: props.open, onClose: props.drawerToggle, sx: {
25838
+ return (jsxRuntime.jsx(material.Drawer, { variant: "temporary", anchor: "right", open: props.open, onClose: props.drawerToggle, sx: {
25835
25839
  zIndex: 1202,
25836
- '& .MuiDrawer-paper': {
25837
- width: '100%',
25840
+ "& .MuiDrawer-paper": {
25841
+ width: "100%",
25838
25842
  maxWidth: props.width ? props.width : 600,
25839
25843
  background: theme.palette.background.default,
25840
25844
  color: theme.palette.text.primary,
25841
- borderRight: 'none',
25842
- borderTopLeftRadius: '12px',
25843
- borderBottomLeftRadius: '12px',
25844
- }
25845
- }, color: 'inherit', ...props.drawerProps, children: jsxRuntime.jsxs(material.Grid, { container: true, direction: 'column', px: 4, py: 2, spacing: 2, children: [jsxRuntime.jsx(material.Grid, { display: 'flex', justifyContent: 'right', pb: 0, children: props.slots?.button ? props.slots.button : (jsxRuntime.jsx(material.Button, { color: 'error', startIcon: jsxRuntime.jsx(CancelIcon, {}), onClick: props.drawerToggle, children: "Cerrar" })) }), jsxRuntime.jsx(material.Grid, { children: jsxRuntime.jsx(core.PageHeader, { breadcrumbs: [], title: props.title }) }), jsxRuntime.jsx(material.Grid, { size: 12, container: true, position: 'relative', children: props.children })] }) }));
25845
+ borderRight: "none",
25846
+ borderTopLeftRadius: "12px",
25847
+ borderBottomLeftRadius: "12px",
25848
+ },
25849
+ }, color: "inherit", ...props.drawerProps, children: jsxRuntime.jsxs(material.Grid, { container: true, direction: "column", px: 4, py: 2, spacing: 2, children: [jsxRuntime.jsx(material.Grid, { display: "flex", justifyContent: "right", pb: 0, children: props.slots?.button ? (props.slots.button) : (jsxRuntime.jsx(material.Button, { color: "error", startIcon: jsxRuntime.jsx(CancelIcon, {}), onClick: props.drawerToggle, children: "Cerrar" })) }), jsxRuntime.jsx(material.Grid, { children: jsxRuntime.jsx(core.PageHeader, { breadcrumbs: [], title: props.title }) }), jsxRuntime.jsx(material.Grid, { size: 12, container: true, position: "relative", children: props.children })] }) }));
25846
25850
  };
25847
25851
 
25848
25852
  const LoadingComponent = (props) => {
@@ -25901,60 +25905,49 @@ const _HistorialDrawer = (props) => {
25901
25905
  const HistorialDrawer = (props) => {
25902
25906
  const [open, setOpen] = React.useState(false);
25903
25907
  const handleDrawer = React.useCallback(() => {
25904
- setOpen(prevState => !prevState);
25908
+ setOpen((prevState) => !prevState);
25905
25909
  }, []);
25906
25910
  // ===== || KEYDOWN || ===== //
25907
25911
  const handleKeyPress = React.useCallback((event) => {
25908
- if (event.ctrlKey && event.shiftKey && event.key === 'H') {
25912
+ if (event.ctrlKey && event.shiftKey && event.key === "H") {
25909
25913
  event.preventDefault();
25910
25914
  handleDrawer();
25911
25915
  }
25912
25916
  }, [handleDrawer]);
25913
25917
  React.useEffect(() => {
25914
- document.addEventListener('keydown', handleKeyPress);
25918
+ document.addEventListener("keydown", handleKeyPress);
25915
25919
  return () => {
25916
- document.removeEventListener('keydown', handleKeyPress);
25920
+ document.removeEventListener("keydown", handleKeyPress);
25917
25921
  };
25918
25922
  }, [handleKeyPress]);
25919
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.Tooltip, { title: 'Historial', children: jsxRuntime.jsx(material.IconButton, { color: 'primary', onClick: handleDrawer, sx: {
25920
- position: 'absolute',
25923
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.Tooltip, { title: "Historial", children: jsxRuntime.jsx(material.IconButton, { color: "primary", onClick: handleDrawer, sx: {
25924
+ position: "absolute",
25921
25925
  right: 0,
25922
25926
  }, ...props.iconButtonProps, children: jsxRuntime.jsx(HistoryIcon, {}) }) }), jsxRuntime.jsx(_HistorialDrawer, { open: open, handleDrawer: handleDrawer, endpoint: props.endpoint })] }));
25923
25927
  };
25924
25928
 
25925
- const buildListItems = (content) => {
25926
- const items = [];
25927
- const loop = (content, error_title) => {
25928
- if (Array.isArray(content)) {
25929
- items.push({ title: error_title ? (error_title.charAt(0).toUpperCase() + error_title.slice(1)).split('_').join(' ') : 'N/A', content: content.join(', ') });
25930
- }
25931
- else {
25932
- Object.keys(content).map((row_error) => {
25933
- loop(content[row_error], row_error);
25934
- });
25935
- }
25936
- };
25937
- loop(content);
25938
- return items;
25939
- };
25940
25929
  const RowErrors = (props) => {
25941
25930
  return (jsxRuntime.jsx(material.List, { subheader: jsxRuntime.jsx(material.ListSubheader, { sx: {
25942
25931
  bgcolor: colors.red[50],
25943
25932
  color: colors.red[800],
25944
- fontWeight: 'bold',
25945
- borderRadius: '12px',
25946
- lineHeight: '40px'
25933
+ fontWeight: "bold",
25934
+ borderRadius: "12px",
25935
+ lineHeight: "40px",
25947
25936
  }, children: `Hilera ${props.row}` }), sx: {
25948
25937
  bgcolor: colors.red[50],
25949
- borderRadius: '12px',
25950
- }, children: buildListItems(props.data[props.row]).map((item) => {
25938
+ borderRadius: "12px",
25939
+ }, children: props.data.map((item) => {
25940
+ const pre_name = item.name.split(".").at(-1);
25941
+ const name = (pre_name.charAt(0).toUpperCase() + pre_name.slice(1))
25942
+ .split("_")
25943
+ .join(" ");
25951
25944
  return (jsxRuntime.jsx(material.ListItem, { sx: {
25952
- py: 0
25953
- }, children: jsxRuntime.jsx(ListItemText, { primary: jsxRuntime.jsxs(material.Box, { children: [jsxRuntime.jsx(material.Typography, { variant: 'caption', pr: 0.5, sx: {
25945
+ py: 0,
25946
+ }, children: jsxRuntime.jsx(ListItemText, { primary: jsxRuntime.jsxs(material.Box, { children: [jsxRuntime.jsx(material.Typography, { variant: "caption", pr: 0.5, sx: {
25954
25947
  color: colors.red[800],
25955
- }, children: `${item.title}:` }), jsxRuntime.jsx(material.Typography, { variant: 'caption', sx: {
25948
+ }, children: `${name}:` }), jsxRuntime.jsx(material.Typography, { variant: "caption", sx: {
25956
25949
  color: colors.red[800],
25957
- }, children: item.content })] }) }) }));
25950
+ }, children: item.reason.join(", ") })] }) }) }));
25958
25951
  }) }));
25959
25952
  };
25960
25953
 
@@ -25994,9 +25987,8 @@ const FileUploadBox = (props) => {
25994
25987
  props.setValid(true);
25995
25988
  })
25996
25989
  .catch((e) => {
25997
- const columnas_inv = lodash.get(e.data, "columnas_invalidas");
25998
- if (columnas_inv)
25999
- notifications.show(columnas_inv, { severity: "error" });
25990
+ if (e.data?.detail?.length > 0)
25991
+ notifications.show(e.data.detail[0], { severity: "error" });
26000
25992
  props.setValid(false);
26001
25993
  });
26002
25994
  });
@@ -26023,19 +26015,22 @@ const FileUploadBox = (props) => {
26023
26015
  onChange(null);
26024
26016
  setFile(null);
26025
26017
  };
26018
+ const renderErrorRows = () => {
26019
+ if (!error?.data?.invalid_params)
26020
+ return;
26021
+ const rows = lodash.groupBy(error?.data?.invalid_params, function (e) {
26022
+ return e.name.split(".")[0];
26023
+ });
26024
+ if (!rows)
26025
+ return;
26026
+ return Object.entries(rows).map(([row, errors]) => (jsxRuntime.jsx(RowErrors, { row: row, data: errors }, row)));
26027
+ };
26026
26028
  return (jsxRuntime.jsx(Box, { width: 1, children: jsxRuntime.jsxs(material.Stack, { spacing: 2, children: [!file && !isLoading && (jsxRuntime.jsxs(Box, { component: "div", width: 1, display: "flex", justifyContent: "center", alignItems: "center", border: "1.5px dashed", borderRadius: "12px", py: 4, px: 2, borderColor: colors.grey[800], bgcolor: colors.grey[50], ...getRootProps(), children: [jsxRuntime.jsx(VisuallyHiddenInput, { id: "file-upload", type: "file", ...getInputProps() }), jsxRuntime.jsx(FileUploadIcon, { sx: {
26027
26029
  color: colors.grey[800],
26028
26030
  pr: 1,
26029
26031
  } }), jsxRuntime.jsx(Typography, { variant: "body2", sx: { color: colors.grey[800] }, children: isDragActive
26030
26032
  ? "Soltar archivo aquí."
26031
- : "Arrastra un archivo aquí o haz clic para seleccionar uno." })] })), isLoading && (jsxRuntime.jsx(Box, { children: jsxRuntime.jsx(material.LinearProgress, { sx: { height: 5 } }) })), file && (jsxRuntime.jsx(FileBox, { file: file, handleRemove: handleRemove, loadingRemove: removerLoading })), error &&
26032
- "data" in error &&
26033
- Object.keys(error.data).map((row) => {
26034
- if (typeof error.data[row] == "object") {
26035
- return jsxRuntime.jsx(RowErrors, { row: row, data: error.data }, row);
26036
- }
26037
- return null;
26038
- })] }) }));
26033
+ : "Arrastra un archivo aquí o haz clic para seleccionar uno." })] })), isLoading && (jsxRuntime.jsx(Box, { children: jsxRuntime.jsx(material.LinearProgress, { sx: { height: 5 } }) })), file && (jsxRuntime.jsx(FileBox, { file: file, handleRemove: handleRemove, loadingRemove: removerLoading })), renderErrorRows()] }) }));
26039
26034
  };
26040
26035
  return (jsxRuntime.jsx(reactHookForm.Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value } }) => {
26041
26036
  return jsxRuntime.jsx(Dropzone, { onChange: onChange, value: value });
@@ -26220,7 +26215,7 @@ async function manualCacheRefresh(api, id, dispatch, queryFulfilled, endpoints)
26220
26215
  const initialState$1 = {};
26221
26216
  // == crea el slice == //
26222
26217
  const snackProgress = toolkit.createSlice({
26223
- name: 'snackProgress',
26218
+ name: "snackProgress",
26224
26219
  initialState: initialState$1,
26225
26220
  // declarar acciones que se le pueden hacer a esta sección de la tienda
26226
26221
  reducers: {
@@ -26236,7 +26231,7 @@ const snackProgress = toolkit.createSlice({
26236
26231
  closeProgressSnack(state, action) {
26237
26232
  return lodash.omit(state, action.payload);
26238
26233
  },
26239
- }
26234
+ },
26240
26235
  });
26241
26236
  // exportar acciones
26242
26237
  const { openProgressSnack, updateProgressSnackData, closeProgressSnack } = snackProgress.actions;
@@ -26262,12 +26257,14 @@ const { changeTitle, } = settings.actions;
26262
26257
  var header = settings.reducer;
26263
26258
 
26264
26259
  const ControlledDropdown = (props) => {
26265
- const [inputValue, setInputValue] = React.useState('');
26260
+ const [inputValue, setInputValue] = React.useState("");
26266
26261
  const [options, setOptions] = React.useState(props.extraProps?.options ? props.extraProps?.options : []);
26267
26262
  const args = React.useMemo(() => {
26268
26263
  if (!props.extraProps?.queryArgs)
26269
26264
  return undefined;
26270
- return mergeSettings(props.extraProps?.queryArgs, { filters: { nombre__icontains: inputValue } });
26265
+ return mergeSettings(props.extraProps?.queryArgs, {
26266
+ filters: { nombre__icontains: inputValue },
26267
+ });
26271
26268
  }, [inputValue, props.extraProps?.queryArgs]);
26272
26269
  const api = useAPI();
26273
26270
  const [getOpciones, { isLoading, isFetching, isError }] = api.useLazyGetComoOpcionesQuery();
@@ -26280,7 +26277,8 @@ const ControlledDropdown = (props) => {
26280
26277
  };
26281
26278
  const handleSearch = React.useCallback(debounce((args, callback) => {
26282
26279
  setOptions([]);
26283
- getOpciones(args).unwrap()
26280
+ getOpciones(args)
26281
+ .unwrap()
26284
26282
  .then(callback)
26285
26283
  .catch(() => {
26286
26284
  //
@@ -26293,7 +26291,7 @@ const ControlledDropdown = (props) => {
26293
26291
  });
26294
26292
  }
26295
26293
  }, [args, handleSearch, open]);
26296
- return (jsxRuntime.jsx(reactHookForm.Controller, { name: props.name, control: props.control, render: ({ field: { value, onChange, }, fieldState: { error }, }) => {
26294
+ return (jsxRuntime.jsx(reactHookForm.Controller, { name: props.name, control: props.control, render: ({ field: { value, onChange }, fieldState: { error } }) => {
26297
26295
  const handleChange = (_event, newValue) => {
26298
26296
  onChange(newValue);
26299
26297
  };
@@ -26301,10 +26299,10 @@ const ControlledDropdown = (props) => {
26301
26299
  setInputValue(newInputValue);
26302
26300
  }, isOptionEqualToValue: (option, value) => {
26303
26301
  return option.value === value.value;
26304
- }, filterOptions: props.extraProps.queryArgs ? (x) => x : undefined, fullWidth: true, size: 'small', disabled: !options || isError, renderInput: (params) => (jsxRuntime.jsx(TextField, { ...params, label: props.label, error: !!error, helperText: error ? error.message : props.extraProps?.disableHT ? '' : ' ', slotProps: {
26302
+ }, filterOptions: props.extraProps.queryArgs ? (x) => x : undefined, fullWidth: true, size: "small", disabled: !options || isError, renderInput: (params) => (jsxRuntime.jsx(TextField, { ...params, label: props.label, error: !!error, helperText: error ? error.message : props.extraProps?.disableHT ? "" : " ", slotProps: {
26305
26303
  input: {
26306
26304
  ...params.InputProps,
26307
- endAdornment: (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [(isLoading || isFetching) ? jsxRuntime.jsx(material.CircularProgress, { color: "inherit", size: 20 }) : null, params.InputProps.endAdornment] })),
26305
+ endAdornment: (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [isLoading || isFetching ? (jsxRuntime.jsx(material.CircularProgress, { color: "inherit", size: 20 })) : null, params.InputProps.endAdornment] })),
26308
26306
  },
26309
26307
  } })), ...props.fieldProps }));
26310
26308
  } }));
@@ -26333,13 +26331,15 @@ const ControlledPhoneNumber = (props) => {
26333
26331
  };
26334
26332
 
26335
26333
  const ControlledSelect = (props) => {
26336
- const [inputValue, setInputValue] = React.useState('');
26334
+ const [inputValue, setInputValue] = React.useState("");
26337
26335
  const [options, setOptions] = React.useState(props.extraProps?.options ? props.extraProps?.options : []);
26338
26336
  const [selectedAll, setSelectedAll] = React.useState(false);
26339
26337
  const args = React.useMemo(() => {
26340
26338
  if (!props.extraProps?.queryArgs)
26341
26339
  return undefined;
26342
- return mergeSettings(props.extraProps?.queryArgs, { filters: { nombre__icontains: inputValue } });
26340
+ return mergeSettings(props.extraProps?.queryArgs, {
26341
+ filters: { nombre__icontains: inputValue },
26342
+ });
26343
26343
  }, [inputValue, props.extraProps?.queryArgs]);
26344
26344
  const api = useAPI();
26345
26345
  const [getOpciones, { isLoading, isFetching, isError }] = api.useLazyGetComoOpcionesQuery();
@@ -26354,7 +26354,8 @@ const ControlledSelect = (props) => {
26354
26354
  };
26355
26355
  const handleSearch = React.useCallback(debounce((args, callback) => {
26356
26356
  setOptions([]);
26357
- getOpciones(args).unwrap()
26357
+ getOpciones(args)
26358
+ .unwrap()
26358
26359
  .then(callback)
26359
26360
  .catch(() => {
26360
26361
  //
@@ -26363,12 +26364,14 @@ const ControlledSelect = (props) => {
26363
26364
  React.useEffect(() => {
26364
26365
  if (args && open)
26365
26366
  handleSearch(args, (filteredOptions) => {
26366
- setOptions([{ value: 'all', label: 'All' }].concat(filteredOptions));
26367
+ setOptions([{ value: "all", label: "All" }].concat(filteredOptions));
26367
26368
  });
26368
26369
  }, [args, handleSearch, open]);
26369
26370
  return (jsxRuntime.jsx(reactHookForm.Controller, { name: props.name, control: props.control, render: ({ field: { value, onChange }, fieldState: { error } }) => {
26370
26371
  const handleChange = (_event, newValue) => {
26371
- if (lodash.find(newValue, function (val) { return val.value == 'all'; })) {
26372
+ if (lodash.find(newValue, function (val) {
26373
+ return val.value == "all";
26374
+ })) {
26372
26375
  if (selectedAll) {
26373
26376
  setSelectedAll(false);
26374
26377
  onChange(newValue.slice(1));
@@ -26392,10 +26395,10 @@ const ControlledSelect = (props) => {
26392
26395
  setInputValue(newInputValue);
26393
26396
  }, isOptionEqualToValue: (option, value) => {
26394
26397
  return option.value === value.value;
26395
- }, filterOptions: props.extraProps.queryArgs ? (x) => x : undefined, multiple: true, disableCloseOnSelect: true, limitTags: 1, fullWidth: true, size: 'small', disabled: !options || isError, renderInput: (params) => (jsxRuntime.jsx(TextField, { ...params, label: props.label, error: !!error, helperText: error ? error.message : '', slotProps: {
26398
+ }, filterOptions: props.extraProps.queryArgs ? (x) => x : undefined, multiple: true, disableCloseOnSelect: true, limitTags: 1, fullWidth: true, size: "small", disabled: !options || isError, renderInput: (params) => (jsxRuntime.jsx(TextField, { ...params, label: props.label, error: !!error, helperText: error ? error.message : "", slotProps: {
26396
26399
  input: {
26397
26400
  ...params.InputProps,
26398
- endAdornment: (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [(isLoading || isFetching) ? jsxRuntime.jsx(material.CircularProgress, { color: "inherit", size: 20 }) : null, params.InputProps.endAdornment] })),
26401
+ endAdornment: (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [isLoading || isFetching ? (jsxRuntime.jsx(material.CircularProgress, { color: "inherit", size: 20 })) : null, params.InputProps.endAdornment] })),
26399
26402
  },
26400
26403
  } })), ...props.fieldProps, renderOption: (props, option, { selected }) => {
26401
26404
  const { key, ...optionProps } = props;
@@ -26403,7 +26406,7 @@ const ControlledSelect = (props) => {
26403
26406
  } }));
26404
26407
  } }));
26405
26408
  };
26406
- ControlledSelect.displayName = 'ControlledSelect';
26409
+ ControlledSelect.displayName = "ControlledSelect";
26407
26410
 
26408
26411
  // ==============================|| DESLIZADOR CONTROLADO ||============================== //
26409
26412
  const ControlledSlider$1 = (props) => {
@@ -26436,19 +26439,27 @@ const ControlledText = (props) => {
26436
26439
  };
26437
26440
  return (
26438
26441
  // controlador
26439
- jsxRuntime.jsx(reactHookForm.Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error }, }) => {
26442
+ jsxRuntime.jsx(reactHookForm.Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error } }) => {
26440
26443
  return (
26441
26444
  // campo de texto
26442
- jsxRuntime.jsx(TextField, { variant: 'outlined', size: 'small', id: props.name, label: props.label, value: value ? value.toString() : '', onChange: onChange, error: !!error, type: props.extraProps?.password ? showPassword ? 'text' : 'password' : 'text', helperText: error ? error.message : props.fieldProps?.helperText ? props.fieldProps.helperText : ' ', fullWidth: true, slotProps: {
26445
+ jsxRuntime.jsx(TextField, { variant: "outlined", size: "small", id: props.name, label: props.label, value: value ? value.toString() : "", onChange: onChange, error: !!error, type: props.extraProps?.password
26446
+ ? showPassword
26447
+ ? "text"
26448
+ : "password"
26449
+ : "text", helperText: error
26450
+ ? error.message
26451
+ : props.fieldProps?.helperText
26452
+ ? props.fieldProps.helperText
26453
+ : " ", fullWidth: true, slotProps: {
26443
26454
  input: {
26444
26455
  // ícono de mostar u ocultar si es campo de contarseña
26445
- endAdornment: props.extraProps?.password && (jsxRuntime.jsx(material.InputAdornment, { position: 'end', children: jsxRuntime.jsx(material.IconButton, { "aria-label": "toggle password visibility", tabIndex: -1, onClick: handleShowPassword, edge: 'end', size: 'large', sx: {
26446
- color: 'secondary.darker',
26447
- '&:hover': {
26448
- color: 'secondary.main',
26449
- }
26450
- }, children: showPassword ? jsxRuntime.jsx(iconsMaterial.Visibility, {}) : jsxRuntime.jsx(iconsMaterial.VisibilityOff, {}) }) }))
26451
- }
26456
+ endAdornment: props.extraProps?.password && (jsxRuntime.jsx(material.InputAdornment, { position: "end", children: jsxRuntime.jsx(material.IconButton, { "aria-label": "toggle password visibility", tabIndex: -1, onClick: handleShowPassword, edge: "end", size: "large", sx: {
26457
+ color: "secondary.darker",
26458
+ "&:hover": {
26459
+ color: "secondary.main",
26460
+ },
26461
+ }, children: showPassword ? jsxRuntime.jsx(iconsMaterial.Visibility, {}) : jsxRuntime.jsx(iconsMaterial.VisibilityOff, {}) }) })),
26462
+ },
26452
26463
  }, ...props.fieldProps }));
26453
26464
  } }));
26454
26465
  };
@@ -26508,16 +26519,15 @@ const ControlledTimePicker = (props) => {
26508
26519
  const filedProps = React.useMemo(() => {
26509
26520
  const defaultProps = {
26510
26521
  slotProps: {
26511
- textField: { size: 'small' },
26512
- field: { clearable: true, },
26513
- }
26522
+ textField: { size: "small" },
26523
+ field: { clearable: true },
26524
+ },
26514
26525
  };
26515
26526
  return merge$1({}, defaultProps, props.fieldProps);
26516
26527
  }, [props.fieldProps]);
26517
- return (jsxRuntime.jsx(reactHookForm.Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error }, }) => {
26518
- const val = convertValueToDayjs(value, 'time');
26519
- return (jsxRuntime.jsxs(material.FormGroup, { sx: { width: 1 }, color: 'secondary', children: [jsxRuntime.jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: jsxRuntime.jsx(TimePicker, { label: props.label, onChange: (v) => handleChange(v, 'time', onChange), value: val || null, ...filedProps }) }), !props.extraProps?.disableHT &&
26520
- jsxRuntime.jsx(material.FormHelperText, { error: !!error, children: error ? error.message : ' ' })] }));
26528
+ return (jsxRuntime.jsx(reactHookForm.Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error } }) => {
26529
+ const val = convertValueToDayjs(value, "time");
26530
+ return (jsxRuntime.jsxs(material.FormGroup, { sx: { width: 1 }, color: "secondary", children: [jsxRuntime.jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: jsxRuntime.jsx(TimePicker, { label: props.label, onChange: (v) => handleChange(v, "time", onChange), value: val || null, ...filedProps }) }), !props.extraProps?.disableHT && (jsxRuntime.jsx(material.FormHelperText, { error: !!error, children: error ? error.message : " " }))] }));
26521
26531
  } }));
26522
26532
  };
26523
26533
 
@@ -26537,22 +26547,23 @@ const ControlledSlider = (props) => {
26537
26547
 
26538
26548
  const DeleteConfirmationDialog = (props) => {
26539
26549
  const notifications = core.useNotifications();
26540
- const pathname = 'temp';
26541
- const id = React.useMemo(() => props.id || pathname.split('/').at(-1), [pathname, props.id]);
26550
+ const pathname = "temp";
26551
+ const id = React.useMemo(() => props.id || pathname.split("/").at(-1), [pathname, props.id]);
26542
26552
  const [mutation] = props.mutation();
26543
26553
  const schema = zod.object({ confirmation: zod.string() });
26544
26554
  const form = reactHookForm.useForm({
26545
26555
  resolver: zod$1.zodResolver(schema),
26546
- defaultValues: { confirmation: '' },
26556
+ defaultValues: { confirmation: "" },
26547
26557
  });
26548
26558
  const handleClose = () => {
26549
26559
  props.handleClose();
26550
26560
  form.reset();
26551
26561
  };
26552
- const confirmation = form.watch('confirmation').toUpperCase();
26553
- const disabled = React.useMemo(() => confirmation != 'ELIMINAR', [confirmation]);
26562
+ const confirmation = form.watch("confirmation").toUpperCase();
26563
+ const disabled = React.useMemo(() => confirmation != "ELIMINAR", [confirmation]);
26554
26564
  const onSubmitHandler = () => {
26555
- mutation({ id: id }).unwrap()
26565
+ mutation({ id: id })
26566
+ .unwrap()
26556
26567
  .then(() => {
26557
26568
  if (props.disableNavBack) {
26558
26569
  handleClose();
@@ -26561,25 +26572,25 @@ const DeleteConfirmationDialog = (props) => {
26561
26572
  // props.navigate(-1);
26562
26573
  form.reset();
26563
26574
  }
26564
- notifications.show('Objeto removido exitosamente!', { severity: 'success' });
26575
+ notifications.show("Objeto removido exitosamente!", { severity: "success" });
26565
26576
  })
26566
26577
  .catch((error) => {
26567
26578
  console.log(error);
26568
- notifications.show('Error', { severity: 'error' });
26579
+ notifications.show("Error", { severity: "error" });
26569
26580
  });
26570
26581
  };
26571
26582
  const handleKeyDown = (event) => {
26572
- if (event.key === 'Enter' && !disabled)
26583
+ if (event.key === "Enter" && !disabled)
26573
26584
  onSubmitHandler();
26574
26585
  };
26575
- return (jsxRuntime.jsxs(material.Dialog, { open: props.open, onClose: handleClose, children: [jsxRuntime.jsx(material.DialogTitle, { variant: 'h5', children: "Eliminar" }), jsxRuntime.jsxs(material.DialogContent, { children: [jsxRuntime.jsx(material.DialogContentText, { sx: { pb: 2 }, children: "\u00BFEst\u00E1 seguro que quiere eliminar el objeto?" }), jsxRuntime.jsx(material.Box, { id: 'eliminar-formulario', width: '100%', position: 'relative', children: jsxRuntime.jsx(ControlledText, { name: 'confirmation', control: form.control, fieldProps: {
26586
+ return (jsxRuntime.jsxs(material.Dialog, { open: props.open, onClose: handleClose, children: [jsxRuntime.jsx(material.DialogTitle, { variant: "h5", children: "Eliminar" }), jsxRuntime.jsxs(material.DialogContent, { children: [jsxRuntime.jsx(material.DialogContentText, { sx: { pb: 2 }, children: "\u00BFEst\u00E1 seguro que quiere eliminar el objeto?" }), jsxRuntime.jsx(material.Box, { id: "eliminar-formulario", width: "100%", position: "relative", children: jsxRuntime.jsx(ControlledText, { name: "confirmation", control: form.control, fieldProps: {
26576
26587
  autoFocus: true,
26577
26588
  required: true,
26578
- margin: 'dense',
26589
+ margin: "dense",
26579
26590
  label: "Escribir 'ELIMINAR' para confirmar.",
26580
26591
  fullWidth: true,
26581
- variant: 'standard',
26582
- helperText: '',
26592
+ variant: "standard",
26593
+ helperText: "",
26583
26594
  onKeyDown: handleKeyDown,
26584
26595
  } }) })] }), jsxRuntime.jsxs(material.DialogActions, { children: [jsxRuntime.jsx(material.Button, { onClick: handleClose, children: "Cancelar" }), jsxRuntime.jsx(material.Button, { onClick: onSubmitHandler, disabled: disabled, children: "Eliminar" })] })] }));
26585
26596
  };
@@ -26594,23 +26605,23 @@ const DeleteButton = (props) => {
26594
26605
  };
26595
26606
  // ===== || KEYDOWN || ===== //
26596
26607
  const handleKeyPress = React.useCallback((event) => {
26597
- if (event.ctrlKey && event.key === 'd') {
26608
+ if (event.ctrlKey && event.key === "d") {
26598
26609
  event.preventDefault();
26599
26610
  handleClick();
26600
26611
  }
26601
26612
  }, [handleClick]);
26602
26613
  React.useEffect(() => {
26603
- document.addEventListener('keydown', handleKeyPress);
26614
+ document.addEventListener("keydown", handleKeyPress);
26604
26615
  return () => {
26605
- document.removeEventListener('keydown', handleKeyPress);
26616
+ document.removeEventListener("keydown", handleKeyPress);
26606
26617
  };
26607
26618
  }, [handleKeyPress]);
26608
26619
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(NormalOrIcon, { buttonProps: {
26609
- color: 'error',
26610
- variant: 'contained',
26620
+ color: "error",
26621
+ variant: "contained",
26611
26622
  startIcon: jsxRuntime.jsx(DeleteIcon, {}),
26612
26623
  onClick: handleClick,
26613
- children: 'Eliminar',
26624
+ children: "Eliminar",
26614
26625
  } }), jsxRuntime.jsx(DeleteConfirmationDialog, { open: open, handleClose: handleClose, ...props })] }));
26615
26626
  };
26616
26627
 
@@ -26621,104 +26632,104 @@ const SaveCancelButton = (props) => {
26621
26632
  };
26622
26633
  // ===== || KEYDOWN || ===== //
26623
26634
  const handleKeyPress = React.useCallback((event) => {
26624
- if (event.key === 'Escape') {
26635
+ if (event.key === "Escape") {
26625
26636
  event.preventDefault();
26626
26637
  handleCancel();
26627
26638
  }
26628
26639
  }, [handleCancel]);
26629
26640
  React.useEffect(() => {
26630
- document.addEventListener('keydown', handleKeyPress);
26641
+ document.addEventListener("keydown", handleKeyPress);
26631
26642
  return () => {
26632
- document.removeEventListener('keydown', handleKeyPress);
26643
+ document.removeEventListener("keydown", handleKeyPress);
26633
26644
  };
26634
26645
  }, [handleKeyPress]);
26635
26646
  return (jsxRuntime.jsxs(material.ButtonGroup, { sx: {
26636
26647
  maxHeight: 40,
26637
26648
  }, ...props.slotProps?.buttonGroup, children: [jsxRuntime.jsx(NormalOrIcon, { buttonProps: {
26638
- color: 'error',
26639
- variant: 'contained',
26649
+ color: "error",
26650
+ variant: "contained",
26640
26651
  startIcon: jsxRuntime.jsx(CancelIcon, {}),
26641
26652
  onClick: handleCancel,
26642
26653
  sx: { height: 1 },
26643
- children: 'Cancelar',
26644
- ...props.slotProps?.cancelBtn
26654
+ children: "Cancelar",
26655
+ ...props.slotProps?.cancelBtn,
26645
26656
  } }), jsxRuntime.jsx(NormalOrIcon, { buttonProps: {
26646
- color: 'secondary',
26647
- variant: 'contained',
26657
+ color: "secondary",
26658
+ variant: "contained",
26648
26659
  startIcon: jsxRuntime.jsx(SaveIcon, {}),
26649
- type: 'submit',
26650
- form: 'formulario',
26660
+ type: "submit",
26661
+ form: "formulario",
26651
26662
  sx: { height: 1 },
26652
- children: 'Guardar',
26653
- ...props.slotProps?.saveBtn
26663
+ children: "Guardar",
26664
+ ...props.slotProps?.saveBtn,
26654
26665
  } })] }));
26655
26666
  };
26656
26667
 
26657
26668
  const CreateButtonBase = (props) => {
26658
26669
  // ===== || KEYDOWN || ===== //
26659
26670
  const handleKeyPress = React.useCallback((event) => {
26660
- if (event.ctrlKey && event.key === 'e') {
26671
+ if (event.ctrlKey && event.key === "e") {
26661
26672
  event.preventDefault();
26662
26673
  props.handleClick();
26663
26674
  }
26664
26675
  }, []);
26665
26676
  React.useEffect(() => {
26666
- document.addEventListener('keydown', handleKeyPress);
26677
+ document.addEventListener("keydown", handleKeyPress);
26667
26678
  return () => {
26668
- document.removeEventListener('keydown', handleKeyPress);
26679
+ document.removeEventListener("keydown", handleKeyPress);
26669
26680
  };
26670
26681
  }, [handleKeyPress]);
26671
26682
  return (jsxRuntime.jsx(NormalOrIcon, { buttonProps: {
26672
- id: 'create-button',
26673
- variant: 'contained',
26674
- color: 'secondary',
26683
+ id: "create-button",
26684
+ variant: "contained",
26685
+ color: "secondary",
26675
26686
  startIcon: jsxRuntime.jsx(AddIcon, {}),
26676
26687
  onClick: props.handleClick,
26677
- 'aria-controls': props.open ? 'create-menu' : undefined,
26678
- 'aria-haspopup': true,
26679
- 'aria-expanded': props.open ? 'true' : undefined,
26688
+ "aria-controls": props.open ? "create-menu" : undefined,
26689
+ "aria-haspopup": true,
26690
+ "aria-expanded": props.open ? "true" : undefined,
26680
26691
  endIcon: jsxRuntime.jsx(KeyboardArrowDownIcon, {}),
26681
- children: 'Crear',
26692
+ children: "Crear",
26682
26693
  ...props.buttonProps,
26683
26694
  } }));
26684
26695
  };
26685
26696
 
26686
26697
  const MenuItemWithLoading = (props) => {
26687
26698
  return (jsxRuntime.jsxs(MenuItem, { onClick: props.handleClick, sx: {
26688
- position: 'relative',
26689
- }, disabled: props.disabled || props.isLoading, children: [props.children, props.isLoading &&
26690
- jsxRuntime.jsx(material.Box, { position: 'absolute', width: 1, top: '50%', left: '50%', sx: {
26691
- transform: 'translate(-50%, -50%)',
26692
- }, px: 2, children: jsxRuntime.jsx(LinearProgress, {}) })] }));
26699
+ position: "relative",
26700
+ }, disabled: props.disabled || props.isLoading, children: [props.children, props.isLoading && (jsxRuntime.jsx(material.Box, { position: "absolute", width: 1, top: "50%", left: "50%", sx: {
26701
+ transform: "translate(-50%, -50%)",
26702
+ }, px: 2, children: jsxRuntime.jsx(LinearProgress, {}) }))] }));
26693
26703
  };
26694
26704
 
26695
26705
  const StyledMenu = material.styled((props) => (jsxRuntime.jsx(material.Menu, { elevation: 0, anchorOrigin: {
26696
- vertical: 'bottom',
26697
- horizontal: 'right',
26706
+ vertical: "bottom",
26707
+ horizontal: "right",
26698
26708
  }, transformOrigin: {
26699
- vertical: 'top',
26700
- horizontal: 'right',
26709
+ vertical: "top",
26710
+ horizontal: "right",
26701
26711
  }, ...props })))(({ theme }) => ({
26702
- '& .MuiPaper-root': {
26712
+ "& .MuiPaper-root": {
26703
26713
  borderRadius: 6,
26704
26714
  marginTop: theme.spacing(1),
26705
26715
  minWidth: 180,
26706
- color: 'rgb(55, 65, 81)',
26707
- boxShadow: 'rgb(255, 255, 255) 0px 0px 0px 0px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px, rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.05) 0px 4px 6px -2px',
26708
- '& .MuiMenu-list': {
26709
- padding: '4px 0',
26716
+ color: "rgb(55, 65, 81)",
26717
+ backgroundColor: theme.palette.primary.lighter,
26718
+ boxShadow: "rgb(255, 255, 255) 0px 0px 0px 0px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px, rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.05) 0px 4px 6px -2px",
26719
+ "& .MuiMenu-list": {
26720
+ padding: "4px 0",
26710
26721
  },
26711
- '& .MuiMenuItem-root': {
26712
- '& .MuiSvgIcon-root': {
26713
- fontSize: 18,
26714
- color: theme.palette.text.secondary,
26715
- marginRight: theme.spacing(1.5),
26716
- },
26717
- '&:active': {
26718
- backgroundColor: material.alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
26722
+ "& .MuiMenuItem-root": {
26723
+ borderRadius: 12,
26724
+ "&:hover": {
26725
+ backgroundColor: theme.palette.primary.main,
26726
+ color: "white",
26727
+ "& .MuiSvgIcon-root": {
26728
+ color: "white",
26729
+ },
26719
26730
  },
26720
26731
  },
26721
- ...theme.applyStyles('dark', {
26732
+ ...theme.applyStyles("dark", {
26722
26733
  color: theme.palette.grey[300],
26723
26734
  }),
26724
26735
  },
@@ -26728,7 +26739,7 @@ const CreateButtonWithMenuOptions = (props) => {
26728
26739
  const [anchorEl, setAnchorEl] = React.useState(null);
26729
26740
  const open = Boolean(anchorEl);
26730
26741
  const handleClick = () => {
26731
- setAnchorEl(document.getElementById('create-button'));
26742
+ setAnchorEl(document.getElementById("create-button"));
26732
26743
  };
26733
26744
  const handleClose = () => {
26734
26745
  setAnchorEl(null);
@@ -26742,20 +26753,22 @@ const CreateButtonWithMenuOptions = (props) => {
26742
26753
  };
26743
26754
  if (!props.permission)
26744
26755
  return null;
26745
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(CreateButtonBase, { open: open, handleClick: handleClick }), jsxRuntime.jsxs(StyledMenu, { id: 'create-menu', MenuListProps: {
26746
- 'aria-labelledby': 'create-menu-button',
26747
- }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable && ([
26748
- {
26749
- title: 'CSV',
26750
- endpoint: props.pathname,
26751
- },
26752
- ...(props.csv_upload.extraOptions || [])
26753
- ].map((option, index) => {
26754
- return (jsxRuntime.jsx(MenuItem, { onClick: () => {
26755
- handleToggleOpen(option);
26756
- handleClose();
26757
- }, disableRipple: true, children: option.title }, index));
26758
- })), jsxRuntime.jsx(MenuItem, { onClick: () => {
26756
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(CreateButtonBase, { open: open, handleClick: handleClick }), jsxRuntime.jsxs(StyledMenu, { id: "create-menu", MenuListProps: {
26757
+ "aria-labelledby": "create-menu-button",
26758
+ }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable &&
26759
+ [
26760
+ {
26761
+ title: "CSV",
26762
+ endpoint: props.pathname,
26763
+ icon: AttachFileIcon,
26764
+ },
26765
+ ...(props.csv_upload.extraOptions || []),
26766
+ ].map((option, index) => {
26767
+ return (jsxRuntime.jsxs(MenuItem, { onClick: () => {
26768
+ handleToggleOpen(option);
26769
+ handleClose();
26770
+ }, disableRipple: true, children: [option.icon && (jsxRuntime.jsx(material.ListItemIcon, { children: jsxRuntime.jsx(AttachFileIcon, {}) })), option.title] }, index));
26771
+ }), jsxRuntime.jsx(MenuItem, { onClick: () => {
26759
26772
  props.navigate(`crear`);
26760
26773
  handleClose();
26761
26774
  }, disableRipple: true, children: "Manual" })] }), props.csv_upload?.enable && (jsxRuntime.jsx(CSVUpload, { open: csv.open, drawerToggle: handleToggleClose, data: csv.data }))] }));
@@ -26768,12 +26781,12 @@ const ButtonWithDrawer = (props) => {
26768
26781
  let setFunc = setInternalOpen;
26769
26782
  if (props.setOpen)
26770
26783
  setFunc = props.setOpen;
26771
- setFunc(prevState => !prevState);
26784
+ setFunc((prevState) => !prevState);
26772
26785
  };
26773
26786
  const configuracionBase = {
26774
- variant: 'contained',
26787
+ variant: "contained",
26775
26788
  fullWidth: true,
26776
- color: 'primary'
26789
+ color: "primary",
26777
26790
  };
26778
26791
  const renderButton = () => {
26779
26792
  if (props.slots.button)
@@ -26782,7 +26795,10 @@ const ButtonWithDrawer = (props) => {
26782
26795
  };
26783
26796
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [renderButton(), jsxRuntime.jsx(MainDrawer, { open: open, drawerToggle: handleClick, title: props.slots.drawer.title, slots: {
26784
26797
  button: props.slots.drawer.button,
26785
- }, children: props.slots.drawer.content({ ...props.slotProps?.drawer?.content, handleClose: handleClick }) })] }));
26798
+ }, children: props.slots.drawer.content({
26799
+ ...props.slotProps?.drawer?.content,
26800
+ handleClose: handleClick,
26801
+ }) })] }));
26786
26802
  };
26787
26803
 
26788
26804
  const StatusBadge = (props) => {
@@ -26971,16 +26987,16 @@ const UncontrolledText = (props) => {
26971
26987
  const handleShowPassword = () => {
26972
26988
  setShowPassword(!showPassword);
26973
26989
  };
26974
- return (jsxRuntime.jsx(TextField, { variant: 'outlined', id: props.name, name: props.name, label: props.label, type: props.password ? showPassword ? 'text' : 'password' : 'text', helperText: props.textFieldProps?.helperText ? props.textFieldProps.helperText : ' ', slotProps: {
26990
+ return (jsxRuntime.jsx(TextField, { variant: "outlined", id: props.name, name: props.name, label: props.label, type: props.password ? (showPassword ? "text" : "password") : "text", helperText: props.textFieldProps?.helperText ? props.textFieldProps.helperText : " ", slotProps: {
26975
26991
  input: {
26976
26992
  // ícono de mostar u ocultar si es campo de contarseña
26977
- endAdornment: props.password && (jsxRuntime.jsx(material.InputAdornment, { position: 'end', children: jsxRuntime.jsx(material.IconButton, { "aria-label": "toggle password visibility", tabIndex: -1, onClick: handleShowPassword, edge: 'end', size: 'large', sx: {
26978
- color: 'secondary.darker',
26979
- '&:hover': {
26980
- color: 'secondary.main',
26981
- }
26982
- }, children: showPassword ? jsxRuntime.jsx(iconsMaterial.Visibility, {}) : jsxRuntime.jsx(iconsMaterial.VisibilityOff, {}) }) }))
26983
- }
26993
+ endAdornment: props.password && (jsxRuntime.jsx(material.InputAdornment, { position: "end", children: jsxRuntime.jsx(material.IconButton, { "aria-label": "toggle password visibility", tabIndex: -1, onClick: handleShowPassword, edge: "end", size: "large", sx: {
26994
+ color: "secondary.darker",
26995
+ "&:hover": {
26996
+ color: "secondary.main",
26997
+ },
26998
+ }, children: showPassword ? jsxRuntime.jsx(iconsMaterial.Visibility, {}) : jsxRuntime.jsx(iconsMaterial.VisibilityOff, {}) }) })),
26999
+ },
26984
27000
  }, ...props.textFieldProps }));
26985
27001
  };
26986
27002
 
@@ -27052,9 +27068,8 @@ const generateSchema = (columns, columnsFilter, id) => {
27052
27068
  };
27053
27069
 
27054
27070
  const FiltersPopper = (props) => {
27055
- // const params:any = useLoaderData();
27056
- // const id = params?.id;
27057
- const id = 1;
27071
+ const params = reactRouterDom.useLoaderData();
27072
+ const id = params?.id;
27058
27073
  const columns = xDataGrid.useGridApiContext().current.getAllColumns();
27059
27074
  const [schema, defaultValues] = React.useMemo(() => generateSchema(columns, props.columnsFilter, id), [columns, id, props.columnsFilter]);
27060
27075
  const form = reactHookForm.useForm({
@@ -27064,14 +27079,16 @@ const FiltersPopper = (props) => {
27064
27079
  const [dirty, setDirty] = React.useState(false);
27065
27080
  React.useEffect(() => {
27066
27081
  if (props.filters.filterModel.items) {
27067
- if (!lodash.every(props.filters.filterModel.items, function (_value, key) { return lodash.includes(props.protectFilters, key); })) {
27082
+ if (!lodash.every(props.filters.filterModel.items, function (_value, key) {
27083
+ return lodash.includes(props.protectFilters, key);
27084
+ })) {
27068
27085
  setDirty(true);
27069
27086
  }
27070
27087
  form.reset(lodash.merge({}, defaultValues, props.filters.filterModel.items));
27071
27088
  }
27072
27089
  }, [defaultValues, props.filters.filterModel.items, form, props.protectFilters]);
27073
27090
  const handleClose = (event) => {
27074
- if (props.menuRef.current && event?.target.tagName == 'BODY')
27091
+ if (props.menuRef.current && event?.target.tagName == "BODY")
27075
27092
  return;
27076
27093
  props.setOpen(false);
27077
27094
  };
@@ -27079,9 +27096,9 @@ const FiltersPopper = (props) => {
27079
27096
  setDirty(false);
27080
27097
  props.filters.setFilterModel(immer.produce((draft) => {
27081
27098
  lodash.forEach(props.filters.filterModel.items, function (_value, key) {
27082
- if (['ordering', 'search'].concat(props.protectFilters || []).includes(key))
27099
+ if (["ordering", "search"].concat(props.protectFilters || []).includes(key))
27083
27100
  return;
27084
- delete draft['items'][key];
27101
+ delete draft["items"][key];
27085
27102
  });
27086
27103
  }));
27087
27104
  form.reset(defaultValues);
@@ -27089,75 +27106,82 @@ const FiltersPopper = (props) => {
27089
27106
  };
27090
27107
  const onSubmitHandler = (submitData) => {
27091
27108
  props.filters.setFilterModel(immer.produce((draft) => {
27092
- draft['items'] = { ...draft['items'], ...submitData };
27109
+ draft["items"] = { ...draft["items"], ...submitData };
27093
27110
  }));
27094
27111
  handleClose();
27095
27112
  };
27096
27113
  const onError = (errors) => {
27097
27114
  console.log(errors);
27098
27115
  };
27099
- return (jsxRuntime.jsx(material.Box, { id: 'filtros', children: jsxRuntime.jsx(material.Popper, { id: 'filters-menu', open: props.open, anchorEl: props.menuRef.current, placement: "bottom-end", transition: true, sx: { zIndex: 1202 }, children: ({ TransitionProps }) => (jsxRuntime.jsx(material.Grow, { ...TransitionProps, timeout: 350, children: jsxRuntime.jsx(material.Paper, { elevation: 5, sx: { zIndex: 5 }, children: jsxRuntime.jsx(material.ClickAwayListener, { onClickAway: handleClose, children: jsxRuntime.jsxs(material.Grid, { size: 12, container: true, padding: 2, width: 350, maxWidth: '100%', children: [jsxRuntime.jsx(material.Grid, { size: 12, container: true, rowSpacing: 2, maxHeight: 300, overflow: 'auto', children: columns.map((column, index) => {
27116
+ return (jsxRuntime.jsx(material.Box, { id: "filtros", children: jsxRuntime.jsx(material.Popper, { id: "filters-menu", open: props.open, anchorEl: props.menuRef.current, placement: "bottom-end", transition: true, sx: { zIndex: 1202 }, children: ({ TransitionProps }) => (jsxRuntime.jsx(material.Grow, { ...TransitionProps, timeout: 350, children: jsxRuntime.jsx(material.Paper, { elevation: 5, sx: { zIndex: 5 }, children: jsxRuntime.jsx(material.ClickAwayListener, { onClickAway: handleClose, children: jsxRuntime.jsxs(material.Grid, { size: 12, container: true, padding: 2, width: 350, maxWidth: "100%", children: [jsxRuntime.jsx(material.Grid, { size: 12, container: true, rowSpacing: 2, maxHeight: 300, overflow: "auto", children: columns.map((column, index) => {
27100
27117
  if (column.input)
27101
- return (jsxRuntime.jsxs(material.Grid, { size: 12, container: true, direction: 'column', spacing: 0, children: [jsxRuntime.jsx(material.Grid, { size: 12, children: jsxRuntime.jsx(material.Typography, { fontWeight: 'bold', gutterBottom: true, children: column.filterName || column.headerName }) }), jsxRuntime.jsx(material.Grid, { size: 12, children: React.Children.map(column.input, (child) => {
27102
- let addedProps = { control: form.control };
27103
- if (column.type == 'number') {
27118
+ return (jsxRuntime.jsxs(material.Grid, { size: 12, container: true, direction: "column", spacing: 0, children: [jsxRuntime.jsx(material.Grid, { size: 12, children: jsxRuntime.jsx(material.Typography, { fontWeight: "bold", gutterBottom: true, children: column.filterName ||
27119
+ column.headerName }) }), jsxRuntime.jsx(material.Grid, { size: 12, children: React.Children.map(column.input, (child) => {
27120
+ let addedProps = {
27121
+ control: form.control,
27122
+ };
27123
+ if (column.type == "number") {
27104
27124
  addedProps = {
27105
27125
  ...addedProps,
27106
27126
  extraProps: {
27107
- ...child.props.extraProps,
27127
+ ...child.props
27128
+ .extraProps,
27108
27129
  getValue: form.getValues,
27109
27130
  setValue: form.setValue,
27110
- }
27131
+ },
27111
27132
  };
27112
27133
  }
27113
27134
  return React.cloneElement(child, {
27114
27135
  ...child.props,
27115
- ...addedProps
27136
+ ...addedProps,
27116
27137
  });
27117
27138
  }) })] }, index));
27118
27139
  return null;
27119
- }) }), jsxRuntime.jsx(material.Grid, { size: 12, py: 2, children: jsxRuntime.jsx(Divider, {}) }), jsxRuntime.jsxs(material.Grid, { size: 12, display: 'flex', justifyContent: 'space-evenly', children: [jsxRuntime.jsx(material.Button, { disabled: (!form.formState.isDirty || props.disableQuickSearch) && !dirty, startIcon: jsxRuntime.jsx(ClearIcon$1, {}), variant: 'outlined', onClick: handleClear, children: "Limpiar" }), jsxRuntime.jsx(material.Button, { loading: props.disableQuickSearch, disabled: !form.formState.isDirty, startIcon: jsxRuntime.jsx(FilterAltIcon, {}), variant: 'outlined', onClick: form.handleSubmit(onSubmitHandler, onError), children: "Aplicar" })] })] }) }) }) })) }) }));
27140
+ }) }), jsxRuntime.jsx(material.Grid, { size: 12, py: 2, children: jsxRuntime.jsx(Divider, {}) }), jsxRuntime.jsxs(material.Grid, { size: 12, display: "flex", justifyContent: "space-evenly", children: [jsxRuntime.jsx(material.Button, { disabled: (!form.formState.isDirty ||
27141
+ props.disableQuickSearch) &&
27142
+ !dirty, startIcon: jsxRuntime.jsx(ClearIcon$1, {}), variant: "outlined", onClick: handleClear, children: "Limpiar" }), jsxRuntime.jsx(material.Button, { loading: props.disableQuickSearch, disabled: !form.formState.isDirty, startIcon: jsxRuntime.jsx(FilterAltIcon, {}), variant: "outlined", onClick: form.handleSubmit(onSubmitHandler, onError), children: "Aplicar" })] })] }) }) }) })) }) }));
27120
27143
  };
27121
27144
 
27122
27145
  const FiltersButton = (props) => {
27123
27146
  const [open, setOpen] = React.useState(false);
27124
27147
  const menuRef = React.useRef(null);
27125
27148
  const handleClick = () => {
27126
- setOpen(prevState => !prevState);
27149
+ setOpen((prevState) => !prevState);
27127
27150
  };
27128
27151
  const filterCount = React.useMemo(() => {
27129
27152
  return lodash.countBy(Object.entries(props.filters.filterModel.items), function (filter) {
27130
27153
  const key = filter[0];
27131
27154
  const value = filter[1];
27132
- if (key == 'ordering' || key == 'search')
27155
+ if (key == "ordering" || key == "search")
27133
27156
  return;
27134
- if (props.protectFilters && lodash.findIndex(props.protectFilters, function (x) { return x == key; }) > -1)
27157
+ if (props.protectFilters &&
27158
+ lodash.findIndex(props.protectFilters, function (x) {
27159
+ return x == key;
27160
+ }) > -1)
27135
27161
  return;
27136
27162
  return (lodash.isNumber(value) && value > 0) || !lodash.isEmpty(value) || lodash.isBoolean(value);
27137
27163
  }).true;
27138
- }, [
27139
- props.filters.filterModel.items, props.protectFilters
27140
- ]);
27164
+ }, [props.filters.filterModel.items, props.protectFilters]);
27141
27165
  // ===== || ABRIR CON CTRL + Shift + F || ===== //
27142
27166
  const handleKeyPress = React.useCallback((event) => {
27143
- if (event.ctrlKey && event.shiftKey && event.key === 'F') {
27167
+ if (event.ctrlKey && event.shiftKey && event.key === "F") {
27144
27168
  event.preventDefault();
27145
27169
  setOpen(true);
27146
27170
  }
27147
- else if (event.key === 'Escape' && open) {
27171
+ else if (event.key === "Escape" && open) {
27148
27172
  setOpen(false);
27149
27173
  }
27150
27174
  }, [open]);
27151
27175
  React.useEffect(() => {
27152
- document.addEventListener('keydown', handleKeyPress);
27176
+ document.addEventListener("keydown", handleKeyPress);
27153
27177
  return () => {
27154
- document.removeEventListener('keydown', handleKeyPress);
27178
+ document.removeEventListener("keydown", handleKeyPress);
27155
27179
  };
27156
27180
  }, [handleKeyPress]);
27157
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Tooltip, { title: "Filtros", children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { ref: menuRef, id: "filters-menu-trigger", "aria-controls": "filters-menu", "aria-haspopup": "true", "aria-expanded": open ? 'true' : undefined, color: 'default', onClick: handleClick, onKeyDown: key => {
27158
- if (key.key == 'Escape')
27181
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Tooltip, { title: "Filtros", children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { ref: menuRef, id: "filters-menu-trigger", "aria-controls": "filters-menu", "aria-haspopup": "true", "aria-expanded": open ? "true" : undefined, color: "default", onClick: handleClick, onKeyDown: (key) => {
27182
+ if (key.key == "Escape")
27159
27183
  setOpen(false);
27160
- }, className: 'my-icon-button', children: jsxRuntime.jsx(material.Badge, { badgeContent: filterCount, color: "primary", children: jsxRuntime.jsx(FilterListIcon, { fontSize: "small" }) }) }) }), jsxRuntime.jsx(FiltersPopper, { ...props, menuRef: menuRef, open: open, setOpen: setOpen })] }));
27184
+ }, className: "my-icon-button", children: jsxRuntime.jsx(material.Badge, { badgeContent: filterCount, color: "primary", children: jsxRuntime.jsx(FilterListIcon, { fontSize: "small" }) }) }) }), jsxRuntime.jsx(FiltersPopper, { ...props, menuRef: menuRef, open: open, setOpen: setOpen })] }));
27161
27185
  };
27162
27186
 
27163
27187
  const ExportCSV = (props) => {
@@ -27169,41 +27193,46 @@ const ExportCSV = (props) => {
27169
27193
  const handleClick = () => {
27170
27194
  const extraItems = { variant: props.slots?.variant };
27171
27195
  if (props.rowSelectionModel.ids.size > 0)
27172
- extraItems[`${props.slots?.column_key || 'id'}__in`] = Array.from(props.rowSelectionModel.ids).join(',');
27173
- const filters = lodash.merge({}, lodash.omit(props.filterModel, lodash.map(props.ignore?.filters, function (filter) { return `items.${filter}`; }) || []), { items: extraItems });
27196
+ extraItems[`${props.slots?.column_key || "id"}__in`] = Array.from(props.rowSelectionModel.ids).join(",");
27197
+ const filters = lodash.merge({}, lodash.omit(props.filterModel, lodash.map(props.ignore?.filters, function (filter) {
27198
+ return `items.${filter}`;
27199
+ }) || []), { items: extraItems });
27174
27200
  descargarCSV({
27175
- endpoint: endpoint, filterModel: filters, sortModel: props.sortModel, ignoreSort: props.ignore?.sort,
27176
- }).unwrap()
27201
+ endpoint: endpoint,
27202
+ filterModel: filters,
27203
+ sortModel: props.sortModel,
27204
+ ignoreSort: props.ignore?.sort,
27205
+ })
27206
+ .unwrap()
27177
27207
  .then((response) => {
27178
27208
  const file = document.createElement("a");
27179
27209
  file.href = response.file;
27180
27210
  file.download = response.filename;
27181
27211
  file.click();
27182
- notifications.show('CSV descargado!', { severity: 'success' });
27212
+ notifications.show("CSV descargado!", { severity: "success" });
27183
27213
  props.handleClick();
27184
27214
  })
27185
27215
  .catch((error) => {
27186
27216
  console.log(error);
27187
- notifications.show('Error al descargar CSV.', { severity: 'error' });
27217
+ notifications.show("Error al descargar CSV.", { severity: "error" });
27188
27218
  });
27189
27219
  };
27190
- return (jsxRuntime.jsx(MenuItemWithLoading, { handleClick: handleClick, isLoading: isLoading, disabled: props.disabledWithoutSelection && !props.rowSelectionModel.ids.size, children: props.slots?.title || 'Descargar como CSV' }, 'export-dg-csv'));
27220
+ return (jsxRuntime.jsx(MenuItemWithLoading, { handleClick: handleClick, isLoading: isLoading, disabled: props.disabledWithoutSelection && !props.rowSelectionModel.ids.size, children: props.slots?.title || "Descargar como CSV" }, "export-dg-csv"));
27191
27221
  };
27192
27222
 
27193
27223
  const ExportButton = (props) => {
27194
27224
  const [exportMenuOpen, setExportMenuOpen] = React.useState(false);
27195
27225
  const exportMenuTriggerRef = React.useRef(null);
27196
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.Tooltip, { title: "Exportar", children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { ref: exportMenuTriggerRef, id: "export-menu-trigger", "aria-controls": "export-menu", "aria-haspopup": "true", "aria-expanded": exportMenuOpen ? 'true' : undefined, onClick: () => setExportMenuOpen(true), className: 'my-icon-button', children: jsxRuntime.jsx(FileDownloadIcon, { fontSize: "small" }) }) }), jsxRuntime.jsxs(Menu, { id: "export-menu", anchorEl: exportMenuTriggerRef.current, open: exportMenuOpen, onClose: () => setExportMenuOpen(false), anchorOrigin: { vertical: 'bottom', horizontal: 'left' }, transformOrigin: { vertical: 'top', horizontal: 'left' }, slotProps: {
27226
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.Tooltip, { title: "Exportar", children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { ref: exportMenuTriggerRef, id: "export-menu-trigger", "aria-controls": "export-menu", "aria-haspopup": "true", "aria-expanded": exportMenuOpen ? "true" : undefined, onClick: () => setExportMenuOpen(true), className: "my-icon-button", children: jsxRuntime.jsx(FileDownloadIcon, { fontSize: "small" }) }) }), jsxRuntime.jsxs(Menu, { id: "export-menu", anchorEl: exportMenuTriggerRef.current, open: exportMenuOpen, onClose: () => setExportMenuOpen(false), anchorOrigin: { vertical: "bottom", horizontal: "left" }, transformOrigin: { vertical: "top", horizontal: "left" }, slotProps: {
27197
27227
  list: {
27198
- 'aria-labelledby': 'export-menu-trigger',
27228
+ "aria-labelledby": "export-menu-trigger",
27199
27229
  },
27200
- }, children: [!props.csvProps?.hide &&
27201
- jsxRuntime.jsx(ExportCSV, { handleClick: () => setExportMenuOpen(false), filterModel: props.filterModel, sortModel: props.sortModel, rowSelectionModel: props.rowSelectionModel, slots: {
27202
- endpoint: props.csvProps?.endpoint
27203
- } }), props.extraOptions?.map(item => {
27230
+ }, children: [!props.csvProps?.hide && (jsxRuntime.jsx(ExportCSV, { handleClick: () => setExportMenuOpen(false), filterModel: props.filterModel, sortModel: props.sortModel, rowSelectionModel: props.rowSelectionModel, slots: {
27231
+ endpoint: props.csvProps?.endpoint,
27232
+ } })), props.extraOptions?.map((item) => {
27204
27233
  const csvExport = item.props.csvExport;
27205
- const remainingProps = lodash.omit(item.props, 'csvExport');
27206
- return (item.element({
27234
+ const remainingProps = lodash.omit(item.props, "csvExport");
27235
+ return item.element({
27207
27236
  handleClick: () => setExportMenuOpen(false),
27208
27237
  filterModel: props.filterModel,
27209
27238
  sortModel: props.sortModel,
@@ -27212,7 +27241,7 @@ const ExportButton = (props) => {
27212
27241
  ...csvExport,
27213
27242
  },
27214
27243
  ...remainingProps,
27215
- }));
27244
+ });
27216
27245
  })] })] }));
27217
27246
  };
27218
27247
 
@@ -27220,34 +27249,33 @@ const ColumnsButton = () => {
27220
27249
  const apiRef = xDataGrid.useGridApiContext();
27221
27250
  const allCols = apiRef.current.getAllColumns().length;
27222
27251
  const visibleCols = apiRef.current.getVisibleColumns().length;
27223
- return (jsxRuntime.jsx(material.Tooltip, { title: "Columnas", children: jsxRuntime.jsx(xDataGrid.ColumnsPanelTrigger, { render: jsxRuntime.jsx(xDataGrid.ToolbarButton, { className: 'my-icon-button' }), children: jsxRuntime.jsx(material.Badge, { color: 'primary', variant: 'dot', invisible: visibleCols >= allCols, children: jsxRuntime.jsx(ViewColumnIcon, { fontSize: "small" }) }) }) }));
27252
+ return (jsxRuntime.jsx(material.Tooltip, { title: "Columnas", children: jsxRuntime.jsx(xDataGrid.ColumnsPanelTrigger, { render: jsxRuntime.jsx(xDataGrid.ToolbarButton, { className: "my-icon-button" }), children: jsxRuntime.jsx(material.Badge, { color: "primary", variant: "dot", invisible: visibleCols >= allCols, children: jsxRuntime.jsx(ViewColumnIcon, { fontSize: "small" }) }) }) }));
27224
27253
  };
27225
27254
 
27226
27255
  const RefreshButton = (props) => {
27227
27256
  // ===== || EJECUTAR CON CTRL + Shift + R || ===== //
27228
27257
  const handleKeyPress = React.useCallback((event) => {
27229
- if (event.ctrlKey && event.shiftKey && event.key === 'R') {
27258
+ if (event.ctrlKey && event.shiftKey && event.key === "R") {
27230
27259
  event.preventDefault();
27231
27260
  if (props.refetch)
27232
27261
  props.refetch();
27233
27262
  }
27234
27263
  }, [props]);
27235
27264
  React.useEffect(() => {
27236
- document.addEventListener('keydown', handleKeyPress);
27265
+ document.addEventListener("keydown", handleKeyPress);
27237
27266
  return () => {
27238
- document.removeEventListener('keydown', handleKeyPress);
27267
+ document.removeEventListener("keydown", handleKeyPress);
27239
27268
  };
27240
27269
  }, [handleKeyPress]);
27241
- return (jsxRuntime.jsx(Tooltip, { title: 'Refrescar', children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { onClick: props.refetch, children: jsxRuntime.jsx(RefreshIcon, { fontSize: 'small' }) }) }));
27270
+ return (jsxRuntime.jsx(Tooltip, { title: "Refrescar", children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { onClick: props.refetch, children: jsxRuntime.jsx(RefreshIcon, { fontSize: "small" }) }) }));
27242
27271
  };
27243
27272
 
27244
27273
  const CustomToolbar = (props) => {
27245
27274
  const [expanded, setExpanded] = React.useState(true);
27246
27275
  return (jsxRuntime.jsx(xDataGrid.Toolbar, { style: {
27247
- minHeight: expanded ? 'inherit' : '10px',
27248
- }, children: expanded ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(material.Stack, { direction: 'row', width: 0.5, justifyContent: 'left', children: [!props.buttons?.refresh?.hide && jsxRuntime.jsx(RefreshButton, { refetch: props.buttons?.refresh?.refetch }), !(props.buttons?.refresh?.hide || props.buttons?.export?.hide) && jsxRuntime.jsx(material.Divider, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), !props.buttons?.export?.hide && (jsxRuntime.jsx(ExportButton, { filterModel: props.filters.filterModel, sortModel: props.sortModel, rowSelectionModel: props.selection, ...props.buttons.export }))] }), jsxRuntime.jsx(material.Box, { width: 1, display: 'flex', justifyContent: 'center', alignItems: 'top', children: jsxRuntime.jsx(material.IconButton, { size: 'small', onClick: () => setExpanded(false), children: jsxRuntime.jsx(ExpandLessIcon, {}) }) }), jsxRuntime.jsxs(material.Stack, { direction: 'row', width: 0.5, justifyContent: 'right', children: [jsxRuntime.jsx(ColumnsButton, {}), !props.buttons.filters?.hide &&
27249
- jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.Divider, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsxRuntime.jsx(FiltersButton, { ...props })] }), jsxRuntime.jsx(material.Divider, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsxRuntime.jsx(QuickSearch, { disableQuickSearch: props.disableQuickSearch, filters: props.filters }), props.extraButtons &&
27250
- props.extraButtons.map((button, index) => (jsxRuntime.jsxs(material.Box, { display: 'flex', children: [jsxRuntime.jsx(material.Divider, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsxRuntime.jsx(Tooltip, { title: button.label, children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { onClick: () => button.onClick(), className: 'my-icon-button', ...button.buttonProps, children: jsxRuntime.jsx(button.icon, { fontSize: "small" }) }) })] }, `toolbar-button-${index}`))), jsxRuntime.jsx(SelectedRowsButton, { selection: props.selection, extraActions: props.extraActions })] })] })) : (jsxRuntime.jsx(material.Box, { width: 1, display: 'flex', justifyContent: 'center', alignItems: 'center', children: jsxRuntime.jsx(material.IconButton, { onClick: () => setExpanded(true), children: jsxRuntime.jsx(ExpandMoreIcon, {}) }) })) }));
27276
+ minHeight: expanded ? "inherit" : "10px",
27277
+ }, children: expanded ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(material.Stack, { direction: "row", width: 0.5, justifyContent: "left", children: [!props.buttons?.refresh?.hide && (jsxRuntime.jsx(RefreshButton, { refetch: props.buttons?.refresh?.refetch })), !(props.buttons?.refresh?.hide || props.buttons?.export?.hide) && (jsxRuntime.jsx(material.Divider, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } })), !props.buttons?.export?.hide && (jsxRuntime.jsx(ExportButton, { filterModel: props.filters.filterModel, sortModel: props.sortModel, rowSelectionModel: props.selection, ...props.buttons.export }))] }), jsxRuntime.jsx(material.Box, { width: 1, display: "flex", justifyContent: "center", alignItems: "top", children: jsxRuntime.jsx(material.IconButton, { size: "small", onClick: () => setExpanded(false), children: jsxRuntime.jsx(ExpandLessIcon, {}) }) }), jsxRuntime.jsxs(material.Stack, { direction: "row", width: 0.5, justifyContent: "right", children: [jsxRuntime.jsx(ColumnsButton, {}), !props.buttons.filters?.hide && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.Divider, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsxRuntime.jsx(FiltersButton, { ...props })] })), jsxRuntime.jsx(material.Divider, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsxRuntime.jsx(QuickSearch, { disableQuickSearch: props.disableQuickSearch, filters: props.filters }), props.extraButtons &&
27278
+ props.extraButtons.map((button, index) => (jsxRuntime.jsxs(material.Box, { display: "flex", children: [jsxRuntime.jsx(material.Divider, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsxRuntime.jsx(Tooltip, { title: button.label, children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { onClick: () => button.onClick(), className: "my-icon-button", ...button.buttonProps, children: jsxRuntime.jsx(button.icon, { fontSize: "small" }) }) })] }, `toolbar-button-${index}`))), jsxRuntime.jsx(SelectedRowsButton, { selection: props.selection, extraActions: props.extraActions })] })] })) : (jsxRuntime.jsx(material.Box, { width: 1, display: "flex", justifyContent: "center", alignItems: "center", children: jsxRuntime.jsx(material.IconButton, { onClick: () => setExpanded(true), children: jsxRuntime.jsx(ExpandMoreIcon, {}) }) })) }));
27251
27279
  };
27252
27280
 
27253
27281
  const StyledGridOverlay = material.styled('div')(({ theme }) => ({
@@ -27285,20 +27313,22 @@ function CustomPagination() {
27285
27313
  }
27286
27314
 
27287
27315
  const DraggableRow = (params) => {
27288
- const { attributes, listeners, setNodeRef, transform, transition, } = sortable.useSortable({ id: params.rowId.toString() });
27316
+ const { attributes, listeners, setNodeRef, transform, transition } = sortable.useSortable({
27317
+ id: params.rowId.toString(),
27318
+ });
27289
27319
  const style = {
27290
27320
  transform: utilities.CSS.Transform.toString(transform),
27291
- transition
27321
+ transition,
27292
27322
  };
27293
- return (jsxRuntime.jsxs(material.Box, { display: 'flex', ref: setNodeRef, style: style, children: [jsxRuntime.jsx(material.Box, { ...attributes, ...listeners, sx: {
27294
- width: '20px',
27323
+ return (jsxRuntime.jsxs(material.Box, { display: "flex", ref: setNodeRef, style: style, children: [jsxRuntime.jsx(material.Box, { ...attributes, ...listeners, sx: {
27324
+ width: "20px",
27295
27325
  height: params.rowHeight,
27296
- background: 'repeating-linear-gradient( 45deg, #e0e0e0, #e0e0e0 5px, transparent 5px, transparent 10px)',
27297
- borderTop: '1px solid rgba(224, 224, 224, 1)',
27298
- cursor: 'grab',
27299
- '&:active': {
27300
- cursor: 'grabbing',
27301
- }
27326
+ background: "repeating-linear-gradient( 45deg, #e0e0e0, #e0e0e0 5px, transparent 5px, transparent 10px)",
27327
+ borderTop: "1px solid rgba(224, 224, 224, 1)",
27328
+ cursor: "grab",
27329
+ "&:active": {
27330
+ cursor: "grabbing",
27331
+ },
27302
27332
  } }), jsxRuntime.jsx(xDataGrid.GridRow, { ...params })] }));
27303
27333
  };
27304
27334
 
@@ -27315,38 +27345,42 @@ const EditGridWrapper = (props) => {
27315
27345
  const handleClickEdit = () => {
27316
27346
  if (edit)
27317
27347
  handleCancelarEdit();
27318
- setEdit(prevState => !prevState);
27348
+ setEdit((prevState) => !prevState);
27319
27349
  };
27320
27350
  const processRowUpdate = async (newRow, originalRow) => {
27321
27351
  const original_data = jsonForm({ submitData: originalRow });
27322
- const data = jsonForm({ submitData: newRow, ...(props.parser ? { props: props.parser } : []) });
27352
+ const data = jsonForm({
27353
+ submitData: newRow,
27354
+ ...(props.parser ? { props: props.parser } : []),
27355
+ });
27323
27356
  if (lodash.isEqual(data, original_data))
27324
27357
  return originalRow;
27325
27358
  try {
27326
27359
  const result = await editMutation(data).unwrap();
27327
- setErrors(prevState => immer.produce(prevState, draft => {
27360
+ setErrors((prevState) => immer.produce(prevState, (draft) => {
27328
27361
  delete draft[newRow.id];
27329
27362
  }));
27330
27363
  if (props?.postAction)
27331
27364
  props.postAction(result);
27332
- notifications.show(`Información actualizada!`, { severity: 'success' });
27365
+ notifications.show(`Información actualizada!`, { severity: "success" });
27333
27366
  return result.list;
27334
27367
  }
27335
27368
  catch (e) {
27336
- setErrors(prevState => immer.produce(prevState, draft => {
27337
- draft[newRow.id] = lodash.get(e, 'data');
27369
+ setErrors((prevState) => immer.produce(prevState, (draft) => {
27370
+ draft[newRow.id] = lodash.get(e, "data.invalid_params");
27338
27371
  }));
27339
- notifications.show('Error actualizando información!', { severity: 'error' });
27372
+ notifications.show("Error actualizando información!", { severity: "error" });
27340
27373
  }
27341
27374
  };
27375
+ const handleProcessRowUpdateError = () => { };
27342
27376
  // ===== || KEYDOWN || ===== //
27343
27377
  const handleKeyPress = React.useCallback((event) => {
27344
27378
  if (props.permission) {
27345
- if (event.ctrlKey && event.shiftKey && event.key === 'E') {
27379
+ if (event.ctrlKey && event.shiftKey && event.key === "E") {
27346
27380
  event.preventDefault();
27347
27381
  setEdit(true);
27348
27382
  }
27349
- else if (event.key === 'Escape' && event.shiftKey && edit) {
27383
+ else if (event.key === "Escape" && event.shiftKey && edit) {
27350
27384
  event.preventDefault();
27351
27385
  handleCancelarEdit();
27352
27386
  setEdit(false);
@@ -27354,9 +27388,9 @@ const EditGridWrapper = (props) => {
27354
27388
  }
27355
27389
  }, [edit, props.permission]);
27356
27390
  React.useEffect(() => {
27357
- document.addEventListener('keydown', handleKeyPress);
27391
+ document.addEventListener("keydown", handleKeyPress);
27358
27392
  return () => {
27359
- document.removeEventListener('keydown', handleKeyPress);
27393
+ document.removeEventListener("keydown", handleKeyPress);
27360
27394
  };
27361
27395
  }, [handleKeyPress]);
27362
27396
  // ========================= || DRAG N DROP || ========================= //
@@ -27373,7 +27407,10 @@ const EditGridWrapper = (props) => {
27373
27407
  if (over) {
27374
27408
  const activeRow = rows.find((row) => row.id == active.id);
27375
27409
  const overRow = rows.find((row) => row.id == over.id);
27376
- const mutationArgs = { ...props.dnd?.args, id: activeRow.id };
27410
+ const mutationArgs = {
27411
+ ...props.dnd?.args,
27412
+ id: activeRow.id,
27413
+ };
27377
27414
  mutationArgs[field] = lodash.get(overRow, field);
27378
27415
  editMutation(mutationArgs);
27379
27416
  }
@@ -27391,33 +27428,38 @@ const EditGridWrapper = (props) => {
27391
27428
  slotProps: {
27392
27429
  toolbar: {
27393
27430
  extraButtons: [
27394
- ...(props.permission && !props.disabled ? [{
27395
- label: edit ? 'Cancelar' : 'Editar',
27396
- icon: edit ? CancelIcon : EditIcon,
27397
- onClick: handleClickEdit,
27398
- }] : []),
27399
- ]
27400
- }
27431
+ ...(props.permission && !props.disabled
27432
+ ? [
27433
+ {
27434
+ label: edit ? "Cancelar" : "Editar",
27435
+ icon: edit ? CancelIcon : EditIcon,
27436
+ onClick: handleClickEdit,
27437
+ },
27438
+ ]
27439
+ : []),
27440
+ ],
27441
+ },
27401
27442
  },
27402
27443
  onRowEditStart: ({ reason, row }, event) => {
27403
- if (!lodash.get(row, `obj_permissions.edit`) || (reason === xDataGrid.GridRowEditStartReasons.cellDoubleClick && !edit)) {
27444
+ if (!lodash.get(row, `obj_permissions.edit`) ||
27445
+ (reason === xDataGrid.GridRowEditStartReasons.cellDoubleClick && !edit)) {
27404
27446
  event.defaultMuiPrevented = true;
27405
27447
  }
27406
27448
  },
27407
27449
  // edit
27408
27450
  checkboxSelection: !edit,
27409
27451
  ...(edit ? { onRowClick: undefined } : []),
27410
- editMode: 'row',
27452
+ editMode: "row",
27411
27453
  rowModesModel: rowModesModel,
27412
27454
  onRowModesModelChange: setRowModesModel,
27413
27455
  processRowUpdate: processRowUpdate,
27456
+ onProcessRowUpdateError: handleProcessRowUpdateError,
27414
27457
  loadingParams: [loadingMutation],
27415
27458
  }, props.dataGridProps);
27416
- const renderEditGrid = () => (jsxRuntime.jsx(core$1.DndContext, { sensors: sensors, collisionDetection: core$1.closestCenter, onDragEnd: handleDragEnd, modifiers: [
27417
- modifiers.restrictToVerticalAxis,
27418
- modifiers.restrictToWindowEdges,
27419
- modifiers.restrictToParentElement
27420
- ], autoScroll: false, children: jsxRuntime.jsx(sortable.SortableContext, { items: rows ? rows.map((row) => row.id.toString()) : [], strategy: sortable.verticalListSortingStrategy, children: props.renderFunction({ ...props.renderFunctionProps, dataGridProps: editGridProps }) }) }));
27459
+ const renderEditGrid = () => (jsxRuntime.jsx(core$1.DndContext, { sensors: sensors, collisionDetection: core$1.closestCenter, onDragEnd: handleDragEnd, modifiers: [modifiers.restrictToVerticalAxis, modifiers.restrictToWindowEdges, modifiers.restrictToParentElement], autoScroll: false, children: jsxRuntime.jsx(sortable.SortableContext, { items: rows ? rows.map((row) => row.id.toString()) : [], strategy: sortable.verticalListSortingStrategy, children: props.renderFunction({
27460
+ ...props.renderFunctionProps,
27461
+ dataGridProps: editGridProps,
27462
+ }) }) }));
27421
27463
  return renderEditGrid();
27422
27464
  };
27423
27465
 
@@ -27438,43 +27480,47 @@ const editColumn = (props) => {
27438
27480
  [id]: { mode: xDataGrid.GridRowModes.View, ignoreModifications: true },
27439
27481
  });
27440
27482
  };
27441
- return [{
27442
- field: 'edit',
27443
- headerName: 'Editar',
27444
- type: 'actions',
27483
+ return [
27484
+ {
27485
+ field: "edit",
27486
+ headerName: "Editar",
27487
+ type: "actions",
27445
27488
  width: 80,
27446
- cellClassName: 'actions',
27489
+ cellClassName: "actions",
27447
27490
  getActions: ({ id, row }) => {
27448
- const canEdit = get(row, 'obj_permissions.edit');
27491
+ const canEdit = get(row, "obj_permissions.edit");
27449
27492
  const isInEditMode = props.rowModesModel[id]?.mode === xDataGrid.GridRowModes.Edit;
27450
27493
  if (isInEditMode) {
27451
27494
  return [
27452
- jsxRuntime.jsx(xDataGrid.GridActionsCellItem, { icon: jsxRuntime.jsx(SaveIcon, {}), label: 'Guardar', color: 'primary', onClick: handleSaveClick(id) }, 'save'),
27453
- jsxRuntime.jsx(xDataGrid.GridActionsCellItem, { icon: jsxRuntime.jsx(CancelIcon, {}), label: 'Cancelar', className: 'textPrimary', onClick: handleCancelClick(id), color: 'inherit' }, 'cancel'),
27495
+ jsxRuntime.jsx(xDataGrid.GridActionsCellItem, { icon: jsxRuntime.jsx(SaveIcon, {}), label: "Guardar", color: "primary", onClick: handleSaveClick(id) }, "save"),
27496
+ jsxRuntime.jsx(xDataGrid.GridActionsCellItem, { icon: jsxRuntime.jsx(CancelIcon, {}), label: "Cancelar", className: "textPrimary", onClick: handleCancelClick(id), color: "inherit" }, "cancel"),
27454
27497
  ];
27455
27498
  }
27456
27499
  return [
27457
- jsxRuntime.jsx(xDataGrid.GridActionsCellItem, { icon: jsxRuntime.jsx(EditIcon, { sx: { color: canEdit ? 'black' : 'inherit' } }), label: 'Editar', className: 'textPrimary', onClick: handleEditClick(id), disabled: !canEdit }, 'edit'),
27500
+ jsxRuntime.jsx(xDataGrid.GridActionsCellItem, { icon: jsxRuntime.jsx(EditIcon, { sx: { color: canEdit ? "black" : "inherit" } }), label: "Editar", className: "textPrimary", onClick: handleEditClick(id), disabled: !canEdit }, "edit"),
27458
27501
  ];
27459
- }
27460
- }];
27502
+ },
27503
+ },
27504
+ ];
27461
27505
  };
27462
27506
 
27463
27507
  const deleteColumn = (props) => {
27464
27508
  if (!props.displayDelete)
27465
27509
  return [];
27466
- return [{
27467
- field: 'delete',
27468
- headerName: 'Eliminar',
27510
+ return [
27511
+ {
27512
+ field: "delete",
27513
+ headerName: "Eliminar",
27469
27514
  width: 80,
27470
- cellClassName: 'actions',
27515
+ cellClassName: "actions",
27471
27516
  renderCell: ({ id, row }) => {
27472
27517
  const canDelete = get(row, `obj_permissions.delete`, false);
27473
27518
  return [
27474
- jsxRuntime.jsx(xDataGrid.GridActionsCellItem, { icon: jsxRuntime.jsx(DeleteIcon, {}), label: 'Eliminar', className: 'textPrimary', onClick: props.handleOpen(id), color: 'primary', disabled: !canDelete }, 'delete')
27519
+ jsxRuntime.jsx(xDataGrid.GridActionsCellItem, { icon: jsxRuntime.jsx(DeleteIcon, {}), label: "Eliminar", className: "textPrimary", onClick: props.handleOpen(id), color: "primary", disabled: !canDelete }, "delete"),
27475
27520
  ];
27476
- }
27477
- }];
27521
+ },
27522
+ },
27523
+ ];
27478
27524
  };
27479
27525
 
27480
27526
  const DeleteGridWrapper = (props) => {
@@ -27488,25 +27534,25 @@ const DeleteGridWrapper = (props) => {
27488
27534
  setDeleteRowId(undefined);
27489
27535
  };
27490
27536
  const handleClickDelete = () => {
27491
- setDeleting(prevState => !prevState);
27537
+ setDeleting((prevState) => !prevState);
27492
27538
  };
27493
27539
  // ===== || KEYDOWN || ===== //
27494
27540
  const handleKeyPress = React.useCallback((event) => {
27495
27541
  if (props.permission) {
27496
- if (event.ctrlKey && event.shiftKey && event.key === 'D') {
27542
+ if (event.ctrlKey && event.shiftKey && event.key === "D") {
27497
27543
  event.preventDefault();
27498
27544
  setDeleting(true);
27499
27545
  }
27500
- else if (event.key === 'Escape' && event.shiftKey && deleting) {
27546
+ else if (event.key === "Escape" && event.shiftKey && deleting) {
27501
27547
  event.preventDefault();
27502
27548
  setDeleting(false);
27503
27549
  }
27504
27550
  }
27505
27551
  }, [props.permission, deleting]);
27506
27552
  React.useEffect(() => {
27507
- document.addEventListener('keydown', handleKeyPress);
27553
+ document.addEventListener("keydown", handleKeyPress);
27508
27554
  return () => {
27509
- document.removeEventListener('keydown', handleKeyPress);
27555
+ document.removeEventListener("keydown", handleKeyPress);
27510
27556
  };
27511
27557
  }, [handleKeyPress]);
27512
27558
  // ===== || GRID PROPS || ===== //
@@ -27520,20 +27566,23 @@ const DeleteGridWrapper = (props) => {
27520
27566
  slotProps: {
27521
27567
  toolbar: {
27522
27568
  extraButtons: [
27523
- ...(props.permission ? [{
27524
- label: deleting ? 'Cancelar' : 'Eliminar',
27525
- icon: deleting ? CancelIcon : DeleteIcon,
27526
- onClick: handleClickDelete,
27527
- }] : [])
27528
- ]
27529
- }
27569
+ ...(props.permission
27570
+ ? [
27571
+ {
27572
+ label: deleting ? "Cancelar" : "Eliminar",
27573
+ icon: deleting ? CancelIcon : DeleteIcon,
27574
+ onClick: handleClickDelete,
27575
+ },
27576
+ ]
27577
+ : []),
27578
+ ],
27579
+ },
27530
27580
  },
27531
27581
  // edit
27532
27582
  checkboxSelection: !deleting,
27533
27583
  ...(deleting ? { onRowClick: undefined } : []),
27534
27584
  }, props.dataGridProps);
27535
- const renderDeleteGrid = () => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [props.mutation &&
27536
- jsxRuntime.jsx(DeleteConfirmationDialog, { mutation: props.mutation, open: !!deleteRowId, handleClose: handleClose, id: deleteRowId, disableNavBack: true }), props.renderFunction({ ...props.renderFunctionProps, dataGridProps: deleteGridProps })] }));
27585
+ const renderDeleteGrid = () => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [props.mutation && (jsxRuntime.jsx(DeleteConfirmationDialog, { mutation: props.mutation, open: !!deleteRowId, handleClose: handleClose, id: deleteRowId, disableNavBack: true })), props.renderFunction({ ...props.renderFunctionProps, dataGridProps: deleteGridProps })] }));
27537
27586
  return renderDeleteGrid();
27538
27587
  };
27539
27588
 
@@ -27542,7 +27591,7 @@ const CreateGridWrapper = (props) => {
27542
27591
  const [anchorEl, setAnchorEl] = React.useState(null);
27543
27592
  const open = Boolean(anchorEl);
27544
27593
  const handleClick = () => {
27545
- setAnchorEl(document.getElementById('create-button'));
27594
+ setAnchorEl(document.getElementById("create-button"));
27546
27595
  };
27547
27596
  const handleClose = () => {
27548
27597
  setAnchorEl(null);
@@ -27557,51 +27606,56 @@ const CreateGridWrapper = (props) => {
27557
27606
  // ===== || KEYDOWN || ===== //
27558
27607
  const handleKeyPress = React.useCallback((event) => {
27559
27608
  if (props.permission) {
27560
- if (event.ctrlKey && event.key === 'e') {
27609
+ if (event.ctrlKey && event.key === "e") {
27561
27610
  event.preventDefault();
27562
27611
  handleClick();
27563
27612
  }
27564
27613
  }
27565
27614
  }, [props.permission]);
27566
27615
  React.useEffect(() => {
27567
- document.addEventListener('keydown', handleKeyPress);
27616
+ document.addEventListener("keydown", handleKeyPress);
27568
27617
  return () => {
27569
- document.removeEventListener('keydown', handleKeyPress);
27618
+ document.removeEventListener("keydown", handleKeyPress);
27570
27619
  };
27571
27620
  }, [handleKeyPress]);
27572
27621
  const createGridProps = mergeSettings({
27573
27622
  slotProps: {
27574
27623
  toolbar: {
27575
27624
  extraButtons: [
27576
- ...(props.permission ? [{
27577
- label: 'Crear',
27578
- icon: AddIcon,
27579
- onClick: handleClick,
27580
- buttonProps: {
27581
- id: 'create-button',
27582
- }
27583
- }] : []),
27584
- ]
27585
- }
27625
+ ...(props.permission
27626
+ ? [
27627
+ {
27628
+ label: "Crear",
27629
+ icon: AddIcon,
27630
+ onClick: handleClick,
27631
+ buttonProps: {
27632
+ id: "create-button",
27633
+ },
27634
+ },
27635
+ ]
27636
+ : []),
27637
+ ],
27638
+ },
27586
27639
  },
27587
27640
  }, props.dataGridProps);
27588
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(StyledMenu, { id: 'create-menu', MenuListProps: {
27589
- 'aria-labelledby': 'create-menu-button',
27590
- }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable && ([
27591
- {
27592
- title: 'CSV',
27593
- endpoint: props.pathname,
27594
- },
27595
- ...(props.csv_upload.extraOptions || [])
27596
- ].map((option, index) => {
27597
- return (jsxRuntime.jsx(MenuItem, { onClick: () => {
27598
- handleToggleOpen(option);
27599
- handleClose();
27600
- }, disableRipple: true, children: option.title }, index));
27601
- })), jsxRuntime.jsx(MenuItem, { onClick: () => {
27641
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(StyledMenu, { id: "create-menu", MenuListProps: {
27642
+ "aria-labelledby": "create-menu-button",
27643
+ }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable &&
27644
+ [
27645
+ {
27646
+ title: "CSV",
27647
+ endpoint: props.pathname,
27648
+ },
27649
+ ...(props.csv_upload.extraOptions || []),
27650
+ ].map((option, index) => {
27651
+ return (jsxRuntime.jsxs(MenuItem, { onClick: () => {
27652
+ handleToggleOpen(option);
27653
+ handleClose();
27654
+ }, disableRipple: true, children: [jsxRuntime.jsx(material.ListItemIcon, { children: jsxRuntime.jsx(AttachFileIcon, { sx: { transform: "rotate(90deg)" } }) }), option.title] }, index));
27655
+ }), jsxRuntime.jsxs(MenuItem, { onClick: () => {
27602
27656
  navigate(props.navigation ? `${props.navigation}crear` : `crear`);
27603
27657
  handleClose();
27604
- }, disableRipple: true, children: "Manual" })] }), props.csv_upload?.enable && (jsxRuntime.jsx(CSVUpload, { open: csv.open, drawerToggle: handleToggleClose, data: csv.data })), props.renderFunction({ dataGridProps: createGridProps })] }));
27658
+ }, disableRipple: true, children: [jsxRuntime.jsx(material.ListItemIcon, { children: jsxRuntime.jsx(DrawIcon, {}) }), "Manual"] })] }), props.csv_upload?.enable && (jsxRuntime.jsx(CSVUpload, { open: csv.open, drawerToggle: handleToggleClose, data: csv.data })), props.renderFunction({ dataGridProps: createGridProps })] }));
27605
27659
  };
27606
27660
 
27607
27661
  const Base = (props) => {
@@ -27858,13 +27912,13 @@ const ActiveCell = ({ value }) => {
27858
27912
  }, [value]);
27859
27913
  const renderIcon = React.useCallback(() => {
27860
27914
  const iconProps = {
27861
- size: 'small',
27915
+ size: "small",
27862
27916
  sx: {
27863
27917
  color: color[700],
27864
- fontSize: '30px',
27918
+ fontSize: "30px",
27865
27919
  stroke: color[700],
27866
- strokeWidth: 1.5
27867
- }
27920
+ strokeWidth: 1.5,
27921
+ },
27868
27922
  };
27869
27923
  switch (value) {
27870
27924
  case true:
@@ -27875,7 +27929,7 @@ const ActiveCell = ({ value }) => {
27875
27929
  return jsxRuntime.jsx(ErrorOutlineIcon, { ...iconProps });
27876
27930
  }
27877
27931
  }, [color, value]);
27878
- return (jsxRuntime.jsx(material.Box, { px: 2, py: 0.5, display: 'flex', alignItems: 'center', justifyContent: 'center', borderRadius: 2, borderColor: color[900], children: renderIcon() }));
27932
+ return (jsxRuntime.jsx(material.Box, { px: 2, py: 0.5, display: "flex", alignItems: "center", justifyContent: "center", borderRadius: 2, borderColor: color[900], children: renderIcon() }));
27879
27933
  };
27880
27934
 
27881
27935
  const MyGridEditSingleSelect = (props) => {
@@ -27890,7 +27944,7 @@ const MyGridEditSingleSelect = (props) => {
27890
27944
  } }));
27891
27945
  };
27892
27946
 
27893
- const StyledTooltip = material.styled(({ className, ...props }) => (jsxRuntime.jsx(material.Tooltip, { ...props, placement: 'top', classes: { popper: className } })))(({ theme }) => ({
27947
+ const StyledTooltip = material.styled(({ className, ...props }) => (jsxRuntime.jsx(material.Tooltip, { ...props, placement: "top", classes: { popper: className } })))(({ theme }) => ({
27894
27948
  [`& .${material.tooltipClasses.tooltip}`]: {
27895
27949
  backgroundColor: theme.palette.error.main,
27896
27950
  color: theme.palette.error.contrastText,
@@ -27900,27 +27954,29 @@ const EditCellWithErrorTooltip = (props) => {
27900
27954
  const { error } = props;
27901
27955
  const renderCell = () => {
27902
27956
  switch (props.colDef.type) {
27903
- case 'boolean':
27957
+ case "boolean":
27904
27958
  return jsxRuntime.jsx(xDataGrid.GridEditBooleanCell, { ...props });
27905
- case 'singleSelect':
27959
+ case "singleSelect":
27906
27960
  return jsxRuntime.jsx(MyGridEditSingleSelect, { ...props });
27907
27961
  default:
27908
- return jsxRuntime.jsx(xDataGrid.GridEditInputCell, { ...props, slotProps: {
27962
+ return (jsxRuntime.jsx(xDataGrid.GridEditInputCell, { ...props, slotProps: {
27909
27963
  root: {
27910
27964
  onFocus: (e) => {
27911
- if (props.field == 'cotizacion__total')
27965
+ if (props.field == "cotizacion__total")
27912
27966
  return e.target.select();
27913
27967
  },
27914
- }
27915
- } });
27968
+ },
27969
+ } }));
27916
27970
  }
27917
27971
  };
27918
- return (jsxRuntime.jsx(StyledTooltip, { open: !!error, title: error, children: renderCell() }));
27972
+ return (jsxRuntime.jsx(StyledTooltip, { open: !!error, title: error?.reason.join(", "), children: jsxRuntime.jsx("div", { style: { display: "flex" }, children: renderCell() }) }));
27919
27973
  };
27920
27974
 
27921
27975
  function renderEditCellWithErrorTooltip(params, mutationErrors, path) {
27922
- const hasError = lodash.get(lodash.get(mutationErrors, params.id), path || params.field);
27923
- return jsxRuntime.jsx(EditCellWithErrorTooltip, { ...params, error: hasError });
27976
+ const error = lodash.find(lodash.get(mutationErrors, params.id), function (e) {
27977
+ return e.name == (path || params.field);
27978
+ });
27979
+ return jsxRuntime.jsx(EditCellWithErrorTooltip, { ...params, error: error });
27924
27980
  }
27925
27981
 
27926
27982
  const CoverPage = (props) => {
@@ -28037,34 +28093,38 @@ const Field = (props) => {
28037
28093
  return true;
28038
28094
  }, [props.data, props.dependantOn]);
28039
28095
  const renderField = React.useCallback(() => {
28040
- if (!props.pageType || props.pageType == 'list')
28096
+ if (!props.pageType || props.pageType == "list")
28041
28097
  return;
28042
- if (props.pageType == 'detail')
28098
+ if (props.pageType == "detail")
28043
28099
  return jsxRuntime.jsx(DetailField, { ...props });
28044
28100
  else
28045
28101
  return jsxRuntime.jsx(EditField, { ...props });
28046
28102
  }, [props]);
28047
28103
  if (!show)
28048
28104
  return;
28049
- return (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: renderField() })] }));
28105
+ return (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: renderField() })] }));
28050
28106
  };
28051
28107
 
28052
28108
  const EditToolbar = (props) => {
28053
- return (jsxRuntime.jsxs(xDataGrid.Toolbar, { children: [props.pageType != 'detail' &&
28054
- jsxRuntime.jsx(Tooltip, { title: 'Crear', children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { onClick: props.handleCreate, children: jsxRuntime.jsx(AddIcon, { fontSize: "small" }) }) }), !!props.selected &&
28055
- jsxRuntime.jsx(Tooltip, { title: 'Borrar', children: jsxRuntime.jsx(xDataGrid.ToolbarButton, { onClick: props.handleDelete, children: jsxRuntime.jsx(DeleteIcon, { fontSize: "small" }) }) })] }));
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" }) }) }))] }));
28056
28110
  };
28057
28111
  const FieldArrayField = (props) => {
28058
28112
  const { fields, remove } = reactHookForm.useFieldArray({
28059
28113
  control: props.form.control,
28060
28114
  name: props.name,
28061
- keyName: '_id'
28115
+ keyName: "_id",
28116
+ });
28117
+ const [drawer, setDrawer] = React.useState({
28118
+ open: false,
28119
+ data: undefined,
28062
28120
  });
28063
- const [drawer, setDrawer] = React.useState({ open: false, data: undefined });
28064
- const [rowSelectionModel, setRowSelectionModel] = React.useState({ type: 'include', ids: new Set() });
28065
- const getIndex = React.useCallback((id) => (lodash.findIndex(fields, function (field) {
28121
+ const [rowSelectionModel, setRowSelectionModel] = React.useState({
28122
+ type: "include",
28123
+ ids: new Set(),
28124
+ });
28125
+ const getIndex = React.useCallback((id) => lodash.findIndex(fields, function (field) {
28066
28126
  return field._id == id;
28067
- })), [fields]);
28127
+ }), [fields]);
28068
28128
  const handleCreate = () => {
28069
28129
  setDrawer({ open: true, data: undefined });
28070
28130
  };
@@ -28087,7 +28147,7 @@ const FieldArrayField = (props) => {
28087
28147
  const handleRowClick = (e) => {
28088
28148
  setDrawer({ open: true, data: e.row });
28089
28149
  };
28090
- 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) => {
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) => {
28091
28151
  setRowSelectionModel(newRowSelectionModel);
28092
28152
  }, showToolbar: true, slots: { toolbar: EditToolbar }, slotProps: {
28093
28153
  toolbar: {
@@ -28096,7 +28156,7 @@ const FieldArrayField = (props) => {
28096
28156
  handleDelete: handleDelete,
28097
28157
  pageType: props.pageType,
28098
28158
  },
28099
- }, 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) => {
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) => {
28100
28160
  const fieldName = `${props.name}.${getIndex(drawer.data?._id)}.${field.name}`;
28101
28161
  return (jsxRuntime.jsx(Field, { ...field, form: props.form, name: fieldName, fieldData: lodash.get(drawer.data, field.name) }, fieldName));
28102
28162
  }) }) })] }));
@@ -28194,10 +28254,10 @@ const Logo = () => {
28194
28254
  // ==============================|| PESTAÑAS ||============================== //
28195
28255
  /**
28196
28256
  * Pestañas customizables
28197
- **/
28257
+ **/
28198
28258
  const Tabs = (props) => {
28199
28259
  // valor inicial
28200
- const [value, setValue] = React.useState(props.initialValue || '1');
28260
+ const [value, setValue] = React.useState(props.initialValue || "1");
28201
28261
  // manejar cambio de pestaña
28202
28262
  const handleChange = (_event, newValue) => {
28203
28263
  setValue(newValue);
@@ -28205,29 +28265,33 @@ const Tabs = (props) => {
28205
28265
  };
28206
28266
  // hacer el render del contenido de la pestaña seleccionada
28207
28267
  const renderTabs = () => {
28208
- return (props.tabs.map((option) => {
28268
+ return props.tabs.map((option) => {
28209
28269
  const renderContent = () => {
28210
28270
  return React.Children.map(option.children, (child) => {
28211
28271
  const cloneProps = { ...child.props };
28212
- lodash.set(cloneProps, 'type', props.type);
28213
- lodash.set(cloneProps, 'slotProps.tab', option.value);
28272
+ lodash.set(cloneProps, "type", props.type);
28273
+ lodash.set(cloneProps, "slotProps.tab", option.value);
28214
28274
  return React.cloneElement(child, cloneProps);
28215
28275
  });
28216
28276
  };
28217
28277
  return (jsxRuntime.jsx(TabPanel, { value: option.value, sx: {
28218
- pt: 2, pb: 0, px: 0, width: 1, height: 1,
28278
+ pt: 2,
28279
+ pb: 0,
28280
+ px: 0,
28281
+ width: 1,
28282
+ height: 1,
28219
28283
  }, children: renderContent() }, option.value));
28220
- }));
28284
+ });
28221
28285
  };
28222
28286
  return (
28223
28287
  // contexto
28224
- jsxRuntime.jsx(material.Box, { width: 1, height: 'calc(100vh - 175px)', children: jsxRuntime.jsxs(TabContext, { value: value, children: [jsxRuntime.jsx(TabList, { onChange: handleChange, "aria-label": "create-work-order-tabs", variant: 'scrollable', scrollButtons: 'auto', sx: {
28225
- minHeight: 40
28288
+ jsxRuntime.jsx(material.Box, { width: 1, height: "calc(100vh - 175px)", children: jsxRuntime.jsxs(TabContext, { value: value, children: [jsxRuntime.jsx(TabList, { onChange: handleChange, "aria-label": "create-work-order-tabs", variant: "scrollable", scrollButtons: "auto", sx: {
28289
+ minHeight: 40,
28226
28290
  }, children: props.tabs.map((option) => {
28227
- return (jsxRuntime.jsx(Tab, { label: option.label, icon: option.icon, iconPosition: 'start', value: option.value, sx: {
28228
- color: 'secondary.light',
28291
+ return (jsxRuntime.jsx(Tab, { label: option.label, icon: option.icon, iconPosition: "start", value: option.value, sx: {
28292
+ color: "secondary.light",
28229
28293
  py: 0,
28230
- minHeight: 40
28294
+ minHeight: 40,
28231
28295
  } }, option.value));
28232
28296
  }) }), jsxRuntime.jsx(material.Box, { width: 1, height: 0.935, children: renderTabs() })] }) }));
28233
28297
  };
@@ -28311,7 +28375,7 @@ function DetailPage(props) {
28311
28375
  resolver: zod$1.zodResolver(props.edit.schema),
28312
28376
  defaultValues: props.edit?.defaultValues,
28313
28377
  });
28314
- const { data, isLoading, isFetching, error: fetchError } = props.api.data.query(!props.api.data.skipToken ? props.api.data.args : query$1.skipToken);
28378
+ const { data, isLoading, isFetching, error: fetchError, } = props.api.data.query(!props.api.data.skipToken ? props.api.data.args : query$1.skipToken);
28315
28379
  React.useEffect(() => {
28316
28380
  if (data) {
28317
28381
  // set form data based on query data
@@ -28319,7 +28383,7 @@ function DetailPage(props) {
28319
28383
  if (props.slots?.title) {
28320
28384
  const title = lodash.map(props.slots?.title, function (field) {
28321
28385
  return lodash.get(data, field);
28322
- }).join(' ');
28386
+ }).join(" ");
28323
28387
  if (title)
28324
28388
  dispatch(changeTitle(title));
28325
28389
  }
@@ -28330,60 +28394,64 @@ function DetailPage(props) {
28330
28394
  form.reset();
28331
28395
  navigate(-1);
28332
28396
  };
28333
- const canEdit = React.useMemo(() => lodash.get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ''}obj_permissions.edit`), [data, props.slotProps?.permissionsPath]);
28334
- const canDelete = React.useMemo(() => lodash.get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ''}obj_permissions.delete`), [data, props.slotProps?.permissionsPath]);
28397
+ const canEdit = React.useMemo(() => lodash.get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ""}obj_permissions.edit`), [data, props.slotProps?.permissionsPath]);
28398
+ const canDelete = React.useMemo(() => lodash.get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ""}obj_permissions.delete`), [data, props.slotProps?.permissionsPath]);
28335
28399
  // ==============================|| VALIDATION ||============================== //
28336
28400
  useValidateFieldData(props, form);
28337
28401
  // ==============================|| QUICK RETURN ||============================== //
28338
- if ((!canEdit && props.pageType == 'edit') || (fetchError && fetchError.originalStatus == 403))
28402
+ if ((!canEdit && props.pageType == "edit") || (fetchError && fetchError.originalStatus == 403))
28339
28403
  return jsxRuntime.jsx(NotAllowed, {});
28340
28404
  if (fetchError && fetchError.originalStatus == 404)
28341
28405
  return jsxRuntime.jsx(NotFound, {});
28342
28406
  // ==============================|| SUBMIT ||============================== //
28343
28407
  const onSubmitHandler = (submitedData) => {
28344
- const formData = 'nativeEvent' in submitedData ? form.getValues() : submitedData;
28408
+ const formData = "nativeEvent" in submitedData ? form.getValues() : submitedData;
28345
28409
  const params = { submitData: formData, data: data, props: props.slotProps?.parser };
28346
28410
  const dataToSend = props.edit.useFormData ? formDataForm(params) : jsonForm(params);
28347
- mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args }).unwrap()
28411
+ mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args })
28412
+ .unwrap()
28348
28413
  .then(() => {
28349
28414
  if (!props.slotProps?.button?.save?.disableNavBack)
28350
28415
  navigate(-1);
28351
28416
  if (props.slotProps?.button?.save?.onClick)
28352
28417
  props.slotProps?.button?.save?.onClick();
28353
28418
  form.reset();
28354
- notifications.show(`${capitalizedObject} ${props.pageType == 'edit' ? 'actualizad@' : 'cread@'}!`, { severity: 'success' });
28419
+ notifications.show(`${capitalizedObject} ${props.pageType == "edit" ? "actualizad@" : "cread@"}!`, { severity: "success" });
28355
28420
  })
28356
28421
  .catch((error) => {
28357
28422
  if (error.status === 401) ;
28358
28423
  if (error.status === 403) {
28359
- notifications.show(error.data.detail, { severity: 'error' });
28424
+ notifications.show(error.data.detail, { severity: "error" });
28360
28425
  }
28361
28426
  else {
28362
28427
  console.log(error);
28363
28428
  setErrors(form, error);
28364
- notifications.show((error.data.detail ?
28365
- error.data.detail.join(', ') :
28366
- `Error ${props.pageType == 'edit' ? 'actualizando' : 'creando'} ${props.object.name}!`), { severity: 'error' });
28429
+ notifications.show(error.data.detail
28430
+ ? error.data.detail.join(", ")
28431
+ : `Error ${props.pageType == "edit" ? "actualizando" : "creando"} ${props.object.name}!`, { severity: "error" });
28367
28432
  }
28368
28433
  });
28369
28434
  };
28370
28435
  // ==============================|| RENDER SECTIONS ||============================== //
28371
28436
  const renderContent = () => {
28372
28437
  let displayed_sections = -1;
28373
- return (jsxRuntime.jsxs(material.Grid, { size: 12, container: true, direction: 'column', position: 'relative', pb: 2, children: [props.pageType == 'detail' && data?.has_history && jsxRuntime.jsx(HistorialDrawer, { ...props.slotProps?.historial }), props.sections.map((section, index) => {
28438
+ return (jsxRuntime.jsxs(material.Grid, { size: 12, container: true, direction: "column", position: "relative", pb: 2, children: [props.pageType == "detail" && data?.has_history && (jsxRuntime.jsx(HistorialDrawer, { ...props.slotProps?.historial })), props.sections.map((section, index) => {
28374
28439
  if (!section.display)
28375
28440
  return null;
28376
- if (typeof section.display == 'object') {
28441
+ if (typeof section.display == "object") {
28377
28442
  const validateAgainst = form.watch(section.display.field)?.toString();
28378
28443
  if (!section.display.method(validateAgainst, section.display.value))
28379
28444
  return null;
28380
28445
  }
28381
28446
  displayed_sections += 1;
28382
- return (jsxRuntime.jsx(Section, { data: data, form: form, bgColor: displayed_sections % 2 == 1 ? 'white' : '#F7F7F7', pageType: props.pageType, ...section, first: displayed_sections == 0 }, index));
28447
+ return (jsxRuntime.jsx(Section, { data: data, form: form, bgColor: displayed_sections % 2 == 1 ? "white" : "#F7F7F7", pageType: props.pageType, ...section, first: displayed_sections == 0 }, index));
28383
28448
  })] }));
28384
28449
  };
28385
28450
  const renderPostAction = () => {
28386
- if (props.api.mutate.postAction && isSuccess && 'post_action' in mutationResponse && mutationResponse['post_action']['type'] === props.api.mutate.postAction.type) {
28451
+ if (props.api.mutate.postAction &&
28452
+ isSuccess &&
28453
+ "post_action" in mutationResponse &&
28454
+ mutationResponse["post_action"]["type"] === props.api.mutate.postAction.type) {
28387
28455
  switch (props.api.mutate.postAction.after) {
28388
28456
  // case 'create':
28389
28457
  // if (props.pageType === 'create') return addPropsToNode(props.api.mutate.postAction.node, mutationResponse);
@@ -28392,37 +28460,44 @@ function DetailPage(props) {
28392
28460
  // if (props.pageType === 'edit') return props.api.mutate.postAction.node;
28393
28461
  // break;
28394
28462
  default:
28395
- return addPropsToNode(props.api.mutate.postAction.node, { parent: props.api.data.args['id'], ...mutationResponse['post_action'] });
28463
+ return addPropsToNode(props.api.mutate.postAction.node, {
28464
+ parent: props.api.data.args["id"],
28465
+ ...mutationResponse["post_action"],
28466
+ });
28396
28467
  }
28397
28468
  }
28398
28469
  };
28399
- const badgeInfo = lodash.get(data, props.slots?.badge || '');
28470
+ const badgeInfo = lodash.get(data, props.slots?.badge || "");
28400
28471
  const renderButton = () => {
28401
28472
  if (props.slots?.button)
28402
28473
  return props.slots?.button;
28403
- if (props.pageType == 'detail') {
28474
+ if (props.pageType == "detail") {
28404
28475
  if (!canEdit && !canDelete)
28405
28476
  return null;
28406
- return (jsxRuntime.jsxs(material.Stack, { direction: 'row', spacing: 1, children: [canDelete && props.api.delete && jsxRuntime.jsx(DeleteButton, { mutation: props.api.delete.mutation, disableNavBack: props.slotProps?.deleteButton?.disableNavBack }), canEdit && jsxRuntime.jsx(EditButton, {})] }));
28477
+ return (jsxRuntime.jsxs(material.Stack, { direction: "row", spacing: 1, children: [canDelete && props.api.delete && (jsxRuntime.jsx(DeleteButton, { mutation: props.api.delete.mutation, disableNavBack: props.slotProps?.deleteButton?.disableNavBack })), canEdit && jsxRuntime.jsx(EditButton, {})] }));
28407
28478
  }
28408
28479
  else {
28409
28480
  return (jsxRuntime.jsx(SaveCancelButton, { slotProps: {
28410
28481
  saveBtn: {
28411
28482
  loading: mutationIsLoading,
28412
28483
  disabled: !form.formState.isDirty,
28413
- ...(props.slotProps?.button?.save?.type == 'onClick' ? {
28414
- type: 'button',
28415
- onClick: onSubmitHandler,
28416
- } : {}),
28484
+ ...(props.slotProps?.button?.save?.type == "onClick"
28485
+ ? {
28486
+ type: "button",
28487
+ onClick: onSubmitHandler,
28488
+ }
28489
+ : {}),
28417
28490
  },
28418
- ...(props.slotProps?.button?.cancel ? { cancelBtn: props.slotProps?.button?.cancel } : {
28419
- cancelBtn: { onClick: handleCancel }
28420
- }),
28491
+ ...(props.slotProps?.button?.cancel
28492
+ ? { cancelBtn: props.slotProps?.button?.cancel }
28493
+ : {
28494
+ cancelBtn: { onClick: handleCancel },
28495
+ }),
28421
28496
  } }));
28422
28497
  }
28423
28498
  };
28424
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ContentLayout, { button: renderButton(), badge: props.pageType == 'detail' && badgeInfo &&
28425
- 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()] }));
28499
+ 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()] }));
28426
28501
  }
28427
28502
 
28428
28503
  const ListPage = (props) => {
@@ -28430,19 +28505,19 @@ const ListPage = (props) => {
28430
28505
  };
28431
28506
 
28432
28507
  function SlideTransition(props) {
28433
- return jsxRuntime.jsx(material.Slide, { ...props, direction: 'left' });
28508
+ return jsxRuntime.jsx(material.Slide, { ...props, direction: "left" });
28434
28509
  }
28435
28510
  const BaseProgressSnack = (props) => {
28436
- // const dispatch = useAppDispatch();
28511
+ const dispatch = reactRedux.useDispatch();
28437
28512
  const handleClose = (e) => {
28438
28513
  if (e?.defaultMuiPrevented)
28439
28514
  return;
28440
- // dispatch(closeProgressSnack(props.id));
28515
+ dispatch(closeProgressSnack(props.id));
28441
28516
  };
28442
- const finished = React.useMemo(() => lodash.get(props.data, 'finished'), [props.data]);
28443
- const error = React.useMemo(() => lodash.get(props.data, 'error'), [props.data]);
28517
+ const finished = React.useMemo(() => lodash.get(props.data, "finished"), [props.data]);
28518
+ const error = React.useMemo(() => lodash.get(props.data, "error"), [props.data]);
28444
28519
  const renderItem = React.useCallback(() => {
28445
- return (jsxRuntime.jsx(material.Snackbar, { anchorOrigin: { vertical: 'bottom', horizontal: 'right' }, open: props.open, onClose: handleClose, slots: {
28520
+ return (jsxRuntime.jsx(material.Snackbar, { anchorOrigin: { vertical: "bottom", horizontal: "right" }, open: props.open, onClose: handleClose, slots: {
28446
28521
  transition: SlideTransition,
28447
28522
  }, slotProps: {
28448
28523
  clickAwayListener: {
@@ -28450,27 +28525,27 @@ const BaseProgressSnack = (props) => {
28450
28525
  event.defaultMuiPrevented = true;
28451
28526
  },
28452
28527
  },
28453
- }, children: jsxRuntime.jsx(material.Badge, { invisible: props.index < 1, badgeContent: props.index + 1, color: 'primary', children: jsxRuntime.jsx(material.Paper, { elevation: 2, sx: {
28454
- bgcolor: props.data['error'] ? 'primary.main' : 'secondary.dark',
28528
+ }, children: jsxRuntime.jsx(material.Badge, { invisible: props.index < 1, badgeContent: props.index + 1, color: "primary", children: jsxRuntime.jsx(material.Paper, { elevation: 2, sx: {
28529
+ bgcolor: props.data["error"] ? "primary.main" : "secondary.dark",
28455
28530
  minWidth: 300,
28456
- maxWidth: '100vw',
28531
+ maxWidth: "100vw",
28457
28532
  p: 2,
28458
- borderRadius: '12px',
28459
- color: 'white',
28460
- }, children: jsxRuntime.jsxs(material.Stack, { direction: 'column', spacing: 1, children: [jsxRuntime.jsxs(material.Stack, { direction: 'row', alignItems: 'center', spacing: 1, justifyContent: 'space-between', children: [jsxRuntime.jsx(material.Typography, { pr: 2, color: 'inherit', children: props.data.title || 'N/A' }), finished && !error && (jsxRuntime.jsx(material.Tooltip, { title: 'Cerrar', placement: 'bottom', children: jsxRuntime.jsx(material.IconButton, { color: 'secondary', size: 'small', onClick: handleClose, sx: {
28461
- color: 'inherit',
28462
- '&:hover': {
28463
- backgroundColor: 'rgba(255, 255, 255, 0.2)'
28533
+ borderRadius: "12px",
28534
+ color: "white",
28535
+ }, children: jsxRuntime.jsxs(material.Stack, { direction: "column", spacing: 1, children: [jsxRuntime.jsxs(material.Stack, { direction: "row", alignItems: "center", spacing: 1, justifyContent: "space-between", children: [jsxRuntime.jsx(material.Typography, { pr: 2, color: "inherit", children: props.data.title || "N/A" }), finished && !error && (jsxRuntime.jsx(material.Tooltip, { title: "Cerrar", placement: "bottom", children: jsxRuntime.jsx(material.IconButton, { color: "secondary", size: "small", onClick: handleClose, sx: {
28536
+ color: "inherit",
28537
+ "&:hover": {
28538
+ backgroundColor: "rgba(255, 255, 255, 0.2)",
28464
28539
  },
28465
- }, children: jsxRuntime.jsx(CloseIcon, { fontSize: 'small' }) }) }))] }), !finished && !error && props.content(props.data)] }) }) }) }));
28540
+ }, children: jsxRuntime.jsx(CloseIcon, { fontSize: "small" }) }) }))] }), !finished && !error && props.content(props.data)] }) }) }) }));
28466
28541
  // eslint-disable-next-line react-hooks/exhaustive-deps
28467
28542
  }, [finished, props]);
28468
28543
  return renderItem();
28469
28544
  };
28470
28545
 
28471
28546
  const ObjectProgressStack = (props) => {
28472
- const snacks = reactRedux.useSelector(state => lodash.get(state, 'snackProgress', {}));
28473
- return (jsxRuntime.jsx(material.Stack, { direction: 'column', spacing: 2, children: Object.keys(snacks).map((key, index) => {
28547
+ const snacks = reactRedux.useSelector((state) => lodash.get(state, "snackProgress", {}));
28548
+ return (jsxRuntime.jsx(material.Stack, { direction: "column", spacing: 2, children: Object.keys(snacks).map((key, index) => {
28474
28549
  return (jsxRuntime.jsx(BaseProgressSnack, { id: key, index: index, ...snacks[key], content: props.content }, key));
28475
28550
  }) }));
28476
28551
  };