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.
Files changed (79) hide show
  1. package/dist/api.d.ts +84 -0
  2. package/dist/api.js +613 -0
  3. package/dist/components/DataGridBySchemaEditable/ConfirmDialog.d.ts +8 -0
  4. package/dist/components/DataGridBySchemaEditable/ConfirmDialog.js +21 -0
  5. package/dist/components/DataGridBySchemaEditable/CustomToolbar.d.ts +16 -0
  6. package/dist/components/DataGridBySchemaEditable/CustomToolbar.js +77 -0
  7. package/dist/components/DataGridBySchemaEditable/FooterToolbar.d.ts +16 -0
  8. package/dist/components/DataGridBySchemaEditable/FooterToolbar.js +41 -0
  9. package/dist/components/DataGridBySchemaEditable/GridDecimalInput.d.ts +8 -0
  10. package/dist/components/DataGridBySchemaEditable/GridDecimalInput.js +32 -0
  11. package/dist/components/DataGridBySchemaEditable/GridPatternInput.d.ts +8 -0
  12. package/dist/components/DataGridBySchemaEditable/GridPatternInput.js +30 -0
  13. package/dist/components/DataGridBySchemaEditable/InputInterval.d.ts +3 -0
  14. package/dist/components/DataGridBySchemaEditable/InputInterval.js +105 -0
  15. package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.d.ts +33 -0
  16. package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.js +140 -0
  17. package/dist/components/DataGridBySchemaEditable/utils.d.ts +15 -0
  18. package/{src/components/DataGridBySchemaEditable/utils.ts → dist/components/DataGridBySchemaEditable/utils.js} +32 -50
  19. package/dist/components/DataGridBySchemaEditable.d.ts +34 -0
  20. package/dist/components/DataGridBySchemaEditable.js +549 -0
  21. package/dist/components/DataTotals.d.ts +14 -0
  22. package/dist/components/DataTotals.js +23 -0
  23. package/dist/components/DialogActions.d.ts +10 -0
  24. package/dist/components/DialogActions.js +17 -0
  25. package/dist/components/DialogJSONSchemaForm.d.ts +12 -0
  26. package/dist/components/DialogJSONSchemaForm.js +20 -0
  27. package/dist/components/FormButtons.d.ts +14 -0
  28. package/dist/components/FormButtons.js +39 -0
  29. package/dist/components/GenericModelList.d.ts +19 -0
  30. package/dist/components/GenericModelList.js +113 -0
  31. package/dist/components/GenericRelatedModelList.d.ts +25 -0
  32. package/dist/components/GenericRelatedModelList.js +111 -0
  33. package/dist/components/TextFieldBySchema.js +39 -0
  34. package/dist/context/APIWrapper.d.ts +12 -0
  35. package/dist/context/APIWrapper.js +341 -0
  36. package/dist/context/APIWrapperContext.d.ts +75 -0
  37. package/dist/context/APIWrapperContext.js +15 -0
  38. package/dist/context/DRFReactBySchemaContext.d.ts +20 -0
  39. package/dist/context/DRFReactBySchemaContext.js +19 -0
  40. package/dist/context/DRFReactBySchemaProvider.d.ts +13 -0
  41. package/dist/context/DRFReactBySchemaProvider.js +53 -0
  42. package/dist/context/Form.d.ts +11 -0
  43. package/dist/context/Form.js +82 -0
  44. package/dist/context/Overlays.d.ts +4 -0
  45. package/dist/context/Overlays.js +87 -0
  46. package/dist/index.d.ts +11 -0
  47. package/dist/index.js +14 -27
  48. package/{src/styles/index.ts → dist/styles/index.d.ts} +0 -1
  49. package/dist/styles/index.js +28 -0
  50. package/dist/styles/layout.d.ts +107 -0
  51. package/dist/styles/layout.js +56 -0
  52. package/dist/styles/theme.d.ts +21 -0
  53. package/dist/styles/theme.js +139 -0
  54. package/dist/utils.d.ts +75 -0
  55. package/dist/utils.js +268 -0
  56. package/package.json +15 -2
  57. package/.eslintrc.js +0 -14
  58. package/.gitlab-ci.yml +0 -14
  59. package/src/api.ts +0 -733
  60. package/src/components/DataGridBySchemaEditable/ConfirmDialog.tsx +0 -41
  61. package/src/components/DataGridBySchemaEditable/CustomToolbar.tsx +0 -93
  62. package/src/components/DataGridBySchemaEditable/FooterToolbar.tsx +0 -77
  63. package/src/components/DataGridBySchemaEditable/GridDecimalInput.tsx +0 -41
  64. package/src/components/DataGridBySchemaEditable/GridPatternInput.tsx +0 -37
  65. package/src/components/DataGridBySchemaEditable/InputInterval.tsx +0 -194
  66. package/src/components/DataGridBySchemaEditable/SelectEditInputCell.tsx +0 -153
  67. package/src/components/DataGridBySchemaEditable.md +0 -50
  68. package/src/components/DataGridBySchemaEditable.tsx +0 -747
  69. package/src/components/DataTotals.tsx +0 -56
  70. package/src/components/GenericModelList.tsx +0 -155
  71. package/src/context/DRFReactBySchemaProvider.md +0 -50
  72. package/src/context/DRFReactBySchemaProvider.tsx +0 -78
  73. package/src/index.ts +0 -64
  74. package/src/styles/layout.ts +0 -104
  75. package/src/styles/theme.ts +0 -190
  76. package/src/utils.ts +0 -321
  77. package/styleguide.config.js +0 -13
  78. package/tsconfig.json +0 -104
  79. 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,8 @@
1
+ type GridDecimalInputProps = {
2
+ field: string;
3
+ id: number | string;
4
+ value?: any;
5
+ column: object;
6
+ };
7
+ export declare const GridDecimalInput: ({ id, value, field }: GridDecimalInputProps) => JSX.Element;
8
+ export {};
@@ -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,8 @@
1
+ type GridPatternInputProps = {
2
+ field: string;
3
+ id: number | string;
4
+ value?: any;
5
+ patternFormat?: string;
6
+ };
7
+ export declare const GridPatternInput: ({ id, value, field, patternFormat }: GridPatternInputProps) => JSX.Element;
8
+ export {};
@@ -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,3 @@
1
+ export declare const InputNumberInterval: (props: any) => JSX.Element;
2
+ export declare const InputDateInterval: (props: any) => JSX.Element;
3
+ export declare const InputFloatInterval: (props: any) => JSX.Element;
@@ -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>[];