drf-react-by-schema 0.15.2 → 0.15.4

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 (55) hide show
  1. package/dist/api.d.ts +16 -22
  2. package/dist/api.js +253 -144
  3. package/dist/components/DataGridBySchemaEditable/ConfirmDialog.d.ts +1 -1
  4. package/dist/components/DataGridBySchemaEditable/CustomToolbar.d.ts +2 -11
  5. package/dist/components/DataGridBySchemaEditable/CustomToolbar.js +3 -12
  6. package/dist/components/DataGridBySchemaEditable/FooterToolbar.d.ts +2 -2
  7. package/dist/components/DataGridBySchemaEditable/GridDateInput.d.ts +2 -2
  8. package/dist/components/DataGridBySchemaEditable/GridDecimalInput.d.ts +2 -2
  9. package/dist/components/DataGridBySchemaEditable/GridPatternInput.d.ts +3 -3
  10. package/dist/components/DataGridBySchemaEditable/GridPatternInput.js +2 -2
  11. package/dist/components/DataGridBySchemaEditable/InputInterval.d.ts +4 -4
  12. package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.d.ts +4 -19
  13. package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.js +1 -16
  14. package/dist/components/DataGridBySchemaEditable/utils.d.ts +2 -2
  15. package/dist/components/DataGridBySchemaEditable.d.ts +8 -7
  16. package/dist/components/DataGridBySchemaEditable.js +128 -108
  17. package/dist/components/DataTotals.d.ts +2 -2
  18. package/dist/components/DataTotals.js +9 -10
  19. package/dist/components/DataTotalsServer.d.ts +2 -2
  20. package/dist/components/DialogActions.d.ts +1 -1
  21. package/dist/components/FormButtons.d.ts +1 -1
  22. package/dist/components/GenericModelList.d.ts +8 -8
  23. package/dist/components/GenericModelList.js +3 -3
  24. package/dist/components/GenericRelatedModelList.d.ts +6 -6
  25. package/dist/components/GenericRelatedModelList.js +4 -4
  26. package/dist/components/details/DetailBySchema.d.ts +2 -2
  27. package/dist/components/details/DetailFieldBySchema.d.ts +2 -2
  28. package/dist/components/forms/DialogFormBySchema.d.ts +3 -3
  29. package/dist/components/forms/FieldBySchema.d.ts +2 -2
  30. package/dist/components/forms/FieldBySchema.js +1 -1
  31. package/dist/components/forms/FormBySchema.d.ts +4 -5
  32. package/dist/components/forms/inputs/AutocompleteFieldBySchema.d.ts +2 -2
  33. package/dist/components/forms/inputs/BooleanFieldBySchema.d.ts +2 -2
  34. package/dist/components/forms/inputs/DesktopDatePickerBySchema.d.ts +2 -2
  35. package/dist/components/forms/inputs/DesktopDatePickerBySchema.js +2 -3
  36. package/dist/components/forms/inputs/DesktopDateTimePickerBySchema.d.ts +2 -2
  37. package/dist/components/forms/inputs/EditableAutocompleteFieldBySchema.d.ts +2 -1
  38. package/dist/components/forms/inputs/FloatFieldBySchema.d.ts +2 -2
  39. package/dist/components/forms/inputs/TextFieldBySchema.d.ts +2 -2
  40. package/dist/context/APIWrapper.d.ts +1 -1
  41. package/dist/context/APIWrapper.js +95 -50
  42. package/dist/context/APIWrapperContext.d.ts +13 -15
  43. package/dist/context/APIWrapperContext.js +1 -1
  44. package/dist/context/DRFReactBySchemaProvider.d.ts +1 -1
  45. package/dist/context/Form.d.ts +1 -1
  46. package/dist/context/FormContext.d.ts +0 -1
  47. package/dist/context/Overlays.d.ts +1 -1
  48. package/dist/index.d.ts +1 -2
  49. package/dist/index.js +2 -3
  50. package/dist/styles/layout.d.ts +1 -1
  51. package/dist/styles/theme.d.ts +1 -1
  52. package/dist/utils.d.ts +37 -14
  53. package/package.json +8 -6
  54. package/dist/components/DialogJSONSchemaForm.d.ts +0 -13
  55. package/dist/components/DialogJSONSchemaForm.js +0 -20
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { DetailBySchemaProps } from '../../utils';
3
- export default function DetailBySchema({ values, schema, editLink, editLabel, labelKey, decimalScale, fieldsLayout: fieldsLayoutInitial, fieldsProps, sxRow, sxRowMultiple, sxField, sxLabel, sxValue, sxValueList, sxValueListItem, sxValueListItemText, }: DetailBySchemaProps): JSX.Element;
3
+ export default function DetailBySchema({ values, schema, editLink, editLabel, labelKey, decimalScale, fieldsLayout: fieldsLayoutInitial, fieldsProps, sxRow, sxRowMultiple, sxField, sxLabel, sxValue, sxValueList, sxValueListItem, sxValueListItemText, }: DetailBySchemaProps): React.JSX.Element;
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { DetailFieldBySchemaProps } from '../../utils';
3
- export default function DetailFieldBySchema({ name, value, schema, labelKey, optionIdKey, optionLabelKey, sxField, sxLabel, sxValue, sxValueList, sxValueListItem, sxValueListItemText, }: DetailFieldBySchemaProps): JSX.Element;
3
+ export default function DetailFieldBySchema({ name, value, schema, labelKey, optionIdKey, optionLabelKey, sxField, sxLabel, sxValue, sxValueList, sxValueListItem, sxValueListItemText, }: DetailFieldBySchemaProps): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { AnyObjectSchema } from 'yup';
3
3
  import { Item, SchemaType } from '../../utils';
4
4
  import { DialogType } from '../../context/APIWrapperContext';
@@ -6,9 +6,9 @@ interface DialogFormBySchemaProps {
6
6
  schema: SchemaType;
7
7
  validationSchema: AnyObjectSchema;
8
8
  initialValues: Item;
9
- onEditModelSave: (p: Item) => Promise<false | undefined>;
9
+ onEditModelSave: (p: Item) => Promise<boolean>;
10
10
  setDialog: (x: Partial<DialogType>) => void;
11
11
  getAutoComplete: (model: string) => Promise<false | Item[]>;
12
12
  }
13
- export default function DialogFormBySchema({ schema, validationSchema, initialValues, onEditModelSave, setDialog, getAutoComplete, }: DialogFormBySchemaProps): JSX.Element;
13
+ export default function DialogFormBySchema({ schema, validationSchema, initialValues, onEditModelSave, setDialog, getAutoComplete, }: DialogFormBySchemaProps): React.JSX.Element;
14
14
  export {};
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { FieldBySchemaProps } from '../../utils';
3
- export default function FieldBySchema({ name, schema, control, errors, multiline, setValue, getValues, fieldKey, labelKey, index, optionsAC, optionsModel, getOptionLabel, renderOption, onEditModel, sx, options, isSemaphoric, label, onValueChange, decimalScale, ...other }: FieldBySchemaProps): JSX.Element;
3
+ export default function FieldBySchema({ name, schema, control, errors, multiline, setValue, getValues, fieldKey, labelKey, index, optionsAC, optionsModel, getOptionLabel, renderOption, onEditModel, sx, options, isSemaphoric, label, onValueChange, decimalScale, ...other }: FieldBySchemaProps): React.JSX.Element;
@@ -23,7 +23,7 @@ const BooleanFieldBySchema_1 = __importDefault(require("./inputs/BooleanFieldByS
23
23
  const FloatFieldBySchema_1 = __importDefault(require("./inputs/FloatFieldBySchema"));
24
24
  const TextFieldBySchema_1 = __importDefault(require("./inputs/TextFieldBySchema"));
25
25
  function FieldBySchema(_a) {
26
- var { name, schema, control, errors, multiline = false, setValue = null, getValues = null, fieldKey, labelKey = 'nome', index, optionsAC, optionsModel, getOptionLabel, renderOption, onEditModel, sx, options, isSemaphoric = false, label, onValueChange, decimalScale = 2 } = _a, other = __rest(_a, ["name", "schema", "control", "errors", "multiline", "setValue", "getValues", "fieldKey", "labelKey", "index", "optionsAC", "optionsModel", "getOptionLabel", "renderOption", "onEditModel", "sx", "options", "isSemaphoric", "label", "onValueChange", "decimalScale"]);
26
+ var { name, schema, control, errors, multiline = false, setValue, getValues, fieldKey, labelKey = 'nome', index, optionsAC, optionsModel, getOptionLabel, renderOption, onEditModel, sx, options, isSemaphoric = false, label, onValueChange, decimalScale = 2 } = _a, other = __rest(_a, ["name", "schema", "control", "errors", "multiline", "setValue", "getValues", "fieldKey", "labelKey", "index", "optionsAC", "optionsModel", "getOptionLabel", "renderOption", "onEditModel", "sx", "options", "isSemaphoric", "label", "onValueChange", "decimalScale"]);
27
27
  switch (schema[name].type) {
28
28
  case 'date':
29
29
  return (react_1.default.createElement(DesktopDatePickerBySchema_1.default, Object.assign({ name: name, schema: schema, control: control, errors: errors, multiline: multiline, fieldKey: fieldKey, index: index, sx: sx }, other)));
@@ -1,15 +1,14 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { UseFormRegister } from 'react-hook-form';
3
- import { CommonFieldProps, FieldBySchemaProps, FormFieldLayout, Item } from '../../utils';
4
- import { OptionsACType } from '../../context/APIWrapperContext';
3
+ import { CommonFieldProps, FieldBySchemaProps, FormFieldLayout, Item, OptionsAC } from '../../utils';
5
4
  interface FormBySchemaProps extends Omit<FieldBySchemaProps, 'name'> {
6
5
  fieldsLayout?: FormFieldLayout[];
7
6
  hiddenFields?: string[];
8
7
  register?: UseFormRegister<Item>;
9
- setOptionsAC?: (x: OptionsACType) => void;
8
+ setOptionsAC?: (x: OptionsAC) => void;
10
9
  forceReload?: boolean;
11
10
  isolatedGetAutoComplete?: (model: string) => Promise<false | Item[]>;
12
11
  fieldsProps?: Record<string, CommonFieldProps>;
13
12
  }
14
- export default function FormBySchema({ schema, control, errors, register, multiline, setValue, getValues, fieldKey, labelKey, index, optionsAC, setOptionsAC, forceReload, optionsModel, getOptionLabel, renderOption, onEditModel, options, isSemaphoric, label, decimalScale, fieldsLayout: fieldsLayoutInitial, fieldsProps, hiddenFields, isolatedGetAutoComplete, }: FormBySchemaProps): JSX.Element;
13
+ export default function FormBySchema({ schema, control, errors, register, multiline, setValue, getValues, fieldKey, labelKey, index, optionsAC, setOptionsAC, forceReload, optionsModel, getOptionLabel, renderOption, onEditModel, options, isSemaphoric, label, decimalScale, fieldsLayout: fieldsLayoutInitial, fieldsProps, hiddenFields, isolatedGetAutoComplete, }: FormBySchemaProps): React.JSX.Element;
15
14
  export {};
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { FieldBySchemaProps } from '../../../utils';
3
- export default function AutocompleteFieldBySchema({ fieldKey, index, name, schema, control, errors, optionIdKey, optionLabelKey, options, isSemaphoric, sx, label, ...other }: FieldBySchemaProps): JSX.Element;
3
+ export default function AutocompleteFieldBySchema({ fieldKey, index, name, schema, control, errors, optionIdKey, optionLabelKey, options, isSemaphoric, sx, label, ...other }: FieldBySchemaProps): React.JSX.Element;
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { FieldBySchemaProps } from '../../../utils';
3
- export default function BooleanFieldBySchema({ name, schema, control, fieldKey, index, sx, onValueChange, ...other }: FieldBySchemaProps): JSX.Element;
3
+ export default function BooleanFieldBySchema({ name, schema, control, fieldKey, index, sx, onValueChange, ...other }: FieldBySchemaProps): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import 'dayjs/locale/pt-br';
3
3
  import { FieldBySchemaProps } from '../../../utils';
4
- export default function DesktopDatePickerBySchema({ name, schema, control, errors, fieldKey, index, sx, ...other }: FieldBySchemaProps): JSX.Element;
4
+ export default function DesktopDatePickerBySchema({ name, schema, control, errors, fieldKey, index, sx, ...other }: FieldBySchemaProps): React.JSX.Element;
@@ -18,12 +18,11 @@ const react_1 = __importDefault(require("react"));
18
18
  const react_hook_form_1 = require("react-hook-form");
19
19
  const TextField_1 = __importDefault(require("@mui/material/TextField"));
20
20
  const DesktopDatePicker_1 = require("@mui/x-date-pickers/DesktopDatePicker");
21
- const utils_1 = require("drf-react-by-schema/dist/utils");
22
21
  const LocalizationProvider_1 = require("@mui/x-date-pickers/LocalizationProvider");
23
22
  const AdapterDayjs_1 = require("@mui/x-date-pickers/AdapterDayjs");
24
23
  const dayjs_1 = __importDefault(require("dayjs"));
25
24
  require("dayjs/locale/pt-br");
26
- const utils_2 = require("../../../utils");
25
+ const utils_1 = require("../../../utils");
27
26
  function DesktopDatePickerBySchema(_a) {
28
27
  var { name, schema, control, errors, fieldKey, index, sx = { mr: 2, mt: 2 } } = _a, other = __rest(_a, ["name", "schema", "control", "errors", "fieldKey", "index", "sx"]);
29
28
  if (!sx) {
@@ -38,7 +37,7 @@ function DesktopDatePickerBySchema(_a) {
38
37
  }
39
38
  const inputFormat = (0, utils_1.buildDateFormatBySchema)(schema[model].date_views);
40
39
  const { error, helperText } = fieldKey && index && index >= 0
41
- ? (0, utils_2.errorProps)({
40
+ ? (0, utils_1.errorProps)({
42
41
  fieldKey,
43
42
  index,
44
43
  fieldKeyProp: name,
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import 'dayjs/locale/pt-br';
3
3
  import { FieldBySchemaProps } from '../../../utils';
4
- export default function DesktopDateTimePickerBySchema({ name, schema, control, errors, fieldKey, index, sx, ...other }: FieldBySchemaProps): JSX.Element;
4
+ export default function DesktopDateTimePickerBySchema({ name, schema, control, errors, fieldKey, index, sx, ...other }: FieldBySchemaProps): React.JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import Autocomplete from '@mui/material/Autocomplete';
2
3
  import { FieldBySchemaProps } from '../../../utils';
3
- declare const EditableAutocompleteFieldBySchema: React.ForwardRefExoticComponent<FieldBySchemaProps & React.RefAttributes<any>>;
4
+ declare const EditableAutocompleteFieldBySchema: React.ForwardRefExoticComponent<FieldBySchemaProps & React.RefAttributes<typeof Autocomplete>>;
4
5
  export default EditableAutocompleteFieldBySchema;
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { FieldBySchemaProps } from '../../../utils';
3
- export default function FloatFieldBySchema({ fieldKey, index, name, control, schema, errors, onValueChange, decimalScale, label, ...other }: Omit<FieldBySchemaProps, 'type'>): JSX.Element;
3
+ export default function FloatFieldBySchema({ fieldKey, index, name, control, schema, errors, onValueChange, decimalScale, label, ...other }: Omit<FieldBySchemaProps, 'type'>): React.JSX.Element;
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { FieldBySchemaProps } from '../../../utils';
3
- export default function TextFieldBySchema({ name, schema, control, errors, multiline, minRows, fieldKey, index, sx, isPassword, type, autocomplete, disabled, ...other }: FieldBySchemaProps): JSX.Element;
3
+ export default function TextFieldBySchema({ name, schema, control, errors, multiline, minRows, fieldKey, index, sx, isPassword, type, autocomplete, disabled, ...other }: FieldBySchemaProps): React.JSX.Element;
@@ -6,6 +6,6 @@ interface APIWrapperProps {
6
6
  setDialog: (x: Partial<DialogType>) => void;
7
7
  children: React.ReactNode;
8
8
  }
9
- declare function APIWrapper({ handleLoading, setSnackBar, setDialog, children }: APIWrapperProps): JSX.Element;
9
+ declare function APIWrapper({ handleLoading, setSnackBar, setDialog, children }: APIWrapperProps): React.JSX.Element;
10
10
  declare const _default: React.MemoExoticComponent<typeof APIWrapper>;
11
11
  export default _default;
@@ -53,16 +53,16 @@ const DRFReactBySchemaContext_1 = require("./DRFReactBySchemaContext");
53
53
  const api_1 = require("../api");
54
54
  const APIWrapperContext_1 = require("./APIWrapperContext");
55
55
  const DialogFormBySchema_1 = __importDefault(require("../components/forms/DialogFormBySchema"));
56
+ const initialPageForm = {
57
+ id: '',
58
+ schema: null,
59
+ initialValues: null,
60
+ validationSchema: null,
61
+ };
56
62
  function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
57
63
  const { serverEndPoint } = (0, DRFReactBySchemaContext_1.useDRFReactBySchema)();
58
64
  const [usuaria, setUsuaria] = (0, react_1.useState)(null);
59
65
  const [optionsAC, setOptionsAC] = (0, react_1.useReducer)((utils_1.reducer), null);
60
- const initialPageForm = {
61
- id: '',
62
- schema: null,
63
- initialValues: null,
64
- validationSchema: null,
65
- };
66
66
  const [pageForm, setPageForm] = (0, react_1.useReducer)((utils_1.reducer), initialPageForm);
67
67
  const editModel = (0, react_1.useRef)({});
68
68
  const updateUsuaria = () => {
@@ -108,7 +108,7 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
108
108
  object.data[field] = value;
109
109
  }
110
110
  }
111
- const values = populateInitialValues(Object.assign({ model, id: objId, extraValidators }, object));
111
+ const values = populateInitialValues(Object.assign({ id: objId, extraValidators }, object));
112
112
  return values;
113
113
  });
114
114
  const onSubmit = (model, id, data) => __awaiter(this, void 0, void 0, function* () {
@@ -125,7 +125,7 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
125
125
  schema: pageForm.schema,
126
126
  });
127
127
  handleLoading(false);
128
- if (!['number', 'string'].includes(typeof response)) {
128
+ if ('isAxiosError' in response) {
129
129
  onTriggerSnackBar({
130
130
  msg: 'Houve um problema ao salvar seus dados! Por favor, entre em contato',
131
131
  severity: 'error',
@@ -140,19 +140,24 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
140
140
  onTriggerSnackBar({
141
141
  msg: id ? 'Dados atualizados com sucesso!' : 'Criado com sucesso!',
142
142
  });
143
- return response;
143
+ return response.id;
144
144
  });
145
- const populateOptionsAC = (optionsACModels) => {
145
+ const populateOptionsAC = (optionsACModels) => __awaiter(this, void 0, void 0, function* () {
146
+ const promises = [];
146
147
  for (const model of optionsACModels) {
147
- localGetAutoComplete(model).then((options) => {
148
- if (options !== false) {
149
- setOptionsAC({ [model]: options });
150
- }
151
- });
148
+ promises.push(localGetAutoComplete(model));
152
149
  }
153
- };
150
+ const results = yield Promise.all(promises);
151
+ const newOptionsAC = {};
152
+ results.map((result, index) => {
153
+ if (result !== false) {
154
+ newOptionsAC[optionsACModels[index]] = result;
155
+ }
156
+ });
157
+ setOptionsAC(newOptionsAC);
158
+ });
154
159
  const populateInitialValues = (_a) => {
155
- var { model, id, isEditModel, extraValidators } = _a, object = __rest(_a, ["model", "id", "isEditModel", "extraValidators"]);
160
+ var { id, extraValidators } = _a, object = __rest(_a, ["id", "extraValidators"]);
156
161
  const values = (0, utils_1.populateValues)(object);
157
162
  const yupSchema = (0, utils_1.buildGenericYupValidationSchema)(Object.assign(Object.assign({}, object), { data: values, extraValidators }));
158
163
  setPageForm({
@@ -177,14 +182,14 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
177
182
  data,
178
183
  schema,
179
184
  });
180
- if (!['number', 'string'].includes(typeof response)) {
185
+ if ('isAxiosError' in response) {
181
186
  onTriggerSnackBar({
182
- msg: 'Houve um problema ao salvar seus dados! Por favor, entre em contato',
187
+ msg: 'Houve um problema ao salvar seus dados.',
183
188
  severity: 'error',
184
189
  });
185
190
  console.log({
186
191
  msg: 'Error saving model',
187
- errors: response,
192
+ response,
188
193
  data,
189
194
  });
190
195
  return false;
@@ -205,6 +210,7 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
205
210
  populateOptionsAC([model]);
206
211
  }
207
212
  handleLoading(false);
213
+ return true;
208
214
  });
209
215
  const onEditModelDataGridSave = ({ model, newRow, schema, }) => __awaiter(this, void 0, void 0, function* () {
210
216
  const response = yield (0, api_1.updateDataBySchema)({
@@ -215,18 +221,23 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
215
221
  schema,
216
222
  path: model,
217
223
  });
218
- if (response && !Object.prototype.hasOwnProperty.call(response, 'errors')) {
224
+ if ('isAxiosError' in response) {
219
225
  onTriggerSnackBar({
220
- msg: 'Alterações salvas com sucesso!',
221
- severity: 'info',
226
+ msg: 'Não foi possível salvar os dados. Confira os erros.',
227
+ severity: 'error',
222
228
  });
223
- return response;
229
+ console.log({
230
+ msg: 'Error saving model',
231
+ response,
232
+ data: newRow,
233
+ });
234
+ return false;
224
235
  }
225
236
  onTriggerSnackBar({
226
- msg: 'Não foi possível salvar os dados. Confira os erros.',
227
- severity: 'error',
237
+ msg: 'Alterações salvas com sucesso!',
238
+ severity: 'info',
228
239
  });
229
- return false;
240
+ return response;
230
241
  });
231
242
  const onEditModel = ({ fieldKey, index, model, id, labelKey, setValue, getValues, }) => {
232
243
  setDialog({
@@ -274,7 +285,7 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
274
285
  title: 'Apagar',
275
286
  Body: 'Tem certeza de que deseja apagar este item?',
276
287
  Actions: (react_1.default.createElement(DialogActions_1.default, { setDialog: setDialog, handleSave: (e) => {
277
- return onDeleteModelSave(model, id, onSuccess);
288
+ return onDeleteModelSave(model, id, onSuccess ? onSuccess(e) : undefined);
278
289
  }, btnConfirm: "Sim, apagar" })),
279
290
  });
280
291
  };
@@ -282,7 +293,7 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
282
293
  setDialog({ open: false });
283
294
  handleLoading(true);
284
295
  const ret = yield (0, api_1.deleteData)(model, serverEndPoint, id);
285
- if (ret !== false) {
296
+ if (ret === true) {
286
297
  onTriggerSnackBar({
287
298
  msg: 'Apagado com com sucesso!',
288
299
  severity: 'info',
@@ -299,7 +310,7 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
299
310
  });
300
311
  return false;
301
312
  });
302
- const onEditRelatedModelSave = ({ model, id, relatedModel, relatedModelId, newRow, schema, onlyAddExisting, }) => __awaiter(this, void 0, void 0, function* () {
313
+ const onEditRelatedModelSave = ({ model, id, relatedModel, newRow, schema, onlyAddExisting, }) => __awaiter(this, void 0, void 0, function* () {
303
314
  const updateUrl = `${model}/${id}/${relatedModel}`;
304
315
  if (onlyAddExisting) {
305
316
  const response = yield (0, api_1.addExistingRelatedModel)({
@@ -313,7 +324,7 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
313
324
  },
314
325
  },
315
326
  });
316
- if (Object.prototype.hasOwnProperty.call(response, 'errors')) {
327
+ if ('isAxiosError' in response) {
317
328
  console.log(response);
318
329
  onTriggerSnackBar({
319
330
  msg: 'Houve um problema ao salvar a alteração! Por favor, entre em contato.',
@@ -346,34 +357,42 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
346
357
  schema,
347
358
  path: updateUrl,
348
359
  });
349
- if (response && !Object.prototype.hasOwnProperty.call(response, 'errors')) {
360
+ if ('isAxiosError' in response) {
350
361
  onTriggerSnackBar({
351
- msg: 'Alterações salvas com sucesso!',
352
- severity: 'info',
362
+ msg: 'Não foi possível salvar os dados. Confira os erros.',
363
+ severity: 'error',
353
364
  });
354
- return response;
365
+ console.log({
366
+ error: response,
367
+ data: newRow,
368
+ });
369
+ return false;
355
370
  }
356
371
  onTriggerSnackBar({
357
- msg: 'Não foi possível salvar os dados. Confira os erros.',
358
- severity: 'error',
372
+ msg: 'Alterações salvas com sucesso!',
373
+ severity: 'info',
359
374
  });
360
- return false;
375
+ return response;
361
376
  });
362
377
  const onDeleteRelatedModel = ({ model, id, relatedModel, relatedModelId, }) => __awaiter(this, void 0, void 0, function* () {
363
378
  const deleteUrl = `${model}/${id}/${relatedModel}`;
364
379
  const response = yield (0, api_1.deleteData)(deleteUrl, serverEndPoint, relatedModelId);
365
- if (response) {
380
+ if (response !== true) {
366
381
  onTriggerSnackBar({
367
- msg: 'Alterações salvas com sucesso!',
368
- severity: 'info',
382
+ msg: 'Houve um problema ao remover o item! Por favor, entre em contato.',
383
+ severity: 'error',
369
384
  });
370
- return response;
385
+ console.log({
386
+ error: response,
387
+ id,
388
+ });
389
+ return false;
371
390
  }
372
391
  onTriggerSnackBar({
373
- msg: 'Houve um problema ao remover o item! Por favor, entre em contato.',
374
- severity: 'error',
392
+ msg: 'Alterações salvas com sucesso!',
393
+ severity: 'info',
375
394
  });
376
- return false;
395
+ return response;
377
396
  });
378
397
  if (!serverEndPoint) {
379
398
  console.error('There must be a serverEndPoint properly configured for apiWrapper to work!');
@@ -390,26 +409,52 @@ function APIWrapper({ handleLoading, setSnackBar, setDialog, children }) {
390
409
  }
391
410
  function localGetAllModels() {
392
411
  return __awaiter(this, void 0, void 0, function* () {
393
- return (yield (0, api_1.getAllModels)(serverEndPoint));
412
+ const response = yield (0, api_1.getAllModels)(serverEndPoint);
413
+ if ('isAxiosError' in response) {
414
+ return [];
415
+ }
416
+ return response;
394
417
  });
395
418
  }
396
419
  function localLoginByPayload(payload) {
397
420
  return __awaiter(this, void 0, void 0, function* () {
398
- return yield (0, api_1.loginByPayload)(payload, serverEndPoint);
421
+ const response = yield (0, api_1.loginByPayload)(payload, serverEndPoint);
422
+ if (typeof response !== 'boolean') {
423
+ console.log({
424
+ error: response,
425
+ payload,
426
+ });
427
+ return false;
428
+ }
429
+ return response;
399
430
  });
400
431
  }
401
432
  function localSignUp(data) {
402
433
  return __awaiter(this, void 0, void 0, function* () {
403
- return yield (0, api_1.signUp)(data, serverEndPoint);
434
+ const response = yield (0, api_1.signUp)(data, serverEndPoint);
435
+ if ('isAxiosError' in response) {
436
+ return false;
437
+ }
438
+ return response;
404
439
  });
405
440
  }
406
441
  function localGetSignupOptions() {
407
442
  return __awaiter(this, void 0, void 0, function* () {
408
- return yield (0, api_1.getSignUpOptions)(serverEndPoint);
443
+ const response = yield (0, api_1.getSignUpOptions)(serverEndPoint);
444
+ if ('isAxiosError' in response) {
445
+ return false;
446
+ }
447
+ return response;
409
448
  });
410
449
  }
411
450
  function localUpdateModel(params) {
412
- return (0, api_1.updateData)(Object.assign(Object.assign({}, params), { serverEndPoint }));
451
+ return __awaiter(this, void 0, void 0, function* () {
452
+ const response = yield (0, api_1.updateData)(Object.assign(Object.assign({}, params), { serverEndPoint }));
453
+ if ('isAxiosError' in response) {
454
+ return false;
455
+ }
456
+ return response;
457
+ });
413
458
  }
414
459
  return (react_1.default.createElement(APIWrapperContext_1.APIWrapperContext.Provider, { value: {
415
460
  usuaria,
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
2
  import { FieldValues, SubmitHandler, UseFormGetValues, UseFormSetValue } from 'react-hook-form';
3
- import { AxiosResponse } from 'axios';
4
- import { ItemSchemaColumnsType, Id, Item, SchemaType, DataSchemaColumnsType } from '../utils';
5
- import { GetGenericModelListProps, TargetApiParams } from '../api';
3
+ import { AlertColor, AlertPropsColorOverrides } from '@mui/material/Alert';
4
+ import { OverridableStringUnion } from '@mui/types';
5
+ import { ItemSchemaColumnsType, Id, Item, SchemaType, DataSchemaColumnsType, OnSuccessEvent, OptionsAC, GenericValue, TargetApiParams } from '../utils';
6
+ import { GetGenericModelListProps } from '../api';
6
7
  import { serverEndPointType } from './DRFReactBySchemaContext';
7
8
  export interface LoadSinglePageDataProps {
8
9
  model: string;
@@ -14,7 +15,6 @@ export interface LoadSinglePageDataProps {
14
15
  formPath?: string | null;
15
16
  extraValidators?: Item;
16
17
  }
17
- export type OptionsACType = Record<string, Item[]>;
18
18
  export interface PageFormType {
19
19
  id: Id;
20
20
  schema: SchemaType | null;
@@ -55,7 +55,7 @@ export interface OnDeleteRelatedModelType {
55
55
  export interface SnackBarType {
56
56
  open?: boolean;
57
57
  msg?: string;
58
- severity?: string;
58
+ severity?: OverridableStringUnion<AlertColor, AlertPropsColorOverrides>;
59
59
  }
60
60
  export interface DialogType {
61
61
  open: boolean;
@@ -71,28 +71,26 @@ export interface APIWrapperContextType {
71
71
  onSubmit: DRFReactBySchemaSubmitHandler;
72
72
  loadSinglePageData: (p: LoadSinglePageDataProps) => Promise<boolean | FieldValues>;
73
73
  handleLoading: (p: boolean) => void;
74
- optionsACState: [OptionsACType | null, (x: Partial<OptionsACType>) => void];
74
+ optionsACState: [OptionsAC | null, (x: Partial<OptionsAC>) => void];
75
75
  pageFormState: [PageFormType | null, (x: Partial<PageFormType>) => void];
76
76
  onEditModel: (p: OnEditModelType) => void;
77
- onEditModelDataGridSave: (p: onEditModelDataGridSaveType) => Promise<false | Id>;
78
- onEditModelSave: (p: Item) => Promise<false | undefined>;
79
- onDeleteModel: (model: string, id: Id, onSuccess?: (e: React.BaseSyntheticEvent) => any) => void;
80
- onEditRelatedModelSave: (p: OnEditRelatedModelType) => Promise<boolean | Id | ItemSchemaColumnsType>;
77
+ onEditModelDataGridSave: (p: onEditModelDataGridSaveType) => Promise<false | Item>;
78
+ onEditModelSave: (p: Item) => Promise<boolean>;
79
+ onDeleteModel: (model: string, id: Id, onSuccess?: OnSuccessEvent) => void;
80
+ onEditRelatedModelSave: (p: OnEditRelatedModelType) => Promise<false | Item | ItemSchemaColumnsType>;
81
81
  onDeleteRelatedModel: (p: OnDeleteRelatedModelType) => Promise<boolean>;
82
82
  onTriggerSnackBar: (p: SnackBarType) => void;
83
83
  setDialog: (x: Partial<DialogType>) => void;
84
- getRawData: (route: string) => Promise<false | any>;
84
+ getRawData: (route: string) => Promise<GenericValue>;
85
85
  getAutoComplete: (model: string) => Promise<false | Item[]>;
86
86
  getGenericModelList: (x: Omit<GetGenericModelListProps, 'serverEndPoint'>) => Promise<false | DataSchemaColumnsType>;
87
87
  getAllModels: () => Promise<Item[]>;
88
88
  loginByPayload: (payload: Item) => Promise<boolean>;
89
89
  getSignUpOptions: () => Promise<false | SchemaType>;
90
- signUp: (data: Item) => Promise<false | AxiosResponse<any, any> | {
91
- errors: unknown;
92
- } | undefined>;
90
+ signUp: (data: Item) => Promise<false | Item>;
93
91
  serverEndPoint: serverEndPointType;
94
92
  editModel: React.MutableRefObject<Item>;
95
- updateModel: (p: Omit<TargetApiParams, 'serverEndPoint'>) => Promise<boolean>;
93
+ updateModel: (p: Omit<TargetApiParams, 'serverEndPoint'>) => Promise<false | Item>;
96
94
  populateOptionsAC: (optionsACModels: string[]) => void;
97
95
  }
98
96
  export declare const APIWrapperContext: React.Context<APIWrapperContextType>;
@@ -24,7 +24,7 @@ exports.APIWrapperContext = react_1.default.createContext({
24
24
  pageFormState: [null, () => undefined],
25
25
  onEditModel: () => undefined,
26
26
  onEditModelDataGridSave: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
27
- onEditModelSave: () => __awaiter(void 0, void 0, void 0, function* () { return undefined; }),
27
+ onEditModelSave: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
28
28
  onDeleteModel: () => undefined,
29
29
  onEditRelatedModelSave: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
30
30
  onDeleteRelatedModel: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
@@ -9,5 +9,5 @@ interface DRFReactBySchemaProviderProps extends DRFReactBySchemaContextType {
9
9
  * @param {*} props
10
10
  * @returns {*}
11
11
  */
12
- declare const DRFReactBySchemaProvider: ({ serverEndPoint, theme, isInBatches, firstBatchLength, children, }: DRFReactBySchemaProviderProps) => JSX.Element;
12
+ declare const DRFReactBySchemaProvider: ({ serverEndPoint, theme, isInBatches, firstBatchLength, children, }: DRFReactBySchemaProviderProps) => React.JSX.Element;
13
13
  export default DRFReactBySchemaProvider;
@@ -17,5 +17,5 @@ interface FormProps {
17
17
  formButtonsSx?: any;
18
18
  children: React.ReactNode;
19
19
  }
20
- export default function Form({ model, id, objTitleField, optionsACModels, cancelBtn, cancelBtnLabel, deleteBtnLabel, saveAndCreateNewBtnLabel, saveAndContinueBtnLabel, saveBtnLabel, onSuccess, borderBottom, saveAndContinue, formButtonsSx, children, }: FormProps): JSX.Element;
20
+ export default function Form({ model, id, objTitleField, optionsACModels, cancelBtn, cancelBtnLabel, deleteBtnLabel, saveAndCreateNewBtnLabel, saveAndContinueBtnLabel, saveBtnLabel, onSuccess, borderBottom, saveAndContinue, formButtonsSx, children, }: FormProps): React.JSX.Element;
21
21
  export {};
@@ -9,7 +9,6 @@ export interface LoadSinglePageDataProps {
9
9
  formPath?: string | null;
10
10
  extraValidators?: Item;
11
11
  }
12
- export type OptionsACType = Record<string, Item[]>;
13
12
  export interface PageFormType {
14
13
  id: Id;
15
14
  schema: SchemaType | null;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  export default function Overlays({ children }: {
3
3
  children: React.ReactNode;
4
- }): JSX.Element;
4
+ }): React.JSX.Element;
package/dist/index.d.ts CHANGED
@@ -3,7 +3,6 @@ import { emptyByType, getChoiceByValue, populateValues, buildGenericYupValidatio
3
3
  import DRFReactBySchemaProvider from './context/DRFReactBySchemaProvider';
4
4
  import { useDRFReactBySchema } from './context/DRFReactBySchemaContext';
5
5
  import { useAPIWrapper } from './context/APIWrapperContext';
6
- import Form from './context/Form';
7
6
  import FormBySchema from './components/forms/FormBySchema';
8
7
  import DialogFormBySchema from './components/forms/DialogFormBySchema';
9
8
  import DataGridBySchemaEditable from './components/DataGridBySchemaEditable';
@@ -26,4 +25,4 @@ import AutocompleteFieldBySchema from './components/forms/inputs/AutocompleteFie
26
25
  import FloatFieldBySchema from './components/forms/inputs/FloatFieldBySchema';
27
26
  import DetailBySchema from './components/details/DetailBySchema';
28
27
  import DetailFieldBySchema from './components/details/DetailFieldBySchema';
29
- export { DRFReactBySchemaProvider, useAPIWrapper, useDRFReactBySchema, Form, FormBySchema, DialogFormBySchema, DataGridBySchemaEditable, GenericModelList, GenericRelatedModelList, DataTotals, DialogActions, SelectEditInputCell, GridDateInput, GridDecimalInput, GridPatternInput, BooleanInputCell, FieldBySchema, TextFieldBySchema, BooleanFieldBySchema, DesktopDatePickerBySchema, DesktopDateTimePickerBySchema, EditableAutocompleteFieldBySchema, AutocompleteFieldBySchema, FloatFieldBySchema, DetailBySchema, DetailFieldBySchema, updateData, partialUpdateData, createData, deleteData, createOrUpdateData, updateDataBySchema, addExistingRelatedModel, getAutoComplete, loginByPayload, setAuthToken, isLoggedIn, getGenericModelList, getGenericModel, emptyByType, getChoiceByValue, populateValues, buildGenericYupValidationSchema, errorProps, getTmpId, isTmpId, getPatternFormat, clearJWT, hasJWT, slugToCamelCase, };
28
+ export { DRFReactBySchemaProvider, useAPIWrapper, useDRFReactBySchema, FormBySchema, DialogFormBySchema, DataGridBySchemaEditable, GenericModelList, GenericRelatedModelList, DataTotals, DialogActions, SelectEditInputCell, GridDateInput, GridDecimalInput, GridPatternInput, BooleanInputCell, FieldBySchema, TextFieldBySchema, BooleanFieldBySchema, DesktopDatePickerBySchema, DesktopDateTimePickerBySchema, EditableAutocompleteFieldBySchema, AutocompleteFieldBySchema, FloatFieldBySchema, DetailBySchema, DetailFieldBySchema, updateData, partialUpdateData, createData, deleteData, createOrUpdateData, updateDataBySchema, addExistingRelatedModel, getAutoComplete, loginByPayload, setAuthToken, isLoggedIn, getGenericModelList, getGenericModel, emptyByType, getChoiceByValue, populateValues, buildGenericYupValidationSchema, errorProps, getTmpId, isTmpId, getPatternFormat, clearJWT, hasJWT, slugToCamelCase, };
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.slugToCamelCase = exports.hasJWT = exports.clearJWT = exports.getPatternFormat = exports.isTmpId = exports.getTmpId = exports.errorProps = exports.buildGenericYupValidationSchema = exports.populateValues = exports.getChoiceByValue = exports.emptyByType = exports.getGenericModel = exports.getGenericModelList = exports.isLoggedIn = exports.setAuthToken = exports.loginByPayload = exports.getAutoComplete = exports.addExistingRelatedModel = exports.updateDataBySchema = exports.createOrUpdateData = exports.deleteData = exports.createData = exports.partialUpdateData = exports.updateData = exports.DetailFieldBySchema = exports.DetailBySchema = exports.FloatFieldBySchema = exports.AutocompleteFieldBySchema = exports.EditableAutocompleteFieldBySchema = exports.DesktopDateTimePickerBySchema = exports.DesktopDatePickerBySchema = exports.BooleanFieldBySchema = exports.TextFieldBySchema = exports.FieldBySchema = exports.BooleanInputCell = exports.GridPatternInput = exports.GridDecimalInput = exports.GridDateInput = exports.SelectEditInputCell = exports.DialogActions = exports.DataTotals = exports.GenericRelatedModelList = exports.GenericModelList = exports.DataGridBySchemaEditable = exports.DialogFormBySchema = exports.FormBySchema = exports.Form = exports.useDRFReactBySchema = exports.useAPIWrapper = exports.DRFReactBySchemaProvider = void 0;
6
+ exports.slugToCamelCase = exports.hasJWT = exports.clearJWT = exports.getPatternFormat = exports.isTmpId = exports.getTmpId = exports.errorProps = exports.buildGenericYupValidationSchema = exports.populateValues = exports.getChoiceByValue = exports.emptyByType = exports.getGenericModel = exports.getGenericModelList = exports.isLoggedIn = exports.setAuthToken = exports.loginByPayload = exports.getAutoComplete = exports.addExistingRelatedModel = exports.updateDataBySchema = exports.createOrUpdateData = exports.deleteData = exports.createData = exports.partialUpdateData = exports.updateData = exports.DetailFieldBySchema = exports.DetailBySchema = exports.FloatFieldBySchema = exports.AutocompleteFieldBySchema = exports.EditableAutocompleteFieldBySchema = exports.DesktopDateTimePickerBySchema = exports.DesktopDatePickerBySchema = exports.BooleanFieldBySchema = exports.TextFieldBySchema = exports.FieldBySchema = exports.BooleanInputCell = exports.GridPatternInput = exports.GridDecimalInput = exports.GridDateInput = exports.SelectEditInputCell = exports.DialogActions = exports.DataTotals = exports.GenericRelatedModelList = exports.GenericModelList = exports.DataGridBySchemaEditable = exports.DialogFormBySchema = exports.FormBySchema = exports.useDRFReactBySchema = exports.useAPIWrapper = exports.DRFReactBySchemaProvider = void 0;
7
7
  // Methods:
8
8
  const api_1 = require("./api");
9
9
  Object.defineProperty(exports, "updateData", { enumerable: true, get: function () { return api_1.updateData; } });
@@ -39,8 +39,7 @@ Object.defineProperty(exports, "useDRFReactBySchema", { enumerable: true, get: f
39
39
  const APIWrapperContext_1 = require("./context/APIWrapperContext");
40
40
  Object.defineProperty(exports, "useAPIWrapper", { enumerable: true, get: function () { return APIWrapperContext_1.useAPIWrapper; } });
41
41
  // Forms:
42
- const Form_1 = __importDefault(require("./context/Form"));
43
- exports.Form = Form_1.default;
42
+ // import Form from './context/Form';
44
43
  const FormBySchema_1 = __importDefault(require("./components/forms/FormBySchema"));
45
44
  exports.FormBySchema = FormBySchema_1.default;
46
45
  const DialogFormBySchema_1 = __importDefault(require("./components/forms/DialogFormBySchema"));
@@ -96,7 +96,7 @@ export declare const fullWidthButton: {
96
96
  };
97
97
  export declare const formCard: {
98
98
  width: string;
99
- backgroundColor: any;
99
+ backgroundColor: string;
100
100
  mt: number;
101
101
  mb: number;
102
102
  };
@@ -17,5 +17,5 @@ declare module '@mui/material/styles' {
17
17
  semaphoric?: string;
18
18
  }
19
19
  }
20
- declare const defaultTheme: any;
20
+ declare const defaultTheme: import("@mui/material/styles").Theme;
21
21
  export default defaultTheme;