drf-react-by-schema 0.28.25 → 0.28.27

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.
@@ -19,19 +19,42 @@ const Image_1 = __importDefault(require("../Image"));
19
19
  const FileTypeIcon_1 = __importDefault(require("../FileTypeIcon"));
20
20
  const HtmlContent_1 = __importDefault(require("../HtmlContent"));
21
21
  const GeoThumbCell_1 = __importDefault(require("../DataGridBySchemaEditable/GeoThumbCell"));
22
- function DetailFieldBySchema({ fieldKey, fieldSchema, value, sxField, sxLabel, sxValue, sxValueList, sxValueListItem, sxValueListItemText, }) {
22
+ const detailPaths_1 = require("./detailPaths");
23
+ function DetailFieldBySchema({ fieldKey, fieldSchema, value, item, valueFormatter, renderValue, emptyValue, hideIfEmpty, sxField, sxLabel, sxValue, sxValueList, sxValueListItem, sxValueListItemText, }) {
23
24
  const { serverEndPoint } = (0, DRFReactBySchemaContext_1.useDRFReactBySchema)();
24
25
  if (!fieldSchema) {
25
26
  console.error(`DetailFieldBySchema: could not find schema for field ${fieldKey}`);
26
27
  return null;
27
28
  }
28
29
  if (!value) {
29
- return react_1.default.createElement(Box_1.default, { sx: sxField }, "-");
30
+ return react_1.default.createElement(Box_1.default, { sx: sxField }, emptyValue === undefined ? '-' : emptyValue);
30
31
  }
32
+ const rawValue = value.value;
33
+ const isEmpty = (0, detailPaths_1.isEmptyDetailValue)(rawValue);
34
+ const resolvedItem = (item || {});
35
+ const label = value.title;
36
+ if (isEmpty && hideIfEmpty) {
37
+ return null;
38
+ }
39
+ if (isEmpty && emptyValue !== undefined) {
40
+ return (react_1.default.createElement(Box_1.default, { sx: sxField },
41
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
42
+ emptyValue));
43
+ }
44
+ if (renderValue) {
45
+ return (react_1.default.createElement(Box_1.default, { sx: sxField },
46
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
47
+ renderValue({ value: rawValue, item: resolvedItem, fieldSchema, label })));
48
+ }
49
+ const formatted = !isEmpty && valueFormatter
50
+ ? valueFormatter(rawValue, resolvedItem, fieldSchema)
51
+ : value.valueStr;
52
+ const valueStr = typeof formatted === 'string' ? formatted : (formatted !== null && formatted !== void 0 ? formatted : '');
53
+ const valueStrParts = String(valueStr).split(', ');
31
54
  if (fieldSchema.model_html) {
32
- const html = typeof value.value === 'string' ? value.value : value.valueStr;
55
+ const html = typeof rawValue === 'string' ? rawValue : valueStr;
33
56
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
34
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
57
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
35
58
  react_1.default.createElement(HtmlContent_1.default, { html: html, sx: sxValue })));
36
59
  }
37
60
  const fieldType = fieldSchema.type;
@@ -41,55 +64,55 @@ function DetailFieldBySchema({ fieldKey, fieldSchema, value, sxField, sxLabel, s
41
64
  const multiple = fieldSchema.many || false;
42
65
  if (multiple) {
43
66
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
44
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
45
- value.value.length > 0 ? (react_1.default.createElement(List_1.default, { sx: sxValueList }, value.valueStr.split(', ').map((singleValue, index) => (react_1.default.createElement(ListItem_1.default, { key: `${value.title}_${index}`, sx: sxValueListItem },
67
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
68
+ value.value && value.value.length > 0 ? (react_1.default.createElement(List_1.default, { sx: sxValueList }, valueStrParts.map((singleValue, index) => (react_1.default.createElement(ListItem_1.default, { key: `${label}_${index}`, sx: sxValueListItem },
46
69
  react_1.default.createElement(ListItemText_1.default, { sx: sxValueListItemText }, singleValue)))))) : (react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, "-"))));
47
70
  }
48
71
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
49
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
50
- react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, value.valueStr)));
72
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
73
+ react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, valueStr)));
51
74
  case 'choice':
52
75
  case 'list':
53
76
  const multipleChoice = fieldType === 'list' || fieldSchema.many ? true : false;
54
77
  if (multipleChoice) {
55
78
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
56
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
57
- value.value.length > 0 ? (react_1.default.createElement(List_1.default, { sx: sxValueList }, value.valueStr.split(', ').map((singleValue, index) => (react_1.default.createElement(ListItem_1.default, { key: `${value.title}_${index}`, sx: sxValueListItem },
79
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
80
+ value.value && value.value.length > 0 ? (react_1.default.createElement(List_1.default, { sx: sxValueList }, valueStrParts.map((singleValue, index) => (react_1.default.createElement(ListItem_1.default, { key: `${label}_${index}`, sx: sxValueListItem },
58
81
  react_1.default.createElement(ListItemText_1.default, { sx: sxValueListItemText }, singleValue)))))) : (react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, "-"))));
59
82
  }
60
83
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
61
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
62
- react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, value.valueStr)));
84
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
85
+ react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, valueStr)));
63
86
  case 'email':
64
87
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
65
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
88
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
66
89
  react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue },
67
- react_1.default.createElement("a", { href: `mailto: ${value.valueStr}` }, value.valueStr))));
90
+ react_1.default.createElement("a", { href: `mailto: ${valueStr}` }, valueStr))));
68
91
  case 'file upload':
69
92
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
70
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
71
- value.value ? (react_1.default.createElement(Stack_1.default, { direction: "row", spacing: 1, alignItems: "center" },
72
- react_1.default.createElement(FileTypeIcon_1.default, { name: value.value.name }),
93
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
94
+ rawValue ? (react_1.default.createElement(Stack_1.default, { direction: "row", spacing: 1, alignItems: "center" },
95
+ react_1.default.createElement(FileTypeIcon_1.default, { name: rawValue.name }),
73
96
  react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue },
74
- react_1.default.createElement(Button_1.default, { href: `${serverEndPoint === null || serverEndPoint === void 0 ? void 0 : serverEndPoint.url}${value.value.url}`, target: "_blank", variant: "outlined", startIcon: react_1.default.createElement(Download_1.default, null) }, value.valueStr)))) : (react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, "-"))));
97
+ react_1.default.createElement(Button_1.default, { href: `${serverEndPoint === null || serverEndPoint === void 0 ? void 0 : serverEndPoint.url}${rawValue.url}`, target: "_blank", variant: "outlined", startIcon: react_1.default.createElement(Download_1.default, null) }, valueStr)))) : (react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, "-"))));
75
98
  case 'image upload':
76
99
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
77
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
78
- value.value ? (react_1.default.createElement(react_1.default.Fragment, null,
79
- react_1.default.createElement(Image_1.default, { sx: styles_1.Layout.detailFieldImg, src: `${serverEndPoint === null || serverEndPoint === void 0 ? void 0 : serverEndPoint.url}${value.value.url}`, alt: value.valueStr }),
100
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
101
+ rawValue ? (react_1.default.createElement(react_1.default.Fragment, null,
102
+ react_1.default.createElement(Image_1.default, { sx: styles_1.Layout.detailFieldImg, src: `${serverEndPoint === null || serverEndPoint === void 0 ? void 0 : serverEndPoint.url}${rawValue.url}`, alt: valueStr }),
80
103
  react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue },
81
- react_1.default.createElement(Button_1.default, { href: `${serverEndPoint === null || serverEndPoint === void 0 ? void 0 : serverEndPoint.url}${value.value.url}`, target: "_blank", variant: "contained", startIcon: react_1.default.createElement(Download_1.default, null) }, value.valueStr)))) : (react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, "-"))));
104
+ react_1.default.createElement(Button_1.default, { href: `${serverEndPoint === null || serverEndPoint === void 0 ? void 0 : serverEndPoint.url}${rawValue.url}`, target: "_blank", variant: "contained", startIcon: react_1.default.createElement(Download_1.default, null) }, valueStr)))) : (react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, "-"))));
82
105
  case 'point':
83
106
  case 'polygon':
84
107
  case 'multipoint':
85
108
  case 'multipolygon':
86
109
  case 'geometrycollection':
87
110
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
88
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
89
- react_1.default.createElement(GeoThumbCell_1.default, { geometry: fieldType, value: value.value })));
111
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
112
+ react_1.default.createElement(GeoThumbCell_1.default, { geometry: fieldType, value: rawValue })));
90
113
  default:
91
114
  return (react_1.default.createElement(Box_1.default, { sx: sxField },
92
- react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, value.title),
93
- react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, value.valueStr)));
115
+ react_1.default.createElement(Typography_1.default, { variant: "h5", sx: sxLabel }, label),
116
+ react_1.default.createElement(Typography_1.default, { variant: "body2", sx: sxValue }, valueStr)));
94
117
  }
95
118
  }
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { DetailPageProps, TField } from '../../@types';
3
+ /**
4
+ * Schema-driven detail page: header (back/title/edit), optional hero, tabs
5
+ * rendered from `sections` and/or `render` escape hatches. No router import.
6
+ */
7
+ export default function DetailPage<T extends TField = void>({ model, objId, titleField, title: titleProp, backLink, backLabel, onBack, editLink, editLabel, hero, tabs, sections, fieldsLayout, hiddenFields, fieldsProps, elevation, renderHeader, renderShell, emptyLabel, errorLabel, retryLabel, sxSection, sxSectionTitle, sxRow, sxRowMultiple, sxField, sxLabel, sxValue, sxValueList, sxValueListItem, sxValueListItemText, }: DetailPageProps<T>): React.JSX.Element;
8
+ //# sourceMappingURL=DetailPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailPage.d.ts","sourceRoot":"","sources":["../../../src/components/details/DetailPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAU5D,OAAO,EAAE,eAAe,EAAmC,MAAM,EAAE,MAAM,cAAc,CAAC;AAYxF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,EAAE,EAC1D,KAAK,EACL,KAAK,EACL,UAAU,EACV,KAAK,EAAE,SAAS,EAChB,QAAQ,EACR,SAAkB,EAClB,MAAM,EACN,QAAQ,EACR,SAAkB,EAClB,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,SAAa,EACb,YAAY,EACZ,WAAW,EACX,UAA+B,EAC/B,UAAU,EACV,UAAoB,EACpB,SAAS,EACT,cAAc,EACd,KAAK,EACL,aAAa,EACb,OAAO,EACP,OAAO,EACP,OAAO,EACP,WAAW,EACX,eAAe,EACf,mBAAmB,GACpB,EAAE,eAAe,CAAC,CAAC,CAAC,qBAqKpB"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.default = DetailPage;
40
+ const react_1 = __importStar(require("react"));
41
+ const Alert_1 = __importDefault(require("@mui/material/Alert"));
42
+ const Box_1 = __importDefault(require("@mui/material/Box"));
43
+ const Button_1 = __importDefault(require("@mui/material/Button"));
44
+ const CircularProgress_1 = __importDefault(require("@mui/material/CircularProgress"));
45
+ const Stack_1 = __importDefault(require("@mui/material/Stack"));
46
+ const Tab_1 = __importDefault(require("@mui/material/Tab"));
47
+ const Tabs_1 = __importDefault(require("@mui/material/Tabs"));
48
+ const Typography_1 = __importDefault(require("@mui/material/Typography"));
49
+ const DetailBySchema_1 = __importDefault(require("./DetailBySchema"));
50
+ const useDetailData_1 = require("../../hooks/useDetailData");
51
+ function tabLabel(tab, values) {
52
+ const count = tab.count ? tab.count(values) : undefined;
53
+ return count === undefined ? tab.label : `${tab.label} (${count})`;
54
+ }
55
+ /**
56
+ * Schema-driven detail page: header (back/title/edit), optional hero, tabs
57
+ * rendered from `sections` and/or `render` escape hatches. No router import.
58
+ */
59
+ function DetailPage({ model, objId, titleField, title: titleProp, backLink, backLabel = 'Back', onBack, editLink, editLabel = 'Edit', hero, tabs, sections, fieldsLayout, hiddenFields, fieldsProps, elevation = 0, renderHeader, renderShell, emptyLabel = 'No record found.', errorLabel, retryLabel = 'Retry', sxSection, sxSectionTitle, sxRow, sxRowMultiple, sxField, sxLabel, sxValue, sxValueList, sxValueListItem, sxValueListItemText, }) {
60
+ const { values, schema, columns, loading, error, reload } = (0, useDetailData_1.useDetailData)({
61
+ model,
62
+ objId,
63
+ titleField,
64
+ });
65
+ const [tabIndex, setTabIndex] = (0, react_1.useState)(0);
66
+ (0, react_1.useEffect)(() => {
67
+ setTabIndex(0);
68
+ }, [model, objId]);
69
+ const title = (0, react_1.useMemo)(() => {
70
+ if (titleProp) {
71
+ return titleProp;
72
+ }
73
+ if (titleField && values && values[titleField] != null) {
74
+ return String(values[titleField]);
75
+ }
76
+ return model;
77
+ }, [titleProp, titleField, values, model]);
78
+ const renderProps = {
79
+ values,
80
+ schema,
81
+ columns,
82
+ id: objId,
83
+ title,
84
+ };
85
+ const visibleTabs = (0, react_1.useMemo)(() => (tabs || []).filter((tab) => !(values && tab.hidden && tab.hidden(values))), [tabs, values]);
86
+ const activeTabIndex = visibleTabs.length > 0 ? Math.min(tabIndex, visibleTabs.length - 1) : 0;
87
+ let body;
88
+ if (loading) {
89
+ body = (react_1.default.createElement(Box_1.default, { sx: { display: 'flex', alignItems: 'center', justifyContent: 'center', minHeight: 160 } },
90
+ react_1.default.createElement(CircularProgress_1.default, null)));
91
+ }
92
+ else if (error) {
93
+ body = (react_1.default.createElement(Alert_1.default, { severity: "error", action: react_1.default.createElement(Button_1.default, { color: "inherit", size: "small", onClick: reload }, retryLabel) }, errorLabel || error.message || 'Could not load the record.'));
94
+ }
95
+ else if (!values || !schema) {
96
+ body = react_1.default.createElement(Alert_1.default, { severity: "info" }, emptyLabel);
97
+ }
98
+ else if (visibleTabs.length === 0) {
99
+ body = (react_1.default.createElement(DetailBySchema_1.default, { values: values, schema: schema, columns: columns, fieldsLayout: sections || fieldsLayout, hiddenFields: hiddenFields, fieldsProps: fieldsProps, elevation: elevation, sxSection: sxSection, sxSectionTitle: sxSectionTitle, sxRow: sxRow, sxRowMultiple: sxRowMultiple, sxField: sxField, sxLabel: sxLabel, sxValue: sxValue, sxValueList: sxValueList, sxValueListItem: sxValueListItem, sxValueListItemText: sxValueListItemText }));
100
+ }
101
+ else {
102
+ const activeTab = visibleTabs[activeTabIndex];
103
+ body = (react_1.default.createElement(react_1.default.Fragment, null,
104
+ react_1.default.createElement(Tabs_1.default, { value: activeTabIndex, onChange: (_event, value) => setTabIndex(value), variant: "scrollable", allowScrollButtonsMobile: true }, visibleTabs.map((tab) => (react_1.default.createElement(Tab_1.default, { key: tab.key, label: tabLabel(tab, values), icon: tab.icon })))),
105
+ react_1.default.createElement(Box_1.default, { sx: { mt: 2 } }, activeTab.sections ? (react_1.default.createElement(DetailBySchema_1.default, { values: values, schema: schema, columns: columns, fieldsLayout: activeTab.sections, hiddenFields: hiddenFields, fieldsProps: fieldsProps, elevation: elevation, sxSection: sxSection, sxSectionTitle: sxSectionTitle, sxRow: sxRow, sxRowMultiple: sxRowMultiple, sxField: sxField, sxLabel: sxLabel, sxValue: sxValue, sxValueList: sxValueList, sxValueListItem: sxValueListItem, sxValueListItemText: sxValueListItemText })) : activeTab.render ? (activeTab.render({
106
+ values,
107
+ schema,
108
+ columns,
109
+ id: objId,
110
+ label: activeTab.label,
111
+ })) : null)));
112
+ }
113
+ const header = renderHeader ? (react_1.default.createElement(react_1.default.Fragment, null, renderHeader(renderProps))) : (react_1.default.createElement(Stack_1.default, { direction: "row", alignItems: "center", spacing: 2, justifyContent: "space-between", sx: { mb: 2 } },
114
+ react_1.default.createElement(Stack_1.default, { direction: "row", alignItems: "center", spacing: 2 },
115
+ (onBack || backLink) && (react_1.default.createElement(Button_1.default, { variant: "outlined", onClick: onBack, href: onBack ? undefined : backLink }, backLabel)),
116
+ react_1.default.createElement(Typography_1.default, { variant: "h4" }, title)),
117
+ editLink && (react_1.default.createElement(Button_1.default, { variant: "contained", href: editLink }, editLabel))));
118
+ const content = (react_1.default.createElement(react_1.default.Fragment, null,
119
+ header,
120
+ hero,
121
+ body));
122
+ return react_1.default.createElement(react_1.default.Fragment, null, renderShell ? renderShell(content, renderProps) : content);
123
+ }
@@ -0,0 +1,8 @@
1
+ import { Field, GenericValue, Item, SchemaType } from '../../@types';
2
+ /** Reads a possibly dotted path (`contratacao.valor`) from a detail item. */
3
+ export declare function getValueByPath(item: Item | null | undefined, path: string): GenericValue;
4
+ /** Resolves the field metadata for a possibly dotted path. */
5
+ export declare function getFieldSchemaByPath(schema: SchemaType | null | undefined, path: string): Field | undefined;
6
+ /** Empty means "nothing to render" (`0` and `false` are values). */
7
+ export declare function isEmptyDetailValue(value: GenericValue): boolean;
8
+ //# sourceMappingURL=detailPaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detailPaths.d.ts","sourceRoot":"","sources":["../../../src/components/details/detailPaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAErE,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAaxF;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACrC,IAAI,EAAE,MAAM,GACX,KAAK,GAAG,SAAS,CAcnB;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAO/D"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getValueByPath = getValueByPath;
4
+ exports.getFieldSchemaByPath = getFieldSchemaByPath;
5
+ exports.isEmptyDetailValue = isEmptyDetailValue;
6
+ /** Reads a possibly dotted path (`contratacao.valor`) from a detail item. */
7
+ function getValueByPath(item, path) {
8
+ if (!item) {
9
+ return undefined;
10
+ }
11
+ if (!path.includes('.')) {
12
+ return item[path];
13
+ }
14
+ return path
15
+ .split('.')
16
+ .reduce((acc, key) => (acc === null || acc === undefined ? undefined : acc[key]), item);
17
+ }
18
+ /** Resolves the field metadata for a possibly dotted path. */
19
+ function getFieldSchemaByPath(schema, path) {
20
+ var _a;
21
+ if (!schema) {
22
+ return undefined;
23
+ }
24
+ if (!path.includes('.')) {
25
+ return schema[path];
26
+ }
27
+ const segments = path.split('.');
28
+ let current = schema[segments[0]];
29
+ for (let index = 1; index < segments.length && current; index++) {
30
+ const children = current.children || ((_a = current.child) === null || _a === void 0 ? void 0 : _a.children);
31
+ current = children === null || children === void 0 ? void 0 : children[segments[index]];
32
+ }
33
+ return current;
34
+ }
35
+ /** Empty means "nothing to render" (`0` and `false` are values). */
36
+ function isEmptyDetailValue(value) {
37
+ return (value === null ||
38
+ value === undefined ||
39
+ value === '' ||
40
+ (Array.isArray(value) && value.length === 0));
41
+ }
@@ -52,7 +52,9 @@ interface FormProps<T extends TField = void> extends Omit<CommonFieldProps<T>, '
52
52
  elevation?: number;
53
53
  CustomFormActions?: (props: FormActionsProps) => React.JSX.Element;
54
54
  extraValidators?: ExtraValidators<T>;
55
+ /** Field names monitored on change; requires `onWatchChange`. */
55
56
  watchValues?: FieldList<T>;
57
+ /** Called with `{ [field]: value }` when a watched value changes. */
56
58
  onWatchChange?: (values: FormWatchObject<T>) => void;
57
59
  reloadStateStamp?: number | string;
58
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../../src/components/forms/Form.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../../src/components/forms/Form.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { TField, UseDetailDataProps, UseDetailDataResult } from '../@types';
2
+ /**
3
+ * Loads one detail record (schema + columns + values) in a single request.
4
+ * Independent from the router and from `pageForm`.
5
+ */
6
+ export declare function useDetailData<T extends TField = void>({ model, objId, }: UseDetailDataProps<T>): UseDetailDataResult<T>;
7
+ //# sourceMappingURL=useDetailData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDetailData.d.ts","sourceRoot":"","sources":["../../src/hooks/useDetailData.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,MAAM,EACN,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,WAAW,CAAC;AAInB;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,EAAE,EACrD,KAAK,EACL,KAAK,GACN,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAsDhD"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.useDetailData = useDetailData;
16
+ const react_1 = require("react");
17
+ const axios_1 = __importDefault(require("axios"));
18
+ const APIWrapperContext_1 = require("../context/APIWrapperContext");
19
+ const utils_1 = require("../utils/utils");
20
+ /**
21
+ * Loads one detail record (schema + columns + values) in a single request.
22
+ * Independent from the router and from `pageForm`.
23
+ */
24
+ function useDetailData({ model, objId, }) {
25
+ const { getGenericModel } = (0, APIWrapperContext_1.useAPIWrapper)();
26
+ const [values, setValues] = (0, react_1.useState)(null);
27
+ const [schema, setSchema] = (0, react_1.useState)(null);
28
+ const [columns, setColumns] = (0, react_1.useState)([]);
29
+ const [loading, setLoading] = (0, react_1.useState)(Boolean(objId));
30
+ const [error, setError] = (0, react_1.useState)(null);
31
+ const [reloadIndex, setReloadIndex] = (0, react_1.useState)(0);
32
+ const requestId = (0, react_1.useRef)(0);
33
+ const reload = (0, react_1.useCallback)(() => setReloadIndex((index) => index + 1), []);
34
+ (0, react_1.useEffect)(() => {
35
+ const currentRequest = ++requestId.current;
36
+ if (!objId) {
37
+ setValues(null);
38
+ setSchema(null);
39
+ setColumns([]);
40
+ setError(null);
41
+ setLoading(false);
42
+ return;
43
+ }
44
+ setLoading(true);
45
+ setError(null);
46
+ const load = () => __awaiter(this, void 0, void 0, function* () {
47
+ const response = yield getGenericModel({ model, id: objId });
48
+ if (currentRequest !== requestId.current) {
49
+ return;
50
+ }
51
+ if (axios_1.default.isAxiosError(response)) {
52
+ setError(response);
53
+ setValues(null);
54
+ setSchema(null);
55
+ setColumns([]);
56
+ }
57
+ else {
58
+ setValues((0, utils_1.populateValues)({
59
+ data: response.data,
60
+ schema: response.schema,
61
+ }));
62
+ setSchema(response.schema);
63
+ setColumns(response.columns || []);
64
+ }
65
+ setLoading(false);
66
+ });
67
+ load();
68
+ }, [model, objId, getGenericModel, reloadIndex]);
69
+ return { values, schema, columns, loading, error, reload };
70
+ }
package/dist/index.d.ts CHANGED
@@ -35,6 +35,8 @@ 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, getDataGridColumns, errorProps, getFieldErrorsFromResponse, getTmpId, isTmpId, isReadOnlyField, isRelationField, getPatternFormat, clearJWT, hasJWT, slugToCamelCase, AUTH_EXPIRED_EVENT, };
38
+ import DetailPage from './components/details/DetailPage';
39
+ import { useDetailData } from './hooks/useDetailData';
40
+ 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, DetailPage, useDetailData, setAuthToken, emptyByType, getChoiceByValue, populateValues, enrichChoices, buildGenericYupValidationSchema, getDataGridColumns, errorProps, getFieldErrorsFromResponse, getTmpId, isTmpId, isReadOnlyField, isRelationField, getPatternFormat, clearJWT, hasJWT, slugToCamelCase, AUTH_EXPIRED_EVENT, };
39
41
  export * from './@types/index';
40
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -17,8 +17,8 @@ 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.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;
20
+ 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.useDetailData = exports.DetailPage = 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 = exports.getPatternFormat = exports.isRelationField = 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; } });
@@ -117,4 +117,8 @@ const DetailBySchema_1 = __importDefault(require("./components/details/DetailByS
117
117
  exports.DetailBySchema = DetailBySchema_1.default;
118
118
  const DetailFieldBySchema_1 = __importDefault(require("./components/details/DetailFieldBySchema"));
119
119
  exports.DetailFieldBySchema = DetailFieldBySchema_1.default;
120
+ const DetailPage_1 = __importDefault(require("./components/details/DetailPage"));
121
+ exports.DetailPage = DetailPage_1.default;
122
+ const useDetailData_1 = require("./hooks/useDetailData");
123
+ Object.defineProperty(exports, "useDetailData", { enumerable: true, get: function () { return useDetailData_1.useDetailData; } });
120
124
  __exportStar(require("./@types/index"), exports);