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