drf-react-by-schema 0.28.24 → 0.28.25
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 +2 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +16 -8
- package/dist/components/DataGridBySchemaEditable/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/utils/columnFactory.js +1 -4
- package/dist/components/forms/FormBySchema.d.ts.map +1 -1
- package/dist/components/forms/FormBySchema.js +12 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/utils/utils.d.ts +11 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +19 -2
- package/package.json +8 -3
package/dist/api.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AxiosError } from 'axios';
|
|
2
2
|
import { ServerEndPoint } from './context/DRFReactBySchemaContext';
|
|
3
|
-
import { Item, SchemaType, DataSchemaColumnsType, ItemSchemaColumnsType, PaginatedResult, Id, TargetApiParams, TargetApiPostParams, GetGenericModelListProps, GetGenericModelProps, UpdateDataBySchema, AutocompleteItem, Field, TField, PaginationModel } from './@types';
|
|
3
|
+
import { Item, SchemaType, DataSchemaColumnsType, ItemSchemaColumnsType, PaginatedResult, Id, GridEnrichedBySchemaColDef, TargetApiParams, TargetApiPostParams, GetGenericModelListProps, GetGenericModelProps, UpdateDataBySchema, AutocompleteItem, Field, FieldList, TField, PaginationModel } from './@types';
|
|
4
4
|
/**
|
|
5
5
|
* Global event dispatched whenever the session is definitively expired (i.e. a
|
|
6
6
|
* 401 happened AND refreshing the token failed). Host apps can listen to this
|
|
@@ -50,6 +50,7 @@ export declare function addExistingRelatedModel({ model, serverEndPoint, id, dat
|
|
|
50
50
|
id: Id;
|
|
51
51
|
data: Item;
|
|
52
52
|
}): Promise<Record<string, any> | AxiosError<unknown, any, any>>;
|
|
53
|
+
export declare function getDataGridColumns<T extends TField = void>(schema: SchemaType<T>, columnFields?: FieldList<T>, creatableFields?: FieldList<T>, disabledFields?: FieldList<T>): false | GridEnrichedBySchemaColDef[];
|
|
53
54
|
export declare function getAutoComplete({ model, queryParams, serverEndPoint, }: {
|
|
54
55
|
model: string;
|
|
55
56
|
queryParams?: string[];
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EACL,IAAI,EACJ,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,EAAE,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
CHANGED
|
@@ -23,6 +23,7 @@ exports.createOrUpdateData = createOrUpdateData;
|
|
|
23
23
|
exports.prepareDataBySchema = prepareDataBySchema;
|
|
24
24
|
exports.updateDataBySchema = updateDataBySchema;
|
|
25
25
|
exports.addExistingRelatedModel = addExistingRelatedModel;
|
|
26
|
+
exports.getDataGridColumns = getDataGridColumns;
|
|
26
27
|
exports.getAutoComplete = getAutoComplete;
|
|
27
28
|
exports.getGenericModelList = getGenericModelList;
|
|
28
29
|
exports.getGenericModel = getGenericModel;
|
|
@@ -480,14 +481,16 @@ function createOrUpdateData(_a) {
|
|
|
480
481
|
return responseUpdate;
|
|
481
482
|
});
|
|
482
483
|
}
|
|
483
|
-
function prepareDataBySchemaRecursive({ data: typedData, schema, }) {
|
|
484
|
+
function prepareDataBySchemaRecursive({ data: typedData, schema, skipReadOnly = true, }) {
|
|
484
485
|
const data = typedData;
|
|
485
486
|
let requiresMultipart = false;
|
|
486
487
|
const dbData = {};
|
|
487
488
|
const conditionalVisible = (0, utils_1.buildConditionalVisibleBySchema)(schema);
|
|
488
489
|
for (const [key, field] of Object.entries(schema)) {
|
|
489
490
|
const value = data[key];
|
|
490
|
-
if (!(key in data) ||
|
|
491
|
+
if (!(key in data) ||
|
|
492
|
+
(key === 'id' && (0, utils_1.isTmpId)(value)) ||
|
|
493
|
+
(skipReadOnly && (0, utils_1.isReadOnlyField)(field))) {
|
|
491
494
|
continue;
|
|
492
495
|
}
|
|
493
496
|
// Clear hidden conditional_visible fields so their stale value isn't saved.
|
|
@@ -516,6 +519,7 @@ function prepareDataBySchemaRecursive({ data: typedData, schema, }) {
|
|
|
516
519
|
? prepareDataBySchemaRecursive({
|
|
517
520
|
data: row,
|
|
518
521
|
schema: field.child.children,
|
|
522
|
+
skipReadOnly: false,
|
|
519
523
|
}).data
|
|
520
524
|
: row;
|
|
521
525
|
});
|
|
@@ -527,6 +531,7 @@ function prepareDataBySchemaRecursive({ data: typedData, schema, }) {
|
|
|
527
531
|
? prepareDataBySchemaRecursive({
|
|
528
532
|
data: value,
|
|
529
533
|
schema: field.children,
|
|
534
|
+
skipReadOnly: false,
|
|
530
535
|
}).data
|
|
531
536
|
: value.id;
|
|
532
537
|
continue;
|
|
@@ -607,15 +612,18 @@ function getDataGridColumns(schema, columnFields, creatableFields, disabledField
|
|
|
607
612
|
});
|
|
608
613
|
return finalColumnFields.map((field) => {
|
|
609
614
|
const fieldSchema = schema[field];
|
|
615
|
+
const readOnly = (0, utils_1.isReadOnlyField)(fieldSchema);
|
|
610
616
|
const column = {
|
|
611
617
|
field,
|
|
612
618
|
headerName: fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.label,
|
|
613
|
-
creatable:
|
|
614
|
-
?
|
|
615
|
-
:
|
|
616
|
-
?
|
|
617
|
-
:
|
|
618
|
-
|
|
619
|
+
creatable: readOnly
|
|
620
|
+
? false
|
|
621
|
+
: creatableFields && creatableFields.includes(field)
|
|
622
|
+
? true
|
|
623
|
+
: fieldSchema && 'related_editable' in fieldSchema
|
|
624
|
+
? fieldSchema.related_editable
|
|
625
|
+
: false,
|
|
626
|
+
disabled: readOnly || (!!disabledFields && disabledFields.includes(field)),
|
|
619
627
|
uiRequired: (fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.ui_required) || false,
|
|
620
628
|
width: 100,
|
|
621
629
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnFactory.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGridBySchemaEditable/utils/columnFactory.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKzC,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAA4B,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EACL,UAAU,EACV,0BAA0B,EAC1B,SAAS,EACT,eAAe,EAEf,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,QAAQ,EACR,sBAAsB,EACtB,SAAS,EACT,MAAM,EACN,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAmB1E,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI;IAChE,MAAM,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACpC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9C,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACnD,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACnD,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,MAAM,CAAC;IAC5D,cAAc,EAAE,cAAc,CAAC;CAChC;AA4BD,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,EAAE,EAClE,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,OAAO,EACP,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACf,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"columnFactory.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGridBySchemaEditable/utils/columnFactory.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKzC,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAA4B,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EACL,UAAU,EACV,0BAA0B,EAC1B,SAAS,EACT,eAAe,EAEf,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,QAAQ,EACR,sBAAsB,EACtB,SAAS,EACT,MAAM,EACN,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAmB1E,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI;IAChE,MAAM,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACpC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9C,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACnD,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACnD,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,MAAM,CAAC;IAC5D,cAAc,EAAE,cAAc,CAAC;CAChC;AA4BD,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,EAAE,EAClE,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,OAAO,EACP,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACf,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,CAwWzE"}
|
|
@@ -60,10 +60,7 @@ function buildPreparedColumns(_a) {
|
|
|
60
60
|
const fieldType = fieldSchema.type;
|
|
61
61
|
const isIndexField = indexField !== '' && col.field === indexField;
|
|
62
62
|
let column = Object.assign({}, col);
|
|
63
|
-
column.editable =
|
|
64
|
-
isEditable &&
|
|
65
|
-
!col.disabled &&
|
|
66
|
-
(!fieldSchema.read_only || ['field', 'nested object'].includes(fieldType));
|
|
63
|
+
column.editable = isEditable && !col.disabled && !(0, utils_1.isReadOnlyField)(fieldSchema);
|
|
67
64
|
switch (fieldType) {
|
|
68
65
|
case 'date':
|
|
69
66
|
column.type = 'date';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormBySchema.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormBySchema.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAiB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAWjE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,QAAQ,EAER,SAAS,EACT,MAAM,EACP,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"FormBySchema.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormBySchema.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAiB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAWjE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,QAAQ,EAER,SAAS,EACT,MAAM,EACP,MAAM,cAAc,CAAC;AAatB,KAAK,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAEtF,YAAY,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzC,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,EAAE,GAAG,UAAU,CAAC,CAAC;IACtF,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC1C,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,EAAE,EAC5D,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAgC,EAChC,KAAK,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EACP,YAAY,EACZ,KAAK,EACL,YAAgB,EAEhB,YAAY,EAAE,mBAAmB,EACjC,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EAEb,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,SAAS,EAKT,KAAK,EACL,aAAa,EACb,SAAS,EACT,cAAc,GAKf,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACrB,IAAI,CACF,uBAAuB,EACrB,IAAI,GACJ,SAAS,GACT,SAAS,GACT,SAAS,GACT,aAAa,GACb,iBAAiB,GACjB,qBAAqB,CACxB,qBAscF"}
|
|
@@ -114,6 +114,9 @@ sxRow, sxRowMultiple, sxSection, sxSectionTitle,
|
|
|
114
114
|
console.log(`there is no schema for field ${field}!`);
|
|
115
115
|
continue;
|
|
116
116
|
}
|
|
117
|
+
if (typeof field === 'string' && (0, utils_1.isReadOnlyField)(schema[field])) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
117
120
|
if (typeof field === 'string' &&
|
|
118
121
|
['field', 'nested object'].includes(schema[field].type) &&
|
|
119
122
|
!newOptionsACModels.includes(field)) {
|
|
@@ -150,7 +153,7 @@ sxRow, sxRowMultiple, sxSection, sxSectionTitle,
|
|
|
150
153
|
}
|
|
151
154
|
continue;
|
|
152
155
|
}
|
|
153
|
-
if (!(
|
|
156
|
+
if (!(0, utils_1.isReadOnlyField)(field)) {
|
|
154
157
|
rows.push(key);
|
|
155
158
|
}
|
|
156
159
|
}
|
|
@@ -249,6 +252,10 @@ sxRow, sxRowMultiple, sxSection, sxSectionTitle,
|
|
|
249
252
|
return null;
|
|
250
253
|
}
|
|
251
254
|
const field = row;
|
|
255
|
+
// Read-only fields may still be listed by an older layout.
|
|
256
|
+
if ((0, utils_1.isReadOnlyField)(schema[field])) {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
252
259
|
const fieldProps = fieldsProps && field in fieldsProps
|
|
253
260
|
? fieldsProps[field]
|
|
254
261
|
: {};
|
|
@@ -283,6 +290,10 @@ sxRow, sxRowMultiple, sxSection, sxSectionTitle,
|
|
|
283
290
|
if (typeof field === 'string' && (hiddenFields === null || hiddenFields === void 0 ? void 0 : hiddenFields.includes(field))) {
|
|
284
291
|
return null;
|
|
285
292
|
}
|
|
293
|
+
if (typeof field === 'string' &&
|
|
294
|
+
(0, utils_1.isReadOnlyField)(schema[field])) {
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
286
297
|
const mr = i + 1 === j.length ? 0 : 2;
|
|
287
298
|
const key = typeof field === 'string' ? field : field.key;
|
|
288
299
|
const fieldProps = fieldsProps && key in fieldsProps
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { setAuthToken, hasJWT, clearJWT, AUTH_EXPIRED_EVENT } from './api';
|
|
2
|
-
import { emptyByType, getChoiceByValue, populateValues, enrichChoices, buildGenericYupValidationSchema, errorProps, getFieldErrorsFromResponse, getTmpId, isTmpId, getPatternFormat, slugToCamelCase } from './utils';
|
|
1
|
+
import { setAuthToken, hasJWT, clearJWT, AUTH_EXPIRED_EVENT, getDataGridColumns } from './api';
|
|
2
|
+
import { emptyByType, getChoiceByValue, populateValues, enrichChoices, buildGenericYupValidationSchema, errorProps, getFieldErrorsFromResponse, getTmpId, isTmpId, getPatternFormat, slugToCamelCase, isReadOnlyField, isRelationField } from './utils';
|
|
3
3
|
import DRFReactBySchemaProvider from './context/DRFReactBySchemaProvider';
|
|
4
4
|
import { useAPIWrapper } from './context/APIWrapperContext';
|
|
5
5
|
import Form from './components/forms/Form';
|
|
@@ -35,6 +35,6 @@ export { getThemeTexts } from './styles/texts';
|
|
|
35
35
|
export type { DRFReactBySchemaTexts, GeometryTexts, FormTexts, AuthTexts, RichTextTexts, } from './styles/texts';
|
|
36
36
|
import DetailBySchema from './components/details/DetailBySchema';
|
|
37
37
|
import DetailFieldBySchema from './components/details/DetailFieldBySchema';
|
|
38
|
-
export { DRFReactBySchemaProvider, useAPIWrapper, Form, DialogFormBySchema, ChangePasswordForm, ForgotPasswordForm, DataGridBySchemaEditable, GenericModelList, GenericRelatedModelList, DataTotals, DialogActions, FileTypeIcon, HtmlContent, SelectEditInputCell, GridDateInput, GridDecimalInput, GridPatternInput, BooleanInputCell, FormWatcher, FormBySchema, FieldBySchema, TextFieldBySchema, HtmlFieldBySchema, BooleanFieldBySchema, DesktopDatePickerBySchema, DesktopDateTimePickerBySchema, EditableAutocompleteFieldBySchema, AutocompleteFieldBySchema, FloatFieldBySchema, DetailBySchema, DetailFieldBySchema, setAuthToken, emptyByType, getChoiceByValue, populateValues, enrichChoices, buildGenericYupValidationSchema, errorProps, getFieldErrorsFromResponse, getTmpId, isTmpId, getPatternFormat, clearJWT, hasJWT, slugToCamelCase, AUTH_EXPIRED_EVENT, };
|
|
38
|
+
export { DRFReactBySchemaProvider, useAPIWrapper, Form, DialogFormBySchema, ChangePasswordForm, ForgotPasswordForm, DataGridBySchemaEditable, GenericModelList, GenericRelatedModelList, DataTotals, DialogActions, FileTypeIcon, HtmlContent, SelectEditInputCell, GridDateInput, GridDecimalInput, GridPatternInput, BooleanInputCell, FormWatcher, FormBySchema, FieldBySchema, TextFieldBySchema, HtmlFieldBySchema, BooleanFieldBySchema, DesktopDatePickerBySchema, DesktopDateTimePickerBySchema, EditableAutocompleteFieldBySchema, AutocompleteFieldBySchema, FloatFieldBySchema, DetailBySchema, DetailFieldBySchema, setAuthToken, emptyByType, getChoiceByValue, populateValues, enrichChoices, buildGenericYupValidationSchema, getDataGridColumns, errorProps, getFieldErrorsFromResponse, getTmpId, isTmpId, isReadOnlyField, isRelationField, getPatternFormat, clearJWT, hasJWT, slugToCamelCase, AUTH_EXPIRED_EVENT, };
|
|
39
39
|
export * from './@types/index';
|
|
40
40
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,14 +17,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.
|
|
21
|
-
exports.AUTH_EXPIRED_EVENT = void 0;
|
|
20
|
+
exports.getPatternFormat = exports.isRelationField = exports.isReadOnlyField = exports.isTmpId = exports.getTmpId = exports.getFieldErrorsFromResponse = exports.errorProps = exports.getDataGridColumns = exports.buildGenericYupValidationSchema = exports.enrichChoices = exports.populateValues = exports.getChoiceByValue = exports.emptyByType = exports.setAuthToken = exports.DetailFieldBySchema = exports.DetailBySchema = exports.FloatFieldBySchema = exports.AutocompleteFieldBySchema = exports.EditableAutocompleteFieldBySchema = exports.DesktopDateTimePickerBySchema = exports.DesktopDatePickerBySchema = exports.BooleanFieldBySchema = exports.HtmlFieldBySchema = exports.TextFieldBySchema = exports.FieldBySchema = exports.FormBySchema = exports.FormWatcher = exports.BooleanInputCell = exports.GridPatternInput = exports.GridDecimalInput = exports.GridDateInput = exports.SelectEditInputCell = exports.HtmlContent = exports.FileTypeIcon = exports.DialogActions = exports.DataTotals = exports.GenericRelatedModelList = exports.GenericModelList = exports.DataGridBySchemaEditable = exports.ForgotPasswordForm = exports.ChangePasswordForm = exports.DialogFormBySchema = exports.Form = exports.useAPIWrapper = exports.DRFReactBySchemaProvider = exports.getThemeTexts = exports.DEFAULT_LAYERS = exports.DRF_REACT_BY_SCHEMA_MARKER_ICON = exports.applyThemeMarkerIcon = exports.applyDefaultLeafletIcon = void 0;
|
|
21
|
+
exports.AUTH_EXPIRED_EVENT = exports.slugToCamelCase = exports.hasJWT = exports.clearJWT = void 0;
|
|
22
22
|
// Methods:
|
|
23
23
|
const api_1 = require("./api");
|
|
24
24
|
Object.defineProperty(exports, "setAuthToken", { enumerable: true, get: function () { return api_1.setAuthToken; } });
|
|
25
25
|
Object.defineProperty(exports, "hasJWT", { enumerable: true, get: function () { return api_1.hasJWT; } });
|
|
26
26
|
Object.defineProperty(exports, "clearJWT", { enumerable: true, get: function () { return api_1.clearJWT; } });
|
|
27
27
|
Object.defineProperty(exports, "AUTH_EXPIRED_EVENT", { enumerable: true, get: function () { return api_1.AUTH_EXPIRED_EVENT; } });
|
|
28
|
+
Object.defineProperty(exports, "getDataGridColumns", { enumerable: true, get: function () { return api_1.getDataGridColumns; } });
|
|
28
29
|
const utils_1 = require("./utils");
|
|
29
30
|
Object.defineProperty(exports, "emptyByType", { enumerable: true, get: function () { return utils_1.emptyByType; } });
|
|
30
31
|
Object.defineProperty(exports, "getChoiceByValue", { enumerable: true, get: function () { return utils_1.getChoiceByValue; } });
|
|
@@ -37,6 +38,8 @@ Object.defineProperty(exports, "getTmpId", { enumerable: true, get: function ()
|
|
|
37
38
|
Object.defineProperty(exports, "isTmpId", { enumerable: true, get: function () { return utils_1.isTmpId; } });
|
|
38
39
|
Object.defineProperty(exports, "getPatternFormat", { enumerable: true, get: function () { return utils_1.getPatternFormat; } });
|
|
39
40
|
Object.defineProperty(exports, "slugToCamelCase", { enumerable: true, get: function () { return utils_1.slugToCamelCase; } });
|
|
41
|
+
Object.defineProperty(exports, "isReadOnlyField", { enumerable: true, get: function () { return utils_1.isReadOnlyField; } });
|
|
42
|
+
Object.defineProperty(exports, "isRelationField", { enumerable: true, get: function () { return utils_1.isRelationField; } });
|
|
40
43
|
// Overall Provider:
|
|
41
44
|
const DRFReactBySchemaProvider_1 = __importDefault(require("./context/DRFReactBySchemaProvider"));
|
|
42
45
|
exports.DRFReactBySchemaProvider = DRFReactBySchemaProvider_1.default;
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -10,6 +10,17 @@ export declare function populateValues({ data, schema }: {
|
|
|
10
10
|
data: Item;
|
|
11
11
|
schema: SchemaType;
|
|
12
12
|
}): Record<string, any>;
|
|
13
|
+
/**
|
|
14
|
+
* Relation fields (FK/M2M) are serialized with `read_only: true` by DRF, but the
|
|
15
|
+
* backend still writes them from the raw request body (`update_related`).
|
|
16
|
+
* They must stay editable and be sent, unlike derived (method) fields.
|
|
17
|
+
*/
|
|
18
|
+
export declare const isRelationField: (field?: Field | null) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Whether a field is read-only for the client: derived values (SerializerMethod
|
|
21
|
+
* fields, ids, timestamps) must not be validated, sent or edited inline.
|
|
22
|
+
*/
|
|
23
|
+
export declare const isReadOnlyField: (field?: Field | null) => boolean;
|
|
13
24
|
export declare function buildGenericYupValidationSchema({ data, schema, many, skipFields, extraValidators, uiFields, }: {
|
|
14
25
|
data: Item;
|
|
15
26
|
schema: SchemaType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,2BAA2B,EAE3B,eAAe,EACf,eAAe,EACf,KAAK,EAEL,eAAe,EACf,YAAY,EAEZ,iBAAiB,EACjB,0BAA0B,EAC1B,IAAI,EACJ,UAAU,EACV,MAAM,EACP,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,WAAW,EAAE,YA4BzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,WAAW,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,8BASrF,CAAC;AAIF,eAAO,MAAM,YAAY,GAAI,UAAU,YAAY,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,QAM/E,CAAC;AAMR,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,EACnD,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GACpB,IAAI,CAAC,CAAC,CAAC,CAiBT;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,uBAgDlF;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/utils.js
CHANGED
|
@@ -45,7 +45,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
45
45
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
46
|
};
|
|
47
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
-
exports.convertToFormData = exports.slugify = exports.slugToCamelCase = exports.getPatternFormat = exports.isTmpId = exports.getTmpId = exports.errorProps = exports.toChoiceItem = exports.getChoiceByValue = exports.emptyByType = void 0;
|
|
48
|
+
exports.convertToFormData = exports.slugify = exports.slugToCamelCase = exports.getPatternFormat = exports.isTmpId = exports.getTmpId = exports.errorProps = exports.isReadOnlyField = exports.isRelationField = exports.toChoiceItem = exports.getChoiceByValue = exports.emptyByType = void 0;
|
|
49
49
|
exports.enrichChoices = enrichChoices;
|
|
50
50
|
exports.populateValues = populateValues;
|
|
51
51
|
exports.buildGenericYupValidationSchema = buildGenericYupValidationSchema;
|
|
@@ -273,6 +273,19 @@ const getYupValidator = (type) => {
|
|
|
273
273
|
}
|
|
274
274
|
return yupFunc.transform((v) => (v === '' ? null : v)).nullable();
|
|
275
275
|
};
|
|
276
|
+
/**
|
|
277
|
+
* Relation fields (FK/M2M) are serialized with `read_only: true` by DRF, but the
|
|
278
|
+
* backend still writes them from the raw request body (`update_related`).
|
|
279
|
+
* They must stay editable and be sent, unlike derived (method) fields.
|
|
280
|
+
*/
|
|
281
|
+
const isRelationField = (field) => !!field && ['field', 'nested object'].includes(field.type);
|
|
282
|
+
exports.isRelationField = isRelationField;
|
|
283
|
+
/**
|
|
284
|
+
* Whether a field is read-only for the client: derived values (SerializerMethod
|
|
285
|
+
* fields, ids, timestamps) must not be validated, sent or edited inline.
|
|
286
|
+
*/
|
|
287
|
+
const isReadOnlyField = (field) => !!(field === null || field === void 0 ? void 0 : field.read_only) && !(0, exports.isRelationField)(field);
|
|
288
|
+
exports.isReadOnlyField = isReadOnlyField;
|
|
276
289
|
// Applies the "required" rules (including the at-least-one rule for many-fields)
|
|
277
290
|
// to an already built schema, used both statically and inside `when` conditions.
|
|
278
291
|
const buildRequiredSchema = (fieldSchema, schema) => {
|
|
@@ -292,7 +305,11 @@ function buildGenericYupValidationSchema({ data, schema, many = false, skipField
|
|
|
292
305
|
const conditionalVisible = buildConditionalVisibleBySchema(schema);
|
|
293
306
|
for (const entry of Object.entries(schema)) {
|
|
294
307
|
const [field, fieldSchema] = entry;
|
|
295
|
-
if (!data ||
|
|
308
|
+
if (!data ||
|
|
309
|
+
!(field in data) ||
|
|
310
|
+
field === 'id' ||
|
|
311
|
+
skipFields.includes(field) ||
|
|
312
|
+
(0, exports.isReadOnlyField)(fieldSchema)) {
|
|
296
313
|
continue;
|
|
297
314
|
}
|
|
298
315
|
// OneToMany or ManyToMany (built as an array-of-object schema):
|
package/package.json
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drf-react-by-schema",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.25",
|
|
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",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"test": "
|
|
8
|
+
"test": "vitest run",
|
|
9
9
|
"build": "tsc --build",
|
|
10
10
|
"release:prepare": "npm run build",
|
|
11
11
|
"release:major": "npm run release:prepare && npm version major && git push origin master --tags && git push origin master:published",
|
|
12
12
|
"release:minor": "npm run release:prepare && npm version minor && git push origin master --tags && git push origin master:published",
|
|
13
|
-
"release:patch": "npm run release:prepare && npm version patch && git push origin master --tags && git push origin master:published"
|
|
13
|
+
"release:patch": "npm run release:prepare && npm version patch && git push origin master --tags && git push origin master:published",
|
|
14
|
+
"test:watch": "vitest"
|
|
14
15
|
},
|
|
15
16
|
"repository": {
|
|
16
17
|
"type": "git",
|
|
@@ -47,6 +48,8 @@
|
|
|
47
48
|
"@mui/material": "^6",
|
|
48
49
|
"@mui/x-data-grid": "^7",
|
|
49
50
|
"@mui/x-date-pickers": "^7",
|
|
51
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
52
|
+
"@testing-library/react": "^16.3.3",
|
|
50
53
|
"@types/leaflet": "^1.9.22",
|
|
51
54
|
"@types/leaflet-draw": "^1.0.13",
|
|
52
55
|
"@types/node": "^18.11.15",
|
|
@@ -61,6 +64,7 @@
|
|
|
61
64
|
"eslint-plugin-prettier": "^5.0.0",
|
|
62
65
|
"eslint-plugin-react": "^7.37.5",
|
|
63
66
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
67
|
+
"jsdom": "^26.1.0",
|
|
64
68
|
"leaflet": "^1.9.4",
|
|
65
69
|
"leaflet-draw": "^1.0.4",
|
|
66
70
|
"prettier": "^3.0.0",
|
|
@@ -74,6 +78,7 @@
|
|
|
74
78
|
"string-mask": "^0.3.0",
|
|
75
79
|
"ts-loader": "^9.4.2",
|
|
76
80
|
"typescript": "^5.7.3",
|
|
81
|
+
"vitest": "^3.2.7",
|
|
77
82
|
"webpack": "^5.75.0",
|
|
78
83
|
"yup": "^1"
|
|
79
84
|
},
|