drf-react-by-schema 0.6.5 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +7 -13
- package/dist/api.js +77 -77
- package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.d.ts +1 -1
- package/dist/components/DataGridBySchemaEditable.js +5 -7
- package/dist/components/DialogActions.d.ts +3 -3
- package/dist/components/DialogActions.js +2 -4
- package/dist/components/forms/DialogFormBySchema.d.ts +14 -0
- package/dist/components/forms/DialogFormBySchema.js +61 -0
- package/dist/components/forms/FieldBySchema.d.ts +3 -0
- package/dist/components/forms/FieldBySchema.js +65 -0
- package/dist/components/forms/FormBySchema.d.ts +19 -0
- package/dist/components/forms/FormBySchema.js +164 -0
- package/dist/components/forms/inputs/AutocompleteFieldBySchema.d.ts +3 -0
- package/dist/components/forms/inputs/AutocompleteFieldBySchema.js +86 -0
- package/dist/components/forms/inputs/BooleanFieldBySchema.d.ts +3 -0
- package/dist/components/forms/inputs/BooleanFieldBySchema.js +41 -0
- package/dist/components/forms/inputs/DesktopDatePickerBySchema.d.ts +3 -0
- package/dist/components/forms/inputs/DesktopDatePickerBySchema.js +49 -0
- package/dist/components/forms/inputs/DesktopDateTimePickerBySchema.d.ts +3 -0
- package/dist/components/forms/inputs/DesktopDateTimePickerBySchema.js +41 -0
- package/dist/components/forms/inputs/EditableAutocompleteFieldBySchema.d.ts +4 -0
- package/dist/components/forms/inputs/EditableAutocompleteFieldBySchema.js +203 -0
- package/dist/components/forms/inputs/FloatFieldBySchema.d.ts +3 -0
- package/dist/components/forms/inputs/FloatFieldBySchema.js +60 -0
- package/dist/components/forms/inputs/TextFieldBySchema.d.ts +3 -0
- package/dist/components/forms/inputs/TextFieldBySchema.js +44 -0
- package/dist/context/APIWrapper.d.ts +5 -5
- package/dist/context/APIWrapper.js +135 -87
- package/dist/context/APIWrapperContext.d.ts +22 -9
- package/dist/context/APIWrapperContext.js +42 -9
- package/dist/context/DRFReactBySchemaContext.d.ts +4 -4
- package/dist/context/DRFReactBySchemaContext.js +5 -5
- package/dist/context/DRFReactBySchemaProvider.d.ts +1 -1
- package/dist/context/DRFReactBySchemaProvider.js +7 -10
- package/dist/context/Form.d.ts +1 -1
- package/dist/context/Form.js +13 -14
- package/dist/context/FormContext.js +0 -7
- package/dist/context/Overlays.js +11 -12
- package/dist/index.d.ts +16 -6
- package/dist/index.js +31 -7
- package/dist/styles/layout.d.ts +7 -0
- package/dist/styles/layout.js +2 -1
- package/dist/styles/theme.js +77 -42
- package/dist/utils.d.ts +42 -4
- package/dist/utils.js +22 -18
- package/package.json +1 -1
|
@@ -48,33 +48,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
48
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
49
|
const react_1 = __importStar(require("react"));
|
|
50
50
|
const utils_1 = require("../utils");
|
|
51
|
-
const DialogJSONSchemaForm_1 = __importDefault(require("../components/DialogJSONSchemaForm"));
|
|
52
51
|
const DialogActions_1 = __importDefault(require("../components/DialogActions"));
|
|
53
52
|
const DRFReactBySchemaContext_1 = require("./DRFReactBySchemaContext");
|
|
54
53
|
const api_1 = require("../api");
|
|
55
54
|
const APIWrapperContext_1 = require("./APIWrapperContext");
|
|
56
|
-
;
|
|
57
|
-
function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, children }) {
|
|
58
|
-
const { serverEndPoint } = DRFReactBySchemaContext_1.
|
|
59
|
-
? react_1.default.useContext(DRFReactBySchemaContext_1.DRFReactBySchemaContext)
|
|
60
|
-
: { serverEndPoint: null };
|
|
61
|
-
if (!serverEndPoint) {
|
|
62
|
-
return (react_1.default.createElement(react_1.default.Fragment, null, children));
|
|
63
|
-
}
|
|
55
|
+
const DialogFormBySchema_1 = __importDefault(require("../components/forms/DialogFormBySchema"));
|
|
56
|
+
function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, children, }) {
|
|
57
|
+
const { serverEndPoint } = (0, DRFReactBySchemaContext_1.useDRFReactBySchema)();
|
|
64
58
|
const [usuaria, setUsuaria] = (0, react_1.useState)(null);
|
|
65
|
-
const [optionsAC, setOptionsAC] = (0, react_1.useReducer)(utils_1.reducer, null);
|
|
59
|
+
const [optionsAC, setOptionsAC] = (0, react_1.useReducer)((utils_1.reducer), null);
|
|
66
60
|
const initialPageForm = {
|
|
67
61
|
id: '',
|
|
68
62
|
schema: null,
|
|
69
63
|
initialValues: null,
|
|
70
|
-
validationSchema: null
|
|
64
|
+
validationSchema: null,
|
|
71
65
|
};
|
|
72
|
-
const [pageForm, setPageForm] = (0, react_1.useReducer)(utils_1.reducer, initialPageForm);
|
|
66
|
+
const [pageForm, setPageForm] = (0, react_1.useReducer)((utils_1.reducer), initialPageForm);
|
|
73
67
|
const editModel = (0, react_1.useRef)({});
|
|
74
|
-
const jsonSchemaFormRef = (0, react_1.useRef)(null);
|
|
75
68
|
const updateUsuaria = () => {
|
|
76
69
|
setUsuaria(null);
|
|
77
|
-
(0, api_1.isLoggedIn)(serverEndPoint).then(usuaria => {
|
|
70
|
+
(0, api_1.isLoggedIn)(serverEndPoint).then((usuaria) => {
|
|
78
71
|
setUsuaria(usuaria || { erro: 'token inválido' });
|
|
79
72
|
});
|
|
80
73
|
};
|
|
@@ -88,10 +81,10 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
88
81
|
setSnackBar({
|
|
89
82
|
open: true,
|
|
90
83
|
msg,
|
|
91
|
-
severity
|
|
84
|
+
severity,
|
|
92
85
|
});
|
|
93
86
|
};
|
|
94
|
-
const loadSinglePageData = ({ model, objId, optionsACModels = null, defaults = {}, extraValidators = {} }) => __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
const loadSinglePageData = ({ model, objId, optionsACModels = null, defaults = {}, extraValidators = {}, }) => __awaiter(this, void 0, void 0, function* () {
|
|
95
88
|
setLoading(true);
|
|
96
89
|
if (!objId || objId === 'novo') {
|
|
97
90
|
objId = (0, utils_1.getTmpId)();
|
|
@@ -99,10 +92,10 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
99
92
|
const object = yield (0, api_1.getGenericModel)({
|
|
100
93
|
model,
|
|
101
94
|
serverEndPoint,
|
|
102
|
-
id: (0, utils_1.isTmpId)(objId) ? null : objId
|
|
95
|
+
id: (0, utils_1.isTmpId)(objId) ? null : objId,
|
|
103
96
|
});
|
|
104
97
|
if (object === false) {
|
|
105
|
-
setPageForm({ schema:
|
|
98
|
+
setPageForm({ schema: undefined, id: '' });
|
|
106
99
|
console.log('Houve um erro ao tentar carregar os dados!');
|
|
107
100
|
return false;
|
|
108
101
|
}
|
|
@@ -119,7 +112,7 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
119
112
|
return values;
|
|
120
113
|
});
|
|
121
114
|
const onSubmit = (model, id, data) => __awaiter(this, void 0, void 0, function* () {
|
|
122
|
-
if (!pageForm) {
|
|
115
|
+
if (!pageForm || !pageForm.schema) {
|
|
123
116
|
console.log('there must be a pageForm!');
|
|
124
117
|
return false;
|
|
125
118
|
}
|
|
@@ -129,65 +122,111 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
129
122
|
modelObjectId: id,
|
|
130
123
|
serverEndPoint,
|
|
131
124
|
data,
|
|
132
|
-
schema: pageForm.schema
|
|
125
|
+
schema: pageForm.schema,
|
|
133
126
|
});
|
|
134
127
|
setLoading(false);
|
|
135
128
|
if (!['number', 'string'].includes(typeof response)) {
|
|
136
129
|
onTriggerSnackBar({
|
|
137
130
|
msg: 'Houve um problema ao salvar seus dados! Por favor, entre em contato',
|
|
138
|
-
severity: 'error'
|
|
131
|
+
severity: 'error',
|
|
139
132
|
});
|
|
140
133
|
console.log({
|
|
141
134
|
msg: 'Error saving model',
|
|
142
135
|
errors: response,
|
|
143
|
-
data
|
|
136
|
+
data,
|
|
144
137
|
});
|
|
145
138
|
return false;
|
|
146
139
|
}
|
|
147
140
|
onTriggerSnackBar({
|
|
148
|
-
msg:
|
|
149
|
-
? 'Dados atualizados com sucesso!'
|
|
150
|
-
: 'Criado com sucesso!'
|
|
141
|
+
msg: id ? 'Dados atualizados com sucesso!' : 'Criado com sucesso!',
|
|
151
142
|
});
|
|
152
143
|
return response;
|
|
153
144
|
});
|
|
154
145
|
const populateOptionsAC = (optionsACModels) => {
|
|
155
146
|
for (const model of optionsACModels) {
|
|
156
|
-
(
|
|
157
|
-
|
|
147
|
+
localGetAutoComplete(model).then((options) => {
|
|
148
|
+
if (options !== false) {
|
|
149
|
+
setOptionsAC({ [model]: options });
|
|
150
|
+
}
|
|
158
151
|
});
|
|
159
152
|
}
|
|
160
153
|
};
|
|
161
|
-
;
|
|
162
154
|
const populateInitialValues = (_a) => {
|
|
163
155
|
var { model, id, isEditModel, extraValidators } = _a, object = __rest(_a, ["model", "id", "isEditModel", "extraValidators"]);
|
|
164
156
|
const values = (0, utils_1.populateValues)(object);
|
|
165
157
|
const yupSchema = (0, utils_1.buildGenericYupValidationSchema)(Object.assign(Object.assign({}, object), { data: values, extraValidators }));
|
|
166
158
|
setPageForm({
|
|
167
|
-
model,
|
|
159
|
+
// model,
|
|
168
160
|
id,
|
|
169
161
|
schema: object.schema,
|
|
170
|
-
modelOptions: object.modelOptions,
|
|
162
|
+
// modelOptions: object.modelOptions,
|
|
171
163
|
initialValues: values,
|
|
172
|
-
validationSchema: yupSchema
|
|
164
|
+
validationSchema: yupSchema,
|
|
165
|
+
forceReload: false,
|
|
173
166
|
});
|
|
174
167
|
return values;
|
|
175
168
|
};
|
|
176
|
-
const
|
|
169
|
+
const onEditModelSave = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
170
|
+
setDialog({ open: false });
|
|
171
|
+
handleLoading(true);
|
|
172
|
+
const { fieldKey, index, model, id, labelKey, setValue, getValues, schema } = editModel.current;
|
|
173
|
+
const response = yield (0, api_1.updateDataBySchema)({
|
|
174
|
+
model,
|
|
175
|
+
modelObjectId: id,
|
|
176
|
+
serverEndPoint,
|
|
177
|
+
data,
|
|
178
|
+
schema,
|
|
179
|
+
});
|
|
180
|
+
if (!['number', 'string'].includes(typeof response)) {
|
|
181
|
+
onTriggerSnackBar({
|
|
182
|
+
msg: 'Houve um problema ao salvar seus dados! Por favor, entre em contato',
|
|
183
|
+
severity: 'error',
|
|
184
|
+
});
|
|
185
|
+
console.log({
|
|
186
|
+
msg: 'Error saving model',
|
|
187
|
+
errors: response,
|
|
188
|
+
data,
|
|
189
|
+
});
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
onTriggerSnackBar({
|
|
193
|
+
msg: 'Alterações salvas com sucesso!',
|
|
194
|
+
severity: 'info',
|
|
195
|
+
});
|
|
196
|
+
if (setValue && getValues) {
|
|
197
|
+
const targetKey = fieldKey && index >= 0 ? `${fieldKey}.${index}.${model}` : model;
|
|
198
|
+
const newValue = Object.assign(Object.assign(Object.assign({}, getValues(targetKey)), data), { label: data[labelKey] });
|
|
199
|
+
setValue(targetKey, newValue);
|
|
200
|
+
populateOptionsAC([model]);
|
|
201
|
+
}
|
|
202
|
+
handleLoading(false);
|
|
203
|
+
});
|
|
204
|
+
const onEditModel = ({ fieldKey, index, model, id, labelKey, setValue, getValues, }) => {
|
|
177
205
|
setDialog({
|
|
178
206
|
open: true,
|
|
179
|
-
loading: true
|
|
207
|
+
loading: true,
|
|
180
208
|
});
|
|
181
|
-
(0, api_1.
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
209
|
+
(0, api_1.getGenericModel)({ model, serverEndPoint, id }).then((result) => {
|
|
210
|
+
if (result === false) {
|
|
211
|
+
setDialog({
|
|
212
|
+
open: true,
|
|
213
|
+
loading: false,
|
|
214
|
+
title: 'Falha ao carregar o formulário',
|
|
215
|
+
Body: react_1.default.createElement(react_1.default.Fragment, null, "N\u00E3o foi poss\u00EDvel carregar o formul\u00E1rio!"),
|
|
216
|
+
});
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
const values = (0, utils_1.populateValues)(result);
|
|
220
|
+
const yupSchema = (0, utils_1.buildGenericYupValidationSchema)({
|
|
221
|
+
schema: result.schema,
|
|
222
|
+
data: values,
|
|
185
223
|
});
|
|
186
224
|
setDialog({
|
|
225
|
+
open: true,
|
|
187
226
|
loading: false,
|
|
188
227
|
title: 'Editar',
|
|
189
|
-
Body: react_1.default.createElement(
|
|
190
|
-
Actions: react_1.default.createElement(
|
|
228
|
+
Body: (react_1.default.createElement(DialogFormBySchema_1.default, { schema: result.schema, validationSchema: yupSchema, initialValues: values, setDialog: setDialog, getAutoComplete: localGetAutoComplete, onEditModelSave: onEditModelSave })),
|
|
229
|
+
Actions: react_1.default.createElement(react_1.default.Fragment, null),
|
|
191
230
|
});
|
|
192
231
|
editModel.current = {
|
|
193
232
|
fieldKey,
|
|
@@ -196,49 +235,20 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
196
235
|
id,
|
|
197
236
|
labelKey,
|
|
198
237
|
setValue,
|
|
199
|
-
getValues
|
|
238
|
+
getValues,
|
|
239
|
+
schema: result.schema,
|
|
200
240
|
};
|
|
201
241
|
});
|
|
202
242
|
};
|
|
203
|
-
const onEditModelSave = ({ formData }) => __awaiter(this, void 0, void 0, function* () {
|
|
204
|
-
setDialog({ open: false });
|
|
205
|
-
setLoading(true);
|
|
206
|
-
const { fieldKey, index, model, id, labelKey, setValue, getValues } = editModel.current;
|
|
207
|
-
const newModelId = yield (0, api_1.createOrUpdateJSONSchema)({
|
|
208
|
-
model,
|
|
209
|
-
serverEndPoint,
|
|
210
|
-
id,
|
|
211
|
-
formData
|
|
212
|
-
});
|
|
213
|
-
if (newModelId.errors) {
|
|
214
|
-
console.log(newModelId.errors);
|
|
215
|
-
onTriggerSnackBar({
|
|
216
|
-
msg: 'Houve um problema ao salvar a alteração! Por favor, entre em contato.',
|
|
217
|
-
severity: 'error'
|
|
218
|
-
});
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
onTriggerSnackBar({
|
|
222
|
-
msg: 'Alterações salvas com sucesso!',
|
|
223
|
-
severity: 'info'
|
|
224
|
-
});
|
|
225
|
-
const targetKey = (fieldKey && index >= 0)
|
|
226
|
-
? `${fieldKey}.${index}.${model}`
|
|
227
|
-
: model;
|
|
228
|
-
const newValue = Object.assign(Object.assign(Object.assign({}, getValues(targetKey)), formData), { label: formData[labelKey] });
|
|
229
|
-
setValue(targetKey, newValue);
|
|
230
|
-
populateOptionsAC([model]);
|
|
231
|
-
setLoading(false);
|
|
232
|
-
});
|
|
233
243
|
const onDeleteModel = (model, id, onSuccess) => {
|
|
234
244
|
setDialog({
|
|
235
245
|
open: true,
|
|
236
246
|
loading: false,
|
|
237
247
|
title: 'Apagar',
|
|
238
248
|
Body: 'Tem certeza de que deseja apagar este item?',
|
|
239
|
-
Actions: react_1.default.createElement(DialogActions_1.default, { setDialog: setDialog, handleSave: (e) => {
|
|
249
|
+
Actions: (react_1.default.createElement(DialogActions_1.default, { setDialog: setDialog, handleSave: (e) => {
|
|
240
250
|
return onDeleteModelSave(model, id, onSuccess);
|
|
241
|
-
}, btnConfirm: "Sim, apagar" })
|
|
251
|
+
}, btnConfirm: "Sim, apagar" })),
|
|
242
252
|
});
|
|
243
253
|
};
|
|
244
254
|
const onDeleteModelSave = (model, id, onSuccess) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -248,7 +258,7 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
248
258
|
if (ret !== false) {
|
|
249
259
|
onTriggerSnackBar({
|
|
250
260
|
msg: 'Apagado com com sucesso!',
|
|
251
|
-
severity: 'info'
|
|
261
|
+
severity: 'info',
|
|
252
262
|
});
|
|
253
263
|
if (onSuccess) {
|
|
254
264
|
onSuccess({});
|
|
@@ -258,11 +268,11 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
258
268
|
setLoading(false);
|
|
259
269
|
onTriggerSnackBar({
|
|
260
270
|
msg: 'Houve um problema ao remover o item! Por favor, entre em contato.',
|
|
261
|
-
severity: 'error'
|
|
271
|
+
severity: 'error',
|
|
262
272
|
});
|
|
263
273
|
return false;
|
|
264
274
|
});
|
|
265
|
-
const onEditRelatedModelSave = ({ model, id, relatedModel, relatedModelId, newRow, schema, onlyAddExisting }) => __awaiter(this, void 0, void 0, function* () {
|
|
275
|
+
const onEditRelatedModelSave = ({ model, id, relatedModel, relatedModelId, newRow, schema, onlyAddExisting, }) => __awaiter(this, void 0, void 0, function* () {
|
|
266
276
|
const updateUrl = `${model}/${id}/${relatedModel}`;
|
|
267
277
|
if (onlyAddExisting) {
|
|
268
278
|
const response = yield (0, api_1.addExistingRelatedModel)({
|
|
@@ -272,28 +282,28 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
272
282
|
data: {
|
|
273
283
|
onlyAddExisting: {
|
|
274
284
|
key: relatedModel,
|
|
275
|
-
value: newRow.id_to_add
|
|
276
|
-
}
|
|
277
|
-
}
|
|
285
|
+
value: newRow.id_to_add,
|
|
286
|
+
},
|
|
287
|
+
},
|
|
278
288
|
});
|
|
279
289
|
if (Object.prototype.hasOwnProperty.call(response, 'errors')) {
|
|
280
290
|
console.log(response);
|
|
281
291
|
onTriggerSnackBar({
|
|
282
292
|
msg: 'Houve um problema ao salvar a alteração! Por favor, entre em contato.',
|
|
283
|
-
severity: 'error'
|
|
293
|
+
severity: 'error',
|
|
284
294
|
});
|
|
285
295
|
return false;
|
|
286
296
|
}
|
|
287
297
|
onTriggerSnackBar({
|
|
288
298
|
msg: 'Alterações salvas com sucesso!',
|
|
289
|
-
severity: 'info'
|
|
299
|
+
severity: 'info',
|
|
290
300
|
});
|
|
291
301
|
const object = yield (0, api_1.getGenericModel)({
|
|
292
302
|
model,
|
|
293
303
|
id,
|
|
294
304
|
serverEndPoint,
|
|
295
305
|
relatedModel,
|
|
296
|
-
relatedModelId: newRow.id_to_add
|
|
306
|
+
relatedModelId: newRow.id_to_add,
|
|
297
307
|
});
|
|
298
308
|
return object;
|
|
299
309
|
}
|
|
@@ -307,37 +317,67 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
307
317
|
serverEndPoint,
|
|
308
318
|
data: newRow,
|
|
309
319
|
schema,
|
|
310
|
-
path: updateUrl
|
|
320
|
+
path: updateUrl,
|
|
311
321
|
});
|
|
312
322
|
if (response && !Object.prototype.hasOwnProperty.call(response, 'errors')) {
|
|
313
323
|
onTriggerSnackBar({
|
|
314
324
|
msg: 'Alterações salvas com sucesso!',
|
|
315
|
-
severity: 'info'
|
|
325
|
+
severity: 'info',
|
|
316
326
|
});
|
|
317
327
|
return response;
|
|
318
328
|
}
|
|
319
329
|
onTriggerSnackBar({
|
|
320
330
|
msg: 'Não foi possível salvar os dados. Confira os erros.',
|
|
321
|
-
severity: 'error'
|
|
331
|
+
severity: 'error',
|
|
322
332
|
});
|
|
323
333
|
return false;
|
|
324
334
|
});
|
|
325
|
-
const onDeleteRelatedModel = ({ model, id, relatedModel, relatedModelId }) => __awaiter(this, void 0, void 0, function* () {
|
|
335
|
+
const onDeleteRelatedModel = ({ model, id, relatedModel, relatedModelId, }) => __awaiter(this, void 0, void 0, function* () {
|
|
326
336
|
const deleteUrl = `${model}/${id}/${relatedModel}`;
|
|
327
337
|
const response = yield (0, api_1.deleteData)(deleteUrl, serverEndPoint, relatedModelId);
|
|
328
338
|
if (response) {
|
|
329
339
|
onTriggerSnackBar({
|
|
330
340
|
msg: 'Alterações salvas com sucesso!',
|
|
331
|
-
severity: 'info'
|
|
341
|
+
severity: 'info',
|
|
332
342
|
});
|
|
333
343
|
return response;
|
|
334
344
|
}
|
|
335
345
|
onTriggerSnackBar({
|
|
336
346
|
msg: 'Houve um problema ao remover o item! Por favor, entre em contato.',
|
|
337
|
-
severity: 'error'
|
|
347
|
+
severity: 'error',
|
|
338
348
|
});
|
|
339
349
|
return false;
|
|
340
350
|
});
|
|
351
|
+
if (!serverEndPoint) {
|
|
352
|
+
console.error('There must be a serverEndPoint properly configured for apiWrapper to work!');
|
|
353
|
+
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
|
354
|
+
}
|
|
355
|
+
function localGetAutoComplete(model) {
|
|
356
|
+
return (0, api_1.getAutoComplete)({ model, serverEndPoint });
|
|
357
|
+
}
|
|
358
|
+
function localGetGenericModelList(params) {
|
|
359
|
+
return (0, api_1.getGenericModelList)(Object.assign(Object.assign({}, params), { serverEndPoint }));
|
|
360
|
+
}
|
|
361
|
+
function localGetAllModels() {
|
|
362
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
363
|
+
return yield (0, api_1.getAllModels)(serverEndPoint);
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
function localLoginByPayload(payload) {
|
|
367
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
368
|
+
return yield (0, api_1.loginByPayload)(payload, serverEndPoint);
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
function localSignUp(data) {
|
|
372
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
373
|
+
return yield (0, api_1.signUp)(data, serverEndPoint);
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
function localGetSignupOptions() {
|
|
377
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
378
|
+
return yield (0, api_1.getSignUpOptions)(serverEndPoint);
|
|
379
|
+
});
|
|
380
|
+
}
|
|
341
381
|
return (react_1.default.createElement(APIWrapperContext_1.APIWrapperContext.Provider, { value: {
|
|
342
382
|
usuaria,
|
|
343
383
|
updateUsuaria,
|
|
@@ -347,11 +387,19 @@ function APIWrapper({ setLoading, handleLoading, setSnackBar, setDialog, childre
|
|
|
347
387
|
optionsACState: [optionsAC, setOptionsAC],
|
|
348
388
|
pageFormState: [pageForm, setPageForm],
|
|
349
389
|
onEditModel,
|
|
390
|
+
onEditModelSave,
|
|
350
391
|
onDeleteModel,
|
|
351
392
|
onEditRelatedModelSave,
|
|
352
393
|
onDeleteRelatedModel,
|
|
353
394
|
onTriggerSnackBar,
|
|
354
395
|
setDialog,
|
|
396
|
+
// api utils:
|
|
397
|
+
getAutoComplete: localGetAutoComplete,
|
|
398
|
+
getGenericModelList: localGetGenericModelList,
|
|
399
|
+
getAllModels: localGetAllModels,
|
|
400
|
+
loginByPayload: localLoginByPayload,
|
|
401
|
+
getSignUpOptions: localGetSignupOptions,
|
|
402
|
+
signUp: localSignUp,
|
|
355
403
|
// Remove after integrating new "onEditModel" to package:
|
|
356
404
|
serverEndPoint,
|
|
357
405
|
editModel,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { FieldValues, SubmitHandler } from 'react-hook-form';
|
|
3
|
-
import {
|
|
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 } from '../api';
|
|
4
6
|
import { serverEndPointType } from './DRFReactBySchemaContext';
|
|
5
7
|
export interface LoadSinglePageDataProps {
|
|
6
8
|
model: string;
|
|
@@ -18,15 +20,16 @@ export interface PageFormType {
|
|
|
18
20
|
schema: SchemaType | null;
|
|
19
21
|
initialValues: Item | null;
|
|
20
22
|
validationSchema: Item | null;
|
|
23
|
+
forceReload?: boolean;
|
|
21
24
|
}
|
|
22
25
|
export interface OnEditModelType {
|
|
23
26
|
fieldKey?: string;
|
|
24
|
-
index?:
|
|
27
|
+
index?: number;
|
|
25
28
|
model: string;
|
|
26
29
|
id: Id;
|
|
27
30
|
labelKey: string;
|
|
28
|
-
setValue?:
|
|
29
|
-
getValues?:
|
|
31
|
+
setValue?: UseFormSetValue<FieldValues>;
|
|
32
|
+
getValues?: UseFormGetValues<FieldValues>;
|
|
30
33
|
}
|
|
31
34
|
export interface OnEditRelatedModelType {
|
|
32
35
|
model: string;
|
|
@@ -62,16 +65,26 @@ export interface APIWrapperContextType {
|
|
|
62
65
|
onSubmit: DRFReactBySchemaSubmitHandler;
|
|
63
66
|
loadSinglePageData: (p: LoadSinglePageDataProps) => Promise<boolean | FieldValues>;
|
|
64
67
|
handleLoading: (p: boolean) => void;
|
|
65
|
-
optionsACState: [OptionsACType | null,
|
|
66
|
-
pageFormState: [
|
|
68
|
+
optionsACState: [OptionsACType | null, (x: Partial<OptionsACType>) => void];
|
|
69
|
+
pageFormState: [PageFormType | null, (x: Partial<PageFormType>) => void];
|
|
67
70
|
onEditModel: (p: OnEditModelType) => void;
|
|
71
|
+
onEditModelSave: (p: Item) => Promise<false | undefined>;
|
|
68
72
|
onDeleteModel: (model: string, id: Id, onSuccess?: (e: React.BaseSyntheticEvent) => any) => void;
|
|
69
73
|
onEditRelatedModelSave: (p: OnEditRelatedModelType) => Promise<boolean | Id | ItemSchemaColumnsType>;
|
|
70
74
|
onDeleteRelatedModel: (p: OnDeleteRelatedModelType) => Promise<boolean>;
|
|
71
75
|
onTriggerSnackBar: (p: SnackBarType) => void;
|
|
72
|
-
setDialog:
|
|
76
|
+
setDialog: (x: Partial<DialogType>) => void;
|
|
77
|
+
getAutoComplete: (model: string) => Promise<false | Item[]>;
|
|
78
|
+
getGenericModelList: (x: Omit<GetGenericModelListProps, 'serverEndPoint'>) => Promise<false | DataSchemaColumnsType>;
|
|
79
|
+
getAllModels: () => Promise<Item[]>;
|
|
80
|
+
loginByPayload: (payload: Item) => Promise<boolean>;
|
|
81
|
+
getSignUpOptions: () => Promise<false | SchemaType>;
|
|
82
|
+
signUp: (data: Item) => Promise<false | AxiosResponse<any, any> | {
|
|
83
|
+
errors: unknown;
|
|
84
|
+
} | undefined>;
|
|
73
85
|
serverEndPoint: serverEndPointType;
|
|
74
86
|
editModel: React.MutableRefObject<Item>;
|
|
75
87
|
populateOptionsAC: (optionsACModels: string[]) => void;
|
|
76
88
|
}
|
|
77
|
-
export declare const APIWrapperContext: React.Context<APIWrapperContextType
|
|
89
|
+
export declare const APIWrapperContext: React.Context<APIWrapperContextType>;
|
|
90
|
+
export declare const useAPIWrapper: () => APIWrapperContextType;
|
|
@@ -1,15 +1,48 @@
|
|
|
1
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
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
5
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.APIWrapperContext = void 0;
|
|
15
|
+
exports.useAPIWrapper = exports.APIWrapperContext = void 0;
|
|
7
16
|
const react_1 = __importDefault(require("react"));
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
exports.APIWrapperContext = react_1.default.createContext({
|
|
18
|
+
usuaria: null,
|
|
19
|
+
updateUsuaria: () => undefined,
|
|
20
|
+
onSubmit: () => undefined,
|
|
21
|
+
loadSinglePageData: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
|
|
22
|
+
handleLoading: () => undefined,
|
|
23
|
+
optionsACState: [null, () => undefined],
|
|
24
|
+
pageFormState: [null, () => undefined],
|
|
25
|
+
onEditModel: () => undefined,
|
|
26
|
+
onEditModelSave: () => __awaiter(void 0, void 0, void 0, function* () { return undefined; }),
|
|
27
|
+
onDeleteModel: () => undefined,
|
|
28
|
+
onEditRelatedModelSave: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
|
|
29
|
+
onDeleteRelatedModel: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
|
|
30
|
+
onTriggerSnackBar: () => undefined,
|
|
31
|
+
setDialog: () => undefined,
|
|
32
|
+
// api utils:
|
|
33
|
+
getAutoComplete: () => __awaiter(void 0, void 0, void 0, function* () { return []; }),
|
|
34
|
+
getGenericModelList: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
|
|
35
|
+
getAllModels: () => __awaiter(void 0, void 0, void 0, function* () { return []; }),
|
|
36
|
+
loginByPayload: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
|
|
37
|
+
getSignUpOptions: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
|
|
38
|
+
signUp: () => __awaiter(void 0, void 0, void 0, function* () { return false; }),
|
|
39
|
+
// Remove after integrating new "onEditModel" to package:
|
|
40
|
+
serverEndPoint: { url: '', apiTokenUrl: '' },
|
|
41
|
+
editModel: { current: {} },
|
|
42
|
+
populateOptionsAC: () => undefined,
|
|
43
|
+
});
|
|
44
|
+
const useAPIWrapper = () => {
|
|
45
|
+
const context = react_1.default.useContext(exports.APIWrapperContext);
|
|
46
|
+
return context;
|
|
47
|
+
};
|
|
48
|
+
exports.useAPIWrapper = useAPIWrapper;
|
|
@@ -2,10 +2,10 @@ import React from 'react';
|
|
|
2
2
|
import { Theme } from '@mui/material/styles';
|
|
3
3
|
export interface serverEndPointType {
|
|
4
4
|
url: string;
|
|
5
|
-
autocomplete?: string;
|
|
6
|
-
api?: string;
|
|
7
|
-
JSONSchema?: string;
|
|
8
5
|
apiTokenUrl: string;
|
|
6
|
+
api?: string;
|
|
7
|
+
signUp?: string;
|
|
8
|
+
autocomplete?: string;
|
|
9
9
|
getToken?: string;
|
|
10
10
|
refreshToken?: string;
|
|
11
11
|
verifyToken?: string;
|
|
@@ -17,4 +17,4 @@ export interface DRFReactBySchemaContextType {
|
|
|
17
17
|
firstBatchLength?: number;
|
|
18
18
|
}
|
|
19
19
|
export declare const DRFReactBySchemaContext: React.Context<DRFReactBySchemaContextType>;
|
|
20
|
-
export declare const
|
|
20
|
+
export declare const useDRFReactBySchema: () => DRFReactBySchemaContextType;
|
|
@@ -3,17 +3,17 @@ 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.
|
|
6
|
+
exports.useDRFReactBySchema = exports.DRFReactBySchemaContext = void 0;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const theme_1 = __importDefault(require("../styles/theme"));
|
|
9
9
|
exports.DRFReactBySchemaContext = react_1.default.createContext({
|
|
10
10
|
serverEndPoint: null,
|
|
11
11
|
theme: theme_1.default,
|
|
12
12
|
isInBatches: true,
|
|
13
|
-
firstBatchLength: 100
|
|
13
|
+
firstBatchLength: 100,
|
|
14
14
|
});
|
|
15
|
-
const
|
|
15
|
+
const useDRFReactBySchema = () => {
|
|
16
16
|
const context = react_1.default.useContext(exports.DRFReactBySchemaContext);
|
|
17
|
-
return context
|
|
17
|
+
return context;
|
|
18
18
|
};
|
|
19
|
-
exports.
|
|
19
|
+
exports.useDRFReactBySchema = useDRFReactBySchema;
|
|
@@ -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) => JSX.Element;
|
|
13
13
|
export default DRFReactBySchemaProvider;
|
|
@@ -15,7 +15,7 @@ const DRFReactBySchemaContext_1 = require("./DRFReactBySchemaContext");
|
|
|
15
15
|
* @param {*} props
|
|
16
16
|
* @returns {*}
|
|
17
17
|
*/
|
|
18
|
-
const DRFReactBySchemaProvider = ({ serverEndPoint, theme, isInBatches, firstBatchLength, children }) => {
|
|
18
|
+
const DRFReactBySchemaProvider = ({ serverEndPoint, theme, isInBatches, firstBatchLength, children, }) => {
|
|
19
19
|
if (serverEndPoint) {
|
|
20
20
|
const defaultKeys = [
|
|
21
21
|
'autocomplete',
|
|
@@ -23,30 +23,27 @@ const DRFReactBySchemaProvider = ({ serverEndPoint, theme, isInBatches, firstBat
|
|
|
23
23
|
['JSONSchema', 'jsonschema'],
|
|
24
24
|
['getToken', ''],
|
|
25
25
|
['refreshToken', 'refresh'],
|
|
26
|
-
['verifyToken', 'verify']
|
|
26
|
+
['verifyToken', 'verify'],
|
|
27
27
|
];
|
|
28
28
|
for (const key of defaultKeys) {
|
|
29
|
-
const hybridKey =
|
|
29
|
+
const hybridKey = typeof key === 'string'
|
|
30
30
|
? key
|
|
31
31
|
: key[0];
|
|
32
|
-
const hybridUrl =
|
|
33
|
-
? key
|
|
34
|
-
: key[1];
|
|
32
|
+
const hybridUrl = typeof key === 'string' ? key : key[1];
|
|
35
33
|
if (serverEndPoint[hybridKey]) {
|
|
36
34
|
continue;
|
|
37
35
|
}
|
|
38
36
|
serverEndPoint[hybridKey] = `${serverEndPoint.url}/${hybridUrl}`;
|
|
39
37
|
}
|
|
40
38
|
}
|
|
41
|
-
const mergedTheme = (theme)
|
|
42
|
-
? Object.assign(Object.assign({}, theme_1.default), theme) : theme_1.default;
|
|
39
|
+
const mergedTheme = theme ? Object.assign(Object.assign({}, theme_1.default), theme) : theme_1.default;
|
|
43
40
|
return (react_1.default.createElement(styles_1.ThemeProvider, { theme: mergedTheme },
|
|
44
41
|
react_1.default.createElement(CssBaseline_1.default, null),
|
|
45
42
|
react_1.default.createElement(DRFReactBySchemaContext_1.DRFReactBySchemaContext.Provider, { value: {
|
|
46
43
|
serverEndPoint,
|
|
47
|
-
theme,
|
|
44
|
+
theme: mergedTheme,
|
|
48
45
|
isInBatches,
|
|
49
|
-
firstBatchLength
|
|
46
|
+
firstBatchLength,
|
|
50
47
|
} },
|
|
51
48
|
react_1.default.createElement(Overlays_1.default, { children: children }))));
|
|
52
49
|
};
|
package/dist/context/Form.d.ts
CHANGED
|
@@ -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): JSX.Element;
|
|
21
21
|
export {};
|