@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/esm/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
- import { useTheme, useMediaQuery, Tooltip, IconButton, Button, Grid, FormGroup, FormHelperText as FormHelperText$1, Drawer, Box, Stack, CircularProgress, Typography as Typography$1, List as List$1, ListItem as ListItem$1, ListSubheader, styled as styled$1, LinearProgress, Autocomplete, Checkbox, Slider, Switch, InputAdornment as InputAdornment$1, ToggleButtonGroup, ToggleButton, Dialog, DialogTitle, DialogContent as DialogContent$1, DialogContentText, DialogActions as DialogActions$1, ButtonGroup, Menu, alpha as alpha$1, Link, Card, CardHeader, Avatar, CardContent, Divider as Divider$1, Popper, Grow as Grow$1, Paper, ClickAwayListener, Badge, TablePagination, NoSsr, tooltipClasses, Collapse, Fade as Fade$1, Slide, Zoom, Snackbar, lighten, createTheme as createTheme$1, responsiveFontSizes } from '@mui/material';
3
+ import { useTheme, useMediaQuery, Tooltip, IconButton, Button, Grid, FormGroup, FormHelperText as FormHelperText$1, Drawer, Box, Stack, CircularProgress, Typography as Typography$1, List as List$1, ListItem as ListItem$1, ListSubheader, styled as styled$1, LinearProgress, Autocomplete, Checkbox, Slider, Switch, InputAdornment as InputAdornment$1, ToggleButtonGroup, ToggleButton, Dialog, DialogTitle, DialogContent as DialogContent$1, DialogContentText, DialogActions as DialogActions$1, ButtonGroup, Menu, ListItemIcon, Link, Card, CardHeader, Avatar, CardContent, Divider as Divider$1, Popper, Grow as Grow$1, Paper, ClickAwayListener, Badge, TablePagination, NoSsr, tooltipClasses, Collapse, Fade as Fade$1, Slide, Zoom, Snackbar, alpha as alpha$1, lighten, createTheme as createTheme$1, responsiveFontSizes } from '@mui/material';
4
4
  import EditIcon from '@mui/icons-material/Edit';
5
5
  import * as React from 'react';
6
6
  import React__default, { useCallback, useEffect, isValidElement, cloneElement, Children, createContext, useContext, useState, useMemo, useRef, useImperativeHandle, useLayoutEffect, Suspense, forwardRef } from 'react';
7
- import { useNavigate, useLocation } from 'react-router-dom';
7
+ import { useNavigate, useLocation, useLoaderData } from 'react-router-dom';
8
8
  import DeleteIcon from '@mui/icons-material/Delete';
9
9
  import { Controller, useForm, useWatch, useFieldArray, FormProvider } from 'react-hook-form';
10
10
  import { useSession, PageHeader, useNotifications } from '@toolpad/core';
@@ -41,7 +41,7 @@ import BaseFocusTrap from '@mui/material/Unstable_TrapFocus';
41
41
  import DialogContent from '@mui/material/DialogContent';
42
42
  import MuiDialog, { dialogClasses } from '@mui/material/Dialog';
43
43
  import debounce from 'lodash/debounce';
44
- import { get, invoke, map, find, forEach as forEach$1, findIndex, mergeWith, isArray, omit, set as set$1, every, includes as includes$1, merge as merge$2, countBy, isNumber, isEmpty as isEmpty$1, isBoolean, isEqual as isEqual$1, debounce as debounce$1, some } from 'lodash';
44
+ import { get, invoke, map, find, groupBy, forEach as forEach$1, findIndex, mergeWith, isArray, omit, set as set$1, every, includes as includes$1, merge as merge$2, countBy, isNumber, isEmpty as isEmpty$1, isBoolean, isEqual as isEqual$1, debounce as debounce$1, some } from 'lodash';
45
45
  import { produce } from 'immer';
46
46
  import set from 'lodash/set';
47
47
  import get$1 from 'lodash/get';
@@ -73,6 +73,7 @@ import SaveIcon from '@mui/icons-material/Save';
73
73
  import AddIcon from '@mui/icons-material/Add';
74
74
  import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
75
75
  import LinearProgress$1 from '@mui/material/LinearProgress';
76
+ import AttachFileIcon from '@mui/icons-material/AttachFile';
76
77
  import { useGridApiContext, ToolbarButton, QuickFilter, QuickFilterTrigger, QuickFilterControl, QuickFilterClear, ColumnsPanelTrigger, Toolbar, useGridSelector, gridPaginationSelector, GridRow, GridRowEditStartReasons, GridRowModes, GridActionsCellItem, useGridApiRef, DataGrid, GridRowEditStopReasons, GridEditSingleSelectCell, GridEditInputCell, GridEditBooleanCell } from '@mui/x-data-grid';
77
78
  import Tooltip$1 from '@mui/material/Tooltip';
78
79
  import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
@@ -94,6 +95,7 @@ import { useSortable, SortableContext, verticalListSortingStrategy } from '@dnd-
94
95
  import { CSS } from '@dnd-kit/utilities';
95
96
  import { useSensors, useSensor, PointerSensor, DndContext, closestCenter } from '@dnd-kit/core';
96
97
  import { restrictToVerticalAxis, restrictToWindowEdges, restrictToParentElement } from '@dnd-kit/modifiers';
98
+ import DrawIcon from '@mui/icons-material/Draw';
97
99
  import CloseIcon from '@mui/icons-material/Close';
98
100
  import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';
99
101
  import { skipToken } from '@reduxjs/toolkit/query';
@@ -104,10 +106,12 @@ import { useDispatch, useSelector } from 'react-redux';
104
106
 
105
107
  const NormalOrIcon = (props) => {
106
108
  const theme = useTheme();
107
- const belowLG = useMediaQuery(theme.breakpoints.down('lg'));
108
- if ((belowLG && !(props.type == 'button')) || props.type == 'icon')
109
- return (jsx(Tooltip, { title: props.buttonProps.children, children: jsx(IconButton, { ...props.buttonProps, children: props.buttonProps.startIcon }) }));
110
- return (jsx(Button, { ...props.buttonProps }));
109
+ const belowLG = useMediaQuery(theme.breakpoints.down("lg"));
110
+ if ((belowLG && !(props.type == "button")) || props.type == "icon") {
111
+ const { startIcon, ...others } = props.buttonProps;
112
+ return (jsx(Tooltip, { title: props.buttonProps.children, children: jsx(IconButton, { ...others, children: startIcon }) }));
113
+ }
114
+ return jsx(Button, { ...props.buttonProps });
111
115
  };
112
116
 
113
117
  const EditButton = () => {
@@ -117,23 +121,23 @@ const EditButton = () => {
117
121
  }, [navigate]);
118
122
  // ===== || KEYDOWN || ===== //
119
123
  const handleKeyPress = useCallback((event) => {
120
- if (event.ctrlKey && event.key === 'e') {
124
+ if (event.ctrlKey && event.key === "e") {
121
125
  event.preventDefault();
122
126
  handleClick();
123
127
  }
124
128
  }, [handleClick]);
125
129
  useEffect(() => {
126
- document.addEventListener('keydown', handleKeyPress);
130
+ document.addEventListener("keydown", handleKeyPress);
127
131
  return () => {
128
- document.removeEventListener('keydown', handleKeyPress);
132
+ document.removeEventListener("keydown", handleKeyPress);
129
133
  };
130
134
  }, [handleKeyPress]);
131
135
  return (jsx(NormalOrIcon, { buttonProps: {
132
- color: 'secondary',
133
- variant: 'contained',
136
+ color: "secondary",
137
+ variant: "contained",
134
138
  startIcon: jsx(EditIcon, {}),
135
139
  onClick: handleClick,
136
- children: 'Editar',
140
+ children: "Editar",
137
141
  } }));
138
142
  };
139
143
 
@@ -25811,18 +25815,18 @@ const valueLabel = object({
25811
25815
 
25812
25816
  const MainDrawer = (props) => {
25813
25817
  const theme = useTheme();
25814
- return (jsx(Drawer, { variant: 'temporary', anchor: 'right', open: props.open, onClose: props.drawerToggle, sx: {
25818
+ return (jsx(Drawer, { variant: "temporary", anchor: "right", open: props.open, onClose: props.drawerToggle, sx: {
25815
25819
  zIndex: 1202,
25816
- '& .MuiDrawer-paper': {
25817
- width: '100%',
25820
+ "& .MuiDrawer-paper": {
25821
+ width: "100%",
25818
25822
  maxWidth: props.width ? props.width : 600,
25819
25823
  background: theme.palette.background.default,
25820
25824
  color: theme.palette.text.primary,
25821
- borderRight: 'none',
25822
- borderTopLeftRadius: '12px',
25823
- borderBottomLeftRadius: '12px',
25824
- }
25825
- }, color: 'inherit', ...props.drawerProps, children: jsxs(Grid, { container: true, direction: 'column', px: 4, py: 2, spacing: 2, children: [jsx(Grid, { display: 'flex', justifyContent: 'right', pb: 0, children: props.slots?.button ? props.slots.button : (jsx(Button, { color: 'error', startIcon: jsx(CancelIcon, {}), onClick: props.drawerToggle, children: "Cerrar" })) }), jsx(Grid, { children: jsx(PageHeader, { breadcrumbs: [], title: props.title }) }), jsx(Grid, { size: 12, container: true, position: 'relative', children: props.children })] }) }));
25825
+ borderRight: "none",
25826
+ borderTopLeftRadius: "12px",
25827
+ borderBottomLeftRadius: "12px",
25828
+ },
25829
+ }, color: "inherit", ...props.drawerProps, children: jsxs(Grid, { container: true, direction: "column", px: 4, py: 2, spacing: 2, children: [jsx(Grid, { display: "flex", justifyContent: "right", pb: 0, children: props.slots?.button ? (props.slots.button) : (jsx(Button, { color: "error", startIcon: jsx(CancelIcon, {}), onClick: props.drawerToggle, children: "Cerrar" })) }), jsx(Grid, { children: jsx(PageHeader, { breadcrumbs: [], title: props.title }) }), jsx(Grid, { size: 12, container: true, position: "relative", children: props.children })] }) }));
25826
25830
  };
25827
25831
 
25828
25832
  const LoadingComponent = (props) => {
@@ -25881,60 +25885,49 @@ const _HistorialDrawer = (props) => {
25881
25885
  const HistorialDrawer = (props) => {
25882
25886
  const [open, setOpen] = useState(false);
25883
25887
  const handleDrawer = useCallback(() => {
25884
- setOpen(prevState => !prevState);
25888
+ setOpen((prevState) => !prevState);
25885
25889
  }, []);
25886
25890
  // ===== || KEYDOWN || ===== //
25887
25891
  const handleKeyPress = useCallback((event) => {
25888
- if (event.ctrlKey && event.shiftKey && event.key === 'H') {
25892
+ if (event.ctrlKey && event.shiftKey && event.key === "H") {
25889
25893
  event.preventDefault();
25890
25894
  handleDrawer();
25891
25895
  }
25892
25896
  }, [handleDrawer]);
25893
25897
  useEffect(() => {
25894
- document.addEventListener('keydown', handleKeyPress);
25898
+ document.addEventListener("keydown", handleKeyPress);
25895
25899
  return () => {
25896
- document.removeEventListener('keydown', handleKeyPress);
25900
+ document.removeEventListener("keydown", handleKeyPress);
25897
25901
  };
25898
25902
  }, [handleKeyPress]);
25899
- return (jsxs(Fragment, { children: [jsx(Tooltip, { title: 'Historial', children: jsx(IconButton, { color: 'primary', onClick: handleDrawer, sx: {
25900
- position: 'absolute',
25903
+ return (jsxs(Fragment, { children: [jsx(Tooltip, { title: "Historial", children: jsx(IconButton, { color: "primary", onClick: handleDrawer, sx: {
25904
+ position: "absolute",
25901
25905
  right: 0,
25902
25906
  }, ...props.iconButtonProps, children: jsx(HistoryIcon, {}) }) }), jsx(_HistorialDrawer, { open: open, handleDrawer: handleDrawer, endpoint: props.endpoint })] }));
25903
25907
  };
25904
25908
 
25905
- const buildListItems = (content) => {
25906
- const items = [];
25907
- const loop = (content, error_title) => {
25908
- if (Array.isArray(content)) {
25909
- items.push({ title: error_title ? (error_title.charAt(0).toUpperCase() + error_title.slice(1)).split('_').join(' ') : 'N/A', content: content.join(', ') });
25910
- }
25911
- else {
25912
- Object.keys(content).map((row_error) => {
25913
- loop(content[row_error], row_error);
25914
- });
25915
- }
25916
- };
25917
- loop(content);
25918
- return items;
25919
- };
25920
25909
  const RowErrors = (props) => {
25921
25910
  return (jsx(List$1, { subheader: jsx(ListSubheader, { sx: {
25922
25911
  bgcolor: red[50],
25923
25912
  color: red[800],
25924
- fontWeight: 'bold',
25925
- borderRadius: '12px',
25926
- lineHeight: '40px'
25913
+ fontWeight: "bold",
25914
+ borderRadius: "12px",
25915
+ lineHeight: "40px",
25927
25916
  }, children: `Hilera ${props.row}` }), sx: {
25928
25917
  bgcolor: red[50],
25929
- borderRadius: '12px',
25930
- }, children: buildListItems(props.data[props.row]).map((item) => {
25918
+ borderRadius: "12px",
25919
+ }, children: props.data.map((item) => {
25920
+ const pre_name = item.name.split(".").at(-1);
25921
+ const name = (pre_name.charAt(0).toUpperCase() + pre_name.slice(1))
25922
+ .split("_")
25923
+ .join(" ");
25931
25924
  return (jsx(ListItem$1, { sx: {
25932
- py: 0
25933
- }, children: jsx(ListItemText, { primary: jsxs(Box, { children: [jsx(Typography$1, { variant: 'caption', pr: 0.5, sx: {
25925
+ py: 0,
25926
+ }, children: jsx(ListItemText, { primary: jsxs(Box, { children: [jsx(Typography$1, { variant: "caption", pr: 0.5, sx: {
25934
25927
  color: red[800],
25935
- }, children: `${item.title}:` }), jsx(Typography$1, { variant: 'caption', sx: {
25928
+ }, children: `${name}:` }), jsx(Typography$1, { variant: "caption", sx: {
25936
25929
  color: red[800],
25937
- }, children: item.content })] }) }) }));
25930
+ }, children: item.reason.join(", ") })] }) }) }));
25938
25931
  }) }));
25939
25932
  };
25940
25933
 
@@ -25974,9 +25967,8 @@ const FileUploadBox = (props) => {
25974
25967
  props.setValid(true);
25975
25968
  })
25976
25969
  .catch((e) => {
25977
- const columnas_inv = get(e.data, "columnas_invalidas");
25978
- if (columnas_inv)
25979
- notifications.show(columnas_inv, { severity: "error" });
25970
+ if (e.data?.detail?.length > 0)
25971
+ notifications.show(e.data.detail[0], { severity: "error" });
25980
25972
  props.setValid(false);
25981
25973
  });
25982
25974
  });
@@ -26003,19 +25995,22 @@ const FileUploadBox = (props) => {
26003
25995
  onChange(null);
26004
25996
  setFile(null);
26005
25997
  };
25998
+ const renderErrorRows = () => {
25999
+ if (!error?.data?.invalid_params)
26000
+ return;
26001
+ const rows = groupBy(error?.data?.invalid_params, function (e) {
26002
+ return e.name.split(".")[0];
26003
+ });
26004
+ if (!rows)
26005
+ return;
26006
+ return Object.entries(rows).map(([row, errors]) => (jsx(RowErrors, { row: row, data: errors }, row)));
26007
+ };
26006
26008
  return (jsx(Box$1, { width: 1, children: jsxs(Stack, { spacing: 2, children: [!file && !isLoading && (jsxs(Box$1, { component: "div", width: 1, display: "flex", justifyContent: "center", alignItems: "center", border: "1.5px dashed", borderRadius: "12px", py: 4, px: 2, borderColor: grey[800], bgcolor: grey[50], ...getRootProps(), children: [jsx(VisuallyHiddenInput, { id: "file-upload", type: "file", ...getInputProps() }), jsx(FileUploadIcon, { sx: {
26007
26009
  color: grey[800],
26008
26010
  pr: 1,
26009
26011
  } }), jsx(Typography, { variant: "body2", sx: { color: grey[800] }, children: isDragActive
26010
26012
  ? "Soltar archivo aquí."
26011
- : "Arrastra un archivo aquí o haz clic para seleccionar uno." })] })), isLoading && (jsx(Box$1, { children: jsx(LinearProgress, { sx: { height: 5 } }) })), file && (jsx(FileBox, { file: file, handleRemove: handleRemove, loadingRemove: removerLoading })), error &&
26012
- "data" in error &&
26013
- Object.keys(error.data).map((row) => {
26014
- if (typeof error.data[row] == "object") {
26015
- return jsx(RowErrors, { row: row, data: error.data }, row);
26016
- }
26017
- return null;
26018
- })] }) }));
26013
+ : "Arrastra un archivo aquí o haz clic para seleccionar uno." })] })), isLoading && (jsx(Box$1, { children: jsx(LinearProgress, { sx: { height: 5 } }) })), file && (jsx(FileBox, { file: file, handleRemove: handleRemove, loadingRemove: removerLoading })), renderErrorRows()] }) }));
26019
26014
  };
26020
26015
  return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value } }) => {
26021
26016
  return jsx(Dropzone, { onChange: onChange, value: value });
@@ -26200,7 +26195,7 @@ async function manualCacheRefresh(api, id, dispatch, queryFulfilled, endpoints)
26200
26195
  const initialState$1 = {};
26201
26196
  // == crea el slice == //
26202
26197
  const snackProgress = createSlice({
26203
- name: 'snackProgress',
26198
+ name: "snackProgress",
26204
26199
  initialState: initialState$1,
26205
26200
  // declarar acciones que se le pueden hacer a esta sección de la tienda
26206
26201
  reducers: {
@@ -26216,7 +26211,7 @@ const snackProgress = createSlice({
26216
26211
  closeProgressSnack(state, action) {
26217
26212
  return omit(state, action.payload);
26218
26213
  },
26219
- }
26214
+ },
26220
26215
  });
26221
26216
  // exportar acciones
26222
26217
  const { openProgressSnack, updateProgressSnackData, closeProgressSnack } = snackProgress.actions;
@@ -26242,12 +26237,14 @@ const { changeTitle, } = settings.actions;
26242
26237
  var header = settings.reducer;
26243
26238
 
26244
26239
  const ControlledDropdown = (props) => {
26245
- const [inputValue, setInputValue] = useState('');
26240
+ const [inputValue, setInputValue] = useState("");
26246
26241
  const [options, setOptions] = useState(props.extraProps?.options ? props.extraProps?.options : []);
26247
26242
  const args = useMemo(() => {
26248
26243
  if (!props.extraProps?.queryArgs)
26249
26244
  return undefined;
26250
- return mergeSettings(props.extraProps?.queryArgs, { filters: { nombre__icontains: inputValue } });
26245
+ return mergeSettings(props.extraProps?.queryArgs, {
26246
+ filters: { nombre__icontains: inputValue },
26247
+ });
26251
26248
  }, [inputValue, props.extraProps?.queryArgs]);
26252
26249
  const api = useAPI();
26253
26250
  const [getOpciones, { isLoading, isFetching, isError }] = api.useLazyGetComoOpcionesQuery();
@@ -26260,7 +26257,8 @@ const ControlledDropdown = (props) => {
26260
26257
  };
26261
26258
  const handleSearch = useCallback(debounce((args, callback) => {
26262
26259
  setOptions([]);
26263
- getOpciones(args).unwrap()
26260
+ getOpciones(args)
26261
+ .unwrap()
26264
26262
  .then(callback)
26265
26263
  .catch(() => {
26266
26264
  //
@@ -26273,7 +26271,7 @@ const ControlledDropdown = (props) => {
26273
26271
  });
26274
26272
  }
26275
26273
  }, [args, handleSearch, open]);
26276
- return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { value, onChange, }, fieldState: { error }, }) => {
26274
+ return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { value, onChange }, fieldState: { error } }) => {
26277
26275
  const handleChange = (_event, newValue) => {
26278
26276
  onChange(newValue);
26279
26277
  };
@@ -26281,10 +26279,10 @@ const ControlledDropdown = (props) => {
26281
26279
  setInputValue(newInputValue);
26282
26280
  }, isOptionEqualToValue: (option, value) => {
26283
26281
  return option.value === value.value;
26284
- }, filterOptions: props.extraProps.queryArgs ? (x) => x : undefined, fullWidth: true, size: 'small', disabled: !options || isError, renderInput: (params) => (jsx(TextField, { ...params, label: props.label, error: !!error, helperText: error ? error.message : props.extraProps?.disableHT ? '' : ' ', slotProps: {
26282
+ }, filterOptions: props.extraProps.queryArgs ? (x) => x : undefined, fullWidth: true, size: "small", disabled: !options || isError, renderInput: (params) => (jsx(TextField, { ...params, label: props.label, error: !!error, helperText: error ? error.message : props.extraProps?.disableHT ? "" : " ", slotProps: {
26285
26283
  input: {
26286
26284
  ...params.InputProps,
26287
- endAdornment: (jsxs(Fragment, { children: [(isLoading || isFetching) ? jsx(CircularProgress, { color: "inherit", size: 20 }) : null, params.InputProps.endAdornment] })),
26285
+ endAdornment: (jsxs(Fragment, { children: [isLoading || isFetching ? (jsx(CircularProgress, { color: "inherit", size: 20 })) : null, params.InputProps.endAdornment] })),
26288
26286
  },
26289
26287
  } })), ...props.fieldProps }));
26290
26288
  } }));
@@ -26313,13 +26311,15 @@ const ControlledPhoneNumber = (props) => {
26313
26311
  };
26314
26312
 
26315
26313
  const ControlledSelect = (props) => {
26316
- const [inputValue, setInputValue] = useState('');
26314
+ const [inputValue, setInputValue] = useState("");
26317
26315
  const [options, setOptions] = useState(props.extraProps?.options ? props.extraProps?.options : []);
26318
26316
  const [selectedAll, setSelectedAll] = useState(false);
26319
26317
  const args = useMemo(() => {
26320
26318
  if (!props.extraProps?.queryArgs)
26321
26319
  return undefined;
26322
- return mergeSettings(props.extraProps?.queryArgs, { filters: { nombre__icontains: inputValue } });
26320
+ return mergeSettings(props.extraProps?.queryArgs, {
26321
+ filters: { nombre__icontains: inputValue },
26322
+ });
26323
26323
  }, [inputValue, props.extraProps?.queryArgs]);
26324
26324
  const api = useAPI();
26325
26325
  const [getOpciones, { isLoading, isFetching, isError }] = api.useLazyGetComoOpcionesQuery();
@@ -26334,7 +26334,8 @@ const ControlledSelect = (props) => {
26334
26334
  };
26335
26335
  const handleSearch = useCallback(debounce((args, callback) => {
26336
26336
  setOptions([]);
26337
- getOpciones(args).unwrap()
26337
+ getOpciones(args)
26338
+ .unwrap()
26338
26339
  .then(callback)
26339
26340
  .catch(() => {
26340
26341
  //
@@ -26343,12 +26344,14 @@ const ControlledSelect = (props) => {
26343
26344
  useEffect(() => {
26344
26345
  if (args && open)
26345
26346
  handleSearch(args, (filteredOptions) => {
26346
- setOptions([{ value: 'all', label: 'All' }].concat(filteredOptions));
26347
+ setOptions([{ value: "all", label: "All" }].concat(filteredOptions));
26347
26348
  });
26348
26349
  }, [args, handleSearch, open]);
26349
26350
  return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { value, onChange }, fieldState: { error } }) => {
26350
26351
  const handleChange = (_event, newValue) => {
26351
- if (find(newValue, function (val) { return val.value == 'all'; })) {
26352
+ if (find(newValue, function (val) {
26353
+ return val.value == "all";
26354
+ })) {
26352
26355
  if (selectedAll) {
26353
26356
  setSelectedAll(false);
26354
26357
  onChange(newValue.slice(1));
@@ -26372,10 +26375,10 @@ const ControlledSelect = (props) => {
26372
26375
  setInputValue(newInputValue);
26373
26376
  }, isOptionEqualToValue: (option, value) => {
26374
26377
  return option.value === value.value;
26375
- }, filterOptions: props.extraProps.queryArgs ? (x) => x : undefined, multiple: true, disableCloseOnSelect: true, limitTags: 1, fullWidth: true, size: 'small', disabled: !options || isError, renderInput: (params) => (jsx(TextField, { ...params, label: props.label, error: !!error, helperText: error ? error.message : '', slotProps: {
26378
+ }, filterOptions: props.extraProps.queryArgs ? (x) => x : undefined, multiple: true, disableCloseOnSelect: true, limitTags: 1, fullWidth: true, size: "small", disabled: !options || isError, renderInput: (params) => (jsx(TextField, { ...params, label: props.label, error: !!error, helperText: error ? error.message : "", slotProps: {
26376
26379
  input: {
26377
26380
  ...params.InputProps,
26378
- endAdornment: (jsxs(Fragment, { children: [(isLoading || isFetching) ? jsx(CircularProgress, { color: "inherit", size: 20 }) : null, params.InputProps.endAdornment] })),
26381
+ endAdornment: (jsxs(Fragment, { children: [isLoading || isFetching ? (jsx(CircularProgress, { color: "inherit", size: 20 })) : null, params.InputProps.endAdornment] })),
26379
26382
  },
26380
26383
  } })), ...props.fieldProps, renderOption: (props, option, { selected }) => {
26381
26384
  const { key, ...optionProps } = props;
@@ -26383,7 +26386,7 @@ const ControlledSelect = (props) => {
26383
26386
  } }));
26384
26387
  } }));
26385
26388
  };
26386
- ControlledSelect.displayName = 'ControlledSelect';
26389
+ ControlledSelect.displayName = "ControlledSelect";
26387
26390
 
26388
26391
  // ==============================|| DESLIZADOR CONTROLADO ||============================== //
26389
26392
  const ControlledSlider$1 = (props) => {
@@ -26416,19 +26419,27 @@ const ControlledText = (props) => {
26416
26419
  };
26417
26420
  return (
26418
26421
  // controlador
26419
- jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error }, }) => {
26422
+ jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error } }) => {
26420
26423
  return (
26421
26424
  // campo de texto
26422
- 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: {
26425
+ jsx(TextField, { variant: "outlined", size: "small", id: props.name, label: props.label, value: value ? value.toString() : "", onChange: onChange, error: !!error, type: props.extraProps?.password
26426
+ ? showPassword
26427
+ ? "text"
26428
+ : "password"
26429
+ : "text", helperText: error
26430
+ ? error.message
26431
+ : props.fieldProps?.helperText
26432
+ ? props.fieldProps.helperText
26433
+ : " ", fullWidth: true, slotProps: {
26423
26434
  input: {
26424
26435
  // ícono de mostar u ocultar si es campo de contarseña
26425
- endAdornment: props.extraProps?.password && (jsx(InputAdornment$1, { position: 'end', children: jsx(IconButton, { "aria-label": "toggle password visibility", tabIndex: -1, onClick: handleShowPassword, edge: 'end', size: 'large', sx: {
26426
- color: 'secondary.darker',
26427
- '&:hover': {
26428
- color: 'secondary.main',
26429
- }
26430
- }, children: showPassword ? jsx(Visibility, {}) : jsx(VisibilityOff, {}) }) }))
26431
- }
26436
+ endAdornment: props.extraProps?.password && (jsx(InputAdornment$1, { position: "end", children: jsx(IconButton, { "aria-label": "toggle password visibility", tabIndex: -1, onClick: handleShowPassword, edge: "end", size: "large", sx: {
26437
+ color: "secondary.darker",
26438
+ "&:hover": {
26439
+ color: "secondary.main",
26440
+ },
26441
+ }, children: showPassword ? jsx(Visibility, {}) : jsx(VisibilityOff, {}) }) })),
26442
+ },
26432
26443
  }, ...props.fieldProps }));
26433
26444
  } }));
26434
26445
  };
@@ -26488,16 +26499,15 @@ const ControlledTimePicker = (props) => {
26488
26499
  const filedProps = useMemo(() => {
26489
26500
  const defaultProps = {
26490
26501
  slotProps: {
26491
- textField: { size: 'small' },
26492
- field: { clearable: true, },
26493
- }
26502
+ textField: { size: "small" },
26503
+ field: { clearable: true },
26504
+ },
26494
26505
  };
26495
26506
  return merge$1({}, defaultProps, props.fieldProps);
26496
26507
  }, [props.fieldProps]);
26497
- return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error }, }) => {
26498
- const val = convertValueToDayjs(value, 'time');
26499
- return (jsxs(FormGroup, { sx: { width: 1 }, color: 'secondary', children: [jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: jsx(TimePicker, { label: props.label, onChange: (v) => handleChange(v, 'time', onChange), value: val || null, ...filedProps }) }), !props.extraProps?.disableHT &&
26500
- jsx(FormHelperText$1, { error: !!error, children: error ? error.message : ' ' })] }));
26508
+ return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error } }) => {
26509
+ const val = convertValueToDayjs(value, "time");
26510
+ return (jsxs(FormGroup, { sx: { width: 1 }, color: "secondary", children: [jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: jsx(TimePicker, { label: props.label, onChange: (v) => handleChange(v, "time", onChange), value: val || null, ...filedProps }) }), !props.extraProps?.disableHT && (jsx(FormHelperText$1, { error: !!error, children: error ? error.message : " " }))] }));
26501
26511
  } }));
26502
26512
  };
26503
26513
 
@@ -26517,22 +26527,23 @@ const ControlledSlider = (props) => {
26517
26527
 
26518
26528
  const DeleteConfirmationDialog = (props) => {
26519
26529
  const notifications = useNotifications();
26520
- const pathname = 'temp';
26521
- const id = useMemo(() => props.id || pathname.split('/').at(-1), [pathname, props.id]);
26530
+ const pathname = "temp";
26531
+ const id = useMemo(() => props.id || pathname.split("/").at(-1), [pathname, props.id]);
26522
26532
  const [mutation] = props.mutation();
26523
26533
  const schema = object({ confirmation: string() });
26524
26534
  const form = useForm({
26525
26535
  resolver: zodResolver(schema),
26526
- defaultValues: { confirmation: '' },
26536
+ defaultValues: { confirmation: "" },
26527
26537
  });
26528
26538
  const handleClose = () => {
26529
26539
  props.handleClose();
26530
26540
  form.reset();
26531
26541
  };
26532
- const confirmation = form.watch('confirmation').toUpperCase();
26533
- const disabled = useMemo(() => confirmation != 'ELIMINAR', [confirmation]);
26542
+ const confirmation = form.watch("confirmation").toUpperCase();
26543
+ const disabled = useMemo(() => confirmation != "ELIMINAR", [confirmation]);
26534
26544
  const onSubmitHandler = () => {
26535
- mutation({ id: id }).unwrap()
26545
+ mutation({ id: id })
26546
+ .unwrap()
26536
26547
  .then(() => {
26537
26548
  if (props.disableNavBack) {
26538
26549
  handleClose();
@@ -26541,25 +26552,25 @@ const DeleteConfirmationDialog = (props) => {
26541
26552
  // props.navigate(-1);
26542
26553
  form.reset();
26543
26554
  }
26544
- notifications.show('Objeto removido exitosamente!', { severity: 'success' });
26555
+ notifications.show("Objeto removido exitosamente!", { severity: "success" });
26545
26556
  })
26546
26557
  .catch((error) => {
26547
26558
  console.log(error);
26548
- notifications.show('Error', { severity: 'error' });
26559
+ notifications.show("Error", { severity: "error" });
26549
26560
  });
26550
26561
  };
26551
26562
  const handleKeyDown = (event) => {
26552
- if (event.key === 'Enter' && !disabled)
26563
+ if (event.key === "Enter" && !disabled)
26553
26564
  onSubmitHandler();
26554
26565
  };
26555
- return (jsxs(Dialog, { open: props.open, onClose: handleClose, children: [jsx(DialogTitle, { variant: 'h5', children: "Eliminar" }), jsxs(DialogContent$1, { children: [jsx(DialogContentText, { sx: { pb: 2 }, children: "\u00BFEst\u00E1 seguro que quiere eliminar el objeto?" }), jsx(Box, { id: 'eliminar-formulario', width: '100%', position: 'relative', children: jsx(ControlledText, { name: 'confirmation', control: form.control, fieldProps: {
26566
+ return (jsxs(Dialog, { open: props.open, onClose: handleClose, children: [jsx(DialogTitle, { variant: "h5", children: "Eliminar" }), jsxs(DialogContent$1, { children: [jsx(DialogContentText, { sx: { pb: 2 }, children: "\u00BFEst\u00E1 seguro que quiere eliminar el objeto?" }), jsx(Box, { id: "eliminar-formulario", width: "100%", position: "relative", children: jsx(ControlledText, { name: "confirmation", control: form.control, fieldProps: {
26556
26567
  autoFocus: true,
26557
26568
  required: true,
26558
- margin: 'dense',
26569
+ margin: "dense",
26559
26570
  label: "Escribir 'ELIMINAR' para confirmar.",
26560
26571
  fullWidth: true,
26561
- variant: 'standard',
26562
- helperText: '',
26572
+ variant: "standard",
26573
+ helperText: "",
26563
26574
  onKeyDown: handleKeyDown,
26564
26575
  } }) })] }), jsxs(DialogActions$1, { children: [jsx(Button, { onClick: handleClose, children: "Cancelar" }), jsx(Button, { onClick: onSubmitHandler, disabled: disabled, children: "Eliminar" })] })] }));
26565
26576
  };
@@ -26574,23 +26585,23 @@ const DeleteButton = (props) => {
26574
26585
  };
26575
26586
  // ===== || KEYDOWN || ===== //
26576
26587
  const handleKeyPress = useCallback((event) => {
26577
- if (event.ctrlKey && event.key === 'd') {
26588
+ if (event.ctrlKey && event.key === "d") {
26578
26589
  event.preventDefault();
26579
26590
  handleClick();
26580
26591
  }
26581
26592
  }, [handleClick]);
26582
26593
  useEffect(() => {
26583
- document.addEventListener('keydown', handleKeyPress);
26594
+ document.addEventListener("keydown", handleKeyPress);
26584
26595
  return () => {
26585
- document.removeEventListener('keydown', handleKeyPress);
26596
+ document.removeEventListener("keydown", handleKeyPress);
26586
26597
  };
26587
26598
  }, [handleKeyPress]);
26588
26599
  return (jsxs(Fragment, { children: [jsx(NormalOrIcon, { buttonProps: {
26589
- color: 'error',
26590
- variant: 'contained',
26600
+ color: "error",
26601
+ variant: "contained",
26591
26602
  startIcon: jsx(DeleteIcon, {}),
26592
26603
  onClick: handleClick,
26593
- children: 'Eliminar',
26604
+ children: "Eliminar",
26594
26605
  } }), jsx(DeleteConfirmationDialog, { open: open, handleClose: handleClose, ...props })] }));
26595
26606
  };
26596
26607
 
@@ -26601,104 +26612,104 @@ const SaveCancelButton = (props) => {
26601
26612
  };
26602
26613
  // ===== || KEYDOWN || ===== //
26603
26614
  const handleKeyPress = useCallback((event) => {
26604
- if (event.key === 'Escape') {
26615
+ if (event.key === "Escape") {
26605
26616
  event.preventDefault();
26606
26617
  handleCancel();
26607
26618
  }
26608
26619
  }, [handleCancel]);
26609
26620
  useEffect(() => {
26610
- document.addEventListener('keydown', handleKeyPress);
26621
+ document.addEventListener("keydown", handleKeyPress);
26611
26622
  return () => {
26612
- document.removeEventListener('keydown', handleKeyPress);
26623
+ document.removeEventListener("keydown", handleKeyPress);
26613
26624
  };
26614
26625
  }, [handleKeyPress]);
26615
26626
  return (jsxs(ButtonGroup, { sx: {
26616
26627
  maxHeight: 40,
26617
26628
  }, ...props.slotProps?.buttonGroup, children: [jsx(NormalOrIcon, { buttonProps: {
26618
- color: 'error',
26619
- variant: 'contained',
26629
+ color: "error",
26630
+ variant: "contained",
26620
26631
  startIcon: jsx(CancelIcon, {}),
26621
26632
  onClick: handleCancel,
26622
26633
  sx: { height: 1 },
26623
- children: 'Cancelar',
26624
- ...props.slotProps?.cancelBtn
26634
+ children: "Cancelar",
26635
+ ...props.slotProps?.cancelBtn,
26625
26636
  } }), jsx(NormalOrIcon, { buttonProps: {
26626
- color: 'secondary',
26627
- variant: 'contained',
26637
+ color: "secondary",
26638
+ variant: "contained",
26628
26639
  startIcon: jsx(SaveIcon, {}),
26629
- type: 'submit',
26630
- form: 'formulario',
26640
+ type: "submit",
26641
+ form: "formulario",
26631
26642
  sx: { height: 1 },
26632
- children: 'Guardar',
26633
- ...props.slotProps?.saveBtn
26643
+ children: "Guardar",
26644
+ ...props.slotProps?.saveBtn,
26634
26645
  } })] }));
26635
26646
  };
26636
26647
 
26637
26648
  const CreateButtonBase = (props) => {
26638
26649
  // ===== || KEYDOWN || ===== //
26639
26650
  const handleKeyPress = useCallback((event) => {
26640
- if (event.ctrlKey && event.key === 'e') {
26651
+ if (event.ctrlKey && event.key === "e") {
26641
26652
  event.preventDefault();
26642
26653
  props.handleClick();
26643
26654
  }
26644
26655
  }, []);
26645
26656
  useEffect(() => {
26646
- document.addEventListener('keydown', handleKeyPress);
26657
+ document.addEventListener("keydown", handleKeyPress);
26647
26658
  return () => {
26648
- document.removeEventListener('keydown', handleKeyPress);
26659
+ document.removeEventListener("keydown", handleKeyPress);
26649
26660
  };
26650
26661
  }, [handleKeyPress]);
26651
26662
  return (jsx(NormalOrIcon, { buttonProps: {
26652
- id: 'create-button',
26653
- variant: 'contained',
26654
- color: 'secondary',
26663
+ id: "create-button",
26664
+ variant: "contained",
26665
+ color: "secondary",
26655
26666
  startIcon: jsx(AddIcon, {}),
26656
26667
  onClick: props.handleClick,
26657
- 'aria-controls': props.open ? 'create-menu' : undefined,
26658
- 'aria-haspopup': true,
26659
- 'aria-expanded': props.open ? 'true' : undefined,
26668
+ "aria-controls": props.open ? "create-menu" : undefined,
26669
+ "aria-haspopup": true,
26670
+ "aria-expanded": props.open ? "true" : undefined,
26660
26671
  endIcon: jsx(KeyboardArrowDownIcon, {}),
26661
- children: 'Crear',
26672
+ children: "Crear",
26662
26673
  ...props.buttonProps,
26663
26674
  } }));
26664
26675
  };
26665
26676
 
26666
26677
  const MenuItemWithLoading = (props) => {
26667
26678
  return (jsxs(MenuItem, { onClick: props.handleClick, sx: {
26668
- position: 'relative',
26669
- }, disabled: props.disabled || props.isLoading, children: [props.children, props.isLoading &&
26670
- jsx(Box, { position: 'absolute', width: 1, top: '50%', left: '50%', sx: {
26671
- transform: 'translate(-50%, -50%)',
26672
- }, px: 2, children: jsx(LinearProgress$1, {}) })] }));
26679
+ position: "relative",
26680
+ }, disabled: props.disabled || props.isLoading, children: [props.children, props.isLoading && (jsx(Box, { position: "absolute", width: 1, top: "50%", left: "50%", sx: {
26681
+ transform: "translate(-50%, -50%)",
26682
+ }, px: 2, children: jsx(LinearProgress$1, {}) }))] }));
26673
26683
  };
26674
26684
 
26675
26685
  const StyledMenu = styled$1((props) => (jsx(Menu, { elevation: 0, anchorOrigin: {
26676
- vertical: 'bottom',
26677
- horizontal: 'right',
26686
+ vertical: "bottom",
26687
+ horizontal: "right",
26678
26688
  }, transformOrigin: {
26679
- vertical: 'top',
26680
- horizontal: 'right',
26689
+ vertical: "top",
26690
+ horizontal: "right",
26681
26691
  }, ...props })))(({ theme }) => ({
26682
- '& .MuiPaper-root': {
26692
+ "& .MuiPaper-root": {
26683
26693
  borderRadius: 6,
26684
26694
  marginTop: theme.spacing(1),
26685
26695
  minWidth: 180,
26686
- color: 'rgb(55, 65, 81)',
26687
- 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',
26688
- '& .MuiMenu-list': {
26689
- padding: '4px 0',
26696
+ color: "rgb(55, 65, 81)",
26697
+ backgroundColor: theme.palette.primary.lighter,
26698
+ 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",
26699
+ "& .MuiMenu-list": {
26700
+ padding: "4px 0",
26690
26701
  },
26691
- '& .MuiMenuItem-root': {
26692
- '& .MuiSvgIcon-root': {
26693
- fontSize: 18,
26694
- color: theme.palette.text.secondary,
26695
- marginRight: theme.spacing(1.5),
26696
- },
26697
- '&:active': {
26698
- backgroundColor: alpha$1(theme.palette.primary.main, theme.palette.action.selectedOpacity),
26702
+ "& .MuiMenuItem-root": {
26703
+ borderRadius: 12,
26704
+ "&:hover": {
26705
+ backgroundColor: theme.palette.primary.main,
26706
+ color: "white",
26707
+ "& .MuiSvgIcon-root": {
26708
+ color: "white",
26709
+ },
26699
26710
  },
26700
26711
  },
26701
- ...theme.applyStyles('dark', {
26712
+ ...theme.applyStyles("dark", {
26702
26713
  color: theme.palette.grey[300],
26703
26714
  }),
26704
26715
  },
@@ -26708,7 +26719,7 @@ const CreateButtonWithMenuOptions = (props) => {
26708
26719
  const [anchorEl, setAnchorEl] = useState(null);
26709
26720
  const open = Boolean(anchorEl);
26710
26721
  const handleClick = () => {
26711
- setAnchorEl(document.getElementById('create-button'));
26722
+ setAnchorEl(document.getElementById("create-button"));
26712
26723
  };
26713
26724
  const handleClose = () => {
26714
26725
  setAnchorEl(null);
@@ -26722,20 +26733,22 @@ const CreateButtonWithMenuOptions = (props) => {
26722
26733
  };
26723
26734
  if (!props.permission)
26724
26735
  return null;
26725
- return (jsxs(Fragment, { children: [jsx(CreateButtonBase, { open: open, handleClick: handleClick }), jsxs(StyledMenu, { id: 'create-menu', MenuListProps: {
26726
- 'aria-labelledby': 'create-menu-button',
26727
- }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable && ([
26728
- {
26729
- title: 'CSV',
26730
- endpoint: props.pathname,
26731
- },
26732
- ...(props.csv_upload.extraOptions || [])
26733
- ].map((option, index) => {
26734
- return (jsx(MenuItem, { onClick: () => {
26735
- handleToggleOpen(option);
26736
- handleClose();
26737
- }, disableRipple: true, children: option.title }, index));
26738
- })), jsx(MenuItem, { onClick: () => {
26736
+ return (jsxs(Fragment, { children: [jsx(CreateButtonBase, { open: open, handleClick: handleClick }), jsxs(StyledMenu, { id: "create-menu", MenuListProps: {
26737
+ "aria-labelledby": "create-menu-button",
26738
+ }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable &&
26739
+ [
26740
+ {
26741
+ title: "CSV",
26742
+ endpoint: props.pathname,
26743
+ icon: AttachFileIcon,
26744
+ },
26745
+ ...(props.csv_upload.extraOptions || []),
26746
+ ].map((option, index) => {
26747
+ return (jsxs(MenuItem, { onClick: () => {
26748
+ handleToggleOpen(option);
26749
+ handleClose();
26750
+ }, disableRipple: true, children: [option.icon && (jsx(ListItemIcon, { children: jsx(AttachFileIcon, {}) })), option.title] }, index));
26751
+ }), jsx(MenuItem, { onClick: () => {
26739
26752
  props.navigate(`crear`);
26740
26753
  handleClose();
26741
26754
  }, disableRipple: true, children: "Manual" })] }), props.csv_upload?.enable && (jsx(CSVUpload, { open: csv.open, drawerToggle: handleToggleClose, data: csv.data }))] }));
@@ -26748,12 +26761,12 @@ const ButtonWithDrawer = (props) => {
26748
26761
  let setFunc = setInternalOpen;
26749
26762
  if (props.setOpen)
26750
26763
  setFunc = props.setOpen;
26751
- setFunc(prevState => !prevState);
26764
+ setFunc((prevState) => !prevState);
26752
26765
  };
26753
26766
  const configuracionBase = {
26754
- variant: 'contained',
26767
+ variant: "contained",
26755
26768
  fullWidth: true,
26756
- color: 'primary'
26769
+ color: "primary",
26757
26770
  };
26758
26771
  const renderButton = () => {
26759
26772
  if (props.slots.button)
@@ -26762,7 +26775,10 @@ const ButtonWithDrawer = (props) => {
26762
26775
  };
26763
26776
  return (jsxs(Fragment, { children: [renderButton(), jsx(MainDrawer, { open: open, drawerToggle: handleClick, title: props.slots.drawer.title, slots: {
26764
26777
  button: props.slots.drawer.button,
26765
- }, children: props.slots.drawer.content({ ...props.slotProps?.drawer?.content, handleClose: handleClick }) })] }));
26778
+ }, children: props.slots.drawer.content({
26779
+ ...props.slotProps?.drawer?.content,
26780
+ handleClose: handleClick,
26781
+ }) })] }));
26766
26782
  };
26767
26783
 
26768
26784
  const StatusBadge = (props) => {
@@ -26951,16 +26967,16 @@ const UncontrolledText = (props) => {
26951
26967
  const handleShowPassword = () => {
26952
26968
  setShowPassword(!showPassword);
26953
26969
  };
26954
- return (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: {
26970
+ return (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: {
26955
26971
  input: {
26956
26972
  // ícono de mostar u ocultar si es campo de contarseña
26957
- endAdornment: props.password && (jsx(InputAdornment$1, { position: 'end', children: jsx(IconButton, { "aria-label": "toggle password visibility", tabIndex: -1, onClick: handleShowPassword, edge: 'end', size: 'large', sx: {
26958
- color: 'secondary.darker',
26959
- '&:hover': {
26960
- color: 'secondary.main',
26961
- }
26962
- }, children: showPassword ? jsx(Visibility, {}) : jsx(VisibilityOff, {}) }) }))
26963
- }
26973
+ endAdornment: props.password && (jsx(InputAdornment$1, { position: "end", children: jsx(IconButton, { "aria-label": "toggle password visibility", tabIndex: -1, onClick: handleShowPassword, edge: "end", size: "large", sx: {
26974
+ color: "secondary.darker",
26975
+ "&:hover": {
26976
+ color: "secondary.main",
26977
+ },
26978
+ }, children: showPassword ? jsx(Visibility, {}) : jsx(VisibilityOff, {}) }) })),
26979
+ },
26964
26980
  }, ...props.textFieldProps }));
26965
26981
  };
26966
26982
 
@@ -27032,9 +27048,8 @@ const generateSchema = (columns, columnsFilter, id) => {
27032
27048
  };
27033
27049
 
27034
27050
  const FiltersPopper = (props) => {
27035
- // const params:any = useLoaderData();
27036
- // const id = params?.id;
27037
- const id = 1;
27051
+ const params = useLoaderData();
27052
+ const id = params?.id;
27038
27053
  const columns = useGridApiContext().current.getAllColumns();
27039
27054
  const [schema, defaultValues] = useMemo(() => generateSchema(columns, props.columnsFilter, id), [columns, id, props.columnsFilter]);
27040
27055
  const form = useForm({
@@ -27044,14 +27059,16 @@ const FiltersPopper = (props) => {
27044
27059
  const [dirty, setDirty] = useState(false);
27045
27060
  useEffect(() => {
27046
27061
  if (props.filters.filterModel.items) {
27047
- if (!every(props.filters.filterModel.items, function (_value, key) { return includes$1(props.protectFilters, key); })) {
27062
+ if (!every(props.filters.filterModel.items, function (_value, key) {
27063
+ return includes$1(props.protectFilters, key);
27064
+ })) {
27048
27065
  setDirty(true);
27049
27066
  }
27050
27067
  form.reset(merge$2({}, defaultValues, props.filters.filterModel.items));
27051
27068
  }
27052
27069
  }, [defaultValues, props.filters.filterModel.items, form, props.protectFilters]);
27053
27070
  const handleClose = (event) => {
27054
- if (props.menuRef.current && event?.target.tagName == 'BODY')
27071
+ if (props.menuRef.current && event?.target.tagName == "BODY")
27055
27072
  return;
27056
27073
  props.setOpen(false);
27057
27074
  };
@@ -27059,9 +27076,9 @@ const FiltersPopper = (props) => {
27059
27076
  setDirty(false);
27060
27077
  props.filters.setFilterModel(produce((draft) => {
27061
27078
  forEach$1(props.filters.filterModel.items, function (_value, key) {
27062
- if (['ordering', 'search'].concat(props.protectFilters || []).includes(key))
27079
+ if (["ordering", "search"].concat(props.protectFilters || []).includes(key))
27063
27080
  return;
27064
- delete draft['items'][key];
27081
+ delete draft["items"][key];
27065
27082
  });
27066
27083
  }));
27067
27084
  form.reset(defaultValues);
@@ -27069,75 +27086,82 @@ const FiltersPopper = (props) => {
27069
27086
  };
27070
27087
  const onSubmitHandler = (submitData) => {
27071
27088
  props.filters.setFilterModel(produce((draft) => {
27072
- draft['items'] = { ...draft['items'], ...submitData };
27089
+ draft["items"] = { ...draft["items"], ...submitData };
27073
27090
  }));
27074
27091
  handleClose();
27075
27092
  };
27076
27093
  const onError = (errors) => {
27077
27094
  console.log(errors);
27078
27095
  };
27079
- return (jsx(Box, { id: 'filtros', children: jsx(Popper, { id: 'filters-menu', open: props.open, anchorEl: props.menuRef.current, placement: "bottom-end", transition: true, sx: { zIndex: 1202 }, children: ({ TransitionProps }) => (jsx(Grow$1, { ...TransitionProps, timeout: 350, children: jsx(Paper, { elevation: 5, sx: { zIndex: 5 }, children: jsx(ClickAwayListener, { onClickAway: handleClose, children: jsxs(Grid, { size: 12, container: true, padding: 2, width: 350, maxWidth: '100%', children: [jsx(Grid, { size: 12, container: true, rowSpacing: 2, maxHeight: 300, overflow: 'auto', children: columns.map((column, index) => {
27096
+ return (jsx(Box, { id: "filtros", children: jsx(Popper, { id: "filters-menu", open: props.open, anchorEl: props.menuRef.current, placement: "bottom-end", transition: true, sx: { zIndex: 1202 }, children: ({ TransitionProps }) => (jsx(Grow$1, { ...TransitionProps, timeout: 350, children: jsx(Paper, { elevation: 5, sx: { zIndex: 5 }, children: jsx(ClickAwayListener, { onClickAway: handleClose, children: jsxs(Grid, { size: 12, container: true, padding: 2, width: 350, maxWidth: "100%", children: [jsx(Grid, { size: 12, container: true, rowSpacing: 2, maxHeight: 300, overflow: "auto", children: columns.map((column, index) => {
27080
27097
  if (column.input)
27081
- return (jsxs(Grid, { size: 12, container: true, direction: 'column', spacing: 0, children: [jsx(Grid, { size: 12, children: jsx(Typography$1, { fontWeight: 'bold', gutterBottom: true, children: column.filterName || column.headerName }) }), jsx(Grid, { size: 12, children: Children.map(column.input, (child) => {
27082
- let addedProps = { control: form.control };
27083
- if (column.type == 'number') {
27098
+ return (jsxs(Grid, { size: 12, container: true, direction: "column", spacing: 0, children: [jsx(Grid, { size: 12, children: jsx(Typography$1, { fontWeight: "bold", gutterBottom: true, children: column.filterName ||
27099
+ column.headerName }) }), jsx(Grid, { size: 12, children: Children.map(column.input, (child) => {
27100
+ let addedProps = {
27101
+ control: form.control,
27102
+ };
27103
+ if (column.type == "number") {
27084
27104
  addedProps = {
27085
27105
  ...addedProps,
27086
27106
  extraProps: {
27087
- ...child.props.extraProps,
27107
+ ...child.props
27108
+ .extraProps,
27088
27109
  getValue: form.getValues,
27089
27110
  setValue: form.setValue,
27090
- }
27111
+ },
27091
27112
  };
27092
27113
  }
27093
27114
  return cloneElement(child, {
27094
27115
  ...child.props,
27095
- ...addedProps
27116
+ ...addedProps,
27096
27117
  });
27097
27118
  }) })] }, index));
27098
27119
  return null;
27099
- }) }), jsx(Grid, { size: 12, py: 2, children: jsx(Divider, {}) }), jsxs(Grid, { size: 12, display: 'flex', justifyContent: 'space-evenly', children: [jsx(Button, { disabled: (!form.formState.isDirty || props.disableQuickSearch) && !dirty, startIcon: jsx(ClearIcon$1, {}), variant: 'outlined', onClick: handleClear, children: "Limpiar" }), jsx(Button, { loading: props.disableQuickSearch, disabled: !form.formState.isDirty, startIcon: jsx(FilterAltIcon, {}), variant: 'outlined', onClick: form.handleSubmit(onSubmitHandler, onError), children: "Aplicar" })] })] }) }) }) })) }) }));
27120
+ }) }), jsx(Grid, { size: 12, py: 2, children: jsx(Divider, {}) }), jsxs(Grid, { size: 12, display: "flex", justifyContent: "space-evenly", children: [jsx(Button, { disabled: (!form.formState.isDirty ||
27121
+ props.disableQuickSearch) &&
27122
+ !dirty, startIcon: jsx(ClearIcon$1, {}), variant: "outlined", onClick: handleClear, children: "Limpiar" }), jsx(Button, { loading: props.disableQuickSearch, disabled: !form.formState.isDirty, startIcon: jsx(FilterAltIcon, {}), variant: "outlined", onClick: form.handleSubmit(onSubmitHandler, onError), children: "Aplicar" })] })] }) }) }) })) }) }));
27100
27123
  };
27101
27124
 
27102
27125
  const FiltersButton = (props) => {
27103
27126
  const [open, setOpen] = useState(false);
27104
27127
  const menuRef = useRef(null);
27105
27128
  const handleClick = () => {
27106
- setOpen(prevState => !prevState);
27129
+ setOpen((prevState) => !prevState);
27107
27130
  };
27108
27131
  const filterCount = useMemo(() => {
27109
27132
  return countBy(Object.entries(props.filters.filterModel.items), function (filter) {
27110
27133
  const key = filter[0];
27111
27134
  const value = filter[1];
27112
- if (key == 'ordering' || key == 'search')
27135
+ if (key == "ordering" || key == "search")
27113
27136
  return;
27114
- if (props.protectFilters && findIndex(props.protectFilters, function (x) { return x == key; }) > -1)
27137
+ if (props.protectFilters &&
27138
+ findIndex(props.protectFilters, function (x) {
27139
+ return x == key;
27140
+ }) > -1)
27115
27141
  return;
27116
27142
  return (isNumber(value) && value > 0) || !isEmpty$1(value) || isBoolean(value);
27117
27143
  }).true;
27118
- }, [
27119
- props.filters.filterModel.items, props.protectFilters
27120
- ]);
27144
+ }, [props.filters.filterModel.items, props.protectFilters]);
27121
27145
  // ===== || ABRIR CON CTRL + Shift + F || ===== //
27122
27146
  const handleKeyPress = useCallback((event) => {
27123
- if (event.ctrlKey && event.shiftKey && event.key === 'F') {
27147
+ if (event.ctrlKey && event.shiftKey && event.key === "F") {
27124
27148
  event.preventDefault();
27125
27149
  setOpen(true);
27126
27150
  }
27127
- else if (event.key === 'Escape' && open) {
27151
+ else if (event.key === "Escape" && open) {
27128
27152
  setOpen(false);
27129
27153
  }
27130
27154
  }, [open]);
27131
27155
  useEffect(() => {
27132
- document.addEventListener('keydown', handleKeyPress);
27156
+ document.addEventListener("keydown", handleKeyPress);
27133
27157
  return () => {
27134
- document.removeEventListener('keydown', handleKeyPress);
27158
+ document.removeEventListener("keydown", handleKeyPress);
27135
27159
  };
27136
27160
  }, [handleKeyPress]);
27137
- return (jsxs(Fragment, { children: [jsx(Tooltip$1, { title: "Filtros", children: jsx(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 => {
27138
- if (key.key == 'Escape')
27161
+ return (jsxs(Fragment, { children: [jsx(Tooltip$1, { title: "Filtros", children: jsx(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) => {
27162
+ if (key.key == "Escape")
27139
27163
  setOpen(false);
27140
- }, className: 'my-icon-button', children: jsx(Badge, { badgeContent: filterCount, color: "primary", children: jsx(FilterListIcon, { fontSize: "small" }) }) }) }), jsx(FiltersPopper, { ...props, menuRef: menuRef, open: open, setOpen: setOpen })] }));
27164
+ }, className: "my-icon-button", children: jsx(Badge, { badgeContent: filterCount, color: "primary", children: jsx(FilterListIcon, { fontSize: "small" }) }) }) }), jsx(FiltersPopper, { ...props, menuRef: menuRef, open: open, setOpen: setOpen })] }));
27141
27165
  };
27142
27166
 
27143
27167
  const ExportCSV = (props) => {
@@ -27149,41 +27173,46 @@ const ExportCSV = (props) => {
27149
27173
  const handleClick = () => {
27150
27174
  const extraItems = { variant: props.slots?.variant };
27151
27175
  if (props.rowSelectionModel.ids.size > 0)
27152
- extraItems[`${props.slots?.column_key || 'id'}__in`] = Array.from(props.rowSelectionModel.ids).join(',');
27153
- const filters = merge$2({}, omit(props.filterModel, map(props.ignore?.filters, function (filter) { return `items.${filter}`; }) || []), { items: extraItems });
27176
+ extraItems[`${props.slots?.column_key || "id"}__in`] = Array.from(props.rowSelectionModel.ids).join(",");
27177
+ const filters = merge$2({}, omit(props.filterModel, map(props.ignore?.filters, function (filter) {
27178
+ return `items.${filter}`;
27179
+ }) || []), { items: extraItems });
27154
27180
  descargarCSV({
27155
- endpoint: endpoint, filterModel: filters, sortModel: props.sortModel, ignoreSort: props.ignore?.sort,
27156
- }).unwrap()
27181
+ endpoint: endpoint,
27182
+ filterModel: filters,
27183
+ sortModel: props.sortModel,
27184
+ ignoreSort: props.ignore?.sort,
27185
+ })
27186
+ .unwrap()
27157
27187
  .then((response) => {
27158
27188
  const file = document.createElement("a");
27159
27189
  file.href = response.file;
27160
27190
  file.download = response.filename;
27161
27191
  file.click();
27162
- notifications.show('CSV descargado!', { severity: 'success' });
27192
+ notifications.show("CSV descargado!", { severity: "success" });
27163
27193
  props.handleClick();
27164
27194
  })
27165
27195
  .catch((error) => {
27166
27196
  console.log(error);
27167
- notifications.show('Error al descargar CSV.', { severity: 'error' });
27197
+ notifications.show("Error al descargar CSV.", { severity: "error" });
27168
27198
  });
27169
27199
  };
27170
- return (jsx(MenuItemWithLoading, { handleClick: handleClick, isLoading: isLoading, disabled: props.disabledWithoutSelection && !props.rowSelectionModel.ids.size, children: props.slots?.title || 'Descargar como CSV' }, 'export-dg-csv'));
27200
+ return (jsx(MenuItemWithLoading, { handleClick: handleClick, isLoading: isLoading, disabled: props.disabledWithoutSelection && !props.rowSelectionModel.ids.size, children: props.slots?.title || "Descargar como CSV" }, "export-dg-csv"));
27171
27201
  };
27172
27202
 
27173
27203
  const ExportButton = (props) => {
27174
27204
  const [exportMenuOpen, setExportMenuOpen] = useState(false);
27175
27205
  const exportMenuTriggerRef = useRef(null);
27176
- return (jsxs(Fragment, { children: [jsx(Tooltip, { title: "Exportar", children: jsx(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: jsx(FileDownloadIcon, { fontSize: "small" }) }) }), jsxs(Menu$1, { id: "export-menu", anchorEl: exportMenuTriggerRef.current, open: exportMenuOpen, onClose: () => setExportMenuOpen(false), anchorOrigin: { vertical: 'bottom', horizontal: 'left' }, transformOrigin: { vertical: 'top', horizontal: 'left' }, slotProps: {
27206
+ return (jsxs(Fragment, { children: [jsx(Tooltip, { title: "Exportar", children: jsx(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: jsx(FileDownloadIcon, { fontSize: "small" }) }) }), jsxs(Menu$1, { id: "export-menu", anchorEl: exportMenuTriggerRef.current, open: exportMenuOpen, onClose: () => setExportMenuOpen(false), anchorOrigin: { vertical: "bottom", horizontal: "left" }, transformOrigin: { vertical: "top", horizontal: "left" }, slotProps: {
27177
27207
  list: {
27178
- 'aria-labelledby': 'export-menu-trigger',
27208
+ "aria-labelledby": "export-menu-trigger",
27179
27209
  },
27180
- }, children: [!props.csvProps?.hide &&
27181
- jsx(ExportCSV, { handleClick: () => setExportMenuOpen(false), filterModel: props.filterModel, sortModel: props.sortModel, rowSelectionModel: props.rowSelectionModel, slots: {
27182
- endpoint: props.csvProps?.endpoint
27183
- } }), props.extraOptions?.map(item => {
27210
+ }, children: [!props.csvProps?.hide && (jsx(ExportCSV, { handleClick: () => setExportMenuOpen(false), filterModel: props.filterModel, sortModel: props.sortModel, rowSelectionModel: props.rowSelectionModel, slots: {
27211
+ endpoint: props.csvProps?.endpoint,
27212
+ } })), props.extraOptions?.map((item) => {
27184
27213
  const csvExport = item.props.csvExport;
27185
- const remainingProps = omit(item.props, 'csvExport');
27186
- return (item.element({
27214
+ const remainingProps = omit(item.props, "csvExport");
27215
+ return item.element({
27187
27216
  handleClick: () => setExportMenuOpen(false),
27188
27217
  filterModel: props.filterModel,
27189
27218
  sortModel: props.sortModel,
@@ -27192,7 +27221,7 @@ const ExportButton = (props) => {
27192
27221
  ...csvExport,
27193
27222
  },
27194
27223
  ...remainingProps,
27195
- }));
27224
+ });
27196
27225
  })] })] }));
27197
27226
  };
27198
27227
 
@@ -27200,34 +27229,33 @@ const ColumnsButton = () => {
27200
27229
  const apiRef = useGridApiContext();
27201
27230
  const allCols = apiRef.current.getAllColumns().length;
27202
27231
  const visibleCols = apiRef.current.getVisibleColumns().length;
27203
- return (jsx(Tooltip, { title: "Columnas", children: jsx(ColumnsPanelTrigger, { render: jsx(ToolbarButton, { className: 'my-icon-button' }), children: jsx(Badge, { color: 'primary', variant: 'dot', invisible: visibleCols >= allCols, children: jsx(ViewColumnIcon, { fontSize: "small" }) }) }) }));
27232
+ return (jsx(Tooltip, { title: "Columnas", children: jsx(ColumnsPanelTrigger, { render: jsx(ToolbarButton, { className: "my-icon-button" }), children: jsx(Badge, { color: "primary", variant: "dot", invisible: visibleCols >= allCols, children: jsx(ViewColumnIcon, { fontSize: "small" }) }) }) }));
27204
27233
  };
27205
27234
 
27206
27235
  const RefreshButton = (props) => {
27207
27236
  // ===== || EJECUTAR CON CTRL + Shift + R || ===== //
27208
27237
  const handleKeyPress = useCallback((event) => {
27209
- if (event.ctrlKey && event.shiftKey && event.key === 'R') {
27238
+ if (event.ctrlKey && event.shiftKey && event.key === "R") {
27210
27239
  event.preventDefault();
27211
27240
  if (props.refetch)
27212
27241
  props.refetch();
27213
27242
  }
27214
27243
  }, [props]);
27215
27244
  useEffect(() => {
27216
- document.addEventListener('keydown', handleKeyPress);
27245
+ document.addEventListener("keydown", handleKeyPress);
27217
27246
  return () => {
27218
- document.removeEventListener('keydown', handleKeyPress);
27247
+ document.removeEventListener("keydown", handleKeyPress);
27219
27248
  };
27220
27249
  }, [handleKeyPress]);
27221
- return (jsx(Tooltip$1, { title: 'Refrescar', children: jsx(ToolbarButton, { onClick: props.refetch, children: jsx(RefreshIcon, { fontSize: 'small' }) }) }));
27250
+ return (jsx(Tooltip$1, { title: "Refrescar", children: jsx(ToolbarButton, { onClick: props.refetch, children: jsx(RefreshIcon, { fontSize: "small" }) }) }));
27222
27251
  };
27223
27252
 
27224
27253
  const CustomToolbar = (props) => {
27225
27254
  const [expanded, setExpanded] = useState(true);
27226
27255
  return (jsx(Toolbar, { style: {
27227
- minHeight: expanded ? 'inherit' : '10px',
27228
- }, children: expanded ? (jsxs(Fragment, { children: [jsxs(Stack, { direction: 'row', width: 0.5, justifyContent: 'left', children: [!props.buttons?.refresh?.hide && jsx(RefreshButton, { refetch: props.buttons?.refresh?.refetch }), !(props.buttons?.refresh?.hide || props.buttons?.export?.hide) && jsx(Divider$1, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), !props.buttons?.export?.hide && (jsx(ExportButton, { filterModel: props.filters.filterModel, sortModel: props.sortModel, rowSelectionModel: props.selection, ...props.buttons.export }))] }), jsx(Box, { width: 1, display: 'flex', justifyContent: 'center', alignItems: 'top', children: jsx(IconButton, { size: 'small', onClick: () => setExpanded(false), children: jsx(ExpandLessIcon, {}) }) }), jsxs(Stack, { direction: 'row', width: 0.5, justifyContent: 'right', children: [jsx(ColumnsButton, {}), !props.buttons.filters?.hide &&
27229
- jsxs(Fragment, { children: [jsx(Divider$1, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsx(FiltersButton, { ...props })] }), jsx(Divider$1, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsx(QuickSearch, { disableQuickSearch: props.disableQuickSearch, filters: props.filters }), props.extraButtons &&
27230
- props.extraButtons.map((button, index) => (jsxs(Box, { display: 'flex', children: [jsx(Divider$1, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsx(Tooltip$1, { title: button.label, children: jsx(ToolbarButton, { onClick: () => button.onClick(), className: 'my-icon-button', ...button.buttonProps, children: jsx(button.icon, { fontSize: "small" }) }) })] }, `toolbar-button-${index}`))), jsx(SelectedRowsButton, { selection: props.selection, extraActions: props.extraActions })] })] })) : (jsx(Box, { width: 1, display: 'flex', justifyContent: 'center', alignItems: 'center', children: jsx(IconButton, { onClick: () => setExpanded(true), children: jsx(ExpandMoreIcon, {}) }) })) }));
27256
+ minHeight: expanded ? "inherit" : "10px",
27257
+ }, children: expanded ? (jsxs(Fragment, { children: [jsxs(Stack, { direction: "row", width: 0.5, justifyContent: "left", children: [!props.buttons?.refresh?.hide && (jsx(RefreshButton, { refetch: props.buttons?.refresh?.refetch })), !(props.buttons?.refresh?.hide || props.buttons?.export?.hide) && (jsx(Divider$1, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } })), !props.buttons?.export?.hide && (jsx(ExportButton, { filterModel: props.filters.filterModel, sortModel: props.sortModel, rowSelectionModel: props.selection, ...props.buttons.export }))] }), jsx(Box, { width: 1, display: "flex", justifyContent: "center", alignItems: "top", children: jsx(IconButton, { size: "small", onClick: () => setExpanded(false), children: jsx(ExpandLessIcon, {}) }) }), jsxs(Stack, { direction: "row", width: 0.5, justifyContent: "right", children: [jsx(ColumnsButton, {}), !props.buttons.filters?.hide && (jsxs(Fragment, { children: [jsx(Divider$1, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsx(FiltersButton, { ...props })] })), jsx(Divider$1, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsx(QuickSearch, { disableQuickSearch: props.disableQuickSearch, filters: props.filters }), props.extraButtons &&
27258
+ props.extraButtons.map((button, index) => (jsxs(Box, { display: "flex", children: [jsx(Divider$1, { orientation: "vertical", variant: "middle", flexItem: true, sx: { mx: 0.5 } }), jsx(Tooltip$1, { title: button.label, children: jsx(ToolbarButton, { onClick: () => button.onClick(), className: "my-icon-button", ...button.buttonProps, children: jsx(button.icon, { fontSize: "small" }) }) })] }, `toolbar-button-${index}`))), jsx(SelectedRowsButton, { selection: props.selection, extraActions: props.extraActions })] })] })) : (jsx(Box, { width: 1, display: "flex", justifyContent: "center", alignItems: "center", children: jsx(IconButton, { onClick: () => setExpanded(true), children: jsx(ExpandMoreIcon, {}) }) })) }));
27231
27259
  };
27232
27260
 
27233
27261
  const StyledGridOverlay = styled$1('div')(({ theme }) => ({
@@ -27265,20 +27293,22 @@ function CustomPagination() {
27265
27293
  }
27266
27294
 
27267
27295
  const DraggableRow = (params) => {
27268
- const { attributes, listeners, setNodeRef, transform, transition, } = useSortable({ id: params.rowId.toString() });
27296
+ const { attributes, listeners, setNodeRef, transform, transition } = useSortable({
27297
+ id: params.rowId.toString(),
27298
+ });
27269
27299
  const style = {
27270
27300
  transform: CSS.Transform.toString(transform),
27271
- transition
27301
+ transition,
27272
27302
  };
27273
- return (jsxs(Box, { display: 'flex', ref: setNodeRef, style: style, children: [jsx(Box, { ...attributes, ...listeners, sx: {
27274
- width: '20px',
27303
+ return (jsxs(Box, { display: "flex", ref: setNodeRef, style: style, children: [jsx(Box, { ...attributes, ...listeners, sx: {
27304
+ width: "20px",
27275
27305
  height: params.rowHeight,
27276
- background: 'repeating-linear-gradient( 45deg, #e0e0e0, #e0e0e0 5px, transparent 5px, transparent 10px)',
27277
- borderTop: '1px solid rgba(224, 224, 224, 1)',
27278
- cursor: 'grab',
27279
- '&:active': {
27280
- cursor: 'grabbing',
27281
- }
27306
+ background: "repeating-linear-gradient( 45deg, #e0e0e0, #e0e0e0 5px, transparent 5px, transparent 10px)",
27307
+ borderTop: "1px solid rgba(224, 224, 224, 1)",
27308
+ cursor: "grab",
27309
+ "&:active": {
27310
+ cursor: "grabbing",
27311
+ },
27282
27312
  } }), jsx(GridRow, { ...params })] }));
27283
27313
  };
27284
27314
 
@@ -27295,38 +27325,42 @@ const EditGridWrapper = (props) => {
27295
27325
  const handleClickEdit = () => {
27296
27326
  if (edit)
27297
27327
  handleCancelarEdit();
27298
- setEdit(prevState => !prevState);
27328
+ setEdit((prevState) => !prevState);
27299
27329
  };
27300
27330
  const processRowUpdate = async (newRow, originalRow) => {
27301
27331
  const original_data = jsonForm({ submitData: originalRow });
27302
- const data = jsonForm({ submitData: newRow, ...(props.parser ? { props: props.parser } : []) });
27332
+ const data = jsonForm({
27333
+ submitData: newRow,
27334
+ ...(props.parser ? { props: props.parser } : []),
27335
+ });
27303
27336
  if (isEqual$1(data, original_data))
27304
27337
  return originalRow;
27305
27338
  try {
27306
27339
  const result = await editMutation(data).unwrap();
27307
- setErrors(prevState => produce(prevState, draft => {
27340
+ setErrors((prevState) => produce(prevState, (draft) => {
27308
27341
  delete draft[newRow.id];
27309
27342
  }));
27310
27343
  if (props?.postAction)
27311
27344
  props.postAction(result);
27312
- notifications.show(`Información actualizada!`, { severity: 'success' });
27345
+ notifications.show(`Información actualizada!`, { severity: "success" });
27313
27346
  return result.list;
27314
27347
  }
27315
27348
  catch (e) {
27316
- setErrors(prevState => produce(prevState, draft => {
27317
- draft[newRow.id] = get(e, 'data');
27349
+ setErrors((prevState) => produce(prevState, (draft) => {
27350
+ draft[newRow.id] = get(e, "data.invalid_params");
27318
27351
  }));
27319
- notifications.show('Error actualizando información!', { severity: 'error' });
27352
+ notifications.show("Error actualizando información!", { severity: "error" });
27320
27353
  }
27321
27354
  };
27355
+ const handleProcessRowUpdateError = () => { };
27322
27356
  // ===== || KEYDOWN || ===== //
27323
27357
  const handleKeyPress = useCallback((event) => {
27324
27358
  if (props.permission) {
27325
- if (event.ctrlKey && event.shiftKey && event.key === 'E') {
27359
+ if (event.ctrlKey && event.shiftKey && event.key === "E") {
27326
27360
  event.preventDefault();
27327
27361
  setEdit(true);
27328
27362
  }
27329
- else if (event.key === 'Escape' && event.shiftKey && edit) {
27363
+ else if (event.key === "Escape" && event.shiftKey && edit) {
27330
27364
  event.preventDefault();
27331
27365
  handleCancelarEdit();
27332
27366
  setEdit(false);
@@ -27334,9 +27368,9 @@ const EditGridWrapper = (props) => {
27334
27368
  }
27335
27369
  }, [edit, props.permission]);
27336
27370
  useEffect(() => {
27337
- document.addEventListener('keydown', handleKeyPress);
27371
+ document.addEventListener("keydown", handleKeyPress);
27338
27372
  return () => {
27339
- document.removeEventListener('keydown', handleKeyPress);
27373
+ document.removeEventListener("keydown", handleKeyPress);
27340
27374
  };
27341
27375
  }, [handleKeyPress]);
27342
27376
  // ========================= || DRAG N DROP || ========================= //
@@ -27353,7 +27387,10 @@ const EditGridWrapper = (props) => {
27353
27387
  if (over) {
27354
27388
  const activeRow = rows.find((row) => row.id == active.id);
27355
27389
  const overRow = rows.find((row) => row.id == over.id);
27356
- const mutationArgs = { ...props.dnd?.args, id: activeRow.id };
27390
+ const mutationArgs = {
27391
+ ...props.dnd?.args,
27392
+ id: activeRow.id,
27393
+ };
27357
27394
  mutationArgs[field] = get(overRow, field);
27358
27395
  editMutation(mutationArgs);
27359
27396
  }
@@ -27371,33 +27408,38 @@ const EditGridWrapper = (props) => {
27371
27408
  slotProps: {
27372
27409
  toolbar: {
27373
27410
  extraButtons: [
27374
- ...(props.permission && !props.disabled ? [{
27375
- label: edit ? 'Cancelar' : 'Editar',
27376
- icon: edit ? CancelIcon : EditIcon,
27377
- onClick: handleClickEdit,
27378
- }] : []),
27379
- ]
27380
- }
27411
+ ...(props.permission && !props.disabled
27412
+ ? [
27413
+ {
27414
+ label: edit ? "Cancelar" : "Editar",
27415
+ icon: edit ? CancelIcon : EditIcon,
27416
+ onClick: handleClickEdit,
27417
+ },
27418
+ ]
27419
+ : []),
27420
+ ],
27421
+ },
27381
27422
  },
27382
27423
  onRowEditStart: ({ reason, row }, event) => {
27383
- if (!get(row, `obj_permissions.edit`) || (reason === GridRowEditStartReasons.cellDoubleClick && !edit)) {
27424
+ if (!get(row, `obj_permissions.edit`) ||
27425
+ (reason === GridRowEditStartReasons.cellDoubleClick && !edit)) {
27384
27426
  event.defaultMuiPrevented = true;
27385
27427
  }
27386
27428
  },
27387
27429
  // edit
27388
27430
  checkboxSelection: !edit,
27389
27431
  ...(edit ? { onRowClick: undefined } : []),
27390
- editMode: 'row',
27432
+ editMode: "row",
27391
27433
  rowModesModel: rowModesModel,
27392
27434
  onRowModesModelChange: setRowModesModel,
27393
27435
  processRowUpdate: processRowUpdate,
27436
+ onProcessRowUpdateError: handleProcessRowUpdateError,
27394
27437
  loadingParams: [loadingMutation],
27395
27438
  }, props.dataGridProps);
27396
- const renderEditGrid = () => (jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, modifiers: [
27397
- restrictToVerticalAxis,
27398
- restrictToWindowEdges,
27399
- restrictToParentElement
27400
- ], autoScroll: false, children: jsx(SortableContext, { items: rows ? rows.map((row) => row.id.toString()) : [], strategy: verticalListSortingStrategy, children: props.renderFunction({ ...props.renderFunctionProps, dataGridProps: editGridProps }) }) }));
27439
+ const renderEditGrid = () => (jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, modifiers: [restrictToVerticalAxis, restrictToWindowEdges, restrictToParentElement], autoScroll: false, children: jsx(SortableContext, { items: rows ? rows.map((row) => row.id.toString()) : [], strategy: verticalListSortingStrategy, children: props.renderFunction({
27440
+ ...props.renderFunctionProps,
27441
+ dataGridProps: editGridProps,
27442
+ }) }) }));
27401
27443
  return renderEditGrid();
27402
27444
  };
27403
27445
 
@@ -27418,43 +27460,47 @@ const editColumn = (props) => {
27418
27460
  [id]: { mode: GridRowModes.View, ignoreModifications: true },
27419
27461
  });
27420
27462
  };
27421
- return [{
27422
- field: 'edit',
27423
- headerName: 'Editar',
27424
- type: 'actions',
27463
+ return [
27464
+ {
27465
+ field: "edit",
27466
+ headerName: "Editar",
27467
+ type: "actions",
27425
27468
  width: 80,
27426
- cellClassName: 'actions',
27469
+ cellClassName: "actions",
27427
27470
  getActions: ({ id, row }) => {
27428
- const canEdit = get$1(row, 'obj_permissions.edit');
27471
+ const canEdit = get$1(row, "obj_permissions.edit");
27429
27472
  const isInEditMode = props.rowModesModel[id]?.mode === GridRowModes.Edit;
27430
27473
  if (isInEditMode) {
27431
27474
  return [
27432
- jsx(GridActionsCellItem, { icon: jsx(SaveIcon, {}), label: 'Guardar', color: 'primary', onClick: handleSaveClick(id) }, 'save'),
27433
- jsx(GridActionsCellItem, { icon: jsx(CancelIcon, {}), label: 'Cancelar', className: 'textPrimary', onClick: handleCancelClick(id), color: 'inherit' }, 'cancel'),
27475
+ jsx(GridActionsCellItem, { icon: jsx(SaveIcon, {}), label: "Guardar", color: "primary", onClick: handleSaveClick(id) }, "save"),
27476
+ jsx(GridActionsCellItem, { icon: jsx(CancelIcon, {}), label: "Cancelar", className: "textPrimary", onClick: handleCancelClick(id), color: "inherit" }, "cancel"),
27434
27477
  ];
27435
27478
  }
27436
27479
  return [
27437
- jsx(GridActionsCellItem, { icon: jsx(EditIcon, { sx: { color: canEdit ? 'black' : 'inherit' } }), label: 'Editar', className: 'textPrimary', onClick: handleEditClick(id), disabled: !canEdit }, 'edit'),
27480
+ jsx(GridActionsCellItem, { icon: jsx(EditIcon, { sx: { color: canEdit ? "black" : "inherit" } }), label: "Editar", className: "textPrimary", onClick: handleEditClick(id), disabled: !canEdit }, "edit"),
27438
27481
  ];
27439
- }
27440
- }];
27482
+ },
27483
+ },
27484
+ ];
27441
27485
  };
27442
27486
 
27443
27487
  const deleteColumn = (props) => {
27444
27488
  if (!props.displayDelete)
27445
27489
  return [];
27446
- return [{
27447
- field: 'delete',
27448
- headerName: 'Eliminar',
27490
+ return [
27491
+ {
27492
+ field: "delete",
27493
+ headerName: "Eliminar",
27449
27494
  width: 80,
27450
- cellClassName: 'actions',
27495
+ cellClassName: "actions",
27451
27496
  renderCell: ({ id, row }) => {
27452
27497
  const canDelete = get$1(row, `obj_permissions.delete`, false);
27453
27498
  return [
27454
- jsx(GridActionsCellItem, { icon: jsx(DeleteIcon, {}), label: 'Eliminar', className: 'textPrimary', onClick: props.handleOpen(id), color: 'primary', disabled: !canDelete }, 'delete')
27499
+ jsx(GridActionsCellItem, { icon: jsx(DeleteIcon, {}), label: "Eliminar", className: "textPrimary", onClick: props.handleOpen(id), color: "primary", disabled: !canDelete }, "delete"),
27455
27500
  ];
27456
- }
27457
- }];
27501
+ },
27502
+ },
27503
+ ];
27458
27504
  };
27459
27505
 
27460
27506
  const DeleteGridWrapper = (props) => {
@@ -27468,25 +27514,25 @@ const DeleteGridWrapper = (props) => {
27468
27514
  setDeleteRowId(undefined);
27469
27515
  };
27470
27516
  const handleClickDelete = () => {
27471
- setDeleting(prevState => !prevState);
27517
+ setDeleting((prevState) => !prevState);
27472
27518
  };
27473
27519
  // ===== || KEYDOWN || ===== //
27474
27520
  const handleKeyPress = useCallback((event) => {
27475
27521
  if (props.permission) {
27476
- if (event.ctrlKey && event.shiftKey && event.key === 'D') {
27522
+ if (event.ctrlKey && event.shiftKey && event.key === "D") {
27477
27523
  event.preventDefault();
27478
27524
  setDeleting(true);
27479
27525
  }
27480
- else if (event.key === 'Escape' && event.shiftKey && deleting) {
27526
+ else if (event.key === "Escape" && event.shiftKey && deleting) {
27481
27527
  event.preventDefault();
27482
27528
  setDeleting(false);
27483
27529
  }
27484
27530
  }
27485
27531
  }, [props.permission, deleting]);
27486
27532
  useEffect(() => {
27487
- document.addEventListener('keydown', handleKeyPress);
27533
+ document.addEventListener("keydown", handleKeyPress);
27488
27534
  return () => {
27489
- document.removeEventListener('keydown', handleKeyPress);
27535
+ document.removeEventListener("keydown", handleKeyPress);
27490
27536
  };
27491
27537
  }, [handleKeyPress]);
27492
27538
  // ===== || GRID PROPS || ===== //
@@ -27500,20 +27546,23 @@ const DeleteGridWrapper = (props) => {
27500
27546
  slotProps: {
27501
27547
  toolbar: {
27502
27548
  extraButtons: [
27503
- ...(props.permission ? [{
27504
- label: deleting ? 'Cancelar' : 'Eliminar',
27505
- icon: deleting ? CancelIcon : DeleteIcon,
27506
- onClick: handleClickDelete,
27507
- }] : [])
27508
- ]
27509
- }
27549
+ ...(props.permission
27550
+ ? [
27551
+ {
27552
+ label: deleting ? "Cancelar" : "Eliminar",
27553
+ icon: deleting ? CancelIcon : DeleteIcon,
27554
+ onClick: handleClickDelete,
27555
+ },
27556
+ ]
27557
+ : []),
27558
+ ],
27559
+ },
27510
27560
  },
27511
27561
  // edit
27512
27562
  checkboxSelection: !deleting,
27513
27563
  ...(deleting ? { onRowClick: undefined } : []),
27514
27564
  }, props.dataGridProps);
27515
- const renderDeleteGrid = () => (jsxs(Fragment, { children: [props.mutation &&
27516
- jsx(DeleteConfirmationDialog, { mutation: props.mutation, open: !!deleteRowId, handleClose: handleClose, id: deleteRowId, disableNavBack: true }), props.renderFunction({ ...props.renderFunctionProps, dataGridProps: deleteGridProps })] }));
27565
+ const renderDeleteGrid = () => (jsxs(Fragment, { children: [props.mutation && (jsx(DeleteConfirmationDialog, { mutation: props.mutation, open: !!deleteRowId, handleClose: handleClose, id: deleteRowId, disableNavBack: true })), props.renderFunction({ ...props.renderFunctionProps, dataGridProps: deleteGridProps })] }));
27517
27566
  return renderDeleteGrid();
27518
27567
  };
27519
27568
 
@@ -27522,7 +27571,7 @@ const CreateGridWrapper = (props) => {
27522
27571
  const [anchorEl, setAnchorEl] = useState(null);
27523
27572
  const open = Boolean(anchorEl);
27524
27573
  const handleClick = () => {
27525
- setAnchorEl(document.getElementById('create-button'));
27574
+ setAnchorEl(document.getElementById("create-button"));
27526
27575
  };
27527
27576
  const handleClose = () => {
27528
27577
  setAnchorEl(null);
@@ -27537,51 +27586,56 @@ const CreateGridWrapper = (props) => {
27537
27586
  // ===== || KEYDOWN || ===== //
27538
27587
  const handleKeyPress = useCallback((event) => {
27539
27588
  if (props.permission) {
27540
- if (event.ctrlKey && event.key === 'e') {
27589
+ if (event.ctrlKey && event.key === "e") {
27541
27590
  event.preventDefault();
27542
27591
  handleClick();
27543
27592
  }
27544
27593
  }
27545
27594
  }, [props.permission]);
27546
27595
  useEffect(() => {
27547
- document.addEventListener('keydown', handleKeyPress);
27596
+ document.addEventListener("keydown", handleKeyPress);
27548
27597
  return () => {
27549
- document.removeEventListener('keydown', handleKeyPress);
27598
+ document.removeEventListener("keydown", handleKeyPress);
27550
27599
  };
27551
27600
  }, [handleKeyPress]);
27552
27601
  const createGridProps = mergeSettings({
27553
27602
  slotProps: {
27554
27603
  toolbar: {
27555
27604
  extraButtons: [
27556
- ...(props.permission ? [{
27557
- label: 'Crear',
27558
- icon: AddIcon,
27559
- onClick: handleClick,
27560
- buttonProps: {
27561
- id: 'create-button',
27562
- }
27563
- }] : []),
27564
- ]
27565
- }
27605
+ ...(props.permission
27606
+ ? [
27607
+ {
27608
+ label: "Crear",
27609
+ icon: AddIcon,
27610
+ onClick: handleClick,
27611
+ buttonProps: {
27612
+ id: "create-button",
27613
+ },
27614
+ },
27615
+ ]
27616
+ : []),
27617
+ ],
27618
+ },
27566
27619
  },
27567
27620
  }, props.dataGridProps);
27568
- return (jsxs(Fragment, { children: [jsxs(StyledMenu, { id: 'create-menu', MenuListProps: {
27569
- 'aria-labelledby': 'create-menu-button',
27570
- }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable && ([
27571
- {
27572
- title: 'CSV',
27573
- endpoint: props.pathname,
27574
- },
27575
- ...(props.csv_upload.extraOptions || [])
27576
- ].map((option, index) => {
27577
- return (jsx(MenuItem, { onClick: () => {
27578
- handleToggleOpen(option);
27579
- handleClose();
27580
- }, disableRipple: true, children: option.title }, index));
27581
- })), jsx(MenuItem, { onClick: () => {
27621
+ return (jsxs(Fragment, { children: [jsxs(StyledMenu, { id: "create-menu", MenuListProps: {
27622
+ "aria-labelledby": "create-menu-button",
27623
+ }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable &&
27624
+ [
27625
+ {
27626
+ title: "CSV",
27627
+ endpoint: props.pathname,
27628
+ },
27629
+ ...(props.csv_upload.extraOptions || []),
27630
+ ].map((option, index) => {
27631
+ return (jsxs(MenuItem, { onClick: () => {
27632
+ handleToggleOpen(option);
27633
+ handleClose();
27634
+ }, disableRipple: true, children: [jsx(ListItemIcon, { children: jsx(AttachFileIcon, { sx: { transform: "rotate(90deg)" } }) }), option.title] }, index));
27635
+ }), jsxs(MenuItem, { onClick: () => {
27582
27636
  navigate(props.navigation ? `${props.navigation}crear` : `crear`);
27583
27637
  handleClose();
27584
- }, disableRipple: true, children: "Manual" })] }), props.csv_upload?.enable && (jsx(CSVUpload, { open: csv.open, drawerToggle: handleToggleClose, data: csv.data })), props.renderFunction({ dataGridProps: createGridProps })] }));
27638
+ }, disableRipple: true, children: [jsx(ListItemIcon, { children: jsx(DrawIcon, {}) }), "Manual"] })] }), props.csv_upload?.enable && (jsx(CSVUpload, { open: csv.open, drawerToggle: handleToggleClose, data: csv.data })), props.renderFunction({ dataGridProps: createGridProps })] }));
27585
27639
  };
27586
27640
 
27587
27641
  const Base = (props) => {
@@ -27838,13 +27892,13 @@ const ActiveCell = ({ value }) => {
27838
27892
  }, [value]);
27839
27893
  const renderIcon = useCallback(() => {
27840
27894
  const iconProps = {
27841
- size: 'small',
27895
+ size: "small",
27842
27896
  sx: {
27843
27897
  color: color[700],
27844
- fontSize: '30px',
27898
+ fontSize: "30px",
27845
27899
  stroke: color[700],
27846
- strokeWidth: 1.5
27847
- }
27900
+ strokeWidth: 1.5,
27901
+ },
27848
27902
  };
27849
27903
  switch (value) {
27850
27904
  case true:
@@ -27855,7 +27909,7 @@ const ActiveCell = ({ value }) => {
27855
27909
  return jsx(ErrorOutlineIcon, { ...iconProps });
27856
27910
  }
27857
27911
  }, [color, value]);
27858
- return (jsx(Box, { px: 2, py: 0.5, display: 'flex', alignItems: 'center', justifyContent: 'center', borderRadius: 2, borderColor: color[900], children: renderIcon() }));
27912
+ return (jsx(Box, { px: 2, py: 0.5, display: "flex", alignItems: "center", justifyContent: "center", borderRadius: 2, borderColor: color[900], children: renderIcon() }));
27859
27913
  };
27860
27914
 
27861
27915
  const MyGridEditSingleSelect = (props) => {
@@ -27870,7 +27924,7 @@ const MyGridEditSingleSelect = (props) => {
27870
27924
  } }));
27871
27925
  };
27872
27926
 
27873
- const StyledTooltip = styled$1(({ className, ...props }) => (jsx(Tooltip, { ...props, placement: 'top', classes: { popper: className } })))(({ theme }) => ({
27927
+ const StyledTooltip = styled$1(({ className, ...props }) => (jsx(Tooltip, { ...props, placement: "top", classes: { popper: className } })))(({ theme }) => ({
27874
27928
  [`& .${tooltipClasses.tooltip}`]: {
27875
27929
  backgroundColor: theme.palette.error.main,
27876
27930
  color: theme.palette.error.contrastText,
@@ -27880,27 +27934,29 @@ const EditCellWithErrorTooltip = (props) => {
27880
27934
  const { error } = props;
27881
27935
  const renderCell = () => {
27882
27936
  switch (props.colDef.type) {
27883
- case 'boolean':
27937
+ case "boolean":
27884
27938
  return jsx(GridEditBooleanCell, { ...props });
27885
- case 'singleSelect':
27939
+ case "singleSelect":
27886
27940
  return jsx(MyGridEditSingleSelect, { ...props });
27887
27941
  default:
27888
- return jsx(GridEditInputCell, { ...props, slotProps: {
27942
+ return (jsx(GridEditInputCell, { ...props, slotProps: {
27889
27943
  root: {
27890
27944
  onFocus: (e) => {
27891
- if (props.field == 'cotizacion__total')
27945
+ if (props.field == "cotizacion__total")
27892
27946
  return e.target.select();
27893
27947
  },
27894
- }
27895
- } });
27948
+ },
27949
+ } }));
27896
27950
  }
27897
27951
  };
27898
- return (jsx(StyledTooltip, { open: !!error, title: error, children: renderCell() }));
27952
+ return (jsx(StyledTooltip, { open: !!error, title: error?.reason.join(", "), children: jsx("div", { style: { display: "flex" }, children: renderCell() }) }));
27899
27953
  };
27900
27954
 
27901
27955
  function renderEditCellWithErrorTooltip(params, mutationErrors, path) {
27902
- const hasError = get(get(mutationErrors, params.id), path || params.field);
27903
- return jsx(EditCellWithErrorTooltip, { ...params, error: hasError });
27956
+ const error = find(get(mutationErrors, params.id), function (e) {
27957
+ return e.name == (path || params.field);
27958
+ });
27959
+ return jsx(EditCellWithErrorTooltip, { ...params, error: error });
27904
27960
  }
27905
27961
 
27906
27962
  const CoverPage = (props) => {
@@ -28017,34 +28073,38 @@ const Field = (props) => {
28017
28073
  return true;
28018
28074
  }, [props.data, props.dependantOn]);
28019
28075
  const renderField = useCallback(() => {
28020
- if (!props.pageType || props.pageType == 'list')
28076
+ if (!props.pageType || props.pageType == "list")
28021
28077
  return;
28022
- if (props.pageType == 'detail')
28078
+ if (props.pageType == "detail")
28023
28079
  return jsx(DetailField, { ...props });
28024
28080
  else
28025
28081
  return jsx(EditField, { ...props });
28026
28082
  }, [props]);
28027
28083
  if (!show)
28028
28084
  return;
28029
- return (jsxs(Grid, { rowSpacing: 1, container: true, size: "grow", direction: 'column', ...props.gridProps, children: [jsx(Grid, { size: 12, children: jsx(Typography$1, { variant: 'body1', fontWeight: 'bold', children: props.label }) }), jsx(Grid, { size: 12, children: renderField() })] }));
28085
+ return (jsxs(Grid, { rowSpacing: 1, container: true, size: "grow", direction: "column", ...props.gridProps, children: [jsx(Grid, { size: 12, children: jsx(Typography$1, { variant: "body1", fontWeight: "bold", children: props.label }) }), jsx(Grid, { size: 12, children: renderField() })] }));
28030
28086
  };
28031
28087
 
28032
28088
  const EditToolbar = (props) => {
28033
- return (jsxs(Toolbar, { children: [props.pageType != 'detail' &&
28034
- jsx(Tooltip$1, { title: 'Crear', children: jsx(ToolbarButton, { onClick: props.handleCreate, children: jsx(AddIcon, { fontSize: "small" }) }) }), !!props.selected &&
28035
- jsx(Tooltip$1, { title: 'Borrar', children: jsx(ToolbarButton, { onClick: props.handleDelete, children: jsx(DeleteIcon, { fontSize: "small" }) }) })] }));
28089
+ return (jsxs(Toolbar, { children: [props.pageType != "detail" && (jsx(Tooltip$1, { title: "Crear", children: jsx(ToolbarButton, { onClick: props.handleCreate, children: jsx(AddIcon, { fontSize: "small" }) }) })), !!props.selected && (jsx(Tooltip$1, { title: "Borrar", children: jsx(ToolbarButton, { onClick: props.handleDelete, children: jsx(DeleteIcon, { fontSize: "small" }) }) }))] }));
28036
28090
  };
28037
28091
  const FieldArrayField = (props) => {
28038
28092
  const { fields, remove } = useFieldArray({
28039
28093
  control: props.form.control,
28040
28094
  name: props.name,
28041
- keyName: '_id'
28095
+ keyName: "_id",
28096
+ });
28097
+ const [drawer, setDrawer] = useState({
28098
+ open: false,
28099
+ data: undefined,
28042
28100
  });
28043
- const [drawer, setDrawer] = useState({ open: false, data: undefined });
28044
- const [rowSelectionModel, setRowSelectionModel] = useState({ type: 'include', ids: new Set() });
28045
- const getIndex = useCallback((id) => (findIndex(fields, function (field) {
28101
+ const [rowSelectionModel, setRowSelectionModel] = useState({
28102
+ type: "include",
28103
+ ids: new Set(),
28104
+ });
28105
+ const getIndex = useCallback((id) => findIndex(fields, function (field) {
28046
28106
  return field._id == id;
28047
- })), [fields]);
28107
+ }), [fields]);
28048
28108
  const handleCreate = () => {
28049
28109
  setDrawer({ open: true, data: undefined });
28050
28110
  };
@@ -28067,7 +28127,7 @@ const FieldArrayField = (props) => {
28067
28127
  const handleRowClick = (e) => {
28068
28128
  setDrawer({ open: true, data: e.row });
28069
28129
  };
28070
- return (jsxs(Fragment, { children: [jsxs(Grid, { rowSpacing: 1, container: true, size: "grow", direction: 'column', ...props.gridProps, children: [jsx(Grid, { size: 12, children: jsx(Typography$1, { variant: 'body1', fontWeight: 'bold', children: props.label }) }), jsx(Grid, { size: 12, children: jsx(DataGrid, { ...props.dataGridProps, rows: fields, checkboxSelection: props.pageType != 'detail', onRowSelectionModelChange: (newRowSelectionModel) => {
28130
+ return (jsxs(Fragment, { children: [jsxs(Grid, { rowSpacing: 1, container: true, size: "grow", direction: "column", ...props.gridProps, children: [jsx(Grid, { size: 12, children: jsx(Typography$1, { variant: "body1", fontWeight: "bold", children: props.label }) }), jsx(Grid, { size: 12, children: jsx(DataGrid, { ...props.dataGridProps, rows: fields, checkboxSelection: props.pageType != "detail", onRowSelectionModelChange: (newRowSelectionModel) => {
28071
28131
  setRowSelectionModel(newRowSelectionModel);
28072
28132
  }, showToolbar: true, slots: { toolbar: EditToolbar }, slotProps: {
28073
28133
  toolbar: {
@@ -28076,7 +28136,7 @@ const FieldArrayField = (props) => {
28076
28136
  handleDelete: handleDelete,
28077
28137
  pageType: props.pageType,
28078
28138
  },
28079
- }, disableRowSelectionOnClick: true, onRowClick: handleRowClick, getRowId: (row) => row._id }) })] }), jsx(MainDrawer, { open: drawer.open, drawerToggle: closeDrawer, title: 'Cargo Adicional', children: jsx(Grid, { size: 12, container: true, children: props.fields.map((field) => {
28139
+ }, disableRowSelectionOnClick: true, onRowClick: handleRowClick, getRowId: (row) => row._id }) })] }), jsx(MainDrawer, { open: drawer.open, drawerToggle: closeDrawer, title: "Cargo Adicional", children: jsx(Grid, { size: 12, container: true, children: props.fields.map((field) => {
28080
28140
  const fieldName = `${props.name}.${getIndex(drawer.data?._id)}.${field.name}`;
28081
28141
  return (jsx(Field, { ...field, form: props.form, name: fieldName, fieldData: get(drawer.data, field.name) }, fieldName));
28082
28142
  }) }) })] }));
@@ -28174,10 +28234,10 @@ const Logo = () => {
28174
28234
  // ==============================|| PESTAÑAS ||============================== //
28175
28235
  /**
28176
28236
  * Pestañas customizables
28177
- **/
28237
+ **/
28178
28238
  const Tabs = (props) => {
28179
28239
  // valor inicial
28180
- const [value, setValue] = useState(props.initialValue || '1');
28240
+ const [value, setValue] = useState(props.initialValue || "1");
28181
28241
  // manejar cambio de pestaña
28182
28242
  const handleChange = (_event, newValue) => {
28183
28243
  setValue(newValue);
@@ -28185,29 +28245,33 @@ const Tabs = (props) => {
28185
28245
  };
28186
28246
  // hacer el render del contenido de la pestaña seleccionada
28187
28247
  const renderTabs = () => {
28188
- return (props.tabs.map((option) => {
28248
+ return props.tabs.map((option) => {
28189
28249
  const renderContent = () => {
28190
28250
  return React__default.Children.map(option.children, (child) => {
28191
28251
  const cloneProps = { ...child.props };
28192
- set$1(cloneProps, 'type', props.type);
28193
- set$1(cloneProps, 'slotProps.tab', option.value);
28252
+ set$1(cloneProps, "type", props.type);
28253
+ set$1(cloneProps, "slotProps.tab", option.value);
28194
28254
  return React__default.cloneElement(child, cloneProps);
28195
28255
  });
28196
28256
  };
28197
28257
  return (jsx(TabPanel, { value: option.value, sx: {
28198
- pt: 2, pb: 0, px: 0, width: 1, height: 1,
28258
+ pt: 2,
28259
+ pb: 0,
28260
+ px: 0,
28261
+ width: 1,
28262
+ height: 1,
28199
28263
  }, children: renderContent() }, option.value));
28200
- }));
28264
+ });
28201
28265
  };
28202
28266
  return (
28203
28267
  // contexto
28204
- jsx(Box, { width: 1, height: 'calc(100vh - 175px)', children: jsxs(TabContext, { value: value, children: [jsx(TabList, { onChange: handleChange, "aria-label": "create-work-order-tabs", variant: 'scrollable', scrollButtons: 'auto', sx: {
28205
- minHeight: 40
28268
+ jsx(Box, { width: 1, height: "calc(100vh - 175px)", children: jsxs(TabContext, { value: value, children: [jsx(TabList, { onChange: handleChange, "aria-label": "create-work-order-tabs", variant: "scrollable", scrollButtons: "auto", sx: {
28269
+ minHeight: 40,
28206
28270
  }, children: props.tabs.map((option) => {
28207
- return (jsx(Tab, { label: option.label, icon: option.icon, iconPosition: 'start', value: option.value, sx: {
28208
- color: 'secondary.light',
28271
+ return (jsx(Tab, { label: option.label, icon: option.icon, iconPosition: "start", value: option.value, sx: {
28272
+ color: "secondary.light",
28209
28273
  py: 0,
28210
- minHeight: 40
28274
+ minHeight: 40,
28211
28275
  } }, option.value));
28212
28276
  }) }), jsx(Box, { width: 1, height: 0.935, children: renderTabs() })] }) }));
28213
28277
  };
@@ -28291,7 +28355,7 @@ function DetailPage(props) {
28291
28355
  resolver: zodResolver(props.edit.schema),
28292
28356
  defaultValues: props.edit?.defaultValues,
28293
28357
  });
28294
- const { data, isLoading, isFetching, error: fetchError } = props.api.data.query(!props.api.data.skipToken ? props.api.data.args : skipToken);
28358
+ const { data, isLoading, isFetching, error: fetchError, } = props.api.data.query(!props.api.data.skipToken ? props.api.data.args : skipToken);
28295
28359
  useEffect(() => {
28296
28360
  if (data) {
28297
28361
  // set form data based on query data
@@ -28299,7 +28363,7 @@ function DetailPage(props) {
28299
28363
  if (props.slots?.title) {
28300
28364
  const title = map(props.slots?.title, function (field) {
28301
28365
  return get(data, field);
28302
- }).join(' ');
28366
+ }).join(" ");
28303
28367
  if (title)
28304
28368
  dispatch(changeTitle(title));
28305
28369
  }
@@ -28310,60 +28374,64 @@ function DetailPage(props) {
28310
28374
  form.reset();
28311
28375
  navigate(-1);
28312
28376
  };
28313
- const canEdit = useMemo(() => get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ''}obj_permissions.edit`), [data, props.slotProps?.permissionsPath]);
28314
- const canDelete = useMemo(() => get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ''}obj_permissions.delete`), [data, props.slotProps?.permissionsPath]);
28377
+ const canEdit = useMemo(() => get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ""}obj_permissions.edit`), [data, props.slotProps?.permissionsPath]);
28378
+ const canDelete = useMemo(() => get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ""}obj_permissions.delete`), [data, props.slotProps?.permissionsPath]);
28315
28379
  // ==============================|| VALIDATION ||============================== //
28316
28380
  useValidateFieldData(props, form);
28317
28381
  // ==============================|| QUICK RETURN ||============================== //
28318
- if ((!canEdit && props.pageType == 'edit') || (fetchError && fetchError.originalStatus == 403))
28382
+ if ((!canEdit && props.pageType == "edit") || (fetchError && fetchError.originalStatus == 403))
28319
28383
  return jsx(NotAllowed, {});
28320
28384
  if (fetchError && fetchError.originalStatus == 404)
28321
28385
  return jsx(NotFound, {});
28322
28386
  // ==============================|| SUBMIT ||============================== //
28323
28387
  const onSubmitHandler = (submitedData) => {
28324
- const formData = 'nativeEvent' in submitedData ? form.getValues() : submitedData;
28388
+ const formData = "nativeEvent" in submitedData ? form.getValues() : submitedData;
28325
28389
  const params = { submitData: formData, data: data, props: props.slotProps?.parser };
28326
28390
  const dataToSend = props.edit.useFormData ? formDataForm(params) : jsonForm(params);
28327
- mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args }).unwrap()
28391
+ mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args })
28392
+ .unwrap()
28328
28393
  .then(() => {
28329
28394
  if (!props.slotProps?.button?.save?.disableNavBack)
28330
28395
  navigate(-1);
28331
28396
  if (props.slotProps?.button?.save?.onClick)
28332
28397
  props.slotProps?.button?.save?.onClick();
28333
28398
  form.reset();
28334
- notifications.show(`${capitalizedObject} ${props.pageType == 'edit' ? 'actualizad@' : 'cread@'}!`, { severity: 'success' });
28399
+ notifications.show(`${capitalizedObject} ${props.pageType == "edit" ? "actualizad@" : "cread@"}!`, { severity: "success" });
28335
28400
  })
28336
28401
  .catch((error) => {
28337
28402
  if (error.status === 401) ;
28338
28403
  if (error.status === 403) {
28339
- notifications.show(error.data.detail, { severity: 'error' });
28404
+ notifications.show(error.data.detail, { severity: "error" });
28340
28405
  }
28341
28406
  else {
28342
28407
  console.log(error);
28343
28408
  setErrors(form, error);
28344
- notifications.show((error.data.detail ?
28345
- error.data.detail.join(', ') :
28346
- `Error ${props.pageType == 'edit' ? 'actualizando' : 'creando'} ${props.object.name}!`), { severity: 'error' });
28409
+ notifications.show(error.data.detail
28410
+ ? error.data.detail.join(", ")
28411
+ : `Error ${props.pageType == "edit" ? "actualizando" : "creando"} ${props.object.name}!`, { severity: "error" });
28347
28412
  }
28348
28413
  });
28349
28414
  };
28350
28415
  // ==============================|| RENDER SECTIONS ||============================== //
28351
28416
  const renderContent = () => {
28352
28417
  let displayed_sections = -1;
28353
- return (jsxs(Grid, { size: 12, container: true, direction: 'column', position: 'relative', pb: 2, children: [props.pageType == 'detail' && data?.has_history && jsx(HistorialDrawer, { ...props.slotProps?.historial }), props.sections.map((section, index) => {
28418
+ return (jsxs(Grid, { size: 12, container: true, direction: "column", position: "relative", pb: 2, children: [props.pageType == "detail" && data?.has_history && (jsx(HistorialDrawer, { ...props.slotProps?.historial })), props.sections.map((section, index) => {
28354
28419
  if (!section.display)
28355
28420
  return null;
28356
- if (typeof section.display == 'object') {
28421
+ if (typeof section.display == "object") {
28357
28422
  const validateAgainst = form.watch(section.display.field)?.toString();
28358
28423
  if (!section.display.method(validateAgainst, section.display.value))
28359
28424
  return null;
28360
28425
  }
28361
28426
  displayed_sections += 1;
28362
- return (jsx(Section, { data: data, form: form, bgColor: displayed_sections % 2 == 1 ? 'white' : '#F7F7F7', pageType: props.pageType, ...section, first: displayed_sections == 0 }, index));
28427
+ return (jsx(Section, { data: data, form: form, bgColor: displayed_sections % 2 == 1 ? "white" : "#F7F7F7", pageType: props.pageType, ...section, first: displayed_sections == 0 }, index));
28363
28428
  })] }));
28364
28429
  };
28365
28430
  const renderPostAction = () => {
28366
- if (props.api.mutate.postAction && isSuccess && 'post_action' in mutationResponse && mutationResponse['post_action']['type'] === props.api.mutate.postAction.type) {
28431
+ if (props.api.mutate.postAction &&
28432
+ isSuccess &&
28433
+ "post_action" in mutationResponse &&
28434
+ mutationResponse["post_action"]["type"] === props.api.mutate.postAction.type) {
28367
28435
  switch (props.api.mutate.postAction.after) {
28368
28436
  // case 'create':
28369
28437
  // if (props.pageType === 'create') return addPropsToNode(props.api.mutate.postAction.node, mutationResponse);
@@ -28372,37 +28440,44 @@ function DetailPage(props) {
28372
28440
  // if (props.pageType === 'edit') return props.api.mutate.postAction.node;
28373
28441
  // break;
28374
28442
  default:
28375
- return addPropsToNode(props.api.mutate.postAction.node, { parent: props.api.data.args['id'], ...mutationResponse['post_action'] });
28443
+ return addPropsToNode(props.api.mutate.postAction.node, {
28444
+ parent: props.api.data.args["id"],
28445
+ ...mutationResponse["post_action"],
28446
+ });
28376
28447
  }
28377
28448
  }
28378
28449
  };
28379
- const badgeInfo = get(data, props.slots?.badge || '');
28450
+ const badgeInfo = get(data, props.slots?.badge || "");
28380
28451
  const renderButton = () => {
28381
28452
  if (props.slots?.button)
28382
28453
  return props.slots?.button;
28383
- if (props.pageType == 'detail') {
28454
+ if (props.pageType == "detail") {
28384
28455
  if (!canEdit && !canDelete)
28385
28456
  return null;
28386
- return (jsxs(Stack, { direction: 'row', spacing: 1, children: [canDelete && props.api.delete && jsx(DeleteButton, { mutation: props.api.delete.mutation, disableNavBack: props.slotProps?.deleteButton?.disableNavBack }), canEdit && jsx(EditButton, {})] }));
28457
+ return (jsxs(Stack, { direction: "row", spacing: 1, children: [canDelete && props.api.delete && (jsx(DeleteButton, { mutation: props.api.delete.mutation, disableNavBack: props.slotProps?.deleteButton?.disableNavBack })), canEdit && jsx(EditButton, {})] }));
28387
28458
  }
28388
28459
  else {
28389
28460
  return (jsx(SaveCancelButton, { slotProps: {
28390
28461
  saveBtn: {
28391
28462
  loading: mutationIsLoading,
28392
28463
  disabled: !form.formState.isDirty,
28393
- ...(props.slotProps?.button?.save?.type == 'onClick' ? {
28394
- type: 'button',
28395
- onClick: onSubmitHandler,
28396
- } : {}),
28464
+ ...(props.slotProps?.button?.save?.type == "onClick"
28465
+ ? {
28466
+ type: "button",
28467
+ onClick: onSubmitHandler,
28468
+ }
28469
+ : {}),
28397
28470
  },
28398
- ...(props.slotProps?.button?.cancel ? { cancelBtn: props.slotProps?.button?.cancel } : {
28399
- cancelBtn: { onClick: handleCancel }
28400
- }),
28471
+ ...(props.slotProps?.button?.cancel
28472
+ ? { cancelBtn: props.slotProps?.button?.cancel }
28473
+ : {
28474
+ cancelBtn: { onClick: handleCancel },
28475
+ }),
28401
28476
  } }));
28402
28477
  }
28403
28478
  };
28404
- return (jsxs(Fragment, { children: [jsx(ContentLayout, { button: renderButton(), badge: props.pageType == 'detail' && badgeInfo &&
28405
- jsx(StatusBadge, { title: badgeInfo['label'], severity: badgeInfo['value'] }), children: jsx(LoadingComponent, { height: 0.7, isLoading: isLoading || isFetching, children: jsx(FormProvider, { ...form, children: jsx(Box, { id: 'formulario', component: 'form', autoComplete: "off", noValidate: true, onSubmit: form.handleSubmit(onSubmitHandler), width: '100%', position: 'relative', children: renderContent() }) }) }) }), renderPostAction()] }));
28479
+ return (jsxs(Fragment, { children: [jsx(ContentLayout, { button: renderButton(), badge: props.pageType == "detail" &&
28480
+ badgeInfo && (jsx(StatusBadge, { title: badgeInfo["label"], severity: badgeInfo["value"] })), children: jsx(LoadingComponent, { height: 0.7, isLoading: isLoading || isFetching, children: jsx(FormProvider, { ...form, children: jsx(Box, { id: "formulario", component: "form", autoComplete: "off", noValidate: true, onSubmit: form.handleSubmit(onSubmitHandler), width: "100%", position: "relative", children: renderContent() }) }) }) }), renderPostAction()] }));
28406
28481
  }
28407
28482
 
28408
28483
  const ListPage = (props) => {
@@ -28410,19 +28485,19 @@ const ListPage = (props) => {
28410
28485
  };
28411
28486
 
28412
28487
  function SlideTransition(props) {
28413
- return jsx(Slide, { ...props, direction: 'left' });
28488
+ return jsx(Slide, { ...props, direction: "left" });
28414
28489
  }
28415
28490
  const BaseProgressSnack = (props) => {
28416
- // const dispatch = useAppDispatch();
28491
+ const dispatch = useDispatch();
28417
28492
  const handleClose = (e) => {
28418
28493
  if (e?.defaultMuiPrevented)
28419
28494
  return;
28420
- // dispatch(closeProgressSnack(props.id));
28495
+ dispatch(closeProgressSnack(props.id));
28421
28496
  };
28422
- const finished = useMemo(() => get(props.data, 'finished'), [props.data]);
28423
- const error = useMemo(() => get(props.data, 'error'), [props.data]);
28497
+ const finished = useMemo(() => get(props.data, "finished"), [props.data]);
28498
+ const error = useMemo(() => get(props.data, "error"), [props.data]);
28424
28499
  const renderItem = useCallback(() => {
28425
- return (jsx(Snackbar, { anchorOrigin: { vertical: 'bottom', horizontal: 'right' }, open: props.open, onClose: handleClose, slots: {
28500
+ return (jsx(Snackbar, { anchorOrigin: { vertical: "bottom", horizontal: "right" }, open: props.open, onClose: handleClose, slots: {
28426
28501
  transition: SlideTransition,
28427
28502
  }, slotProps: {
28428
28503
  clickAwayListener: {
@@ -28430,27 +28505,27 @@ const BaseProgressSnack = (props) => {
28430
28505
  event.defaultMuiPrevented = true;
28431
28506
  },
28432
28507
  },
28433
- }, children: jsx(Badge, { invisible: props.index < 1, badgeContent: props.index + 1, color: 'primary', children: jsx(Paper, { elevation: 2, sx: {
28434
- bgcolor: props.data['error'] ? 'primary.main' : 'secondary.dark',
28508
+ }, children: jsx(Badge, { invisible: props.index < 1, badgeContent: props.index + 1, color: "primary", children: jsx(Paper, { elevation: 2, sx: {
28509
+ bgcolor: props.data["error"] ? "primary.main" : "secondary.dark",
28435
28510
  minWidth: 300,
28436
- maxWidth: '100vw',
28511
+ maxWidth: "100vw",
28437
28512
  p: 2,
28438
- borderRadius: '12px',
28439
- color: 'white',
28440
- }, children: jsxs(Stack, { direction: 'column', spacing: 1, children: [jsxs(Stack, { direction: 'row', alignItems: 'center', spacing: 1, justifyContent: 'space-between', children: [jsx(Typography$1, { pr: 2, color: 'inherit', children: props.data.title || 'N/A' }), finished && !error && (jsx(Tooltip, { title: 'Cerrar', placement: 'bottom', children: jsx(IconButton, { color: 'secondary', size: 'small', onClick: handleClose, sx: {
28441
- color: 'inherit',
28442
- '&:hover': {
28443
- backgroundColor: 'rgba(255, 255, 255, 0.2)'
28513
+ borderRadius: "12px",
28514
+ color: "white",
28515
+ }, children: jsxs(Stack, { direction: "column", spacing: 1, children: [jsxs(Stack, { direction: "row", alignItems: "center", spacing: 1, justifyContent: "space-between", children: [jsx(Typography$1, { pr: 2, color: "inherit", children: props.data.title || "N/A" }), finished && !error && (jsx(Tooltip, { title: "Cerrar", placement: "bottom", children: jsx(IconButton, { color: "secondary", size: "small", onClick: handleClose, sx: {
28516
+ color: "inherit",
28517
+ "&:hover": {
28518
+ backgroundColor: "rgba(255, 255, 255, 0.2)",
28444
28519
  },
28445
- }, children: jsx(CloseIcon, { fontSize: 'small' }) }) }))] }), !finished && !error && props.content(props.data)] }) }) }) }));
28520
+ }, children: jsx(CloseIcon, { fontSize: "small" }) }) }))] }), !finished && !error && props.content(props.data)] }) }) }) }));
28446
28521
  // eslint-disable-next-line react-hooks/exhaustive-deps
28447
28522
  }, [finished, props]);
28448
28523
  return renderItem();
28449
28524
  };
28450
28525
 
28451
28526
  const ObjectProgressStack = (props) => {
28452
- const snacks = useSelector(state => get(state, 'snackProgress', {}));
28453
- return (jsx(Stack, { direction: 'column', spacing: 2, children: Object.keys(snacks).map((key, index) => {
28527
+ const snacks = useSelector((state) => get(state, "snackProgress", {}));
28528
+ return (jsx(Stack, { direction: "column", spacing: 2, children: Object.keys(snacks).map((key, index) => {
28454
28529
  return (jsx(BaseProgressSnack, { id: key, index: index, ...snacks[key], content: props.content }, key));
28455
28530
  }) }));
28456
28531
  };