@acvl/frontend-components 0.0.24 → 0.0.26

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 (42) hide show
  1. package/dist/cjs/index.js +639 -529
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/src/components/v1/buttons/CreateButton/CreateButtonWithMenuOptions.d.ts +3 -2
  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/Base/index.d.ts +1 -1
  7. package/dist/cjs/types/src/components/v1/datagrids/columns/deleteColumn.d.ts +1 -1
  8. package/dist/cjs/types/src/components/v1/datagrids/columns/editColumn.d.ts +1 -1
  9. package/dist/cjs/types/src/components/v1/datagrids/custom_slots/CustomToolbar/index.d.ts +3 -3
  10. package/dist/cjs/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/ExportButton/ExportCSV.d.ts +2 -2
  11. package/dist/cjs/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/ExportButton/index.d.ts +3 -3
  12. package/dist/cjs/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/FiltersButton/index.d.ts +1 -1
  13. package/dist/cjs/types/src/components/v1/datagrids/custom_slots/index.d.ts +1 -1
  14. package/dist/cjs/types/src/components/v1/datagrids/wrappers/CreateGridWrapper.d.ts +1 -0
  15. package/dist/cjs/types/src/components/v1/datagrids/wrappers/EditGridWrapper.d.ts +2 -2
  16. package/dist/cjs/types/src/components/v1/drawers/HistorialDrawer/index.d.ts +1 -1
  17. package/dist/cjs/types/src/components/v1/layout/pages/DetailPage/FieldArrayField/index.d.ts +1 -1
  18. package/dist/cjs/types/src/components/v1/layout/pages/DetailPage/index.d.ts +2 -2
  19. package/dist/cjs/types/src/components/v1/layout/shared/Tabs/index.d.ts +1 -1
  20. package/dist/cjs/types/src/components/v1/lib/slices/snackProgress.d.ts +1 -1
  21. package/dist/esm/index.js +642 -532
  22. package/dist/esm/index.js.map +1 -1
  23. package/dist/esm/types/src/components/v1/buttons/CreateButton/CreateButtonWithMenuOptions.d.ts +3 -2
  24. package/dist/esm/types/src/components/v1/buttons/DeleteButton/DeleteButton.d.ts +1 -1
  25. package/dist/esm/types/src/components/v1/buttons/NormalOrIcon/NormalOrIcon.d.ts +1 -1
  26. package/dist/esm/types/src/components/v1/datagrids/Base/index.d.ts +1 -1
  27. package/dist/esm/types/src/components/v1/datagrids/columns/deleteColumn.d.ts +1 -1
  28. package/dist/esm/types/src/components/v1/datagrids/columns/editColumn.d.ts +1 -1
  29. package/dist/esm/types/src/components/v1/datagrids/custom_slots/CustomToolbar/index.d.ts +3 -3
  30. package/dist/esm/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/ExportButton/ExportCSV.d.ts +2 -2
  31. package/dist/esm/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/ExportButton/index.d.ts +3 -3
  32. package/dist/esm/types/src/components/v1/datagrids/custom_slots/CustomToolbar/slots/FiltersButton/index.d.ts +1 -1
  33. package/dist/esm/types/src/components/v1/datagrids/custom_slots/index.d.ts +1 -1
  34. package/dist/esm/types/src/components/v1/datagrids/wrappers/CreateGridWrapper.d.ts +1 -0
  35. package/dist/esm/types/src/components/v1/datagrids/wrappers/EditGridWrapper.d.ts +2 -2
  36. package/dist/esm/types/src/components/v1/drawers/HistorialDrawer/index.d.ts +1 -1
  37. package/dist/esm/types/src/components/v1/layout/pages/DetailPage/FieldArrayField/index.d.ts +1 -1
  38. package/dist/esm/types/src/components/v1/layout/pages/DetailPage/index.d.ts +2 -2
  39. package/dist/esm/types/src/components/v1/layout/shared/Tabs/index.d.ts +1 -1
  40. package/dist/esm/types/src/components/v1/lib/slices/snackProgress.d.ts +1 -1
  41. package/dist/index.d.ts +33 -16
  42. 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,10 @@ 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
+ const belowLG = useMediaQuery(theme.breakpoints.down("lg"));
110
+ if ((belowLG && !(props.type == "button")) || props.type == "icon")
109
111
  return (jsx(Tooltip, { title: props.buttonProps.children, children: jsx(IconButton, { ...props.buttonProps, children: props.buttonProps.startIcon }) }));
110
- return (jsx(Button, { ...props.buttonProps }));
112
+ return jsx(Button, { ...props.buttonProps });
111
113
  };
112
114
 
113
115
  const EditButton = () => {
@@ -117,23 +119,23 @@ const EditButton = () => {
117
119
  }, [navigate]);
118
120
  // ===== || KEYDOWN || ===== //
119
121
  const handleKeyPress = useCallback((event) => {
120
- if (event.ctrlKey && event.key === 'e') {
122
+ if (event.ctrlKey && event.key === "e") {
121
123
  event.preventDefault();
122
124
  handleClick();
123
125
  }
124
126
  }, [handleClick]);
125
127
  useEffect(() => {
126
- document.addEventListener('keydown', handleKeyPress);
128
+ document.addEventListener("keydown", handleKeyPress);
127
129
  return () => {
128
- document.removeEventListener('keydown', handleKeyPress);
130
+ document.removeEventListener("keydown", handleKeyPress);
129
131
  };
130
132
  }, [handleKeyPress]);
131
133
  return (jsx(NormalOrIcon, { buttonProps: {
132
- color: 'secondary',
133
- variant: 'contained',
134
+ color: "secondary",
135
+ variant: "contained",
134
136
  startIcon: jsx(EditIcon, {}),
135
137
  onClick: handleClick,
136
- children: 'Editar',
138
+ children: "Editar",
137
139
  } }));
138
140
  };
139
141
 
@@ -25644,9 +25646,9 @@ dayjs.locale(es);
25644
25646
  dayjs.extend(duration);
25645
25647
 
25646
25648
  // ==============================|| JSON ||============================== //
25647
- const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, data, props, formType }) => {
25649
+ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, data, props, formType, }) => {
25648
25650
  const ignore = get$1(props, `${base_key}.ignore`, false);
25649
- if (ignore || ['obj_permissions', 'has_history'].includes(base_key))
25651
+ if (ignore || ["obj_permissions", "has_history"].includes(base_key))
25650
25652
  return;
25651
25653
  const altered_key = invoke(props, `${base_key}.alter_key`, base_key);
25652
25654
  const key = altered_key || base_key;
@@ -25664,7 +25666,7 @@ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, dat
25664
25666
  case "string":
25665
25667
  if (invoke(props, `${base_key}.extra_validation`, object))
25666
25668
  return;
25667
- setValue(response, key, isEmpty(object) ? '' : object);
25669
+ setValue(response, key, isEmpty(object) ? "" : object);
25668
25670
  break;
25669
25671
  case "number":
25670
25672
  setValue(response, key, object);
@@ -25674,28 +25676,37 @@ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, dat
25674
25676
  break;
25675
25677
  case "object":
25676
25678
  if (isNull(object) || isEmpty(object)) {
25677
- if (includes(key, 'after') || includes(key, 'before'))
25678
- setValue(response, key, '');
25679
+ if (includes(key, "after") || includes(key, "before"))
25680
+ setValue(response, key, "");
25679
25681
  else
25680
25682
  setValue(response, key, object);
25681
25683
  }
25684
+ else if (object instanceof File) {
25685
+ setValue(response, key, object);
25686
+ }
25682
25687
  else if (object instanceof dayjs) {
25683
- setValue(response, key, object.format(get$1(props, `${key}.format`, 'YYYY-MM-DD')));
25688
+ setValue(response, key, object.format(get$1(props, `${key}.format`, "YYYY-MM-DD")));
25684
25689
  }
25685
- else if ('label' in object && 'value' in object) {
25690
+ else if ("label" in object && "value" in object) {
25686
25691
  if (useLabel)
25687
- setValue(response, key, object['label']);
25692
+ setValue(response, key, object["label"]);
25688
25693
  else
25689
- setValue(response, key, object['value']);
25694
+ setValue(response, key, object["value"]);
25690
25695
  }
25691
- else if (Array.isArray(object)) { // it is an array
25692
- if (object.length && typeof object[0] == 'object' && !Array.isArray(object[0]) && 'value' in object[0] && object[0]['value'] == 'all') { // for data grid filters
25693
- setValue(response, key, '');
25696
+ else if (Array.isArray(object)) {
25697
+ // it is an array
25698
+ if (object.length &&
25699
+ typeof object[0] == "object" &&
25700
+ !Array.isArray(object[0]) &&
25701
+ "value" in object[0] &&
25702
+ object[0]["value"] == "all") {
25703
+ // for data grid filters
25704
+ setValue(response, key, "");
25694
25705
  }
25695
25706
  else {
25696
25707
  forEach(object, (arrayItem, idx) => {
25697
- if (typeof arrayItem == 'object') {
25698
- if ('label' in arrayItem) {
25708
+ if (typeof arrayItem == "object") {
25709
+ if ("label" in arrayItem) {
25699
25710
  setValue(response, `${key}.${idx}`, function (item) {
25700
25711
  if (useLabel)
25701
25712
  return item.label;
@@ -25703,7 +25714,16 @@ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, dat
25703
25714
  return item.value;
25704
25715
  });
25705
25716
  }
25706
- typeSwitch({ base_object: arrayItem, base_key: `${key}.${idx}`, response: response, useLabel: useLabel, data: data, submitData: submitData, props: props, formType: formType });
25717
+ typeSwitch({
25718
+ base_object: arrayItem,
25719
+ base_key: `${key}.${idx}`,
25720
+ response: response,
25721
+ useLabel: useLabel,
25722
+ data: data,
25723
+ submitData: submitData,
25724
+ props: props,
25725
+ formType: formType,
25726
+ });
25707
25727
  }
25708
25728
  else {
25709
25729
  const keyArray = get$1(response, key);
@@ -25720,9 +25740,19 @@ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, dat
25720
25740
  }
25721
25741
  else {
25722
25742
  forEach(object, (value, key2) => {
25723
- if (!includes(['id', 'transporte.tarifa.cargos_adicionales'], key) && isEqual(get$1(data, `${key}.${key2}`), value))
25743
+ if (!includes(["id", "transporte.tarifa.cargos_adicionales"], key) &&
25744
+ isEqual(get$1(data, `${key}.${key2}`), value))
25724
25745
  return;
25725
- typeSwitch({ base_object: value, base_key: `${key}.${key2}`, response: response, useLabel: useLabel, data: data, submitData: submitData, props: props, formType: formType });
25746
+ typeSwitch({
25747
+ base_object: value,
25748
+ base_key: `${key}.${key2}`,
25749
+ response: response,
25750
+ useLabel: useLabel,
25751
+ data: data,
25752
+ submitData: submitData,
25753
+ props: props,
25754
+ formType: formType,
25755
+ });
25726
25756
  });
25727
25757
  }
25728
25758
  break;
@@ -25734,7 +25764,7 @@ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, dat
25734
25764
  const jsonForm = ({ submitData, data, useLabel, props }) => {
25735
25765
  const response = {};
25736
25766
  forEach(submitData, function (value, key) {
25737
- if (key != 'id' && isEqual(get$1(data, key), value))
25767
+ if (key != "id" && isEqual(get$1(data, key), value))
25738
25768
  return;
25739
25769
  typeSwitch({
25740
25770
  base_object: value,
@@ -25744,7 +25774,7 @@ const jsonForm = ({ submitData, data, useLabel, props }) => {
25744
25774
  data: data,
25745
25775
  props: props,
25746
25776
  submitData: submitData,
25747
- formType: 'json',
25777
+ formType: "json",
25748
25778
  });
25749
25779
  });
25750
25780
  return response;
@@ -25752,7 +25782,7 @@ const jsonForm = ({ submitData, data, useLabel, props }) => {
25752
25782
  const formDataForm = ({ submitData, data, useLabel, props }) => {
25753
25783
  const formData = new FormData();
25754
25784
  forEach(submitData, function (value, key) {
25755
- if (key != 'id' && isEqual(get$1(data, key), value))
25785
+ if (key != "id" && isEqual(get$1(data, key), value))
25756
25786
  return;
25757
25787
  typeSwitch({
25758
25788
  base_object: value,
@@ -25762,16 +25792,16 @@ const formDataForm = ({ submitData, data, useLabel, props }) => {
25762
25792
  data: data,
25763
25793
  props: props,
25764
25794
  submitData: submitData,
25765
- formType: 'formData',
25795
+ formType: "formData",
25766
25796
  });
25767
25797
  });
25768
25798
  return formData;
25769
25799
  };
25770
25800
  // ==============================|| ERRORS ||============================== //
25771
25801
  const setErrors = (form, error) => {
25772
- if ('invalid_params' in error.data) {
25802
+ if ("invalid_params" in error.data) {
25773
25803
  Object.values(error.data.invalid_params).forEach((entry) => {
25774
- form.setError(entry.name, { message: entry.reason.join(', ') });
25804
+ form.setError(entry.name, { message: entry.reason.join(", ") });
25775
25805
  });
25776
25806
  }
25777
25807
  };
@@ -25783,18 +25813,18 @@ const valueLabel = object({
25783
25813
 
25784
25814
  const MainDrawer = (props) => {
25785
25815
  const theme = useTheme();
25786
- return (jsx(Drawer, { variant: 'temporary', anchor: 'right', open: props.open, onClose: props.drawerToggle, sx: {
25816
+ return (jsx(Drawer, { variant: "temporary", anchor: "right", open: props.open, onClose: props.drawerToggle, sx: {
25787
25817
  zIndex: 1202,
25788
- '& .MuiDrawer-paper': {
25789
- width: '100%',
25818
+ "& .MuiDrawer-paper": {
25819
+ width: "100%",
25790
25820
  maxWidth: props.width ? props.width : 600,
25791
25821
  background: theme.palette.background.default,
25792
25822
  color: theme.palette.text.primary,
25793
- borderRight: 'none',
25794
- borderTopLeftRadius: '12px',
25795
- borderBottomLeftRadius: '12px',
25796
- }
25797
- }, 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 })] }) }));
25823
+ borderRight: "none",
25824
+ borderTopLeftRadius: "12px",
25825
+ borderBottomLeftRadius: "12px",
25826
+ },
25827
+ }, 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 })] }) }));
25798
25828
  };
25799
25829
 
25800
25830
  const LoadingComponent = (props) => {
@@ -25853,60 +25883,49 @@ const _HistorialDrawer = (props) => {
25853
25883
  const HistorialDrawer = (props) => {
25854
25884
  const [open, setOpen] = useState(false);
25855
25885
  const handleDrawer = useCallback(() => {
25856
- setOpen(prevState => !prevState);
25886
+ setOpen((prevState) => !prevState);
25857
25887
  }, []);
25858
25888
  // ===== || KEYDOWN || ===== //
25859
25889
  const handleKeyPress = useCallback((event) => {
25860
- if (event.ctrlKey && event.shiftKey && event.key === 'H') {
25890
+ if (event.ctrlKey && event.shiftKey && event.key === "H") {
25861
25891
  event.preventDefault();
25862
25892
  handleDrawer();
25863
25893
  }
25864
25894
  }, [handleDrawer]);
25865
25895
  useEffect(() => {
25866
- document.addEventListener('keydown', handleKeyPress);
25896
+ document.addEventListener("keydown", handleKeyPress);
25867
25897
  return () => {
25868
- document.removeEventListener('keydown', handleKeyPress);
25898
+ document.removeEventListener("keydown", handleKeyPress);
25869
25899
  };
25870
25900
  }, [handleKeyPress]);
25871
- return (jsxs(Fragment, { children: [jsx(Tooltip, { title: 'Historial', children: jsx(IconButton, { color: 'primary', onClick: handleDrawer, sx: {
25872
- position: 'absolute',
25901
+ return (jsxs(Fragment, { children: [jsx(Tooltip, { title: "Historial", children: jsx(IconButton, { color: "primary", onClick: handleDrawer, sx: {
25902
+ position: "absolute",
25873
25903
  right: 0,
25874
25904
  }, ...props.iconButtonProps, children: jsx(HistoryIcon, {}) }) }), jsx(_HistorialDrawer, { open: open, handleDrawer: handleDrawer, endpoint: props.endpoint })] }));
25875
25905
  };
25876
25906
 
25877
- const buildListItems = (content) => {
25878
- const items = [];
25879
- const loop = (content, error_title) => {
25880
- if (Array.isArray(content)) {
25881
- items.push({ title: error_title ? (error_title.charAt(0).toUpperCase() + error_title.slice(1)).split('_').join(' ') : 'N/A', content: content.join(', ') });
25882
- }
25883
- else {
25884
- Object.keys(content).map((row_error) => {
25885
- loop(content[row_error], row_error);
25886
- });
25887
- }
25888
- };
25889
- loop(content);
25890
- return items;
25891
- };
25892
25907
  const RowErrors = (props) => {
25893
25908
  return (jsx(List$1, { subheader: jsx(ListSubheader, { sx: {
25894
25909
  bgcolor: red[50],
25895
25910
  color: red[800],
25896
- fontWeight: 'bold',
25897
- borderRadius: '12px',
25898
- lineHeight: '40px'
25911
+ fontWeight: "bold",
25912
+ borderRadius: "12px",
25913
+ lineHeight: "40px",
25899
25914
  }, children: `Hilera ${props.row}` }), sx: {
25900
25915
  bgcolor: red[50],
25901
- borderRadius: '12px',
25902
- }, children: buildListItems(props.data[props.row]).map((item) => {
25916
+ borderRadius: "12px",
25917
+ }, children: props.data.map((item) => {
25918
+ const pre_name = item.name.split(".").at(-1);
25919
+ const name = (pre_name.charAt(0).toUpperCase() + pre_name.slice(1))
25920
+ .split("_")
25921
+ .join(" ");
25903
25922
  return (jsx(ListItem$1, { sx: {
25904
- py: 0
25905
- }, children: jsx(ListItemText, { primary: jsxs(Box, { children: [jsx(Typography$1, { variant: 'caption', pr: 0.5, sx: {
25923
+ py: 0,
25924
+ }, children: jsx(ListItemText, { primary: jsxs(Box, { children: [jsx(Typography$1, { variant: "caption", pr: 0.5, sx: {
25906
25925
  color: red[800],
25907
- }, children: `${item.title}:` }), jsx(Typography$1, { variant: 'caption', sx: {
25926
+ }, children: `${name}:` }), jsx(Typography$1, { variant: "caption", sx: {
25908
25927
  color: red[800],
25909
- }, children: item.content })] }) }) }));
25928
+ }, children: item.reason.join(", ") })] }) }) }));
25910
25929
  }) }));
25911
25930
  };
25912
25931
 
@@ -25914,14 +25933,14 @@ const FileBox = (props) => {
25914
25933
  return (jsxs(Box, { bgcolor: grey[200], borderRadius: '12px', p: 2, display: 'flex', children: [jsx(Box, { flexGrow: 0.8, display: 'flex', justifyContent: 'left', alignItems: 'center', children: jsx(Typography$1, { fontWeight: 'bold', children: props.file.name.split('.')[0] }) }), jsx(Box, { flexGrow: 0.2, display: 'flex', justifyContent: 'right', alignItems: 'center', children: props.loadingRemove ? (jsx(CircularProgress, { size: '18px' })) : (jsx(Tooltip, { title: 'Remove', children: jsx(IconButton, { color: 'error', sx: { p: 0 }, onClick: props.handleRemove, children: jsx(DeleteIcon, {}) }) })) })] }));
25915
25934
  };
25916
25935
 
25917
- const VisuallyHiddenInput = styled$1('input')({
25918
- clipPath: 'inset(50%)',
25936
+ const VisuallyHiddenInput = styled$1("input")({
25937
+ clipPath: "inset(50%)",
25919
25938
  height: 1,
25920
- overflow: 'hidden',
25921
- position: 'absolute',
25939
+ overflow: "hidden",
25940
+ position: "absolute",
25922
25941
  bottom: 0,
25923
25942
  left: 0,
25924
- whiteSpace: 'nowrap',
25943
+ whiteSpace: "nowrap",
25925
25944
  width: 1,
25926
25945
  });
25927
25946
  const FileUploadBox = (props) => {
@@ -25932,68 +25951,78 @@ const FileUploadBox = (props) => {
25932
25951
  const [removerCSV, { isLoading: removerLoading }] = api.useRemoverCSVMutation();
25933
25952
  const Dropzone = ({ onChange, value }) => {
25934
25953
  const onDrop = useCallback((acceptedFiles) => {
25935
- acceptedFiles.map(file => {
25936
- const data = formDataForm({ });
25937
- validarCSV({ endpoint: props.csvProps.endpoint || '', data: data, custom: props.csvProps.custom }).unwrap()
25954
+ acceptedFiles.map((file) => {
25955
+ const data = formDataForm({ submitData: { archivo: file } });
25956
+ validarCSV({
25957
+ endpoint: props.csvProps.endpoint || "",
25958
+ data: data,
25959
+ custom: props.csvProps.custom,
25960
+ })
25961
+ .unwrap()
25938
25962
  .then((response) => {
25939
- onChange('archivo' in response ? response.archivo : acceptedFiles[0]);
25963
+ onChange("archivo" in response ? response.archivo : acceptedFiles[0]);
25940
25964
  setFile(acceptedFiles[0]);
25941
25965
  props.setValid(true);
25942
25966
  })
25943
25967
  .catch((e) => {
25944
- const columnas_inv = get(e.data, 'columnas_invalidas');
25945
- if (columnas_inv)
25946
- notifications.show(columnas_inv, { severity: 'error' });
25968
+ if (e.data?.detail?.length > 0)
25969
+ notifications.show(e.data.detail[0], { severity: "error" });
25947
25970
  props.setValid(false);
25948
25971
  });
25949
25972
  });
25950
25973
  }, []);
25951
25974
  const onDropRejected = useCallback(() => {
25952
- notifications.show('Tipo de archivo inválido. Solo se aceptan CSVs.', { severity: 'error' });
25975
+ notifications.show("Tipo de archivo inválido. Solo se aceptan CSVs.", {
25976
+ severity: "error",
25977
+ });
25953
25978
  }, []);
25954
- const { getRootProps, getInputProps, isDragActive, } = useDropzone({
25979
+ const { getRootProps, getInputProps, isDragActive } = useDropzone({
25955
25980
  onDrop,
25956
25981
  onDropRejected,
25957
25982
  accept: {
25958
- 'text/csv': ['.csv'],
25959
- 'application/vnd.ms-excel': ['.csv'],
25983
+ "text/csv": [".csv"],
25984
+ "application/vnd.ms-excel": [".csv"],
25960
25985
  },
25961
25986
  maxFiles: 1,
25962
25987
  multiple: false,
25963
25988
  });
25964
25989
  const handleRemove = () => {
25965
- if (typeof value == 'number') {
25990
+ if (typeof value == "number") {
25966
25991
  removerCSV({ id: value });
25967
25992
  }
25968
25993
  onChange(null);
25969
25994
  setFile(null);
25970
25995
  };
25971
- return (jsx(Box$1, { width: 1, children: jsxs(Stack, { spacing: 2, children: [(!file && !isLoading) &&
25972
- 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: {
25973
- color: grey[800],
25974
- pr: 1
25975
- } }), jsx(Typography, { variant: 'body2', sx: { color: grey[800] }, children: isDragActive ?
25976
- 'Soltar archivo aquí.' :
25977
- 'Arrastra un archivo aquí o haz clic para seleccionar uno.' })] }), isLoading &&
25978
- jsx(Box$1, { children: jsx(LinearProgress, { sx: { height: 5 } }) }), file &&
25979
- (jsx(FileBox, { file: file, handleRemove: handleRemove, loadingRemove: removerLoading })), error && 'data' in error && Object.keys(error.data).map((row) => {
25980
- if (typeof error.data[row] == 'object') {
25981
- return (jsx(RowErrors, { row: row, data: error.data }, row));
25982
- }
25983
- return null;
25984
- })] }) }));
25996
+ const renderErrorRows = () => {
25997
+ if (!error?.data?.invalid_params)
25998
+ return;
25999
+ const rows = groupBy(error?.data?.invalid_params, function (e) {
26000
+ return e.name.split(".")[0];
26001
+ });
26002
+ if (!rows)
26003
+ return;
26004
+ return Object.entries(rows).map(([row, errors]) => (jsx(RowErrors, { row: row, data: errors }, row)));
26005
+ };
26006
+ 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
+ color: grey[800],
26008
+ pr: 1,
26009
+ } }), jsx(Typography, { variant: "body2", sx: { color: grey[800] }, children: isDragActive
26010
+ ? "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 })), renderErrorRows()] }) }));
25985
26012
  };
25986
26013
  return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value } }) => {
25987
- return (jsx(Dropzone, { onChange: onChange, value: value }));
26014
+ return jsx(Dropzone, { onChange: onChange, value: value });
25988
26015
  } }));
25989
26016
  };
25990
26017
 
25991
26018
  const schema = z.object({
25992
- archivo: z.any()
26019
+ archivo: z.any(),
25993
26020
  });
25994
26021
  const CSVUpload = (props) => {
25995
26022
  const api = useAPI();
25996
26023
  const notifications = useNotifications();
26024
+ const { pathname } = useLocation();
26025
+ const endpoint = props.data?.endpoint || pathname;
25997
26026
  const [valid, setValid] = useState(false);
25998
26027
  const defaultValues = {
25999
26028
  archivo: null,
@@ -26002,29 +26031,30 @@ const CSVUpload = (props) => {
26002
26031
  resolver: zodResolver(schema),
26003
26032
  defaultValues: defaultValues,
26004
26033
  });
26005
- const archivo = form.watch('archivo');
26034
+ const archivo = form.watch("archivo");
26006
26035
  const [subirCSV, { isLoading }] = api.useSubirCSVMutation();
26007
26036
  const handleClose = () => {
26008
26037
  props.drawerToggle();
26009
26038
  form.reset();
26010
26039
  };
26011
- const tag = useMemo(() => props.data?.endpoint.split('/').at(-1), [props.data?.endpoint]);
26040
+ const tag = useMemo(() => endpoint.split("/").at(-1), [endpoint]);
26012
26041
  const onSubmitHandler = (submitData) => {
26013
- const data = formDataForm(submitData);
26014
- subirCSV({ endpoint: props.data?.endpoint || '', tagType: tag, data: data, custom: props.data?.custom }).unwrap()
26042
+ const data = formDataForm({ submitData });
26043
+ subirCSV({ endpoint, tagType: tag, data, custom: props.data?.custom })
26044
+ .unwrap()
26015
26045
  .then((response) => {
26016
26046
  if (props.postAction)
26017
26047
  props.postAction(response);
26018
26048
  handleClose();
26019
- notifications.show('Archivo subido exitosamente!', { severity: 'success' });
26049
+ notifications.show("Archivo subido exitosamente!", { severity: "success" });
26020
26050
  })
26021
26051
  .catch(() => {
26022
- notifications.show('Error!', { severity: 'error' });
26052
+ notifications.show("Error!", { severity: "error" });
26023
26053
  });
26024
26054
  };
26025
26055
  const onError = (errors) => {
26026
26056
  console.log(errors);
26027
- notifications.show(`Error en: ${Object.keys(errors).join(', ')}!`, { severity: 'error' });
26057
+ notifications.show(`Error en: ${Object.keys(errors).join(", ")}!`, { severity: "error" });
26028
26058
  };
26029
26059
  const handleDownload = () => {
26030
26060
  const link = document.createElement("a");
@@ -26032,7 +26062,7 @@ const CSVUpload = (props) => {
26032
26062
  link.href = `/plantillas/plantilla_${tag}.xlsx`;
26033
26063
  link.click();
26034
26064
  };
26035
- return (jsxs(MainDrawer, { open: props.open, drawerToggle: handleClose, title: props.data?.title || 'CSV', slots: {
26065
+ return (jsxs(MainDrawer, { open: props.open, drawerToggle: handleClose, title: props.data?.title || "CSV", slots: {
26036
26066
  button: (jsx(SaveCancelButton, { slotProps: {
26037
26067
  saveBtn: {
26038
26068
  loading: isLoading,
@@ -26040,11 +26070,11 @@ const CSVUpload = (props) => {
26040
26070
  },
26041
26071
  cancelBtn: {
26042
26072
  onClick: handleClose,
26043
- }
26044
- } }))
26045
- }, children: [jsxs(Box, { px: 2, py: 3, bgcolor: grey[50], borderRadius: '12px', children: [jsx(Typography$1, { fontWeight: 'bold', children: "Archivo de Muestra" }), jsxs(Stack, { direction: 'row', spacing: 2, children: [jsx(Typography$1, { variant: 'body2', children: "Puede descargar el ejemplo adjunto y utilizarlo como punto de partida para su propio archivo." }), jsx(Button, { variant: 'contained', startIcon: jsx(DownloadIcon, {}), onClick: handleDownload, sx: {
26046
- minWidth: 120
26047
- }, children: "Descargar" })] })] }), jsx(Box, { id: 'formulario', component: 'form', width: 1, autoComplete: "off", noValidate: true, onSubmit: form.handleSubmit(onSubmitHandler, onError), children: jsx(FileUploadBox, { name: 'archivo', control: form.control, setValid: setValid, csvProps: props.data }) })] }));
26073
+ },
26074
+ } })),
26075
+ }, children: [jsxs(Box, { px: 2, py: 3, bgcolor: grey[50], borderRadius: "12px", children: [jsx(Typography$1, { fontWeight: "bold", children: "Archivo de Muestra" }), jsxs(Stack, { direction: "row", spacing: 2, children: [jsx(Typography$1, { variant: "body2", children: "Puede descargar el ejemplo adjunto y utilizarlo como punto de partida para su propio archivo." }), jsx(Button, { variant: "contained", startIcon: jsx(DownloadIcon, {}), onClick: handleDownload, sx: {
26076
+ minWidth: 120,
26077
+ }, children: "Descargar" })] })] }), jsx(Box, { id: "formulario", component: "form", width: 1, autoComplete: "off", noValidate: true, onSubmit: form.handleSubmit(onSubmitHandler, onError), children: jsx(FileUploadBox, { name: "archivo", control: form.control, setValid: setValid, csvProps: props.data }) })] }));
26048
26078
  };
26049
26079
 
26050
26080
  const mergeSettings = (baseSettings, mergingSettings) => {
@@ -26163,7 +26193,7 @@ async function manualCacheRefresh(api, id, dispatch, queryFulfilled, endpoints)
26163
26193
  const initialState$1 = {};
26164
26194
  // == crea el slice == //
26165
26195
  const snackProgress = createSlice({
26166
- name: 'snackProgress',
26196
+ name: "snackProgress",
26167
26197
  initialState: initialState$1,
26168
26198
  // declarar acciones que se le pueden hacer a esta sección de la tienda
26169
26199
  reducers: {
@@ -26179,7 +26209,7 @@ const snackProgress = createSlice({
26179
26209
  closeProgressSnack(state, action) {
26180
26210
  return omit(state, action.payload);
26181
26211
  },
26182
- }
26212
+ },
26183
26213
  });
26184
26214
  // exportar acciones
26185
26215
  const { openProgressSnack, updateProgressSnackData, closeProgressSnack } = snackProgress.actions;
@@ -26205,12 +26235,14 @@ const { changeTitle, } = settings.actions;
26205
26235
  var header = settings.reducer;
26206
26236
 
26207
26237
  const ControlledDropdown = (props) => {
26208
- const [inputValue, setInputValue] = useState('');
26238
+ const [inputValue, setInputValue] = useState("");
26209
26239
  const [options, setOptions] = useState(props.extraProps?.options ? props.extraProps?.options : []);
26210
26240
  const args = useMemo(() => {
26211
26241
  if (!props.extraProps?.queryArgs)
26212
26242
  return undefined;
26213
- return mergeSettings(props.extraProps?.queryArgs, { filters: { nombre__icontains: inputValue } });
26243
+ return mergeSettings(props.extraProps?.queryArgs, {
26244
+ filters: { nombre__icontains: inputValue },
26245
+ });
26214
26246
  }, [inputValue, props.extraProps?.queryArgs]);
26215
26247
  const api = useAPI();
26216
26248
  const [getOpciones, { isLoading, isFetching, isError }] = api.useLazyGetComoOpcionesQuery();
@@ -26223,7 +26255,8 @@ const ControlledDropdown = (props) => {
26223
26255
  };
26224
26256
  const handleSearch = useCallback(debounce((args, callback) => {
26225
26257
  setOptions([]);
26226
- getOpciones(args).unwrap()
26258
+ getOpciones(args)
26259
+ .unwrap()
26227
26260
  .then(callback)
26228
26261
  .catch(() => {
26229
26262
  //
@@ -26236,7 +26269,7 @@ const ControlledDropdown = (props) => {
26236
26269
  });
26237
26270
  }
26238
26271
  }, [args, handleSearch, open]);
26239
- return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { value, onChange, }, fieldState: { error }, }) => {
26272
+ return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { value, onChange }, fieldState: { error } }) => {
26240
26273
  const handleChange = (_event, newValue) => {
26241
26274
  onChange(newValue);
26242
26275
  };
@@ -26244,10 +26277,10 @@ const ControlledDropdown = (props) => {
26244
26277
  setInputValue(newInputValue);
26245
26278
  }, isOptionEqualToValue: (option, value) => {
26246
26279
  return option.value === value.value;
26247
- }, 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: {
26280
+ }, 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: {
26248
26281
  input: {
26249
26282
  ...params.InputProps,
26250
- endAdornment: (jsxs(Fragment, { children: [(isLoading || isFetching) ? jsx(CircularProgress, { color: "inherit", size: 20 }) : null, params.InputProps.endAdornment] })),
26283
+ endAdornment: (jsxs(Fragment, { children: [isLoading || isFetching ? (jsx(CircularProgress, { color: "inherit", size: 20 })) : null, params.InputProps.endAdornment] })),
26251
26284
  },
26252
26285
  } })), ...props.fieldProps }));
26253
26286
  } }));
@@ -26276,13 +26309,15 @@ const ControlledPhoneNumber = (props) => {
26276
26309
  };
26277
26310
 
26278
26311
  const ControlledSelect = (props) => {
26279
- const [inputValue, setInputValue] = useState('');
26312
+ const [inputValue, setInputValue] = useState("");
26280
26313
  const [options, setOptions] = useState(props.extraProps?.options ? props.extraProps?.options : []);
26281
26314
  const [selectedAll, setSelectedAll] = useState(false);
26282
26315
  const args = useMemo(() => {
26283
26316
  if (!props.extraProps?.queryArgs)
26284
26317
  return undefined;
26285
- return mergeSettings(props.extraProps?.queryArgs, { filters: { nombre__icontains: inputValue } });
26318
+ return mergeSettings(props.extraProps?.queryArgs, {
26319
+ filters: { nombre__icontains: inputValue },
26320
+ });
26286
26321
  }, [inputValue, props.extraProps?.queryArgs]);
26287
26322
  const api = useAPI();
26288
26323
  const [getOpciones, { isLoading, isFetching, isError }] = api.useLazyGetComoOpcionesQuery();
@@ -26297,7 +26332,8 @@ const ControlledSelect = (props) => {
26297
26332
  };
26298
26333
  const handleSearch = useCallback(debounce((args, callback) => {
26299
26334
  setOptions([]);
26300
- getOpciones(args).unwrap()
26335
+ getOpciones(args)
26336
+ .unwrap()
26301
26337
  .then(callback)
26302
26338
  .catch(() => {
26303
26339
  //
@@ -26306,12 +26342,14 @@ const ControlledSelect = (props) => {
26306
26342
  useEffect(() => {
26307
26343
  if (args && open)
26308
26344
  handleSearch(args, (filteredOptions) => {
26309
- setOptions([{ value: 'all', label: 'All' }].concat(filteredOptions));
26345
+ setOptions([{ value: "all", label: "All" }].concat(filteredOptions));
26310
26346
  });
26311
26347
  }, [args, handleSearch, open]);
26312
26348
  return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { value, onChange }, fieldState: { error } }) => {
26313
26349
  const handleChange = (_event, newValue) => {
26314
- if (find(newValue, function (val) { return val.value == 'all'; })) {
26350
+ if (find(newValue, function (val) {
26351
+ return val.value == "all";
26352
+ })) {
26315
26353
  if (selectedAll) {
26316
26354
  setSelectedAll(false);
26317
26355
  onChange(newValue.slice(1));
@@ -26335,10 +26373,10 @@ const ControlledSelect = (props) => {
26335
26373
  setInputValue(newInputValue);
26336
26374
  }, isOptionEqualToValue: (option, value) => {
26337
26375
  return option.value === value.value;
26338
- }, 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
+ }, 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: {
26339
26377
  input: {
26340
26378
  ...params.InputProps,
26341
- endAdornment: (jsxs(Fragment, { children: [(isLoading || isFetching) ? jsx(CircularProgress, { color: "inherit", size: 20 }) : null, params.InputProps.endAdornment] })),
26379
+ endAdornment: (jsxs(Fragment, { children: [isLoading || isFetching ? (jsx(CircularProgress, { color: "inherit", size: 20 })) : null, params.InputProps.endAdornment] })),
26342
26380
  },
26343
26381
  } })), ...props.fieldProps, renderOption: (props, option, { selected }) => {
26344
26382
  const { key, ...optionProps } = props;
@@ -26346,7 +26384,7 @@ const ControlledSelect = (props) => {
26346
26384
  } }));
26347
26385
  } }));
26348
26386
  };
26349
- ControlledSelect.displayName = 'ControlledSelect';
26387
+ ControlledSelect.displayName = "ControlledSelect";
26350
26388
 
26351
26389
  // ==============================|| DESLIZADOR CONTROLADO ||============================== //
26352
26390
  const ControlledSlider$1 = (props) => {
@@ -26379,19 +26417,27 @@ const ControlledText = (props) => {
26379
26417
  };
26380
26418
  return (
26381
26419
  // controlador
26382
- jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error }, }) => {
26420
+ jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error } }) => {
26383
26421
  return (
26384
26422
  // campo de texto
26385
- 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: {
26423
+ jsx(TextField, { variant: "outlined", size: "small", id: props.name, label: props.label, value: value ? value.toString() : "", onChange: onChange, error: !!error, type: props.extraProps?.password
26424
+ ? showPassword
26425
+ ? "text"
26426
+ : "password"
26427
+ : "text", helperText: error
26428
+ ? error.message
26429
+ : props.fieldProps?.helperText
26430
+ ? props.fieldProps.helperText
26431
+ : " ", fullWidth: true, slotProps: {
26386
26432
  input: {
26387
26433
  // ícono de mostar u ocultar si es campo de contarseña
26388
- 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: {
26389
- color: 'secondary.darker',
26390
- '&:hover': {
26391
- color: 'secondary.main',
26392
- }
26393
- }, children: showPassword ? jsx(Visibility, {}) : jsx(VisibilityOff, {}) }) }))
26394
- }
26434
+ 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: {
26435
+ color: "secondary.darker",
26436
+ "&:hover": {
26437
+ color: "secondary.main",
26438
+ },
26439
+ }, children: showPassword ? jsx(Visibility, {}) : jsx(VisibilityOff, {}) }) })),
26440
+ },
26395
26441
  }, ...props.fieldProps }));
26396
26442
  } }));
26397
26443
  };
@@ -26451,16 +26497,15 @@ const ControlledTimePicker = (props) => {
26451
26497
  const filedProps = useMemo(() => {
26452
26498
  const defaultProps = {
26453
26499
  slotProps: {
26454
- textField: { size: 'small' },
26455
- field: { clearable: true, },
26456
- }
26500
+ textField: { size: "small" },
26501
+ field: { clearable: true },
26502
+ },
26457
26503
  };
26458
26504
  return merge$1({}, defaultProps, props.fieldProps);
26459
26505
  }, [props.fieldProps]);
26460
- return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error }, }) => {
26461
- const val = convertValueToDayjs(value, 'time');
26462
- 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 &&
26463
- jsx(FormHelperText$1, { error: !!error, children: error ? error.message : ' ' })] }));
26506
+ return (jsx(Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, fieldState: { error } }) => {
26507
+ const val = convertValueToDayjs(value, "time");
26508
+ 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 : " " }))] }));
26464
26509
  } }));
26465
26510
  };
26466
26511
 
@@ -26480,22 +26525,23 @@ const ControlledSlider = (props) => {
26480
26525
 
26481
26526
  const DeleteConfirmationDialog = (props) => {
26482
26527
  const notifications = useNotifications();
26483
- const pathname = 'temp';
26484
- const id = useMemo(() => props.id || pathname.split('/').at(-1), [pathname, props.id]);
26528
+ const pathname = "temp";
26529
+ const id = useMemo(() => props.id || pathname.split("/").at(-1), [pathname, props.id]);
26485
26530
  const [mutation] = props.mutation();
26486
26531
  const schema = object({ confirmation: string() });
26487
26532
  const form = useForm({
26488
26533
  resolver: zodResolver(schema),
26489
- defaultValues: { confirmation: '' },
26534
+ defaultValues: { confirmation: "" },
26490
26535
  });
26491
26536
  const handleClose = () => {
26492
26537
  props.handleClose();
26493
26538
  form.reset();
26494
26539
  };
26495
- const confirmation = form.watch('confirmation').toUpperCase();
26496
- const disabled = useMemo(() => confirmation != 'ELIMINAR', [confirmation]);
26540
+ const confirmation = form.watch("confirmation").toUpperCase();
26541
+ const disabled = useMemo(() => confirmation != "ELIMINAR", [confirmation]);
26497
26542
  const onSubmitHandler = () => {
26498
- mutation({ id: id }).unwrap()
26543
+ mutation({ id: id })
26544
+ .unwrap()
26499
26545
  .then(() => {
26500
26546
  if (props.disableNavBack) {
26501
26547
  handleClose();
@@ -26504,25 +26550,25 @@ const DeleteConfirmationDialog = (props) => {
26504
26550
  // props.navigate(-1);
26505
26551
  form.reset();
26506
26552
  }
26507
- notifications.show('Objeto removido exitosamente!', { severity: 'success' });
26553
+ notifications.show("Objeto removido exitosamente!", { severity: "success" });
26508
26554
  })
26509
26555
  .catch((error) => {
26510
26556
  console.log(error);
26511
- notifications.show('Error', { severity: 'error' });
26557
+ notifications.show("Error", { severity: "error" });
26512
26558
  });
26513
26559
  };
26514
26560
  const handleKeyDown = (event) => {
26515
- if (event.key === 'Enter' && !disabled)
26561
+ if (event.key === "Enter" && !disabled)
26516
26562
  onSubmitHandler();
26517
26563
  };
26518
- 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: {
26564
+ 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: {
26519
26565
  autoFocus: true,
26520
26566
  required: true,
26521
- margin: 'dense',
26567
+ margin: "dense",
26522
26568
  label: "Escribir 'ELIMINAR' para confirmar.",
26523
26569
  fullWidth: true,
26524
- variant: 'standard',
26525
- helperText: '',
26570
+ variant: "standard",
26571
+ helperText: "",
26526
26572
  onKeyDown: handleKeyDown,
26527
26573
  } }) })] }), jsxs(DialogActions$1, { children: [jsx(Button, { onClick: handleClose, children: "Cancelar" }), jsx(Button, { onClick: onSubmitHandler, disabled: disabled, children: "Eliminar" })] })] }));
26528
26574
  };
@@ -26537,23 +26583,23 @@ const DeleteButton = (props) => {
26537
26583
  };
26538
26584
  // ===== || KEYDOWN || ===== //
26539
26585
  const handleKeyPress = useCallback((event) => {
26540
- if (event.ctrlKey && event.key === 'd') {
26586
+ if (event.ctrlKey && event.key === "d") {
26541
26587
  event.preventDefault();
26542
26588
  handleClick();
26543
26589
  }
26544
26590
  }, [handleClick]);
26545
26591
  useEffect(() => {
26546
- document.addEventListener('keydown', handleKeyPress);
26592
+ document.addEventListener("keydown", handleKeyPress);
26547
26593
  return () => {
26548
- document.removeEventListener('keydown', handleKeyPress);
26594
+ document.removeEventListener("keydown", handleKeyPress);
26549
26595
  };
26550
26596
  }, [handleKeyPress]);
26551
26597
  return (jsxs(Fragment, { children: [jsx(NormalOrIcon, { buttonProps: {
26552
- color: 'error',
26553
- variant: 'contained',
26598
+ color: "error",
26599
+ variant: "contained",
26554
26600
  startIcon: jsx(DeleteIcon, {}),
26555
26601
  onClick: handleClick,
26556
- children: 'Eliminar',
26602
+ children: "Eliminar",
26557
26603
  } }), jsx(DeleteConfirmationDialog, { open: open, handleClose: handleClose, ...props })] }));
26558
26604
  };
26559
26605
 
@@ -26564,115 +26610,114 @@ const SaveCancelButton = (props) => {
26564
26610
  };
26565
26611
  // ===== || KEYDOWN || ===== //
26566
26612
  const handleKeyPress = useCallback((event) => {
26567
- if (event.key === 'Escape') {
26613
+ if (event.key === "Escape") {
26568
26614
  event.preventDefault();
26569
26615
  handleCancel();
26570
26616
  }
26571
26617
  }, [handleCancel]);
26572
26618
  useEffect(() => {
26573
- document.addEventListener('keydown', handleKeyPress);
26619
+ document.addEventListener("keydown", handleKeyPress);
26574
26620
  return () => {
26575
- document.removeEventListener('keydown', handleKeyPress);
26621
+ document.removeEventListener("keydown", handleKeyPress);
26576
26622
  };
26577
26623
  }, [handleKeyPress]);
26578
26624
  return (jsxs(ButtonGroup, { sx: {
26579
26625
  maxHeight: 40,
26580
26626
  }, ...props.slotProps?.buttonGroup, children: [jsx(NormalOrIcon, { buttonProps: {
26581
- color: 'error',
26582
- variant: 'contained',
26627
+ color: "error",
26628
+ variant: "contained",
26583
26629
  startIcon: jsx(CancelIcon, {}),
26584
26630
  onClick: handleCancel,
26585
26631
  sx: { height: 1 },
26586
- children: 'Cancelar',
26587
- ...props.slotProps?.cancelBtn
26632
+ children: "Cancelar",
26633
+ ...props.slotProps?.cancelBtn,
26588
26634
  } }), jsx(NormalOrIcon, { buttonProps: {
26589
- color: 'secondary',
26590
- variant: 'contained',
26635
+ color: "secondary",
26636
+ variant: "contained",
26591
26637
  startIcon: jsx(SaveIcon, {}),
26592
- type: 'submit',
26593
- form: 'formulario',
26638
+ type: "submit",
26639
+ form: "formulario",
26594
26640
  sx: { height: 1 },
26595
- children: 'Guardar',
26596
- ...props.slotProps?.saveBtn
26641
+ children: "Guardar",
26642
+ ...props.slotProps?.saveBtn,
26597
26643
  } })] }));
26598
26644
  };
26599
26645
 
26600
26646
  const CreateButtonBase = (props) => {
26601
26647
  // ===== || KEYDOWN || ===== //
26602
26648
  const handleKeyPress = useCallback((event) => {
26603
- if (event.ctrlKey && event.key === 'e') {
26649
+ if (event.ctrlKey && event.key === "e") {
26604
26650
  event.preventDefault();
26605
26651
  props.handleClick();
26606
26652
  }
26607
26653
  }, []);
26608
26654
  useEffect(() => {
26609
- document.addEventListener('keydown', handleKeyPress);
26655
+ document.addEventListener("keydown", handleKeyPress);
26610
26656
  return () => {
26611
- document.removeEventListener('keydown', handleKeyPress);
26657
+ document.removeEventListener("keydown", handleKeyPress);
26612
26658
  };
26613
26659
  }, [handleKeyPress]);
26614
26660
  return (jsx(NormalOrIcon, { buttonProps: {
26615
- id: 'create-button',
26616
- variant: 'contained',
26617
- color: 'secondary',
26661
+ id: "create-button",
26662
+ variant: "contained",
26663
+ color: "secondary",
26618
26664
  startIcon: jsx(AddIcon, {}),
26619
26665
  onClick: props.handleClick,
26620
- 'aria-controls': props.open ? 'create-menu' : undefined,
26621
- 'aria-haspopup': true,
26622
- 'aria-expanded': props.open ? 'true' : undefined,
26666
+ "aria-controls": props.open ? "create-menu" : undefined,
26667
+ "aria-haspopup": true,
26668
+ "aria-expanded": props.open ? "true" : undefined,
26623
26669
  endIcon: jsx(KeyboardArrowDownIcon, {}),
26624
- children: 'Crear',
26670
+ children: "Crear",
26625
26671
  ...props.buttonProps,
26626
26672
  } }));
26627
26673
  };
26628
26674
 
26629
26675
  const MenuItemWithLoading = (props) => {
26630
26676
  return (jsxs(MenuItem, { onClick: props.handleClick, sx: {
26631
- position: 'relative',
26632
- }, disabled: props.disabled || props.isLoading, children: [props.children, props.isLoading &&
26633
- jsx(Box, { position: 'absolute', width: 1, top: '50%', left: '50%', sx: {
26634
- transform: 'translate(-50%, -50%)',
26635
- }, px: 2, children: jsx(LinearProgress$1, {}) })] }));
26677
+ position: "relative",
26678
+ }, disabled: props.disabled || props.isLoading, children: [props.children, props.isLoading && (jsx(Box, { position: "absolute", width: 1, top: "50%", left: "50%", sx: {
26679
+ transform: "translate(-50%, -50%)",
26680
+ }, px: 2, children: jsx(LinearProgress$1, {}) }))] }));
26636
26681
  };
26637
26682
 
26638
26683
  const StyledMenu = styled$1((props) => (jsx(Menu, { elevation: 0, anchorOrigin: {
26639
- vertical: 'bottom',
26640
- horizontal: 'right',
26684
+ vertical: "bottom",
26685
+ horizontal: "right",
26641
26686
  }, transformOrigin: {
26642
- vertical: 'top',
26643
- horizontal: 'right',
26687
+ vertical: "top",
26688
+ horizontal: "right",
26644
26689
  }, ...props })))(({ theme }) => ({
26645
- '& .MuiPaper-root': {
26690
+ "& .MuiPaper-root": {
26646
26691
  borderRadius: 6,
26647
26692
  marginTop: theme.spacing(1),
26648
26693
  minWidth: 180,
26649
- color: 'rgb(55, 65, 81)',
26650
- 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',
26651
- '& .MuiMenu-list': {
26652
- padding: '4px 0',
26694
+ color: "rgb(55, 65, 81)",
26695
+ backgroundColor: theme.palette.primary.lighter,
26696
+ 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",
26697
+ "& .MuiMenu-list": {
26698
+ padding: "4px 0",
26653
26699
  },
26654
- '& .MuiMenuItem-root': {
26655
- '& .MuiSvgIcon-root': {
26656
- fontSize: 18,
26657
- color: theme.palette.text.secondary,
26658
- marginRight: theme.spacing(1.5),
26659
- },
26660
- '&:active': {
26661
- backgroundColor: alpha$1(theme.palette.primary.main, theme.palette.action.selectedOpacity),
26700
+ "& .MuiMenuItem-root": {
26701
+ borderRadius: 12,
26702
+ "&:hover": {
26703
+ backgroundColor: theme.palette.primary.main,
26704
+ color: "white",
26705
+ "& .MuiSvgIcon-root": {
26706
+ color: "white",
26707
+ },
26662
26708
  },
26663
26709
  },
26664
- ...theme.applyStyles('dark', {
26710
+ ...theme.applyStyles("dark", {
26665
26711
  color: theme.palette.grey[300],
26666
26712
  }),
26667
26713
  },
26668
26714
  }));
26669
26715
 
26670
26716
  const CreateButtonWithMenuOptions = (props) => {
26671
- // const permission = useHasPermission_v2(`${props.permission}.add`);
26672
26717
  const [anchorEl, setAnchorEl] = useState(null);
26673
26718
  const open = Boolean(anchorEl);
26674
26719
  const handleClick = () => {
26675
- setAnchorEl(document.getElementById('create-button'));
26720
+ setAnchorEl(document.getElementById("create-button"));
26676
26721
  };
26677
26722
  const handleClose = () => {
26678
26723
  setAnchorEl(null);
@@ -26684,21 +26729,24 @@ const CreateButtonWithMenuOptions = (props) => {
26684
26729
  const handleToggleClose = () => {
26685
26730
  setCSV({ open: false });
26686
26731
  };
26687
- // if (!permission) return null;
26688
- return (jsxs(Fragment, { children: [jsx(CreateButtonBase, { open: open, handleClick: handleClick }), jsxs(StyledMenu, { id: 'create-menu', MenuListProps: {
26689
- 'aria-labelledby': 'create-menu-button',
26690
- }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable && ([
26691
- {
26692
- title: 'CSV',
26693
- endpoint: props.pathname,
26694
- },
26695
- ...(props.csv_upload.extraOptions || [])
26696
- ].map((option, index) => {
26697
- return (jsx(MenuItem, { onClick: () => {
26698
- handleToggleOpen(option);
26699
- handleClose();
26700
- }, disableRipple: true, children: option.title }, index));
26701
- })), jsx(MenuItem, { onClick: () => {
26732
+ if (!props.permission)
26733
+ return null;
26734
+ return (jsxs(Fragment, { children: [jsx(CreateButtonBase, { open: open, handleClick: handleClick }), jsxs(StyledMenu, { id: "create-menu", MenuListProps: {
26735
+ "aria-labelledby": "create-menu-button",
26736
+ }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable &&
26737
+ [
26738
+ {
26739
+ title: "CSV",
26740
+ endpoint: props.pathname,
26741
+ icon: AttachFileIcon,
26742
+ },
26743
+ ...(props.csv_upload.extraOptions || []),
26744
+ ].map((option, index) => {
26745
+ return (jsxs(MenuItem, { onClick: () => {
26746
+ handleToggleOpen(option);
26747
+ handleClose();
26748
+ }, disableRipple: true, children: [option.icon && (jsx(ListItemIcon, { children: jsx(AttachFileIcon, {}) })), option.title] }, index));
26749
+ }), jsx(MenuItem, { onClick: () => {
26702
26750
  props.navigate(`crear`);
26703
26751
  handleClose();
26704
26752
  }, disableRipple: true, children: "Manual" })] }), props.csv_upload?.enable && (jsx(CSVUpload, { open: csv.open, drawerToggle: handleToggleClose, data: csv.data }))] }));
@@ -26711,12 +26759,12 @@ const ButtonWithDrawer = (props) => {
26711
26759
  let setFunc = setInternalOpen;
26712
26760
  if (props.setOpen)
26713
26761
  setFunc = props.setOpen;
26714
- setFunc(prevState => !prevState);
26762
+ setFunc((prevState) => !prevState);
26715
26763
  };
26716
26764
  const configuracionBase = {
26717
- variant: 'contained',
26765
+ variant: "contained",
26718
26766
  fullWidth: true,
26719
- color: 'primary'
26767
+ color: "primary",
26720
26768
  };
26721
26769
  const renderButton = () => {
26722
26770
  if (props.slots.button)
@@ -26725,7 +26773,10 @@ const ButtonWithDrawer = (props) => {
26725
26773
  };
26726
26774
  return (jsxs(Fragment, { children: [renderButton(), jsx(MainDrawer, { open: open, drawerToggle: handleClick, title: props.slots.drawer.title, slots: {
26727
26775
  button: props.slots.drawer.button,
26728
- }, children: props.slots.drawer.content({ ...props.slotProps?.drawer?.content, handleClose: handleClick }) })] }));
26776
+ }, children: props.slots.drawer.content({
26777
+ ...props.slotProps?.drawer?.content,
26778
+ handleClose: handleClick,
26779
+ }) })] }));
26729
26780
  };
26730
26781
 
26731
26782
  const StatusBadge = (props) => {
@@ -26914,16 +26965,16 @@ const UncontrolledText = (props) => {
26914
26965
  const handleShowPassword = () => {
26915
26966
  setShowPassword(!showPassword);
26916
26967
  };
26917
- 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: {
26968
+ 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: {
26918
26969
  input: {
26919
26970
  // ícono de mostar u ocultar si es campo de contarseña
26920
- 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: {
26921
- color: 'secondary.darker',
26922
- '&:hover': {
26923
- color: 'secondary.main',
26924
- }
26925
- }, children: showPassword ? jsx(Visibility, {}) : jsx(VisibilityOff, {}) }) }))
26926
- }
26971
+ 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: {
26972
+ color: "secondary.darker",
26973
+ "&:hover": {
26974
+ color: "secondary.main",
26975
+ },
26976
+ }, children: showPassword ? jsx(Visibility, {}) : jsx(VisibilityOff, {}) }) })),
26977
+ },
26927
26978
  }, ...props.textFieldProps }));
26928
26979
  };
26929
26980
 
@@ -26995,9 +27046,8 @@ const generateSchema = (columns, columnsFilter, id) => {
26995
27046
  };
26996
27047
 
26997
27048
  const FiltersPopper = (props) => {
26998
- // const params:any = useLoaderData();
26999
- // const id = params?.id;
27000
- const id = 1;
27049
+ const params = useLoaderData();
27050
+ const id = params?.id;
27001
27051
  const columns = useGridApiContext().current.getAllColumns();
27002
27052
  const [schema, defaultValues] = useMemo(() => generateSchema(columns, props.columnsFilter, id), [columns, id, props.columnsFilter]);
27003
27053
  const form = useForm({
@@ -27007,14 +27057,16 @@ const FiltersPopper = (props) => {
27007
27057
  const [dirty, setDirty] = useState(false);
27008
27058
  useEffect(() => {
27009
27059
  if (props.filters.filterModel.items) {
27010
- if (!every(props.filters.filterModel.items, function (_value, key) { return includes$1(props.protectFilters, key); })) {
27060
+ if (!every(props.filters.filterModel.items, function (_value, key) {
27061
+ return includes$1(props.protectFilters, key);
27062
+ })) {
27011
27063
  setDirty(true);
27012
27064
  }
27013
27065
  form.reset(merge$2({}, defaultValues, props.filters.filterModel.items));
27014
27066
  }
27015
27067
  }, [defaultValues, props.filters.filterModel.items, form, props.protectFilters]);
27016
27068
  const handleClose = (event) => {
27017
- if (props.menuRef.current && event?.target.tagName == 'BODY')
27069
+ if (props.menuRef.current && event?.target.tagName == "BODY")
27018
27070
  return;
27019
27071
  props.setOpen(false);
27020
27072
  };
@@ -27022,9 +27074,9 @@ const FiltersPopper = (props) => {
27022
27074
  setDirty(false);
27023
27075
  props.filters.setFilterModel(produce((draft) => {
27024
27076
  forEach$1(props.filters.filterModel.items, function (_value, key) {
27025
- if (['ordering', 'search'].concat(props.protectFilters || []).includes(key))
27077
+ if (["ordering", "search"].concat(props.protectFilters || []).includes(key))
27026
27078
  return;
27027
- delete draft['items'][key];
27079
+ delete draft["items"][key];
27028
27080
  });
27029
27081
  }));
27030
27082
  form.reset(defaultValues);
@@ -27032,135 +27084,142 @@ const FiltersPopper = (props) => {
27032
27084
  };
27033
27085
  const onSubmitHandler = (submitData) => {
27034
27086
  props.filters.setFilterModel(produce((draft) => {
27035
- draft['items'] = { ...draft['items'], ...submitData };
27087
+ draft["items"] = { ...draft["items"], ...submitData };
27036
27088
  }));
27037
27089
  handleClose();
27038
27090
  };
27039
27091
  const onError = (errors) => {
27040
27092
  console.log(errors);
27041
27093
  };
27042
- 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) => {
27094
+ 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) => {
27043
27095
  if (column.input)
27044
- 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) => {
27045
- let addedProps = { control: form.control };
27046
- if (column.type == 'number') {
27096
+ 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 ||
27097
+ column.headerName }) }), jsx(Grid, { size: 12, children: Children.map(column.input, (child) => {
27098
+ let addedProps = {
27099
+ control: form.control,
27100
+ };
27101
+ if (column.type == "number") {
27047
27102
  addedProps = {
27048
27103
  ...addedProps,
27049
27104
  extraProps: {
27050
- ...child.props.extraProps,
27105
+ ...child.props
27106
+ .extraProps,
27051
27107
  getValue: form.getValues,
27052
27108
  setValue: form.setValue,
27053
- }
27109
+ },
27054
27110
  };
27055
27111
  }
27056
27112
  return cloneElement(child, {
27057
27113
  ...child.props,
27058
- ...addedProps
27114
+ ...addedProps,
27059
27115
  });
27060
27116
  }) })] }, index));
27061
27117
  return null;
27062
- }) }), 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" })] })] }) }) }) })) }) }));
27118
+ }) }), 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 ||
27119
+ props.disableQuickSearch) &&
27120
+ !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" })] })] }) }) }) })) }) }));
27063
27121
  };
27064
27122
 
27065
27123
  const FiltersButton = (props) => {
27066
27124
  const [open, setOpen] = useState(false);
27067
27125
  const menuRef = useRef(null);
27068
27126
  const handleClick = () => {
27069
- setOpen(prevState => !prevState);
27127
+ setOpen((prevState) => !prevState);
27070
27128
  };
27071
27129
  const filterCount = useMemo(() => {
27072
27130
  return countBy(Object.entries(props.filters.filterModel.items), function (filter) {
27073
27131
  const key = filter[0];
27074
27132
  const value = filter[1];
27075
- if (key == 'ordering' || key == 'search')
27133
+ if (key == "ordering" || key == "search")
27076
27134
  return;
27077
- if (props.protectFilters && findIndex(props.protectFilters, function (x) { return x == key; }) > -1)
27135
+ if (props.protectFilters &&
27136
+ findIndex(props.protectFilters, function (x) {
27137
+ return x == key;
27138
+ }) > -1)
27078
27139
  return;
27079
27140
  return (isNumber(value) && value > 0) || !isEmpty$1(value) || isBoolean(value);
27080
27141
  }).true;
27081
- }, [
27082
- props.filters.filterModel.items, props.protectFilters
27083
- ]);
27142
+ }, [props.filters.filterModel.items, props.protectFilters]);
27084
27143
  // ===== || ABRIR CON CTRL + Shift + F || ===== //
27085
27144
  const handleKeyPress = useCallback((event) => {
27086
- if (event.ctrlKey && event.shiftKey && event.key === 'F') {
27145
+ if (event.ctrlKey && event.shiftKey && event.key === "F") {
27087
27146
  event.preventDefault();
27088
27147
  setOpen(true);
27089
27148
  }
27090
- else if (event.key === 'Escape' && open) {
27149
+ else if (event.key === "Escape" && open) {
27091
27150
  setOpen(false);
27092
27151
  }
27093
27152
  }, [open]);
27094
27153
  useEffect(() => {
27095
- document.addEventListener('keydown', handleKeyPress);
27154
+ document.addEventListener("keydown", handleKeyPress);
27096
27155
  return () => {
27097
- document.removeEventListener('keydown', handleKeyPress);
27156
+ document.removeEventListener("keydown", handleKeyPress);
27098
27157
  };
27099
27158
  }, [handleKeyPress]);
27100
- 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 => {
27101
- if (key.key == 'Escape')
27159
+ 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) => {
27160
+ if (key.key == "Escape")
27102
27161
  setOpen(false);
27103
- }, 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 })] }));
27162
+ }, 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 })] }));
27104
27163
  };
27105
27164
 
27106
27165
  const ExportCSV = (props) => {
27107
- // const endpoint = 'temp';
27108
- //
27109
- // const notifications = useNotifications();
27110
- // const [descargarCSV, {isLoading}] = ;
27166
+ const { pathname } = useLocation();
27167
+ const endpoint = props.slots?.endpoint || pathname;
27168
+ const notifications = useNotifications();
27169
+ const api = useAPI();
27170
+ const [descargarCSV, { isLoading }] = api.useLazyDescargarCSVQuery();
27111
27171
  const handleClick = () => {
27112
27172
  const extraItems = { variant: props.slots?.variant };
27113
27173
  if (props.rowSelectionModel.ids.size > 0)
27114
- extraItems[`${props.slots?.column_key || 'id'}__in`] = Array.from(props.rowSelectionModel.ids).join(',');
27115
- // const filters = merge(
27116
- // {},
27117
- // omit(props.filterModel, map(props.ignore?.filters, function (filter) {return `items.${filter}`}) || []),
27118
- // {items: extraItems}
27119
- // );
27120
- // descargarCSV({
27121
- // endpoint: endpoint, filterModel: filters, sortModel: props.sortModel, ignoreSort: props.ignore?.sort,
27122
- // }).unwrap()
27123
- // .then((response) => {
27124
- // const file = document.createElement("a");
27125
- // file.href = response.file
27126
- // file.download = response.filename
27127
- // file.click();
27128
- //
27129
- // notifications.show('CSV descargado!', {severity: 'success'});
27130
- // props.handleClick();
27131
- // })
27132
- // .catch((error) => {
27133
- // console.log(error)
27134
- // notifications.show('Error al descargar CSV.', {severity: 'error'});
27135
- // })
27174
+ extraItems[`${props.slots?.column_key || "id"}__in`] = Array.from(props.rowSelectionModel.ids).join(",");
27175
+ const filters = merge$2({}, omit(props.filterModel, map(props.ignore?.filters, function (filter) {
27176
+ return `items.${filter}`;
27177
+ }) || []), { items: extraItems });
27178
+ descargarCSV({
27179
+ endpoint: endpoint,
27180
+ filterModel: filters,
27181
+ sortModel: props.sortModel,
27182
+ ignoreSort: props.ignore?.sort,
27183
+ })
27184
+ .unwrap()
27185
+ .then((response) => {
27186
+ const file = document.createElement("a");
27187
+ file.href = response.file;
27188
+ file.download = response.filename;
27189
+ file.click();
27190
+ notifications.show("CSV descargado!", { severity: "success" });
27191
+ props.handleClick();
27192
+ })
27193
+ .catch((error) => {
27194
+ console.log(error);
27195
+ notifications.show("Error al descargar CSV.", { severity: "error" });
27196
+ });
27136
27197
  };
27137
- return (jsx(MenuItemWithLoading, { handleClick: handleClick, isLoading: false, disabled: props.disabledWithoutSelection && !props.rowSelectionModel.ids.size, children: props.slots?.title || 'Descargar como CSV' }, 'export-dg-csv'));
27198
+ return (jsx(MenuItemWithLoading, { handleClick: handleClick, isLoading: isLoading, disabled: props.disabledWithoutSelection && !props.rowSelectionModel.ids.size, children: props.slots?.title || "Descargar como CSV" }, "export-dg-csv"));
27138
27199
  };
27139
27200
 
27140
27201
  const ExportButton = (props) => {
27141
27202
  const [exportMenuOpen, setExportMenuOpen] = useState(false);
27142
27203
  const exportMenuTriggerRef = useRef(null);
27143
- 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: {
27204
+ 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: {
27144
27205
  list: {
27145
- 'aria-labelledby': 'export-menu-trigger',
27206
+ "aria-labelledby": "export-menu-trigger",
27146
27207
  },
27147
- }, children: [!props.csvProps?.hide &&
27148
- jsx(ExportCSV, { handleClick: () => setExportMenuOpen(false), filterModel: props.filterModel, sortModel: props.sortModel, rowSelectionModel: props.rowSelectionModel, slots: {
27149
- endpoint: props.csvProps?.endpoint
27150
- } }), props.extraOptions?.map(item => {
27208
+ }, children: [!props.csvProps?.hide && (jsx(ExportCSV, { handleClick: () => setExportMenuOpen(false), filterModel: props.filterModel, sortModel: props.sortModel, rowSelectionModel: props.rowSelectionModel, slots: {
27209
+ endpoint: props.csvProps?.endpoint,
27210
+ } })), props.extraOptions?.map((item) => {
27151
27211
  const csvExport = item.props.csvExport;
27152
- const remainingProps = omit(item.props, 'csvExport');
27153
- return (item.element({
27212
+ const remainingProps = omit(item.props, "csvExport");
27213
+ return item.element({
27154
27214
  handleClick: () => setExportMenuOpen(false),
27155
27215
  filterModel: props.filterModel,
27156
27216
  sortModel: props.sortModel,
27217
+ rowSelectionModel: props.rowSelectionModel,
27157
27218
  csvExport: {
27158
- rowSelectionModel: props.rowSelectionModel,
27159
27219
  ...csvExport,
27160
27220
  },
27161
- endpoint: props.csvProps?.endpoint,
27162
27221
  ...remainingProps,
27163
- }));
27222
+ });
27164
27223
  })] })] }));
27165
27224
  };
27166
27225
 
@@ -27168,34 +27227,33 @@ const ColumnsButton = () => {
27168
27227
  const apiRef = useGridApiContext();
27169
27228
  const allCols = apiRef.current.getAllColumns().length;
27170
27229
  const visibleCols = apiRef.current.getVisibleColumns().length;
27171
- 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" }) }) }) }));
27230
+ 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" }) }) }) }));
27172
27231
  };
27173
27232
 
27174
27233
  const RefreshButton = (props) => {
27175
27234
  // ===== || EJECUTAR CON CTRL + Shift + R || ===== //
27176
27235
  const handleKeyPress = useCallback((event) => {
27177
- if (event.ctrlKey && event.shiftKey && event.key === 'R') {
27236
+ if (event.ctrlKey && event.shiftKey && event.key === "R") {
27178
27237
  event.preventDefault();
27179
27238
  if (props.refetch)
27180
27239
  props.refetch();
27181
27240
  }
27182
27241
  }, [props]);
27183
27242
  useEffect(() => {
27184
- document.addEventListener('keydown', handleKeyPress);
27243
+ document.addEventListener("keydown", handleKeyPress);
27185
27244
  return () => {
27186
- document.removeEventListener('keydown', handleKeyPress);
27245
+ document.removeEventListener("keydown", handleKeyPress);
27187
27246
  };
27188
27247
  }, [handleKeyPress]);
27189
- return (jsx(Tooltip$1, { title: 'Refrescar', children: jsx(ToolbarButton, { onClick: props.refetch, children: jsx(RefreshIcon, { fontSize: 'small' }) }) }));
27248
+ return (jsx(Tooltip$1, { title: "Refrescar", children: jsx(ToolbarButton, { onClick: props.refetch, children: jsx(RefreshIcon, { fontSize: "small" }) }) }));
27190
27249
  };
27191
27250
 
27192
27251
  const CustomToolbar = (props) => {
27193
27252
  const [expanded, setExpanded] = useState(true);
27194
27253
  return (jsx(Toolbar, { style: {
27195
- minHeight: expanded ? 'inherit' : '10px',
27196
- }, 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 &&
27197
- 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 &&
27198
- 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, {}) }) })) }));
27254
+ minHeight: expanded ? "inherit" : "10px",
27255
+ }, 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 &&
27256
+ 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, {}) }) })) }));
27199
27257
  };
27200
27258
 
27201
27259
  const StyledGridOverlay = styled$1('div')(({ theme }) => ({
@@ -27233,20 +27291,22 @@ function CustomPagination() {
27233
27291
  }
27234
27292
 
27235
27293
  const DraggableRow = (params) => {
27236
- const { attributes, listeners, setNodeRef, transform, transition, } = useSortable({ id: params.rowId.toString() });
27294
+ const { attributes, listeners, setNodeRef, transform, transition } = useSortable({
27295
+ id: params.rowId.toString(),
27296
+ });
27237
27297
  const style = {
27238
27298
  transform: CSS.Transform.toString(transform),
27239
- transition
27299
+ transition,
27240
27300
  };
27241
- return (jsxs(Box, { display: 'flex', ref: setNodeRef, style: style, children: [jsx(Box, { ...attributes, ...listeners, sx: {
27242
- width: '20px',
27301
+ return (jsxs(Box, { display: "flex", ref: setNodeRef, style: style, children: [jsx(Box, { ...attributes, ...listeners, sx: {
27302
+ width: "20px",
27243
27303
  height: params.rowHeight,
27244
- background: 'repeating-linear-gradient( 45deg, #e0e0e0, #e0e0e0 5px, transparent 5px, transparent 10px)',
27245
- borderTop: '1px solid rgba(224, 224, 224, 1)',
27246
- cursor: 'grab',
27247
- '&:active': {
27248
- cursor: 'grabbing',
27249
- }
27304
+ background: "repeating-linear-gradient( 45deg, #e0e0e0, #e0e0e0 5px, transparent 5px, transparent 10px)",
27305
+ borderTop: "1px solid rgba(224, 224, 224, 1)",
27306
+ cursor: "grab",
27307
+ "&:active": {
27308
+ cursor: "grabbing",
27309
+ },
27250
27310
  } }), jsx(GridRow, { ...params })] }));
27251
27311
  };
27252
27312
 
@@ -27263,38 +27323,41 @@ const EditGridWrapper = (props) => {
27263
27323
  const handleClickEdit = () => {
27264
27324
  if (edit)
27265
27325
  handleCancelarEdit();
27266
- setEdit(prevState => !prevState);
27326
+ setEdit((prevState) => !prevState);
27267
27327
  };
27268
27328
  const processRowUpdate = async (newRow, originalRow) => {
27269
27329
  const original_data = jsonForm({ submitData: originalRow });
27270
- const data = jsonForm({ submitData: newRow, ...(props.parser ? { props: props.parser } : []) });
27330
+ const data = jsonForm({
27331
+ submitData: newRow,
27332
+ ...(props.parser ? { props: props.parser } : []),
27333
+ });
27271
27334
  if (isEqual$1(data, original_data))
27272
27335
  return originalRow;
27273
27336
  try {
27274
27337
  const result = await editMutation(data).unwrap();
27275
- setErrors(prevState => produce(prevState, draft => {
27338
+ setErrors((prevState) => produce(prevState, (draft) => {
27276
27339
  delete draft[newRow.id];
27277
27340
  }));
27278
27341
  if (props?.postAction)
27279
27342
  props.postAction(result);
27280
- notifications.show(`Información actualizada!`, { severity: 'success' });
27343
+ notifications.show(`Información actualizada!`, { severity: "success" });
27281
27344
  return result.list;
27282
27345
  }
27283
27346
  catch (e) {
27284
- setErrors(prevState => produce(prevState, draft => {
27285
- draft[newRow.id] = get(e, 'data');
27347
+ setErrors((prevState) => produce(prevState, (draft) => {
27348
+ draft[newRow.id] = get(e, "data");
27286
27349
  }));
27287
- notifications.show('Error actualizando información!', { severity: 'error' });
27350
+ notifications.show("Error actualizando información!", { severity: "error" });
27288
27351
  }
27289
27352
  };
27290
27353
  // ===== || KEYDOWN || ===== //
27291
27354
  const handleKeyPress = useCallback((event) => {
27292
27355
  if (props.permission) {
27293
- if (event.ctrlKey && event.shiftKey && event.key === 'E') {
27356
+ if (event.ctrlKey && event.shiftKey && event.key === "E") {
27294
27357
  event.preventDefault();
27295
27358
  setEdit(true);
27296
27359
  }
27297
- else if (event.key === 'Escape' && event.shiftKey && edit) {
27360
+ else if (event.key === "Escape" && event.shiftKey && edit) {
27298
27361
  event.preventDefault();
27299
27362
  handleCancelarEdit();
27300
27363
  setEdit(false);
@@ -27302,9 +27365,9 @@ const EditGridWrapper = (props) => {
27302
27365
  }
27303
27366
  }, [edit, props.permission]);
27304
27367
  useEffect(() => {
27305
- document.addEventListener('keydown', handleKeyPress);
27368
+ document.addEventListener("keydown", handleKeyPress);
27306
27369
  return () => {
27307
- document.removeEventListener('keydown', handleKeyPress);
27370
+ document.removeEventListener("keydown", handleKeyPress);
27308
27371
  };
27309
27372
  }, [handleKeyPress]);
27310
27373
  // ========================= || DRAG N DROP || ========================= //
@@ -27321,7 +27384,10 @@ const EditGridWrapper = (props) => {
27321
27384
  if (over) {
27322
27385
  const activeRow = rows.find((row) => row.id == active.id);
27323
27386
  const overRow = rows.find((row) => row.id == over.id);
27324
- const mutationArgs = { ...props.dnd?.args, id: activeRow.id };
27387
+ const mutationArgs = {
27388
+ ...props.dnd?.args,
27389
+ id: activeRow.id,
27390
+ };
27325
27391
  mutationArgs[field] = get(overRow, field);
27326
27392
  editMutation(mutationArgs);
27327
27393
  }
@@ -27339,33 +27405,37 @@ const EditGridWrapper = (props) => {
27339
27405
  slotProps: {
27340
27406
  toolbar: {
27341
27407
  extraButtons: [
27342
- ...(props.permission && !props.disabled ? [{
27343
- label: edit ? 'Cancelar' : 'Editar',
27344
- icon: edit ? CancelIcon : EditIcon,
27345
- onClick: handleClickEdit,
27346
- }] : []),
27347
- ]
27348
- }
27408
+ ...(props.permission && !props.disabled
27409
+ ? [
27410
+ {
27411
+ label: edit ? "Cancelar" : "Editar",
27412
+ icon: edit ? CancelIcon : EditIcon,
27413
+ onClick: handleClickEdit,
27414
+ },
27415
+ ]
27416
+ : []),
27417
+ ],
27418
+ },
27349
27419
  },
27350
27420
  onRowEditStart: ({ reason, row }, event) => {
27351
- if (!get(row, `obj_permissions.edit`) || (reason === GridRowEditStartReasons.cellDoubleClick && !edit)) {
27421
+ if (!get(row, `obj_permissions.edit`) ||
27422
+ (reason === GridRowEditStartReasons.cellDoubleClick && !edit)) {
27352
27423
  event.defaultMuiPrevented = true;
27353
27424
  }
27354
27425
  },
27355
27426
  // edit
27356
27427
  checkboxSelection: !edit,
27357
27428
  ...(edit ? { onRowClick: undefined } : []),
27358
- editMode: 'row',
27429
+ editMode: "row",
27359
27430
  rowModesModel: rowModesModel,
27360
27431
  onRowModesModelChange: setRowModesModel,
27361
27432
  processRowUpdate: processRowUpdate,
27362
27433
  loadingParams: [loadingMutation],
27363
27434
  }, props.dataGridProps);
27364
- const renderEditGrid = () => (jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, modifiers: [
27365
- restrictToVerticalAxis,
27366
- restrictToWindowEdges,
27367
- restrictToParentElement
27368
- ], autoScroll: false, children: jsx(SortableContext, { items: rows ? rows.map((row) => row.id.toString()) : [], strategy: verticalListSortingStrategy, children: props.renderFunction({ ...props.renderFunctionProps, dataGridProps: editGridProps }) }) }));
27435
+ 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({
27436
+ ...props.renderFunctionProps,
27437
+ dataGridProps: editGridProps,
27438
+ }) }) }));
27369
27439
  return renderEditGrid();
27370
27440
  };
27371
27441
 
@@ -27386,43 +27456,47 @@ const editColumn = (props) => {
27386
27456
  [id]: { mode: GridRowModes.View, ignoreModifications: true },
27387
27457
  });
27388
27458
  };
27389
- return [{
27390
- field: 'edit',
27391
- headerName: 'Editar',
27392
- type: 'actions',
27459
+ return [
27460
+ {
27461
+ field: "edit",
27462
+ headerName: "Editar",
27463
+ type: "actions",
27393
27464
  width: 80,
27394
- cellClassName: 'actions',
27465
+ cellClassName: "actions",
27395
27466
  getActions: ({ id, row }) => {
27396
- const canEdit = get$1(row, 'obj_permissions.edit');
27467
+ const canEdit = get$1(row, "obj_permissions.edit");
27397
27468
  const isInEditMode = props.rowModesModel[id]?.mode === GridRowModes.Edit;
27398
27469
  if (isInEditMode) {
27399
27470
  return [
27400
- jsx(GridActionsCellItem, { icon: jsx(SaveIcon, {}), label: 'Guardar', color: 'primary', onClick: handleSaveClick(id) }, 'save'),
27401
- jsx(GridActionsCellItem, { icon: jsx(CancelIcon, {}), label: 'Cancelar', className: 'textPrimary', onClick: handleCancelClick(id), color: 'inherit' }, 'cancel'),
27471
+ jsx(GridActionsCellItem, { icon: jsx(SaveIcon, {}), label: "Guardar", color: "primary", onClick: handleSaveClick(id) }, "save"),
27472
+ jsx(GridActionsCellItem, { icon: jsx(CancelIcon, {}), label: "Cancelar", className: "textPrimary", onClick: handleCancelClick(id), color: "inherit" }, "cancel"),
27402
27473
  ];
27403
27474
  }
27404
27475
  return [
27405
- jsx(GridActionsCellItem, { icon: jsx(EditIcon, { sx: { color: canEdit ? 'black' : 'inherit' } }), label: 'Editar', className: 'textPrimary', onClick: handleEditClick(id), disabled: !canEdit }, 'edit'),
27476
+ jsx(GridActionsCellItem, { icon: jsx(EditIcon, { sx: { color: canEdit ? "black" : "inherit" } }), label: "Editar", className: "textPrimary", onClick: handleEditClick(id), disabled: !canEdit }, "edit"),
27406
27477
  ];
27407
- }
27408
- }];
27478
+ },
27479
+ },
27480
+ ];
27409
27481
  };
27410
27482
 
27411
27483
  const deleteColumn = (props) => {
27412
27484
  if (!props.displayDelete)
27413
27485
  return [];
27414
- return [{
27415
- field: 'delete',
27416
- headerName: 'Eliminar',
27486
+ return [
27487
+ {
27488
+ field: "delete",
27489
+ headerName: "Eliminar",
27417
27490
  width: 80,
27418
- cellClassName: 'actions',
27491
+ cellClassName: "actions",
27419
27492
  renderCell: ({ id, row }) => {
27420
27493
  const canDelete = get$1(row, `obj_permissions.delete`, false);
27421
27494
  return [
27422
- jsx(GridActionsCellItem, { icon: jsx(DeleteIcon, {}), label: 'Eliminar', className: 'textPrimary', onClick: props.handleOpen(id), color: 'primary', disabled: !canDelete }, 'delete')
27495
+ jsx(GridActionsCellItem, { icon: jsx(DeleteIcon, {}), label: "Eliminar", className: "textPrimary", onClick: props.handleOpen(id), color: "primary", disabled: !canDelete }, "delete"),
27423
27496
  ];
27424
- }
27425
- }];
27497
+ },
27498
+ },
27499
+ ];
27426
27500
  };
27427
27501
 
27428
27502
  const DeleteGridWrapper = (props) => {
@@ -27436,25 +27510,25 @@ const DeleteGridWrapper = (props) => {
27436
27510
  setDeleteRowId(undefined);
27437
27511
  };
27438
27512
  const handleClickDelete = () => {
27439
- setDeleting(prevState => !prevState);
27513
+ setDeleting((prevState) => !prevState);
27440
27514
  };
27441
27515
  // ===== || KEYDOWN || ===== //
27442
27516
  const handleKeyPress = useCallback((event) => {
27443
27517
  if (props.permission) {
27444
- if (event.ctrlKey && event.shiftKey && event.key === 'D') {
27518
+ if (event.ctrlKey && event.shiftKey && event.key === "D") {
27445
27519
  event.preventDefault();
27446
27520
  setDeleting(true);
27447
27521
  }
27448
- else if (event.key === 'Escape' && event.shiftKey && deleting) {
27522
+ else if (event.key === "Escape" && event.shiftKey && deleting) {
27449
27523
  event.preventDefault();
27450
27524
  setDeleting(false);
27451
27525
  }
27452
27526
  }
27453
27527
  }, [props.permission, deleting]);
27454
27528
  useEffect(() => {
27455
- document.addEventListener('keydown', handleKeyPress);
27529
+ document.addEventListener("keydown", handleKeyPress);
27456
27530
  return () => {
27457
- document.removeEventListener('keydown', handleKeyPress);
27531
+ document.removeEventListener("keydown", handleKeyPress);
27458
27532
  };
27459
27533
  }, [handleKeyPress]);
27460
27534
  // ===== || GRID PROPS || ===== //
@@ -27468,20 +27542,23 @@ const DeleteGridWrapper = (props) => {
27468
27542
  slotProps: {
27469
27543
  toolbar: {
27470
27544
  extraButtons: [
27471
- ...(props.permission ? [{
27472
- label: deleting ? 'Cancelar' : 'Eliminar',
27473
- icon: deleting ? CancelIcon : DeleteIcon,
27474
- onClick: handleClickDelete,
27475
- }] : [])
27476
- ]
27477
- }
27545
+ ...(props.permission
27546
+ ? [
27547
+ {
27548
+ label: deleting ? "Cancelar" : "Eliminar",
27549
+ icon: deleting ? CancelIcon : DeleteIcon,
27550
+ onClick: handleClickDelete,
27551
+ },
27552
+ ]
27553
+ : []),
27554
+ ],
27555
+ },
27478
27556
  },
27479
27557
  // edit
27480
27558
  checkboxSelection: !deleting,
27481
27559
  ...(deleting ? { onRowClick: undefined } : []),
27482
27560
  }, props.dataGridProps);
27483
- const renderDeleteGrid = () => (jsxs(Fragment, { children: [props.mutation &&
27484
- jsx(DeleteConfirmationDialog, { mutation: props.mutation, open: !!deleteRowId, handleClose: handleClose, id: deleteRowId, disableNavBack: true }), props.renderFunction({ ...props.renderFunctionProps, dataGridProps: deleteGridProps })] }));
27561
+ 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 })] }));
27485
27562
  return renderDeleteGrid();
27486
27563
  };
27487
27564
 
@@ -27490,7 +27567,7 @@ const CreateGridWrapper = (props) => {
27490
27567
  const [anchorEl, setAnchorEl] = useState(null);
27491
27568
  const open = Boolean(anchorEl);
27492
27569
  const handleClick = () => {
27493
- setAnchorEl(document.getElementById('create-button'));
27570
+ setAnchorEl(document.getElementById("create-button"));
27494
27571
  };
27495
27572
  const handleClose = () => {
27496
27573
  setAnchorEl(null);
@@ -27505,51 +27582,56 @@ const CreateGridWrapper = (props) => {
27505
27582
  // ===== || KEYDOWN || ===== //
27506
27583
  const handleKeyPress = useCallback((event) => {
27507
27584
  if (props.permission) {
27508
- if (event.ctrlKey && event.key === 'e') {
27585
+ if (event.ctrlKey && event.key === "e") {
27509
27586
  event.preventDefault();
27510
27587
  handleClick();
27511
27588
  }
27512
27589
  }
27513
27590
  }, [props.permission]);
27514
27591
  useEffect(() => {
27515
- document.addEventListener('keydown', handleKeyPress);
27592
+ document.addEventListener("keydown", handleKeyPress);
27516
27593
  return () => {
27517
- document.removeEventListener('keydown', handleKeyPress);
27594
+ document.removeEventListener("keydown", handleKeyPress);
27518
27595
  };
27519
27596
  }, [handleKeyPress]);
27520
27597
  const createGridProps = mergeSettings({
27521
27598
  slotProps: {
27522
27599
  toolbar: {
27523
27600
  extraButtons: [
27524
- ...(props.permission ? [{
27525
- label: 'Crear',
27526
- icon: AddIcon,
27527
- onClick: handleClick,
27528
- buttonProps: {
27529
- id: 'create-button',
27530
- }
27531
- }] : []),
27532
- ]
27533
- }
27601
+ ...(props.permission
27602
+ ? [
27603
+ {
27604
+ label: "Crear",
27605
+ icon: AddIcon,
27606
+ onClick: handleClick,
27607
+ buttonProps: {
27608
+ id: "create-button",
27609
+ },
27610
+ },
27611
+ ]
27612
+ : []),
27613
+ ],
27614
+ },
27534
27615
  },
27535
27616
  }, props.dataGridProps);
27536
- return (jsxs(Fragment, { children: [jsxs(StyledMenu, { id: 'create-menu', MenuListProps: {
27537
- 'aria-labelledby': 'create-menu-button',
27538
- }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable && ([
27539
- {
27540
- title: 'CSV',
27541
- endpoint: props.pathname,
27542
- },
27543
- ...(props.csv_upload.extraOptions || [])
27544
- ].map((option, index) => {
27545
- return (jsx(MenuItem, { onClick: () => {
27546
- handleToggleOpen(option);
27547
- handleClose();
27548
- }, disableRipple: true, children: option.title }, index));
27549
- })), jsx(MenuItem, { onClick: () => {
27617
+ return (jsxs(Fragment, { children: [jsxs(StyledMenu, { id: "create-menu", MenuListProps: {
27618
+ "aria-labelledby": "create-menu-button",
27619
+ }, anchorEl: anchorEl, open: open, onClose: handleClose, children: [props.csv_upload?.enable &&
27620
+ [
27621
+ {
27622
+ title: "CSV",
27623
+ endpoint: props.pathname,
27624
+ },
27625
+ ...(props.csv_upload.extraOptions || []),
27626
+ ].map((option, index) => {
27627
+ return (jsxs(MenuItem, { onClick: () => {
27628
+ handleToggleOpen(option);
27629
+ handleClose();
27630
+ }, disableRipple: true, children: [jsx(ListItemIcon, { children: jsx(AttachFileIcon, { sx: { transform: "rotate(90deg)" } }) }), option.title] }, index));
27631
+ }), jsxs(MenuItem, { onClick: () => {
27550
27632
  navigate(props.navigation ? `${props.navigation}crear` : `crear`);
27551
27633
  handleClose();
27552
- }, disableRipple: true, children: "Manual" })] }), props.csv_upload?.enable && (jsx(CSVUpload, { open: csv.open, drawerToggle: handleToggleClose, data: csv.data })), props.renderFunction({ dataGridProps: createGridProps })] }));
27634
+ }, 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 })] }));
27553
27635
  };
27554
27636
 
27555
27637
  const Base = (props) => {
@@ -27560,14 +27642,20 @@ const Base = (props) => {
27560
27642
  setFilterModel: setFilterModel,
27561
27643
  }));
27562
27644
  // ========================= || PAGINADO || ========================= //
27563
- const [paginationModel, setPaginationModel] = useState({ page: 0, pageSize: 50 });
27645
+ const [paginationModel, setPaginationModel] = useState({
27646
+ page: 0,
27647
+ pageSize: 50,
27648
+ });
27564
27649
  // ========================= || ORDENADO || ========================= //
27565
27650
  const [sortModel, setSortModel] = useState([]);
27566
27651
  // ========================= || FILTRADO || ========================= //
27567
- const [filterModel, setFilterModel] = useState({ items: {}, quickFilterValues: '' });
27652
+ const [filterModel, setFilterModel] = useState({
27653
+ items: {},
27654
+ quickFilterValues: "",
27655
+ });
27568
27656
  // eslint-disable-next-line react-hooks/exhaustive-deps
27569
27657
  const setQuickSearchValue = useCallback(debounce$1((quickSearch) => {
27570
- setFilterModel(prevState => ({ ...prevState, quickFilterValues: quickSearch }));
27658
+ setFilterModel((prevState) => ({ ...prevState, quickFilterValues: quickSearch }));
27571
27659
  }, 500), []);
27572
27660
  // ========================= || COLUMNAS || ========================= //
27573
27661
  const getTogglableColumns = (columns) => {
@@ -27575,7 +27663,7 @@ const Base = (props) => {
27575
27663
  return [];
27576
27664
  return columns
27577
27665
  .filter((column) => {
27578
- return !['__check__', 'actions'].includes(column.field);
27666
+ return !["__check__", "actions"].includes(column.field);
27579
27667
  })
27580
27668
  .map((column) => column.field);
27581
27669
  };
@@ -27587,7 +27675,7 @@ const Base = (props) => {
27587
27675
  // ========================= || LAZY QUERY || ========================= //
27588
27676
  const [query, { data, isLoading, isFetching, isError, isUninitialized }] = props.api.data.query(props.api.data.options || {});
27589
27677
  // ========================= || INITIAL STATE || ========================= //
27590
- const localStoreName = useMemo(() => `${props.pathname}${props.slotProps?.tab ? `_${props.slotProps?.tab}` : ''}_DG`, [props.pathname, props.slotProps?.tab]);
27678
+ const localStoreName = useMemo(() => `${props.pathname}${props.slotProps?.tab ? `_${props.slotProps?.tab}` : ""}_DG`, [props.pathname, props.slotProps?.tab]);
27591
27679
  const internalFilterRef = useRef(filterModel);
27592
27680
  const filterRef = props.slotProps?.filtersRef || internalFilterRef;
27593
27681
  useEffect(() => {
@@ -27597,28 +27685,30 @@ const Base = (props) => {
27597
27685
  const saveSnapshot = useCallback(() => {
27598
27686
  if (apiRef?.current?.exportState && localStorage && !props.slotProps?.dontSaveState) {
27599
27687
  const currentState = apiRef.current.exportState();
27600
- set$1(currentState, 'filters.filterModel', filterRef.current);
27688
+ set$1(currentState, "filters.filterModel", filterRef.current);
27601
27689
  setWithExpiry(localStoreName, currentState, 86400000);
27602
27690
  }
27603
27691
  // eslint-disable-next-line react-hooks/exhaustive-deps
27604
27692
  }, [apiRef, props.pathname]);
27605
27693
  useLayoutEffect(() => {
27606
27694
  const stateFromLocalStorage = getWithExpiry(localStoreName);
27607
- const init = stateFromLocalStorage ? stateFromLocalStorage : get(props, 'dataGridProps.initialState', {});
27608
- const pagination = get(init, 'pagination.paginationModel', paginationModel);
27609
- const sorting = get(init, 'sorting.sortModel', sortModel);
27610
- const filters = get(init, 'filters.filterModel', filterModel);
27695
+ const init = stateFromLocalStorage
27696
+ ? stateFromLocalStorage
27697
+ : get(props, "dataGridProps.initialState", {});
27698
+ const pagination = get(init, "pagination.paginationModel", paginationModel);
27699
+ const sorting = get(init, "sorting.sortModel", sortModel);
27700
+ const filters = get(init, "filters.filterModel", filterModel);
27611
27701
  setPaginationModel(pagination);
27612
27702
  setSortModel(sorting);
27613
27703
  setFilterModel(filters);
27614
- setColumnVisibilityModel(get(init, 'columns.columnVisibilityModel', columnVisibilityModel));
27704
+ setColumnVisibilityModel(get(init, "columns.columnVisibilityModel", columnVisibilityModel));
27615
27705
  // handle refresh and navigating away/refreshing
27616
- window.addEventListener('beforeunload', saveSnapshot);
27706
+ window.addEventListener("beforeunload", saveSnapshot);
27617
27707
  // console.log(getQueryArgs(pagination, sorting, filters, props.api.data.args))
27618
27708
  query(getQueryArgs(pagination, sorting, filters, props.api.data.args));
27619
27709
  return () => {
27620
27710
  // in case of an SPA remove the event-listener
27621
- window.removeEventListener('beforeunload', saveSnapshot);
27711
+ window.removeEventListener("beforeunload", saveSnapshot);
27622
27712
  saveSnapshot();
27623
27713
  };
27624
27714
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -27637,8 +27727,8 @@ const Base = (props) => {
27637
27727
  };
27638
27728
  // ========================= || SELECCIÓN || ========================= //
27639
27729
  const [rowSelectionModel, setRowSelectionModel] = useState({
27640
- type: 'include',
27641
- ids: new Set()
27730
+ type: "include",
27731
+ ids: new Set(),
27642
27732
  });
27643
27733
  const handleRowSelectionModelChange = (newSelection) => {
27644
27734
  setRowSelectionModel(newSelection);
@@ -27656,13 +27746,13 @@ const Base = (props) => {
27656
27746
  const handleRowClick = ({ id }, event) => {
27657
27747
  const link_to = `${props.slotProps?.navigation != undefined ? props.slotProps?.navigation : props.pathname}/${id}`;
27658
27748
  if (event.ctrlKey) {
27659
- const newTab = document.createElement('a');
27749
+ const newTab = document.createElement("a");
27660
27750
  newTab.href = link_to;
27661
- newTab.target = '_blank';
27751
+ newTab.target = "_blank";
27662
27752
  newTab.click();
27663
27753
  }
27664
27754
  else {
27665
- navigate(`${props.slotProps?.navigation ? props.slotProps?.navigation : props.pathname}/${id}`);
27755
+ navigate(`${props.slotProps?.navigation || props.slotProps?.navigation === "" ? props.slotProps?.navigation : props.pathname}/${id}`);
27666
27756
  }
27667
27757
  };
27668
27758
  const handleRowEditStop = (params, event) => {
@@ -27681,13 +27771,13 @@ const Base = (props) => {
27681
27771
  },
27682
27772
  slotProps: {
27683
27773
  baseCheckbox: {
27684
- size: 'small'
27774
+ size: "small",
27685
27775
  },
27686
27776
  toolbar: {
27687
27777
  filters: {
27688
27778
  filterModel: filterModel,
27689
27779
  setFilterModel: setFilterModel,
27690
- setQuickSearchValue: setQuickSearchValue
27780
+ setQuickSearchValue: setQuickSearchValue,
27691
27781
  },
27692
27782
  protectFilters: props.api.data.protectFilters,
27693
27783
  columnsFilter: props.slotProps?.columnsFilter,
@@ -27698,27 +27788,27 @@ const Base = (props) => {
27698
27788
  buttons: {
27699
27789
  refresh: {
27700
27790
  refetch: handleRefetch,
27701
- }
27702
- }
27791
+ },
27792
+ },
27703
27793
  },
27704
27794
  columnsManagement: {
27705
27795
  getTogglableColumns: getTogglableColumns,
27706
27796
  },
27707
27797
  },
27708
27798
  }, props.dataGridProps);
27709
- const renderDataGrid = ({ dataGridProps: renderDataGridProps }) => {
27799
+ const renderDataGrid = ({ dataGridProps: renderDataGridProps, }) => {
27710
27800
  // console.log(dataGridProps)
27711
27801
  return (jsx(Box, { width: 1, minHeight: 300, height: 1,
27712
27802
  // maxHeight={'calc(100% - 30px)'}
27713
- display: 'flex', flexDirection: 'column', pb: 0, children: jsx(NoSsr, { children: jsx(DataGrid, { apiRef: apiRef, rows: data?.results || [], loading: some(get(renderDataGridProps, 'loadingParams', []), function (x) {
27803
+ display: "flex", flexDirection: "column", pb: 0, children: jsx(NoSsr, { children: jsx(DataGrid, { apiRef: apiRef, rows: data?.results || [], loading: some(get(renderDataGridProps, "loadingParams", []), function (x) {
27714
27804
  return x;
27715
27805
  }),
27716
27806
  // paginado //
27717
- pagination: true, paginationMode: 'server', paginationModel: paginationModel, onPaginationModelChange: setPaginationModel, pageSizeOptions: [50, 100, { value: -1, label: 'Todos' }],
27807
+ pagination: true, paginationMode: "server", paginationModel: paginationModel, onPaginationModelChange: setPaginationModel, pageSizeOptions: [50, 100, { value: -1, label: "Todos" }],
27718
27808
  // ordenado
27719
- sortingMode: 'server', sortModel: sortModel, onSortModelChange: setSortModel,
27809
+ sortingMode: "server", sortModel: sortModel, onSortModelChange: setSortModel,
27720
27810
  // filtrado
27721
- filterMode: 'server',
27811
+ filterMode: "server",
27722
27812
  // onFilterModelChange={handleFilterChange}
27723
27813
  disableColumnFilter: true, showToolbar: true,
27724
27814
  // selection
@@ -27736,13 +27826,13 @@ const Base = (props) => {
27736
27826
  // row count
27737
27827
  rowCount: rowCount,
27738
27828
  // settings
27739
- density: 'compact',
27829
+ density: "compact",
27740
27830
  // striping
27741
- getRowClassName: (params) => params.indexRelativeToCurrentPage % 2 === 0 ? 'even' : 'odd', localeText: {
27742
- columnHeaderSortIconLabel: 'Ordenar',
27743
- columnMenuSortAsc: 'Ordenar de menor a mayor',
27744
- columnMenuSortDesc: 'Ordenar de mayor a menor',
27745
- columnMenuLabel: 'Menú',
27831
+ getRowClassName: (params) => params.indexRelativeToCurrentPage % 2 === 0 ? "even" : "odd", localeText: {
27832
+ columnHeaderSortIconLabel: "Ordenar",
27833
+ columnMenuSortAsc: "Ordenar de menor a mayor",
27834
+ columnMenuSortDesc: "Ordenar de mayor a menor",
27835
+ columnMenuLabel: "Menú",
27746
27836
  }, ...renderDataGridProps }) }) }));
27747
27837
  };
27748
27838
  // ========================= || RETURN || ========================= //
@@ -27756,7 +27846,7 @@ const Base = (props) => {
27756
27846
  pathname: props.pathname,
27757
27847
  navigation: props.slotProps?.navigation,
27758
27848
  ...renderProps,
27759
- ...props.api.create
27849
+ ...props.api.create,
27760
27850
  };
27761
27851
  renderFunction = CreateGridWrapper;
27762
27852
  }
@@ -27767,7 +27857,7 @@ const Base = (props) => {
27767
27857
  renderFunctionProps: renderProps,
27768
27858
  dataGridProps: dataGridProps,
27769
27859
  baseGridRef: apiRef,
27770
- ...props.api.edit
27860
+ ...props.api.edit,
27771
27861
  };
27772
27862
  renderFunction = EditGridWrapper;
27773
27863
  }
@@ -27777,7 +27867,7 @@ const Base = (props) => {
27777
27867
  renderFunction: renderFunction,
27778
27868
  renderFunctionProps: renderProps,
27779
27869
  dataGridProps: dataGridProps,
27780
- ...props.api.delete
27870
+ ...props.api.delete,
27781
27871
  });
27782
27872
  }
27783
27873
  return renderFunction(renderProps);
@@ -27798,13 +27888,13 @@ const ActiveCell = ({ value }) => {
27798
27888
  }, [value]);
27799
27889
  const renderIcon = useCallback(() => {
27800
27890
  const iconProps = {
27801
- size: 'small',
27891
+ size: "small",
27802
27892
  sx: {
27803
27893
  color: color[700],
27804
- fontSize: '30px',
27894
+ fontSize: "30px",
27805
27895
  stroke: color[700],
27806
- strokeWidth: 1.5
27807
- }
27896
+ strokeWidth: 1.5,
27897
+ },
27808
27898
  };
27809
27899
  switch (value) {
27810
27900
  case true:
@@ -27815,7 +27905,7 @@ const ActiveCell = ({ value }) => {
27815
27905
  return jsx(ErrorOutlineIcon, { ...iconProps });
27816
27906
  }
27817
27907
  }, [color, value]);
27818
- return (jsx(Box, { px: 2, py: 0.5, display: 'flex', alignItems: 'center', justifyContent: 'center', borderRadius: 2, borderColor: color[900], children: renderIcon() }));
27908
+ return (jsx(Box, { px: 2, py: 0.5, display: "flex", alignItems: "center", justifyContent: "center", borderRadius: 2, borderColor: color[900], children: renderIcon() }));
27819
27909
  };
27820
27910
 
27821
27911
  const MyGridEditSingleSelect = (props) => {
@@ -27977,34 +28067,38 @@ const Field = (props) => {
27977
28067
  return true;
27978
28068
  }, [props.data, props.dependantOn]);
27979
28069
  const renderField = useCallback(() => {
27980
- if (!props.pageType || props.pageType == 'list')
28070
+ if (!props.pageType || props.pageType == "list")
27981
28071
  return;
27982
- if (props.pageType == 'detail')
28072
+ if (props.pageType == "detail")
27983
28073
  return jsx(DetailField, { ...props });
27984
28074
  else
27985
28075
  return jsx(EditField, { ...props });
27986
28076
  }, [props]);
27987
28077
  if (!show)
27988
28078
  return;
27989
- 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() })] }));
28079
+ 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() })] }));
27990
28080
  };
27991
28081
 
27992
28082
  const EditToolbar = (props) => {
27993
- return (jsxs(Toolbar, { children: [props.pageType != 'detail' &&
27994
- jsx(Tooltip$1, { title: 'Crear', children: jsx(ToolbarButton, { onClick: props.handleCreate, children: jsx(AddIcon, { fontSize: "small" }) }) }), !!props.selected &&
27995
- jsx(Tooltip$1, { title: 'Borrar', children: jsx(ToolbarButton, { onClick: props.handleDelete, children: jsx(DeleteIcon, { fontSize: "small" }) }) })] }));
28083
+ 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" }) }) }))] }));
27996
28084
  };
27997
28085
  const FieldArrayField = (props) => {
27998
28086
  const { fields, remove } = useFieldArray({
27999
28087
  control: props.form.control,
28000
28088
  name: props.name,
28001
- keyName: '_id'
28089
+ keyName: "_id",
28002
28090
  });
28003
- const [drawer, setDrawer] = useState({ open: false, data: undefined });
28004
- const [rowSelectionModel, setRowSelectionModel] = useState({ type: 'include', ids: new Set() });
28005
- const getIndex = useCallback((id) => (findIndex(fields, function (field) {
28091
+ const [drawer, setDrawer] = useState({
28092
+ open: false,
28093
+ data: undefined,
28094
+ });
28095
+ const [rowSelectionModel, setRowSelectionModel] = useState({
28096
+ type: "include",
28097
+ ids: new Set(),
28098
+ });
28099
+ const getIndex = useCallback((id) => findIndex(fields, function (field) {
28006
28100
  return field._id == id;
28007
- })), [fields]);
28101
+ }), [fields]);
28008
28102
  const handleCreate = () => {
28009
28103
  setDrawer({ open: true, data: undefined });
28010
28104
  };
@@ -28027,7 +28121,7 @@ const FieldArrayField = (props) => {
28027
28121
  const handleRowClick = (e) => {
28028
28122
  setDrawer({ open: true, data: e.row });
28029
28123
  };
28030
- 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) => {
28124
+ 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) => {
28031
28125
  setRowSelectionModel(newRowSelectionModel);
28032
28126
  }, showToolbar: true, slots: { toolbar: EditToolbar }, slotProps: {
28033
28127
  toolbar: {
@@ -28036,7 +28130,7 @@ const FieldArrayField = (props) => {
28036
28130
  handleDelete: handleDelete,
28037
28131
  pageType: props.pageType,
28038
28132
  },
28039
- }, 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) => {
28133
+ }, 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) => {
28040
28134
  const fieldName = `${props.name}.${getIndex(drawer.data?._id)}.${field.name}`;
28041
28135
  return (jsx(Field, { ...field, form: props.form, name: fieldName, fieldData: get(drawer.data, field.name) }, fieldName));
28042
28136
  }) }) })] }));
@@ -28134,10 +28228,10 @@ const Logo = () => {
28134
28228
  // ==============================|| PESTAÑAS ||============================== //
28135
28229
  /**
28136
28230
  * Pestañas customizables
28137
- **/
28231
+ **/
28138
28232
  const Tabs = (props) => {
28139
28233
  // valor inicial
28140
- const [value, setValue] = useState(props.initialValue || '1');
28234
+ const [value, setValue] = useState(props.initialValue || "1");
28141
28235
  // manejar cambio de pestaña
28142
28236
  const handleChange = (_event, newValue) => {
28143
28237
  setValue(newValue);
@@ -28145,29 +28239,33 @@ const Tabs = (props) => {
28145
28239
  };
28146
28240
  // hacer el render del contenido de la pestaña seleccionada
28147
28241
  const renderTabs = () => {
28148
- return (props.tabs.map((option) => {
28242
+ return props.tabs.map((option) => {
28149
28243
  const renderContent = () => {
28150
28244
  return React__default.Children.map(option.children, (child) => {
28151
28245
  const cloneProps = { ...child.props };
28152
- set$1(cloneProps, 'type', props.type);
28153
- set$1(cloneProps, 'slotProps.tab', option.value);
28246
+ set$1(cloneProps, "type", props.type);
28247
+ set$1(cloneProps, "slotProps.tab", option.value);
28154
28248
  return React__default.cloneElement(child, cloneProps);
28155
28249
  });
28156
28250
  };
28157
28251
  return (jsx(TabPanel, { value: option.value, sx: {
28158
- pt: 2, pb: 0, px: 0, width: 1, height: 1,
28252
+ pt: 2,
28253
+ pb: 0,
28254
+ px: 0,
28255
+ width: 1,
28256
+ height: 1,
28159
28257
  }, children: renderContent() }, option.value));
28160
- }));
28258
+ });
28161
28259
  };
28162
28260
  return (
28163
28261
  // contexto
28164
- 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: {
28165
- minHeight: 40
28262
+ 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: {
28263
+ minHeight: 40,
28166
28264
  }, children: props.tabs.map((option) => {
28167
- return (jsx(Tab, { label: option.label, icon: option.icon, iconPosition: 'start', value: option.value, sx: {
28168
- color: 'secondary.light',
28265
+ return (jsx(Tab, { label: option.label, icon: option.icon, iconPosition: "start", value: option.value, sx: {
28266
+ color: "secondary.light",
28169
28267
  py: 0,
28170
- minHeight: 40
28268
+ minHeight: 40,
28171
28269
  } }, option.value));
28172
28270
  }) }), jsx(Box, { width: 1, height: 0.935, children: renderTabs() })] }) }));
28173
28271
  };
@@ -28251,7 +28349,7 @@ function DetailPage(props) {
28251
28349
  resolver: zodResolver(props.edit.schema),
28252
28350
  defaultValues: props.edit?.defaultValues,
28253
28351
  });
28254
- const { data, isLoading, isFetching, error: fetchError } = props.api.data.query(!props.api.data.skipToken ? props.api.data.args : skipToken);
28352
+ const { data, isLoading, isFetching, error: fetchError, } = props.api.data.query(!props.api.data.skipToken ? props.api.data.args : skipToken);
28255
28353
  useEffect(() => {
28256
28354
  if (data) {
28257
28355
  // set form data based on query data
@@ -28259,7 +28357,7 @@ function DetailPage(props) {
28259
28357
  if (props.slots?.title) {
28260
28358
  const title = map(props.slots?.title, function (field) {
28261
28359
  return get(data, field);
28262
- }).join(' ');
28360
+ }).join(" ");
28263
28361
  if (title)
28264
28362
  dispatch(changeTitle(title));
28265
28363
  }
@@ -28270,60 +28368,64 @@ function DetailPage(props) {
28270
28368
  form.reset();
28271
28369
  navigate(-1);
28272
28370
  };
28273
- const canEdit = useMemo(() => get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ''}obj_permissions.edit`), [data, props.slotProps?.permissionsPath]);
28274
- const canDelete = useMemo(() => get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ''}obj_permissions.delete`), [data, props.slotProps?.permissionsPath]);
28371
+ const canEdit = useMemo(() => get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ""}obj_permissions.edit`), [data, props.slotProps?.permissionsPath]);
28372
+ const canDelete = useMemo(() => get(data, `${props.slotProps?.permissionsPath ? `${props.slotProps?.permissionsPath}.` : ""}obj_permissions.delete`), [data, props.slotProps?.permissionsPath]);
28275
28373
  // ==============================|| VALIDATION ||============================== //
28276
28374
  useValidateFieldData(props, form);
28277
28375
  // ==============================|| QUICK RETURN ||============================== //
28278
- if ((!canEdit && props.pageType == 'edit') || (fetchError && fetchError.originalStatus == 403))
28376
+ if ((!canEdit && props.pageType == "edit") || (fetchError && fetchError.originalStatus == 403))
28279
28377
  return jsx(NotAllowed, {});
28280
28378
  if (fetchError && fetchError.originalStatus == 404)
28281
28379
  return jsx(NotFound, {});
28282
28380
  // ==============================|| SUBMIT ||============================== //
28283
28381
  const onSubmitHandler = (submitedData) => {
28284
- const formData = 'nativeEvent' in submitedData ? form.getValues() : submitedData;
28382
+ const formData = "nativeEvent" in submitedData ? form.getValues() : submitedData;
28285
28383
  const params = { submitData: formData, data: data, props: props.slotProps?.parser };
28286
28384
  const dataToSend = props.edit.useFormData ? formDataForm(params) : jsonForm(params);
28287
- mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args }).unwrap()
28385
+ mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args })
28386
+ .unwrap()
28288
28387
  .then(() => {
28289
28388
  if (!props.slotProps?.button?.save?.disableNavBack)
28290
28389
  navigate(-1);
28291
28390
  if (props.slotProps?.button?.save?.onClick)
28292
28391
  props.slotProps?.button?.save?.onClick();
28293
28392
  form.reset();
28294
- notifications.show(`${capitalizedObject} ${props.pageType == 'edit' ? 'actualizad@' : 'cread@'}!`, { severity: 'success' });
28393
+ notifications.show(`${capitalizedObject} ${props.pageType == "edit" ? "actualizad@" : "cread@"}!`, { severity: "success" });
28295
28394
  })
28296
28395
  .catch((error) => {
28297
28396
  if (error.status === 401) ;
28298
28397
  if (error.status === 403) {
28299
- notifications.show(error.data.detail, { severity: 'error' });
28398
+ notifications.show(error.data.detail, { severity: "error" });
28300
28399
  }
28301
28400
  else {
28302
28401
  console.log(error);
28303
28402
  setErrors(form, error);
28304
- notifications.show((error.data.detail ?
28305
- error.data.detail.join(', ') :
28306
- `Error ${props.pageType == 'edit' ? 'actualizando' : 'creando'} ${props.object.name}!`), { severity: 'error' });
28403
+ notifications.show(error.data.detail
28404
+ ? error.data.detail.join(", ")
28405
+ : `Error ${props.pageType == "edit" ? "actualizando" : "creando"} ${props.object.name}!`, { severity: "error" });
28307
28406
  }
28308
28407
  });
28309
28408
  };
28310
28409
  // ==============================|| RENDER SECTIONS ||============================== //
28311
28410
  const renderContent = () => {
28312
28411
  let displayed_sections = -1;
28313
- 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) => {
28412
+ 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) => {
28314
28413
  if (!section.display)
28315
28414
  return null;
28316
- if (typeof section.display == 'object') {
28415
+ if (typeof section.display == "object") {
28317
28416
  const validateAgainst = form.watch(section.display.field)?.toString();
28318
28417
  if (!section.display.method(validateAgainst, section.display.value))
28319
28418
  return null;
28320
28419
  }
28321
28420
  displayed_sections += 1;
28322
- return (jsx(Section, { data: data, form: form, bgColor: displayed_sections % 2 == 1 ? 'white' : '#F7F7F7', pageType: props.pageType, ...section, first: displayed_sections == 0 }, index));
28421
+ return (jsx(Section, { data: data, form: form, bgColor: displayed_sections % 2 == 1 ? "white" : "#F7F7F7", pageType: props.pageType, ...section, first: displayed_sections == 0 }, index));
28323
28422
  })] }));
28324
28423
  };
28325
28424
  const renderPostAction = () => {
28326
- if (props.api.mutate.postAction && isSuccess && 'post_action' in mutationResponse && mutationResponse['post_action']['type'] === props.api.mutate.postAction.type) {
28425
+ if (props.api.mutate.postAction &&
28426
+ isSuccess &&
28427
+ "post_action" in mutationResponse &&
28428
+ mutationResponse["post_action"]["type"] === props.api.mutate.postAction.type) {
28327
28429
  switch (props.api.mutate.postAction.after) {
28328
28430
  // case 'create':
28329
28431
  // if (props.pageType === 'create') return addPropsToNode(props.api.mutate.postAction.node, mutationResponse);
@@ -28332,37 +28434,44 @@ function DetailPage(props) {
28332
28434
  // if (props.pageType === 'edit') return props.api.mutate.postAction.node;
28333
28435
  // break;
28334
28436
  default:
28335
- return addPropsToNode(props.api.mutate.postAction.node, { parent: props.api.data.args['id'], ...mutationResponse['post_action'] });
28437
+ return addPropsToNode(props.api.mutate.postAction.node, {
28438
+ parent: props.api.data.args["id"],
28439
+ ...mutationResponse["post_action"],
28440
+ });
28336
28441
  }
28337
28442
  }
28338
28443
  };
28339
- const badgeInfo = get(data, props.slots?.badge || '');
28444
+ const badgeInfo = get(data, props.slots?.badge || "");
28340
28445
  const renderButton = () => {
28341
28446
  if (props.slots?.button)
28342
28447
  return props.slots?.button;
28343
- if (props.pageType == 'detail') {
28448
+ if (props.pageType == "detail") {
28344
28449
  if (!canEdit && !canDelete)
28345
28450
  return null;
28346
- 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, {})] }));
28451
+ 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, {})] }));
28347
28452
  }
28348
28453
  else {
28349
28454
  return (jsx(SaveCancelButton, { slotProps: {
28350
28455
  saveBtn: {
28351
28456
  loading: mutationIsLoading,
28352
28457
  disabled: !form.formState.isDirty,
28353
- ...(props.slotProps?.button?.save?.type == 'onClick' ? {
28354
- type: 'button',
28355
- onClick: onSubmitHandler,
28356
- } : {}),
28458
+ ...(props.slotProps?.button?.save?.type == "onClick"
28459
+ ? {
28460
+ type: "button",
28461
+ onClick: onSubmitHandler,
28462
+ }
28463
+ : {}),
28357
28464
  },
28358
- ...(props.slotProps?.button?.cancel ? { cancelBtn: props.slotProps?.button?.cancel } : {
28359
- cancelBtn: { onClick: handleCancel }
28360
- }),
28465
+ ...(props.slotProps?.button?.cancel
28466
+ ? { cancelBtn: props.slotProps?.button?.cancel }
28467
+ : {
28468
+ cancelBtn: { onClick: handleCancel },
28469
+ }),
28361
28470
  } }));
28362
28471
  }
28363
28472
  };
28364
- return (jsxs(Fragment, { children: [jsx(ContentLayout, { button: renderButton(), badge: props.pageType == 'detail' && badgeInfo &&
28365
- 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()] }));
28473
+ return (jsxs(Fragment, { children: [jsx(ContentLayout, { button: renderButton(), badge: props.pageType == "detail" &&
28474
+ 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()] }));
28366
28475
  }
28367
28476
 
28368
28477
  const ListPage = (props) => {
@@ -28370,19 +28479,20 @@ const ListPage = (props) => {
28370
28479
  };
28371
28480
 
28372
28481
  function SlideTransition(props) {
28373
- return jsx(Slide, { ...props, direction: 'left' });
28482
+ return jsx(Slide, { ...props, direction: "left" });
28374
28483
  }
28375
28484
  const BaseProgressSnack = (props) => {
28376
- // const dispatch = useAppDispatch();
28485
+ console.log(props);
28486
+ const dispatch = useDispatch();
28377
28487
  const handleClose = (e) => {
28378
28488
  if (e?.defaultMuiPrevented)
28379
28489
  return;
28380
- // dispatch(closeProgressSnack(props.id));
28490
+ dispatch(closeProgressSnack(props.id));
28381
28491
  };
28382
- const finished = useMemo(() => get(props.data, 'finished'), [props.data]);
28383
- const error = useMemo(() => get(props.data, 'error'), [props.data]);
28492
+ const finished = useMemo(() => get(props.data, "finished"), [props.data]);
28493
+ const error = useMemo(() => get(props.data, "error"), [props.data]);
28384
28494
  const renderItem = useCallback(() => {
28385
- return (jsx(Snackbar, { anchorOrigin: { vertical: 'bottom', horizontal: 'right' }, open: props.open, onClose: handleClose, slots: {
28495
+ return (jsx(Snackbar, { anchorOrigin: { vertical: "bottom", horizontal: "right" }, open: props.open, onClose: handleClose, slots: {
28386
28496
  transition: SlideTransition,
28387
28497
  }, slotProps: {
28388
28498
  clickAwayListener: {
@@ -28390,27 +28500,27 @@ const BaseProgressSnack = (props) => {
28390
28500
  event.defaultMuiPrevented = true;
28391
28501
  },
28392
28502
  },
28393
- }, children: jsx(Badge, { invisible: props.index < 1, badgeContent: props.index + 1, color: 'primary', children: jsx(Paper, { elevation: 2, sx: {
28394
- bgcolor: props.data['error'] ? 'primary.main' : 'secondary.dark',
28503
+ }, children: jsx(Badge, { invisible: props.index < 1, badgeContent: props.index + 1, color: "primary", children: jsx(Paper, { elevation: 2, sx: {
28504
+ bgcolor: props.data["error"] ? "primary.main" : "secondary.dark",
28395
28505
  minWidth: 300,
28396
- maxWidth: '100vw',
28506
+ maxWidth: "100vw",
28397
28507
  p: 2,
28398
- borderRadius: '12px',
28399
- color: 'white',
28400
- }, 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: {
28401
- color: 'inherit',
28402
- '&:hover': {
28403
- backgroundColor: 'rgba(255, 255, 255, 0.2)'
28508
+ borderRadius: "12px",
28509
+ color: "white",
28510
+ }, 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: {
28511
+ color: "inherit",
28512
+ "&:hover": {
28513
+ backgroundColor: "rgba(255, 255, 255, 0.2)",
28404
28514
  },
28405
- }, children: jsx(CloseIcon, { fontSize: 'small' }) }) }))] }), !finished && !error && props.content(props.data)] }) }) }) }));
28515
+ }, children: jsx(CloseIcon, { fontSize: "small" }) }) }))] }), !finished && !error && props.content(props.data)] }) }) }) }));
28406
28516
  // eslint-disable-next-line react-hooks/exhaustive-deps
28407
28517
  }, [finished, props]);
28408
28518
  return renderItem();
28409
28519
  };
28410
28520
 
28411
28521
  const ObjectProgressStack = (props) => {
28412
- const snacks = useSelector(state => get(state, 'snackProgress', {}));
28413
- return (jsx(Stack, { direction: 'column', spacing: 2, children: Object.keys(snacks).map((key, index) => {
28522
+ const snacks = useSelector((state) => get(state, "snackProgress", {}));
28523
+ return (jsx(Stack, { direction: "column", spacing: 2, children: Object.keys(snacks).map((key, index) => {
28414
28524
  return (jsx(BaseProgressSnack, { id: key, index: index, ...snacks[key], content: props.content }, key));
28415
28525
  }) }));
28416
28526
  };
@@ -28654,5 +28764,5 @@ const theme = () => {
28654
28764
  return themes;
28655
28765
  };
28656
28766
 
28657
- export { APIContext, APIProvider, ActiveCell, Base, ButtonWithDrawer, CSVUpload, ContentLayout, ControlledDate, ControlledDropdown, FileUploadBox as ControlledFileUploadBox, ControlledNumber, ControlledPhoneNumber, ControlledPhotoField, ControlledSelect, ControlledSlider as ControlledSimpleSlider, ControlledSlider$1 as ControlledSlider, ControlledSwitch, ControlledText, ControlledTimePicker, ControlledToggleButtons, CoverPage, CreateButtonBase, CreateButtonWithMenuOptions, DeleteButton, DeleteConfirmationDialog, DetailPage, EditButton, ExportButton, HistorialDrawer, ListPage, Loadable, LoadingComponent, Logo, MainDrawer, MenuItemWithLoading, ModuleCard, MyGridEditSingleSelect, NavigationContext, NavigationProvider, NormalOrIcon, NotAllowed, NotFound, ObjectProgressStack, SaveCancelButton, StatusBadge, StyledMenu, Tabs, Transitions, UncontrolledText, changeTitle, closeProgressSnack, dayjs, deleteColumn, editColumn, filterQuery, formDataForm, header as headerReducer, jsonForm, manualCacheRefresh, mergeSettings, openProgressSnack, query, renderEditCellWithErrorTooltip, setErrors, snackProgress_default as snackProgressReducer, tags, theme, updateProgressSnackData, useAPI, useHasPermission, useNavigation, valueLabel };
28767
+ export { APIContext, APIProvider, ActiveCell, Base, ButtonWithDrawer, CSVUpload, ContentLayout, ControlledDate, ControlledDropdown, FileUploadBox as ControlledFileUploadBox, ControlledNumber, ControlledPhoneNumber, ControlledPhotoField, ControlledSelect, ControlledSlider as ControlledSimpleSlider, ControlledSlider$1 as ControlledSlider, ControlledSwitch, ControlledText, ControlledTimePicker, ControlledToggleButtons, CoverPage, CreateButtonBase, CreateButtonWithMenuOptions, DeleteButton, DeleteConfirmationDialog, DetailPage, EditButton, ExportCSV, HistorialDrawer, ListPage, Loadable, LoadingComponent, Logo, MainDrawer, MenuItemWithLoading, ModuleCard, MyGridEditSingleSelect, NavigationContext, NavigationProvider, NormalOrIcon, NotAllowed, NotFound, ObjectProgressStack, SaveCancelButton, StatusBadge, StyledMenu, Tabs, Transitions, UncontrolledText, changeTitle, closeProgressSnack, dayjs, deleteColumn, editColumn, filterQuery, formDataForm, header as headerReducer, jsonForm, manualCacheRefresh, mergeSettings, openProgressSnack, query, renderEditCellWithErrorTooltip, setErrors, snackProgress_default as snackProgressReducer, tags, theme, updateProgressSnackData, useAPI, useHasPermission, useNavigation, valueLabel };
28658
28768
  //# sourceMappingURL=index.js.map