drf-react-by-schema 0.16.3 → 0.16.5

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.
@@ -2,7 +2,7 @@
2
2
  import { SxProps } from '@mui/material';
3
3
  import { FormFieldLayout, GenericValue, OptionsAC } from '../../utils';
4
4
  import { GridEnrichedBySchemaColDef } from '../../utils';
5
- import { OnEditModelType } from '../../context/APIWrapperContext';
5
+ import { DialogType, OnEditModelType } from '../../context/APIWrapperContext';
6
6
  interface SelectEditInputCellProps {
7
7
  field: string;
8
8
  id: number | string;
@@ -15,6 +15,7 @@ interface SelectEditInputCellProps {
15
15
  onEditModel?: (x: OnEditModelType) => void;
16
16
  fieldsLayout?: FormFieldLayout[];
17
17
  sx?: SxProps;
18
+ setDialog: (x: Partial<DialogType>) => void;
18
19
  }
19
- export declare function SelectEditInputCell({ field, id, value, column, type, optionsAC, isIndexField, multiple, onEditModel, fieldsLayout, sx, }: SelectEditInputCellProps): JSX.Element;
20
+ export declare function SelectEditInputCell({ field, id, value, column, type, optionsAC, isIndexField, multiple, onEditModel, fieldsLayout, sx, setDialog, }: SelectEditInputCellProps): JSX.Element;
20
21
  export {};
@@ -43,8 +43,9 @@ const IconButton_1 = __importDefault(require("@mui/material/IconButton"));
43
43
  const Edit_1 = __importDefault(require("@mui/icons-material/Edit"));
44
44
  const Autocomplete_1 = __importStar(require("@mui/material/Autocomplete"));
45
45
  const utils_1 = require("../../utils");
46
+ const DialogActions_1 = __importDefault(require("../DialogActions"));
46
47
  const filter = (0, Autocomplete_1.createFilterOptions)();
47
- function SelectEditInputCell({ field, id, value, column, type, optionsAC, isIndexField, multiple = false, onEditModel, fieldsLayout, sx = {}, }) {
48
+ function SelectEditInputCell({ field, id, value, column, type, optionsAC, isIndexField, multiple = false, onEditModel, fieldsLayout, sx = {}, setDialog, }) {
48
49
  // TODO: allow edit option label, as in formautocomplete!
49
50
  const apiRef = (0, x_data_grid_1.useGridApiContext)();
50
51
  const handleChange = (newValue) => __awaiter(this, void 0, void 0, function* () {
@@ -119,6 +120,16 @@ function SelectEditInputCell({ field, id, value, column, type, optionsAC, isInde
119
120
  handleChange(newValue);
120
121
  }, fullWidth: true, renderInput: (params) => (react_1.default.createElement(react_1.default.Fragment, null, column.creatable ? (react_1.default.createElement(TextField_1.default, Object.assign({}, params, { margin: "normal", InputProps: Object.assign(Object.assign({}, params.InputProps), { endAdornment: (react_1.default.createElement(react_1.default.Fragment, null,
121
122
  !multiple && onEditModel && value && (react_1.default.createElement(IconButton_1.default, { size: "small", onClick: () => {
123
+ if ((0, utils_1.isTmpId)(value.id)) {
124
+ setDialog({
125
+ open: true,
126
+ loading: false,
127
+ title: 'Linha sendo criada',
128
+ Body: 'Esta linha está sendo criado agora por você. Para editar suas propriedades, salve antes, e depois você poderá editar!',
129
+ Actions: (react_1.default.createElement(DialogActions_1.default, { setDialog: setDialog, btnCancel: "Entendi" })),
130
+ });
131
+ return;
132
+ }
122
133
  onEditModel({
123
134
  model: field,
124
135
  id: value[valueKey],
@@ -133,7 +133,7 @@ const DataGridBySchemaEditable = (0, react_1.forwardRef)(({ schema, data, rowCou
133
133
  }
134
134
  });
135
135
  const initColumns = () => __awaiter(void 0, void 0, void 0, function* () {
136
- let cols = [];
136
+ const actionCols = [];
137
137
  if (isEditable) {
138
138
  const handleSaveClick = (id) => () => {
139
139
  if (id) {
@@ -157,7 +157,7 @@ const DataGridBySchemaEditable = (0, react_1.forwardRef)(({ schema, data, rowCou
157
157
  setRowModesModel(Object.assign(Object.assign({}, rowModesModel), { [id]: { mode: x_data_grid_1.GridRowModes.Edit } }));
158
158
  }
159
159
  };
160
- cols.push({
160
+ actionCols.push({
161
161
  field: 'actions',
162
162
  headerName: '',
163
163
  type: 'actions',
@@ -209,7 +209,7 @@ const DataGridBySchemaEditable = (0, react_1.forwardRef)(({ schema, data, rowCou
209
209
  },
210
210
  });
211
211
  }
212
- cols = [...cols, ...columns];
212
+ const cols = [...actionCols, ...columns];
213
213
  const colsPromises = cols.map((col) => __awaiter(void 0, void 0, void 0, function* () {
214
214
  if (!schema[col.field]) {
215
215
  return col;
@@ -264,7 +264,7 @@ const DataGridBySchemaEditable = (0, react_1.forwardRef)(({ schema, data, rowCou
264
264
  column.renderEditCell = (params) => (react_1.default.createElement(SelectEditInputCell_1.SelectEditInputCell, Object.assign({}, params, { column: column, type: schema[col.field].type, optionsAC: optionsAC.current, isIndexField: isIndexField, onEditModel: onEditModel, fieldsLayout: customFieldFormLayouts &&
265
265
  col.field in customFieldFormLayouts
266
266
  ? customFieldFormLayouts[col.field]
267
- : undefined })));
267
+ : undefined, setDialog: apiContext.setDialog })));
268
268
  break;
269
269
  }
270
270
  column.valueGetter = (params) => {
@@ -281,7 +281,7 @@ const DataGridBySchemaEditable = (0, react_1.forwardRef)(({ schema, data, rowCou
281
281
  : params.value.map((val) => val.label).join(', ');
282
282
  };
283
283
  column.filterable = false;
284
- column.renderEditCell = (params) => (react_1.default.createElement(SelectEditInputCell_1.SelectEditInputCell, Object.assign({}, params, { column: column, type: schema[col.field].type, optionsAC: optionsAC.current, isIndexField: isIndexField, multiple: schema[col.field].many || false })));
284
+ column.renderEditCell = (params) => (react_1.default.createElement(SelectEditInputCell_1.SelectEditInputCell, Object.assign({}, params, { column: column, type: schema[col.field].type, optionsAC: optionsAC.current, isIndexField: isIndexField, multiple: schema[col.field].many || false, setDialog: apiContext.setDialog })));
285
285
  break;
286
286
  }
287
287
  column.valueGetter = (params) => {
@@ -300,7 +300,7 @@ const DataGridBySchemaEditable = (0, react_1.forwardRef)(({ schema, data, rowCou
300
300
  column.sortComparator = (v1, v2, param1, param2) => {
301
301
  return (0, x_data_grid_1.gridStringOrNumberComparator)(v1.display_name, v2.display_name, param1, param2);
302
302
  };
303
- column.renderEditCell = (params) => (react_1.default.createElement(SelectEditInputCell_1.SelectEditInputCell, Object.assign({}, params, { column: column, type: schema[col.field].type, optionsAC: optionsAC.current, isIndexField: isIndexField })));
303
+ column.renderEditCell = (params) => (react_1.default.createElement(SelectEditInputCell_1.SelectEditInputCell, Object.assign({}, params, { column: column, type: schema[col.field].type, optionsAC: optionsAC.current, isIndexField: isIndexField, setDialog: apiContext.setDialog })));
304
304
  break;
305
305
  }
306
306
  column.valueGetter = (params) => {
@@ -382,7 +382,7 @@ const DataGridBySchemaEditable = (0, react_1.forwardRef)(({ schema, data, rowCou
382
382
  if (!(0, utils_1.isTmpId)(params.id)) {
383
383
  return react_1.default.createElement(x_data_grid_1.GridEditInputCell, Object.assign({}, params));
384
384
  }
385
- return (react_1.default.createElement(SelectEditInputCell_1.SelectEditInputCell, Object.assign({}, params, { column: column, type: schema[col.field].type, optionsAC: optionsAC.current, isIndexField: true })));
385
+ return (react_1.default.createElement(SelectEditInputCell_1.SelectEditInputCell, Object.assign({}, params, { column: column, type: schema[col.field].type, optionsAC: optionsAC.current, isIndexField: true, setDialog: apiContext.setDialog })));
386
386
  };
387
387
  }
388
388
  }
@@ -407,8 +407,8 @@ const DataGridBySchemaEditable = (0, react_1.forwardRef)(({ schema, data, rowCou
407
407
  // Finally!
408
408
  return column;
409
409
  }));
410
- cols = yield Promise.all(colsPromises);
411
- setPreparedColumns(cols);
410
+ const finalCols = yield Promise.all(colsPromises);
411
+ setPreparedColumns(finalCols);
412
412
  });
413
413
  const handleAddItems = (numberOfRows = 1) => {
414
414
  const newRows = [];
@@ -577,7 +577,7 @@ const DataGridBySchemaEditable = (0, react_1.forwardRef)(({ schema, data, rowCou
577
577
  updateOptionsAC().then(() => {
578
578
  initColumns();
579
579
  });
580
- }, [rowModesModel]);
580
+ }, [rowModesModel, columns]);
581
581
  const processRowUpdate = (editedRow) => __awaiter(void 0, void 0, void 0, function* () {
582
582
  if (!preparedColumns || !yupValidationSchema.current) {
583
583
  return false;
@@ -23,7 +23,7 @@ interface GenericModelListProps {
23
23
  onSelectActions?: OnSelectActions[];
24
24
  sumRows?: SumRowsType;
25
25
  isAutoHeight?: boolean;
26
- forceReload: boolean;
26
+ forceReload?: boolean;
27
27
  LinkComponent?: any | null;
28
28
  hasHeader: boolean;
29
29
  paginationMode: 'server' | 'client';
@@ -35,6 +35,7 @@ interface GenericRelatedModelListProps {
35
35
  tableAutoHeight?: boolean;
36
36
  actions?: Partial<ActionType>[];
37
37
  optionsAC?: OptionsAC;
38
+ LinkComponent?: any | null;
38
39
  }
39
- export default function GenericRelatedModelList({ model, id, relatedModel, columnFields, hiddenFields, creatableFields, disabledFields, usuaria, minWidthFields, indexField, indexFieldBasePath, indexFieldViewBasePath, addExistingModel, label, onProcessRow, reloadAfterRowUpdate, customColumnOperations, isEditable, hasBulkSelect, onSelectActions, sumRows, isAutoHeight, isInBatches, noCardWrapper, paginationMode, defaultFilter, queryParams, hideFooterComponent, hideToolbarComponent, tableAutoHeight, actions, optionsAC, }: GenericRelatedModelListProps): React.JSX.Element;
40
+ export default function GenericRelatedModelList({ model, id, relatedModel, columnFields, hiddenFields, creatableFields, disabledFields, usuaria, minWidthFields, indexField, indexFieldBasePath, indexFieldViewBasePath, addExistingModel, label, onProcessRow, reloadAfterRowUpdate, customColumnOperations, isEditable, hasBulkSelect, onSelectActions, sumRows, isAutoHeight, isInBatches, noCardWrapper, paginationMode, defaultFilter, queryParams, hideFooterComponent, hideToolbarComponent, tableAutoHeight, actions, optionsAC, LinkComponent, }: GenericRelatedModelListProps): React.JSX.Element;
40
41
  export {};
@@ -49,16 +49,16 @@ const APIWrapperContext_1 = require("../context/APIWrapperContext");
49
49
  const utils_1 = require("../utils");
50
50
  const api_1 = require("../api");
51
51
  const styles_1 = require("../styles");
52
- const ContentTable = ({ data, relatedModel, model, loading, id, indexField, indexFieldBasePath, indexFieldViewBasePath, addExistingModel, isEditable, onEditModel, finalCustomColumnOperations, setVisibleRows, isAutoHeight, hideFooterPagination, hideFooterComponent, hideToolbarComponent, onProcessRow, onDataChange, sumRows, visibleRows, paginationMode = 'client', paginationModel, setPaginationModel, hasBulkSelect, onSelectActions, tableAutoHeight, actions, optionsAC, }) => (react_1.default.createElement(react_1.default.Fragment, null,
52
+ const ContentTable = ({ data, relatedModel, model, loading, id, indexField, indexFieldBasePath, indexFieldViewBasePath, addExistingModel, isEditable, onEditModel, finalCustomColumnOperations, setVisibleRows, isAutoHeight, hideFooterPagination, hideFooterComponent, hideToolbarComponent, onProcessRow, onDataChange, sumRows, visibleRows, paginationMode = 'client', paginationModel, setPaginationModel, hasBulkSelect, onSelectActions, tableAutoHeight, actions, optionsAC, LinkComponent, }) => (react_1.default.createElement(react_1.default.Fragment, null,
53
53
  data.columns ? (react_1.default.createElement(Box_1.default, { sx: tableAutoHeight ? {} : styles_1.Layout.dataGridFixedHeight },
54
54
  react_1.default.createElement(DataGridBySchemaEditable_1.default, { data: data.data, columns: data.columns, schema: data.schema, model: relatedModel, modelParent: model, modelParentId: id, loading: loading, indexField: indexField, indexFieldBasePath: indexFieldBasePath, indexFieldViewBasePath: indexFieldViewBasePath, addExistingModel: addExistingModel, isEditable: isEditable, hasBulkSelect: hasBulkSelect, onSelectActions: onSelectActions, onEditModel: onEditModel, isAutoHeight: isAutoHeight, tableAutoHeight: tableAutoHeight, customColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, hideFooterPagination: hideFooterPagination, hideFooterComponent: hideFooterComponent, hideToolbarComponent: hideToolbarComponent, actions: actions, optionsAC: optionsAC, onProcessRow: onProcessRow, onDataChange: onDataChange, paginationModel: paginationMode === 'server' ? paginationModel : undefined, setPaginationModel: paginationMode === 'server' ? setPaginationModel : undefined, rowCount: paginationMode === 'client'
55
55
  ? undefined
56
56
  : typeof data.rowCount !== undefined
57
57
  ? data.rowCount
58
- : 0 }))) : (react_1.default.createElement(Backdrop_1.default, { invisible: true, sx: { color: '#fff', zIndex: (theme) => theme.zIndex.drawer + 1 }, open: loading || false },
58
+ : 0, LinkComponent: LinkComponent }))) : (react_1.default.createElement(Backdrop_1.default, { invisible: true, sx: { color: '#fff', zIndex: (theme) => theme.zIndex.drawer + 1 }, open: loading || false },
59
59
  react_1.default.createElement(CircularProgress_1.default, null))),
60
60
  paginationMode === 'client' ? (react_1.default.createElement(DataTotals_1.default, { data: data.data, sumRows: sumRows, visibleRows: visibleRows })) : (react_1.default.createElement(DataTotalsServer_1.default, { sumRows: sumRows, totals: data.sumRowsTotals }))));
61
- function GenericRelatedModelList({ model, id, relatedModel, columnFields, hiddenFields, creatableFields, disabledFields, usuaria = null, minWidthFields, indexField, indexFieldBasePath, indexFieldViewBasePath, addExistingModel, label, onProcessRow, reloadAfterRowUpdate, customColumnOperations, isEditable = true, hasBulkSelect = false, onSelectActions, sumRows, isAutoHeight = false, isInBatches = true, noCardWrapper = false, paginationMode = 'client', defaultFilter, queryParams, hideFooterComponent, hideToolbarComponent, tableAutoHeight, actions, optionsAC, }) {
61
+ function GenericRelatedModelList({ model, id, relatedModel, columnFields, hiddenFields, creatableFields, disabledFields, usuaria = null, minWidthFields, indexField, indexFieldBasePath, indexFieldViewBasePath, addExistingModel, label, onProcessRow, reloadAfterRowUpdate, customColumnOperations, isEditable = true, hasBulkSelect = false, onSelectActions, sumRows, isAutoHeight = false, isInBatches = true, noCardWrapper = false, paginationMode = 'client', defaultFilter, queryParams, hideFooterComponent, hideToolbarComponent, tableAutoHeight, actions, optionsAC, LinkComponent, }) {
62
62
  const [data, setData] = (0, react_1.useState)(false);
63
63
  const [visibleRows, setVisibleRows] = (0, react_1.useState)([]);
64
64
  const [loading, setLoading] = (0, react_1.useState)(false);
@@ -158,9 +158,9 @@ function GenericRelatedModelList({ model, id, relatedModel, columnFields, hidden
158
158
  loadObjectList();
159
159
  }
160
160
  }, [paginationModel]);
161
- return (react_1.default.createElement(react_1.default.Fragment, null, typeof data !== 'boolean' && data.columns && (react_1.default.createElement(react_1.default.Fragment, null, noCardWrapper ? (react_1.default.createElement(ContentTable, { data: data, relatedModel: relatedModel, model: model, loading: loading, id: id, indexField: indexField || '', indexFieldBasePath: indexFieldBasePath, indexFieldViewBasePath: indexFieldViewBasePath, addExistingModel: addExistingModel, isEditable: isEditable, hasBulkSelect: hasBulkSelect, onSelectActions: onSelectActions, onEditModel: onEditModel, onDeleteRelatedModel: onDeleteRelatedModel, finalCustomColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, isAutoHeight: isAutoHeight, tableAutoHeight: tableAutoHeight, hideFooterPagination: hideFooterPagination, hideFooterComponent: hideFooterComponent, hideToolbarComponent: hideToolbarComponent, onProcessRow: onProcessRow, onDataChange: onDataChange, sumRows: sumRows, visibleRows: visibleRows, paginationMode: paginationMode, paginationModel: paginationModel, setPaginationModel: setPaginationModel, actions: actions, optionsAC: optionsAC })) : (react_1.default.createElement(Card_1.default, { sx: styles_1.Layout.formCard },
161
+ return (react_1.default.createElement(react_1.default.Fragment, null, typeof data !== 'boolean' && data.columns && (react_1.default.createElement(react_1.default.Fragment, null, noCardWrapper ? (react_1.default.createElement(ContentTable, { data: data, relatedModel: relatedModel, model: model, loading: loading, id: id, indexField: indexField || '', indexFieldBasePath: indexFieldBasePath, indexFieldViewBasePath: indexFieldViewBasePath, addExistingModel: addExistingModel, isEditable: isEditable, hasBulkSelect: hasBulkSelect, onSelectActions: onSelectActions, onEditModel: onEditModel, onDeleteRelatedModel: onDeleteRelatedModel, finalCustomColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, isAutoHeight: isAutoHeight, tableAutoHeight: tableAutoHeight, hideFooterPagination: hideFooterPagination, hideFooterComponent: hideFooterComponent, hideToolbarComponent: hideToolbarComponent, onProcessRow: onProcessRow, onDataChange: onDataChange, sumRows: sumRows, visibleRows: visibleRows, paginationMode: paginationMode, paginationModel: paginationModel, setPaginationModel: setPaginationModel, actions: actions, optionsAC: optionsAC, LinkComponent: LinkComponent })) : (react_1.default.createElement(Card_1.default, { sx: styles_1.Layout.formCard },
162
162
  react_1.default.createElement(CardHeader_1.default, { title: label }),
163
163
  react_1.default.createElement(CardContent_1.default, null,
164
- react_1.default.createElement(ContentTable, { data: data, relatedModel: relatedModel, model: model, loading: loading, id: id, indexField: indexField || '', indexFieldBasePath: indexFieldBasePath, indexFieldViewBasePath: indexFieldViewBasePath, addExistingModel: addExistingModel, isEditable: isEditable, hasBulkSelect: hasBulkSelect, onSelectActions: onSelectActions, onEditModel: onEditModel, onDeleteRelatedModel: onDeleteRelatedModel, finalCustomColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, isAutoHeight: isAutoHeight, tableAutoHeight: tableAutoHeight, hideFooterPagination: hideFooterPagination, hideFooterComponent: hideFooterComponent, hideToolbarComponent: hideToolbarComponent, onProcessRow: onProcessRow, onDataChange: onDataChange, sumRows: sumRows, visibleRows: visibleRows, paginationMode: paginationMode, paginationModel: paginationModel, setPaginationModel: setPaginationModel, actions: actions, optionsAC: optionsAC }))))))));
164
+ react_1.default.createElement(ContentTable, { data: data, relatedModel: relatedModel, model: model, loading: loading, id: id, indexField: indexField || '', indexFieldBasePath: indexFieldBasePath, indexFieldViewBasePath: indexFieldViewBasePath, addExistingModel: addExistingModel, isEditable: isEditable, hasBulkSelect: hasBulkSelect, onSelectActions: onSelectActions, onEditModel: onEditModel, onDeleteRelatedModel: onDeleteRelatedModel, finalCustomColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, isAutoHeight: isAutoHeight, tableAutoHeight: tableAutoHeight, hideFooterPagination: hideFooterPagination, hideFooterComponent: hideFooterComponent, hideToolbarComponent: hideToolbarComponent, onProcessRow: onProcessRow, onDataChange: onDataChange, sumRows: sumRows, visibleRows: visibleRows, paginationMode: paginationMode, paginationModel: paginationModel, setPaginationModel: setPaginationModel, actions: actions, optionsAC: optionsAC, LinkComponent: LinkComponent }))))))));
165
165
  }
166
166
  exports.default = GenericRelatedModelList;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drf-react-by-schema",
3
- "version": "0.16.3",
3
+ "version": "0.16.5",
4
4
  "description": "Components and Tools for building a React App having Django Rest Framework (DRF) as server",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",