drf-react-by-schema 0.2.2 → 0.3.1
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/api.d.ts +84 -0
- package/dist/api.js +613 -0
- package/dist/components/DataGridBySchemaEditable/ConfirmDialog.d.ts +8 -0
- package/dist/components/DataGridBySchemaEditable/ConfirmDialog.js +21 -0
- package/dist/components/DataGridBySchemaEditable/CustomToolbar.d.ts +16 -0
- package/dist/components/DataGridBySchemaEditable/CustomToolbar.js +77 -0
- package/dist/components/DataGridBySchemaEditable/FooterToolbar.d.ts +16 -0
- package/dist/components/DataGridBySchemaEditable/FooterToolbar.js +41 -0
- package/dist/components/DataGridBySchemaEditable/GridDecimalInput.d.ts +8 -0
- package/dist/components/DataGridBySchemaEditable/GridDecimalInput.js +32 -0
- package/dist/components/DataGridBySchemaEditable/GridPatternInput.d.ts +8 -0
- package/dist/components/DataGridBySchemaEditable/GridPatternInput.js +30 -0
- package/dist/components/DataGridBySchemaEditable/InputInterval.d.ts +3 -0
- package/dist/components/DataGridBySchemaEditable/InputInterval.js +105 -0
- package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.d.ts +33 -0
- package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.js +140 -0
- package/dist/components/DataGridBySchemaEditable/utils.d.ts +15 -0
- package/{src/components/DataGridBySchemaEditable/utils.ts → dist/components/DataGridBySchemaEditable/utils.js} +32 -50
- package/dist/components/DataGridBySchemaEditable.d.ts +34 -0
- package/dist/components/DataGridBySchemaEditable.js +549 -0
- package/dist/components/DataTotals.d.ts +14 -0
- package/dist/components/DataTotals.js +23 -0
- package/dist/components/DialogActions.d.ts +10 -0
- package/dist/components/DialogActions.js +17 -0
- package/dist/components/DialogJSONSchemaForm.d.ts +12 -0
- package/dist/components/DialogJSONSchemaForm.js +20 -0
- package/dist/components/FormButtons.d.ts +14 -0
- package/dist/components/FormButtons.js +39 -0
- package/dist/components/GenericModelList.d.ts +19 -0
- package/dist/components/GenericModelList.js +113 -0
- package/dist/components/GenericRelatedModelList.d.ts +25 -0
- package/dist/components/GenericRelatedModelList.js +111 -0
- package/dist/components/TextFieldBySchema.js +39 -0
- package/dist/context/APIWrapper.d.ts +12 -0
- package/dist/context/APIWrapper.js +341 -0
- package/dist/context/APIWrapperContext.d.ts +75 -0
- package/dist/context/APIWrapperContext.js +15 -0
- package/dist/context/DRFReactBySchemaContext.d.ts +20 -0
- package/dist/context/DRFReactBySchemaContext.js +19 -0
- package/dist/context/DRFReactBySchemaProvider.d.ts +13 -0
- package/dist/context/DRFReactBySchemaProvider.js +53 -0
- package/dist/context/Form.d.ts +11 -0
- package/dist/context/Form.js +82 -0
- package/dist/context/Overlays.d.ts +4 -0
- package/dist/context/Overlays.js +87 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +14 -27
- package/{src/styles/index.ts → dist/styles/index.d.ts} +0 -1
- package/dist/styles/index.js +28 -0
- package/dist/styles/layout.d.ts +107 -0
- package/dist/styles/layout.js +56 -0
- package/dist/styles/theme.d.ts +21 -0
- package/dist/styles/theme.js +139 -0
- package/dist/utils.d.ts +75 -0
- package/dist/utils.js +268 -0
- package/package.json +15 -2
- package/.eslintrc.js +0 -14
- package/.gitlab-ci.yml +0 -14
- package/src/api.ts +0 -733
- package/src/components/DataGridBySchemaEditable/ConfirmDialog.tsx +0 -41
- package/src/components/DataGridBySchemaEditable/CustomToolbar.tsx +0 -93
- package/src/components/DataGridBySchemaEditable/FooterToolbar.tsx +0 -77
- package/src/components/DataGridBySchemaEditable/GridDecimalInput.tsx +0 -41
- package/src/components/DataGridBySchemaEditable/GridPatternInput.tsx +0 -37
- package/src/components/DataGridBySchemaEditable/InputInterval.tsx +0 -194
- package/src/components/DataGridBySchemaEditable/SelectEditInputCell.tsx +0 -153
- package/src/components/DataGridBySchemaEditable.md +0 -50
- package/src/components/DataGridBySchemaEditable.tsx +0 -747
- package/src/components/DataTotals.tsx +0 -56
- package/src/components/GenericModelList.tsx +0 -155
- package/src/context/DRFReactBySchemaProvider.md +0 -50
- package/src/context/DRFReactBySchemaProvider.tsx +0 -78
- package/src/index.ts +0 -64
- package/src/styles/layout.ts +0 -104
- package/src/styles/theme.ts +0 -190
- package/src/utils.ts +0 -321
- package/styleguide.config.js +0 -13
- package/tsconfig.json +0 -104
- package/webpack.config.js +0 -24
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type FConfirmDialogProps = {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onClose: (p: any) => void;
|
|
5
|
+
onConfirm: (p: any) => void;
|
|
6
|
+
};
|
|
7
|
+
export declare const ConfirmDialog: React.MemoExoticComponent<({ open, onClose, onConfirm }: FConfirmDialogProps) => JSX.Element>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ConfirmDialog = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const Button_1 = __importDefault(require("@mui/material/Button"));
|
|
9
|
+
const Dialog_1 = __importDefault(require("@mui/material/Dialog"));
|
|
10
|
+
const DialogActions_1 = __importDefault(require("@mui/material/DialogActions"));
|
|
11
|
+
const DialogContent_1 = __importDefault(require("@mui/material/DialogContent"));
|
|
12
|
+
const DialogTitle_1 = __importDefault(require("@mui/material/DialogTitle"));
|
|
13
|
+
const FConfirmDialog = ({ open, onClose, onConfirm }) => {
|
|
14
|
+
return (react_1.default.createElement(Dialog_1.default, { open: open, onClose: onClose },
|
|
15
|
+
react_1.default.createElement(DialogTitle_1.default, null, "Confirmar"),
|
|
16
|
+
react_1.default.createElement(DialogContent_1.default, null, "Tem certeza de que voc\u00EA quer remover este item?"),
|
|
17
|
+
react_1.default.createElement(DialogActions_1.default, null,
|
|
18
|
+
react_1.default.createElement(Button_1.default, { onClick: onClose }, "Cancelar"),
|
|
19
|
+
react_1.default.createElement(Button_1.default, { onClick: onConfirm }, "Remover"))));
|
|
20
|
+
};
|
|
21
|
+
exports.ConfirmDialog = react_1.default.memo(FConfirmDialog);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { GridEnrichedBySchemaColDef } from '../../utils';
|
|
2
|
+
type CustomToolbarProps = {
|
|
3
|
+
preparedColumns: GridEnrichedBySchemaColDef[];
|
|
4
|
+
setPreparedColumns: (p: null | GridEnrichedBySchemaColDef[]) => void;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
*
|
|
9
|
+
* @param {CustomToolbarProps} {
|
|
10
|
+
* preparedColumns,
|
|
11
|
+
* setPreparedColumns
|
|
12
|
+
* }
|
|
13
|
+
* @returns Custom Toolbar for the grid
|
|
14
|
+
*/
|
|
15
|
+
export declare const CustomToolbar: ({ preparedColumns, setPreparedColumns }: CustomToolbarProps) => JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.CustomToolbar = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
|
+
const x_data_grid_1 = require("@mui/x-data-grid");
|
|
32
|
+
const Button_1 = __importDefault(require("@mui/material/Button"));
|
|
33
|
+
const Expand_1 = __importDefault(require("@mui/icons-material/Expand"));
|
|
34
|
+
const Menu_1 = __importDefault(require("@mui/material/Menu"));
|
|
35
|
+
const MenuItem_1 = __importDefault(require("@mui/material/MenuItem"));
|
|
36
|
+
const utils_1 = require("./utils");
|
|
37
|
+
/**
|
|
38
|
+
*
|
|
39
|
+
*
|
|
40
|
+
* @param {CustomToolbarProps} {
|
|
41
|
+
* preparedColumns,
|
|
42
|
+
* setPreparedColumns
|
|
43
|
+
* }
|
|
44
|
+
* @returns Custom Toolbar for the grid
|
|
45
|
+
*/
|
|
46
|
+
const CustomToolbar = ({ preparedColumns, setPreparedColumns }) => {
|
|
47
|
+
const apiRef = (0, x_data_grid_1.useGridApiContext)();
|
|
48
|
+
const [resizeMenuAnchorEl, setResizeMenuAnchorEl] = (0, react_1.useState)(null);
|
|
49
|
+
const isResizeMenuOpen = Boolean(resizeMenuAnchorEl);
|
|
50
|
+
const openResizeMenu = (event) => {
|
|
51
|
+
setResizeMenuAnchorEl(event.currentTarget);
|
|
52
|
+
};
|
|
53
|
+
const closeResizeMenu = () => {
|
|
54
|
+
setResizeMenuAnchorEl(null);
|
|
55
|
+
};
|
|
56
|
+
return (react_1.default.createElement(x_data_grid_1.GridToolbarContainer, { sx: { justifyContent: 'space-between' } },
|
|
57
|
+
react_1.default.createElement("div", { style: { display: 'flex', flexWrap: 'wrap' } },
|
|
58
|
+
react_1.default.createElement(x_data_grid_1.GridToolbarColumnsButton, { sx: { ml: '10px', fontSize: '13px' } }),
|
|
59
|
+
react_1.default.createElement(x_data_grid_1.GridToolbarFilterButton, { sx: { ml: '10px', fontSize: '13px' } }),
|
|
60
|
+
react_1.default.createElement(x_data_grid_1.GridToolbarDensitySelector, { sx: { ml: '10px', fontSize: '13px' } }),
|
|
61
|
+
react_1.default.createElement(Button_1.default, { onClick: openResizeMenu, sx: { ml: '0px', fontSize: '13px' } },
|
|
62
|
+
react_1.default.createElement(Expand_1.default, { sx: { transform: 'rotate(90deg)', mr: '6px' } }),
|
|
63
|
+
"Ajustar"),
|
|
64
|
+
react_1.default.createElement(Menu_1.default, { anchorEl: resizeMenuAnchorEl, open: isResizeMenuOpen, onClose: closeResizeMenu },
|
|
65
|
+
react_1.default.createElement(MenuItem_1.default, { onClick: () => {
|
|
66
|
+
closeResizeMenu();
|
|
67
|
+
setPreparedColumns((0, utils_1.resizeColumns)(preparedColumns, 'fitScreen', apiRef));
|
|
68
|
+
} }, "Ajustar \u00E0 tela"),
|
|
69
|
+
react_1.default.createElement(MenuItem_1.default, { onClick: () => {
|
|
70
|
+
closeResizeMenu();
|
|
71
|
+
setPreparedColumns((0, utils_1.resizeColumns)(preparedColumns, 'maxContent', apiRef));
|
|
72
|
+
} }, "Ajustar ao conte\u00FAdo")),
|
|
73
|
+
react_1.default.createElement(x_data_grid_1.GridToolbarExport, { sx: { ml: '0px', fontSize: '13px' } })),
|
|
74
|
+
react_1.default.createElement("div", null,
|
|
75
|
+
react_1.default.createElement(x_data_grid_1.GridToolbarQuickFilter, null))));
|
|
76
|
+
};
|
|
77
|
+
exports.CustomToolbar = CustomToolbar;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Item } from '../../utils';
|
|
2
|
+
type FooterToolbarProps = {
|
|
3
|
+
name: string;
|
|
4
|
+
setRowModesModel: (p: any) => any;
|
|
5
|
+
dataGrid: {
|
|
6
|
+
data: Item[];
|
|
7
|
+
};
|
|
8
|
+
setDataGrid: (p: any) => any;
|
|
9
|
+
emptyItem: {
|
|
10
|
+
current: Record<string, any>;
|
|
11
|
+
};
|
|
12
|
+
indexField: string;
|
|
13
|
+
isEditable: boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare const FooterToolbar: ({ name, setRowModesModel, dataGrid, setDataGrid, emptyItem, indexField, isEditable }: FooterToolbarProps) => JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FooterToolbar = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const x_data_grid_1 = require("@mui/x-data-grid");
|
|
9
|
+
const Button_1 = __importDefault(require("@mui/material/Button"));
|
|
10
|
+
const Add_1 = __importDefault(require("@mui/icons-material/Add"));
|
|
11
|
+
const utils_1 = require("../../utils");
|
|
12
|
+
const FooterToolbar = ({ name, setRowModesModel, dataGrid, setDataGrid, emptyItem, indexField, isEditable }) => {
|
|
13
|
+
const handleClick = () => {
|
|
14
|
+
const id = (0, utils_1.getTmpId)();
|
|
15
|
+
emptyItem.current.id = id;
|
|
16
|
+
const newData = [
|
|
17
|
+
Object.assign({}, emptyItem.current),
|
|
18
|
+
...dataGrid.data
|
|
19
|
+
];
|
|
20
|
+
setDataGrid({
|
|
21
|
+
data: newData
|
|
22
|
+
});
|
|
23
|
+
setRowModesModel((oldModel) => (Object.assign(Object.assign({}, oldModel), { [id]: { mode: x_data_grid_1.GridRowModes.Edit, fieldToFocus: indexField } })));
|
|
24
|
+
// Ugly hack to scroll to top, since scroll to cell is only available in Pro
|
|
25
|
+
const el = document.querySelector(`.dataGrid_${name} .MuiDataGrid-virtualScroller`);
|
|
26
|
+
// console.log(el, name);
|
|
27
|
+
if (el) {
|
|
28
|
+
el.scrollTop = 0;
|
|
29
|
+
setTimeout(() => {
|
|
30
|
+
el.scrollTop = 0;
|
|
31
|
+
}, 10);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
return (react_1.default.createElement(x_data_grid_1.GridFooterContainer, null,
|
|
35
|
+
isEditable &&
|
|
36
|
+
react_1.default.createElement(Button_1.default, { color: "primary", startIcon: react_1.default.createElement(Add_1.default, null), onClick: handleClick, sx: { ml: 2 } }, "Adicionar"),
|
|
37
|
+
react_1.default.createElement(x_data_grid_1.GridFooter, { sx: (isEditable)
|
|
38
|
+
? { border: 'none' }
|
|
39
|
+
: { width: '100%' } })));
|
|
40
|
+
};
|
|
41
|
+
exports.FooterToolbar = FooterToolbar;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.GridDecimalInput = void 0;
|
|
16
|
+
const react_1 = __importDefault(require("react"));
|
|
17
|
+
const x_data_grid_1 = require("@mui/x-data-grid");
|
|
18
|
+
const react_number_format_1 = require("react-number-format");
|
|
19
|
+
const TextField_1 = __importDefault(require("@mui/material/TextField"));
|
|
20
|
+
const GridDecimalInput = ({ id, value, field }) => {
|
|
21
|
+
const apiRef = (0, x_data_grid_1.useGridApiContext)();
|
|
22
|
+
const decimalScale = 2;
|
|
23
|
+
const disableCurrency = true;
|
|
24
|
+
const handleChange = (newValue) => __awaiter(void 0, void 0, void 0, function* () {
|
|
25
|
+
yield apiRef.current.setEditCellValue({ id, field, value: newValue });
|
|
26
|
+
apiRef.current.stopCellEditMode({ id, field });
|
|
27
|
+
});
|
|
28
|
+
return (react_1.default.createElement(react_number_format_1.NumericFormat, { key: field, id: field, onValueChange: (values, sourceInfo) => {
|
|
29
|
+
handleChange(values.value);
|
|
30
|
+
}, value: value, thousandSeparator: '.', decimalSeparator: ',', decimalScale: decimalScale, fixedDecimalScale: true, valueIsNumericString: true, prefix: disableCurrency ? '' : 'R$ ', customInput: TextField_1.default }));
|
|
31
|
+
};
|
|
32
|
+
exports.GridDecimalInput = GridDecimalInput;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.GridPatternInput = void 0;
|
|
16
|
+
const react_1 = __importDefault(require("react"));
|
|
17
|
+
const x_data_grid_1 = require("@mui/x-data-grid");
|
|
18
|
+
const react_number_format_1 = require("react-number-format");
|
|
19
|
+
const TextField_1 = __importDefault(require("@mui/material/TextField"));
|
|
20
|
+
const GridPatternInput = ({ id, value, field, patternFormat = 'cpf' }) => {
|
|
21
|
+
const apiRef = (0, x_data_grid_1.useGridApiContext)();
|
|
22
|
+
const handleChange = (newValue) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
+
yield apiRef.current.setEditCellValue({ id, field, value: newValue });
|
|
24
|
+
apiRef.current.stopCellEditMode({ id, field });
|
|
25
|
+
});
|
|
26
|
+
return (react_1.default.createElement(react_number_format_1.PatternFormat, { key: field, id: field, onValueChange: (values, sourceInfo) => {
|
|
27
|
+
handleChange(values.value);
|
|
28
|
+
}, value: value, valueIsNumericString: true, format: patternFormat, mask: "_", customInput: TextField_1.default }));
|
|
29
|
+
};
|
|
30
|
+
exports.GridPatternInput = GridPatternInput;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.InputFloatInterval = exports.InputDateInterval = exports.InputNumberInterval = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
|
+
const Box_1 = __importDefault(require("@mui/system/Box"));
|
|
32
|
+
const TextField_1 = __importDefault(require("@mui/material/TextField"));
|
|
33
|
+
const react_number_format_1 = require("react-number-format");
|
|
34
|
+
const Sync_1 = __importDefault(require("@mui/icons-material/Sync"));
|
|
35
|
+
const SUBMIT_FILTER_STROKE_TIME = 500;
|
|
36
|
+
const InputInterval = ({ item, applyValue, focusElementRef = null, type }) => {
|
|
37
|
+
var _a;
|
|
38
|
+
const filterTimeout = (0, react_1.useRef)();
|
|
39
|
+
const [filterValueState, setFilterValueState] = react_1.default.useState((_a = item.value) !== null && _a !== void 0 ? _a : '');
|
|
40
|
+
const [applying, setIsApplying] = react_1.default.useState(false);
|
|
41
|
+
react_1.default.useEffect(() => {
|
|
42
|
+
return () => {
|
|
43
|
+
clearTimeout(filterTimeout.current);
|
|
44
|
+
};
|
|
45
|
+
}, []);
|
|
46
|
+
react_1.default.useEffect(() => {
|
|
47
|
+
var _a;
|
|
48
|
+
const itemValue = (_a = item.value) !== null && _a !== void 0 ? _a : [undefined, undefined];
|
|
49
|
+
setFilterValueState(itemValue);
|
|
50
|
+
}, [item.value]);
|
|
51
|
+
const updateFilterValue = (lowerBound, upperBound) => {
|
|
52
|
+
clearTimeout(filterTimeout.current);
|
|
53
|
+
setFilterValueState([lowerBound, upperBound]);
|
|
54
|
+
setIsApplying(true);
|
|
55
|
+
filterTimeout.current = setTimeout(() => {
|
|
56
|
+
setIsApplying(false);
|
|
57
|
+
applyValue(Object.assign(Object.assign({}, item), { value: [lowerBound, upperBound] }));
|
|
58
|
+
}, SUBMIT_FILTER_STROKE_TIME);
|
|
59
|
+
};
|
|
60
|
+
const handleUpperFilterChange = (event) => {
|
|
61
|
+
var _a;
|
|
62
|
+
const newUpperBound = (_a = event.target) === null || _a === void 0 ? void 0 : _a.value;
|
|
63
|
+
updateFilterValue(filterValueState[0], newUpperBound);
|
|
64
|
+
};
|
|
65
|
+
const handleLowerFilterChange = (event) => {
|
|
66
|
+
var _a;
|
|
67
|
+
const newLowerBound = (_a = event.target) === null || _a === void 0 ? void 0 : _a.value;
|
|
68
|
+
updateFilterValue(newLowerBound, filterValueState[1]);
|
|
69
|
+
};
|
|
70
|
+
return (react_1.default.createElement(Box_1.default, { sx: {
|
|
71
|
+
display: 'inline-flex',
|
|
72
|
+
flexDirection: 'row',
|
|
73
|
+
alignItems: 'end',
|
|
74
|
+
height: 48,
|
|
75
|
+
pl: '20px'
|
|
76
|
+
} },
|
|
77
|
+
type === 'number' &&
|
|
78
|
+
react_1.default.createElement(react_1.default.Fragment, null,
|
|
79
|
+
react_1.default.createElement(TextField_1.default, { name: "lower-bound-input", placeholder: "De", label: "De", variant: "standard", value: Number(filterValueState[0]), onChange: handleLowerFilterChange, type: "number", inputRef: focusElementRef, sx: { mr: 2, minWidth: 130 } }),
|
|
80
|
+
react_1.default.createElement(TextField_1.default, { name: "upper-bound-input", placeholder: "At\u00E9", label: "At\u00E9", variant: "standard", value: Number(filterValueState[1]), onChange: handleUpperFilterChange, type: "number", sx: { minWidth: 130 }, InputProps: applying ? { endAdornment: react_1.default.createElement(Sync_1.default, null) } : {} })),
|
|
81
|
+
type === 'float' &&
|
|
82
|
+
react_1.default.createElement(react_1.default.Fragment, null,
|
|
83
|
+
react_1.default.createElement(react_number_format_1.NumericFormat, { name: "lower-bound-input", placeholder: "De", label: "De", variant: "standard", value: Number(filterValueState[0]), onValueChange: (values, sourceInfo) => {
|
|
84
|
+
handleLowerFilterChange({ target: { value: values.value } });
|
|
85
|
+
}, thousandSeparator: '.', decimalSeparator: ',', decimalScale: 2, fixedDecimalScale: true, valueIsNumericString: true, inputRef: focusElementRef, sx: { mr: 2, minWidth: 130 }, customInput: TextField_1.default }),
|
|
86
|
+
react_1.default.createElement(react_number_format_1.NumericFormat, { name: "upper-bound-input", placeholder: "At\u00E9", label: "At\u00E9", variant: "standard", value: Number(filterValueState[1]), onValueChange: (values, sourceInfo) => {
|
|
87
|
+
handleUpperFilterChange({ target: { value: values.value } });
|
|
88
|
+
}, thousandSeparator: '.', decimalSeparator: ',', decimalScale: 2, fixedDecimalScale: true, valueIsNumericString: true, InputProps: applying ? { endAdornment: react_1.default.createElement(Sync_1.default, null) } : {}, sx: { minWidth: 130 }, customInput: TextField_1.default })),
|
|
89
|
+
type === 'date' &&
|
|
90
|
+
react_1.default.createElement(react_1.default.Fragment, null,
|
|
91
|
+
react_1.default.createElement(TextField_1.default, { name: "lower-bound-input", label: "De", variant: "standard", value: filterValueState[0] || '', onChange: handleLowerFilterChange, type: "date", inputRef: focusElementRef, InputLabelProps: { shrink: true }, sx: { mr: 2, minWidth: 130 } }),
|
|
92
|
+
react_1.default.createElement(TextField_1.default, { name: "upper-bound-input", label: "At\u00E9", variant: "standard", value: filterValueState[1] || '', onChange: handleUpperFilterChange, type: "date", InputProps: applying ? { endAdornment: react_1.default.createElement(Sync_1.default, null) } : {}, InputLabelProps: { shrink: true }, sx: { minWidth: 130 } }))));
|
|
93
|
+
};
|
|
94
|
+
const InputNumberInterval = (props) => {
|
|
95
|
+
return (react_1.default.createElement(InputInterval, Object.assign({}, props, { type: "number" })));
|
|
96
|
+
};
|
|
97
|
+
exports.InputNumberInterval = InputNumberInterval;
|
|
98
|
+
const InputDateInterval = (props) => {
|
|
99
|
+
return (react_1.default.createElement(InputInterval, Object.assign({}, props, { type: "date" })));
|
|
100
|
+
};
|
|
101
|
+
exports.InputDateInterval = InputDateInterval;
|
|
102
|
+
const InputFloatInterval = (props) => {
|
|
103
|
+
return (react_1.default.createElement(InputInterval, Object.assign({}, props, { type: "float" })));
|
|
104
|
+
};
|
|
105
|
+
exports.InputFloatInterval = InputFloatInterval;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SxProps } from '@mui/material';
|
|
3
|
+
import { GridEnrichedBySchemaColDef } from '../../utils';
|
|
4
|
+
import { OptionsACType } from '../../context/APIWrapperContext';
|
|
5
|
+
interface SelectEditInputCellProps {
|
|
6
|
+
field: string;
|
|
7
|
+
id: number | string;
|
|
8
|
+
value?: any;
|
|
9
|
+
column: GridEnrichedBySchemaColDef;
|
|
10
|
+
type: string;
|
|
11
|
+
optionsAC: React.MutableRefObject<OptionsACType | null>;
|
|
12
|
+
isIndexField: boolean;
|
|
13
|
+
multiple?: boolean;
|
|
14
|
+
sx?: SxProps;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
*
|
|
19
|
+
* @param {SelectEditInputCellProps} {
|
|
20
|
+
* field,
|
|
21
|
+
* id,
|
|
22
|
+
* value,
|
|
23
|
+
* column,
|
|
24
|
+
* type,
|
|
25
|
+
* optionsAC,
|
|
26
|
+
* isIndexField,
|
|
27
|
+
* multiple = false,
|
|
28
|
+
* sx = {}
|
|
29
|
+
* }
|
|
30
|
+
* @returns {*} {JSX.Element}
|
|
31
|
+
*/
|
|
32
|
+
export declare function SelectEditInputCell({ field, id, value, column, type, optionsAC, isIndexField, multiple, sx }: SelectEditInputCellProps): JSX.Element;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.SelectEditInputCell = void 0;
|
|
39
|
+
const react_1 = __importDefault(require("react"));
|
|
40
|
+
const x_data_grid_1 = require("@mui/x-data-grid");
|
|
41
|
+
const TextField_1 = __importDefault(require("@mui/material/TextField"));
|
|
42
|
+
const Autocomplete_1 = __importStar(require("@mui/material/Autocomplete"));
|
|
43
|
+
const utils_1 = require("../../utils");
|
|
44
|
+
const filter = (0, Autocomplete_1.createFilterOptions)();
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
*
|
|
48
|
+
* @param {SelectEditInputCellProps} {
|
|
49
|
+
* field,
|
|
50
|
+
* id,
|
|
51
|
+
* value,
|
|
52
|
+
* column,
|
|
53
|
+
* type,
|
|
54
|
+
* optionsAC,
|
|
55
|
+
* isIndexField,
|
|
56
|
+
* multiple = false,
|
|
57
|
+
* sx = {}
|
|
58
|
+
* }
|
|
59
|
+
* @returns {*} {JSX.Element}
|
|
60
|
+
*/
|
|
61
|
+
function SelectEditInputCell({ field, id, value, column, type, optionsAC, isIndexField, multiple = false, sx = {} }) {
|
|
62
|
+
// TODO: allow edit option label, as in formautocomplete!
|
|
63
|
+
const apiRef = (0, x_data_grid_1.useGridApiContext)();
|
|
64
|
+
const handleChange = (newValue) => __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
yield apiRef.current.setEditCellValue({ id, field, value: newValue });
|
|
66
|
+
apiRef.current.stopCellEditMode({ id, field });
|
|
67
|
+
});
|
|
68
|
+
const labelKey = (['field', 'nested object'].includes(type) || isIndexField)
|
|
69
|
+
? 'label'
|
|
70
|
+
: 'display_name';
|
|
71
|
+
const valueKey = (['field', 'nested object'].includes(type) || isIndexField)
|
|
72
|
+
? 'id'
|
|
73
|
+
: 'value';
|
|
74
|
+
let creatableProps = {};
|
|
75
|
+
if (column.creatable || isIndexField) {
|
|
76
|
+
creatableProps = {
|
|
77
|
+
freesolo: 'true',
|
|
78
|
+
filterOptions: (options, params) => {
|
|
79
|
+
const filtered = filter(options, params);
|
|
80
|
+
const inputValue = (params.inputValue)
|
|
81
|
+
? params.inputValue
|
|
82
|
+
: '';
|
|
83
|
+
const inputValueLower = inputValue.trim().toLowerCase();
|
|
84
|
+
// Suggest the creation of a new value
|
|
85
|
+
const isExisting = options.some(option => inputValueLower === option[labelKey].trim().toLowerCase());
|
|
86
|
+
if (inputValue !== '' && !isExisting) {
|
|
87
|
+
filtered.push({
|
|
88
|
+
inputValue,
|
|
89
|
+
[labelKey]: `Criar "${inputValue}"`
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return filtered;
|
|
93
|
+
},
|
|
94
|
+
handleHomeEndKeys: true,
|
|
95
|
+
getOptionLabel: (option) => {
|
|
96
|
+
// Value selected with enter, right from the input
|
|
97
|
+
if (typeof option === 'string') {
|
|
98
|
+
return option;
|
|
99
|
+
}
|
|
100
|
+
// Criar "xxx" option created dynamically
|
|
101
|
+
if (option.inputValue) {
|
|
102
|
+
return option.inputValue;
|
|
103
|
+
}
|
|
104
|
+
// Regular option
|
|
105
|
+
return option[labelKey];
|
|
106
|
+
},
|
|
107
|
+
renderOption: (props, option) => {
|
|
108
|
+
return (react_1.default.createElement("li", Object.assign({ key: option[valueKey] }, props), option[labelKey]));
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
;
|
|
113
|
+
return (react_1.default.createElement(Autocomplete_1.default, Object.assign({ key: field, id: field, value: value, options: optionsAC.current && optionsAC.current[field] ? optionsAC.current[field] : [], selectOnFocus: true, autoHighlight: true, multiple: multiple, isOptionEqualToValue: (option, value) => {
|
|
114
|
+
return (option[labelKey] === value[labelKey]);
|
|
115
|
+
}, getOptionLabel: (option) => {
|
|
116
|
+
return option[labelKey];
|
|
117
|
+
}, onChange: (e, value) => {
|
|
118
|
+
if (!column.creatable && !isIndexField) {
|
|
119
|
+
handleChange(value);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
let newValue = value;
|
|
123
|
+
if (typeof newValue === 'string') {
|
|
124
|
+
const tmpId = (0, utils_1.getTmpId)();
|
|
125
|
+
newValue = {
|
|
126
|
+
[valueKey]: tmpId,
|
|
127
|
+
[labelKey]: newValue
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
if (newValue && newValue.inputValue) {
|
|
131
|
+
const tmpId = (0, utils_1.getTmpId)();
|
|
132
|
+
newValue = {
|
|
133
|
+
[valueKey]: tmpId,
|
|
134
|
+
[labelKey]: newValue.inputValue
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
handleChange(newValue);
|
|
138
|
+
}, fullWidth: true, renderInput: params => (react_1.default.createElement(TextField_1.default, Object.assign({}, params, { sx: sx }))) }, creatableProps)));
|
|
139
|
+
}
|
|
140
|
+
exports.SelectEditInputCell = SelectEditInputCell;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { GridApi, GridFilterOperator } from "@mui/x-data-grid";
|
|
3
|
+
import { GridEnrichedBySchemaColDef } from "../../utils";
|
|
4
|
+
export type ResizeType = 'condense' | 'maxContent' | 'fitScreen';
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param columns
|
|
8
|
+
* @param resizeType
|
|
9
|
+
* @param apiRef
|
|
10
|
+
* @returns columns resized to the chosen resizeType
|
|
11
|
+
*/
|
|
12
|
+
export declare function resizeColumns(columns: GridEnrichedBySchemaColDef[], resizeType: ResizeType, apiRef: React.MutableRefObject<GridApi>): GridEnrichedBySchemaColDef[];
|
|
13
|
+
export declare const quantityOnlyOperators: ({ type }: {
|
|
14
|
+
type: string;
|
|
15
|
+
}) => GridFilterOperator<any, any, any>[];
|