@dashadmin/dash-auto-admin 1.3.25 → 1.3.28
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/README.md +32 -6
- package/dist/DashAutoAdminComponentRegistry.js +64 -1
- package/dist/DashAutoAdminForm.js +137 -1
- package/dist/DashAutoAdminResizableDrawer.js +63 -1
- package/dist/DashAutoAdminSaveButton.js +57 -1
- package/dist/DashAutoCreate.js +102 -1
- package/dist/DashAutoDrawer.js +256 -1
- package/dist/DashAutoEdit.js +99 -1
- package/dist/DashAutoFiltersGenerator.js +193 -1
- package/dist/DashAutoFormGroups.js +118 -1
- package/dist/DashAutoFormLayout.js +68 -1
- package/dist/DashAutoFormMuiTabs.js +291 -1
- package/dist/DashAutoFormTabs.js +132 -1
- package/dist/DashAutoGroup.js +27 -1
- package/dist/DashAutoLayout.js +31 -1
- package/dist/DashAutoList.js +218 -1
- package/dist/DashAutoPostFilterForm.js +47 -1
- package/dist/DashAutoReferenceTab.js +10 -1
- package/dist/DashAutoResource.js +77 -1
- package/dist/DashAutoResourceLayout.js +16 -1
- package/dist/DashAutoShow.js +195 -1
- package/dist/DashAutoTabbedForm.js +244 -1
- package/dist/DashAutoTabbedForm.review.js +221 -1
- package/dist/DashAutoTabs.js +11 -1
- package/dist/DashFilterWrapper.js +62 -1
- package/dist/DashRedirect.js +56 -1
- package/dist/TabbedLayout.js +38 -1
- package/dist/common/DashAutoTitle.js +33 -1
- package/dist/common/components/FabButton.js +59 -1
- package/dist/common/components/TranslatedLabel.js +60 -1
- package/dist/common/settings/Settings.js +196 -1
- package/dist/common/settings/SettingsBarIcons.js +61 -1
- package/dist/context/DashAutoAdminFormContext.js +15 -1
- package/dist/hooks/useAutoAdminLoadingStateMediator.js +36 -1
- package/dist/hooks/useAutoAdminTranslate.js +61 -1
- package/dist/hooks/useHash.js +24 -1
- package/dist/hooks/useLogger.js +20 -1
- package/dist/hooks/useRoutePathPattern.js +20 -1
- package/dist/hooks/useVirtualHash.js +28 -1
- package/dist/index.js +77 -3406
- package/dist/list/DashAutoListActions.js +57 -1
- package/dist/list/DashAutoListDatagridWrapper.js +68 -1
- package/dist/list/DashAutoListDefaultActionsWrapper.js +14 -1
- package/dist/list/DashAutoListFilterFormWithButton.js +80 -1
- package/dist/list/DashAutoListTopToolbar.js +180 -1
- package/dist/mui/AttributeToField.js +576 -1
- package/dist/mui/AttributeToInput.js +630 -1
- package/dist/mui/AutoAdminResizableDrawer.js +63 -1
- package/dist/mui/AutoDataGrid.js +120 -1
- package/dist/mui/AutoReferenceFormTab.js +53 -1
- package/dist/mui/AutoReferenceTab.js +46 -1
- package/dist/mui/AutoTabs.js +19 -1
- package/dist/mui/components/ExtendedPagination.js +34 -1
- package/dist/mui/components/ListStringField.js +25 -1
- package/dist/providers/DashAuthProvider.js +215 -1
- package/dist/providers/DashDataProvider.js +310 -1
- package/dist/providers/index.js +10 -1
- package/dist/react-admin.d.js +0 -0
- package/dist/toolbar/buttons/BottomToolbarButtons.js +65 -1
- package/dist/toolbar/buttons/DashResourceButton.js +181 -1
- package/dist/toolbar/buttons/ListButtons.js +80 -1
- package/dist/toolbar/buttons/ToolbarButtons.js +135 -1
- package/dist/types/ActionCallback.d.js +0 -0
- package/dist/utils/SimpleLogger.js +52 -1
- package/dist/utils/enumToChoices.js +5 -1
- package/dist/utils/evalActionPermission.js +11 -1
- package/dist/utils/groupByTabs.js +21 -1
- package/dist/utils/hashedGroupByTabs.js +12 -1
- package/dist/utils/invertMap.js +12 -1
- package/dist/utils/isClassComponent.js +7 -1
- package/dist/utils/isComponent.js +29 -1
- package/dist/utils/isEnum.js +5 -1
- package/dist/utils/isFC.js +8 -1
- package/dist/utils/replaceParams.js +9 -1
- package/dist/utils/validate.js +19 -1
- package/dist/wrappers/UserAction.js +60 -1
- package/dist/wrappers/index.js +4 -1
- package/package.json +134 -120
- package/src/DashAutoAdminComponentRegistry.tsx +75 -0
- package/src/DashAutoAdminForm.tsx +155 -0
- package/src/DashAutoAdminResizableDrawer.tsx +69 -0
- package/src/DashAutoAdminSaveButton.tsx +116 -0
- package/src/DashAutoCreate.tsx +118 -0
- package/src/DashAutoDrawer.tsx +288 -0
- package/src/DashAutoEdit.tsx +109 -0
- package/src/DashAutoFiltersGenerator.tsx +208 -0
- package/src/DashAutoFormGroups.tsx +146 -0
- package/src/DashAutoFormLayout.tsx.review +113 -0
- package/src/DashAutoFormMuiTabs.tsx +368 -0
- package/src/DashAutoFormTabs.tsx +177 -0
- package/src/DashAutoGroup.tsx +42 -0
- package/src/DashAutoLayout.tsx +57 -0
- package/src/DashAutoList.tsx +237 -0
- package/src/DashAutoPostFilterForm.tsx +35 -0
- package/src/DashAutoReferenceTab.tsx +9 -0
- package/src/DashAutoResource.tsx +85 -0
- package/src/DashAutoResourceLayout.tsx +50 -0
- package/src/DashAutoShow.tsx +200 -0
- package/src/DashAutoTabbedForm.review.tsx +262 -0
- package/src/DashAutoTabbedForm.tsx +324 -0
- package/src/DashAutoTabs.tsx +19 -0
- package/src/DashFilterWrapper.tsx +43 -0
- package/src/DashRedirect.tsx +46 -0
- package/src/TabbedLayout.tsx +29 -0
- package/src/common/DashAutoTitle.tsx +24 -0
- package/src/common/components/FabButton.tsx +40 -0
- package/src/common/components/TranslatedLabel.tsx +81 -0
- package/src/common/settings/Settings.tsx +236 -0
- package/src/common/settings/SettingsBarIcons.tsx +72 -0
- package/src/context/DashAutoAdminFormContext.tsx +31 -0
- package/src/hooks/useAutoAdminLoadingStateMediator.tsx +42 -0
- package/src/hooks/useAutoAdminTranslate.tsx +106 -0
- package/src/hooks/useHash.tsx +27 -0
- package/src/hooks/useLogger.tsx +23 -0
- package/src/hooks/useRoutePathPattern.tsx +24 -0
- package/src/hooks/useVirtualHash.tsx +34 -0
- package/src/index.ts +85 -0
- package/src/interfaces/ICustomResourceSubComponent.ts +11 -0
- package/src/interfaces/IDashApplicationLayoutMainAction.ts +37 -0
- package/src/interfaces/IDashApplicationLayoutMenuItem.ts +24 -0
- package/src/interfaces/IDashAutoAdminAttribute.ts +104 -0
- package/src/interfaces/IDashAutoAdminCustomFieldComponent.ts +18 -0
- package/src/interfaces/IDashAutoAdminFormOptions.ts +22 -0
- package/src/interfaces/IDashAutoAdminListActions.ts +13 -0
- package/src/interfaces/IDashAutoAdminReference.ts +16 -0
- package/src/interfaces/IDashAutoAdminResourceConfig.ts +360 -0
- package/src/interfaces/IDashAutoForm.ts +24 -0
- package/src/interfaces/IDashAutoGridButton.ts +35 -0
- package/src/interfaces/IDashAutoShow.ts +12 -0
- package/src/interfaces/IGroupExtraData.ts +8 -0
- package/src/interfaces/IRecord.ts +7 -0
- package/src/interfaces/IReferenceFilter.ts +55 -0
- package/src/interfaces/IResourceComponent.ts +8 -0
- package/src/interfaces/IToolbarButton.ts +11 -0
- package/src/list/DashAutoListActions.tsx +88 -0
- package/src/list/DashAutoListDatagridWrapper.tsx +74 -0
- package/src/list/DashAutoListDefaultActionsWrapper.tsx +31 -0
- package/src/list/DashAutoListFilterFormWithButton.tsx +93 -0
- package/src/list/DashAutoListTopToolbar.tsx +240 -0
- package/src/mui/AttributeToField.tsx +657 -0
- package/src/mui/AttributeToInput.tsx +728 -0
- package/src/mui/AutoAdminResizableDrawer.tsx +69 -0
- package/src/mui/AutoDataGrid.tsx +127 -0
- package/src/mui/AutoReferenceFormTab.tsx +51 -0
- package/src/mui/AutoReferenceTab.tsx +45 -0
- package/src/mui/AutoTabs.tsx +32 -0
- package/src/mui/components/ExtendedPagination.tsx +23 -0
- package/src/mui/components/ListStringField.tsx +32 -0
- package/src/providers/DashAuthProvider.ts +341 -0
- package/src/providers/DashDataProvider.ts +466 -0
- package/src/providers/index.ts +17 -0
- package/src/toolbar/buttons/BottomToolbarButtons.tsx +59 -0
- package/src/toolbar/buttons/DashResourceButton.tsx +223 -0
- package/src/toolbar/buttons/ListButtons.tsx +137 -0
- package/src/toolbar/buttons/ToolbarButtons.tsx +186 -0
- package/src/utils/SimpleLogger.tsx +46 -0
- package/src/utils/enumToChoices.tsx +3 -0
- package/src/utils/evalActionPermission.tsx +14 -0
- package/src/utils/groupByTabs.tsx +23 -0
- package/src/utils/hashedGroupByTabs.tsx +16 -0
- package/src/utils/invertMap.tsx +10 -0
- package/src/utils/isClassComponent.tsx +9 -0
- package/src/utils/isComponent.tsx +45 -0
- package/src/utils/isEnum.tsx +3 -0
- package/src/utils/isFC.tsx +6 -0
- package/src/utils/replaceParams.tsx +6 -0
- package/src/utils/validate.tsx +24 -0
- package/src/wrappers/UserAction.tsx +67 -0
- package/src/wrappers/index.tsx +1 -0
- /package/{dist → src}/DashAutoAdminSaveButton.tsx.bkup +0 -0
- /package/{dist/DashAutoFormLayout.tsx.review → src/DashAutoFormLayout.tsx} +0 -0
- /package/{dist → src}/DashAutoFormTabs.review +0 -0
- /package/{dist → src}/DashAutoFormTabs.tsx.formcontext.wip +0 -0
- /package/{dist → src}/mui/AttributeToField.tsx.review +0 -0
- /package/{dist → src}/mui/AttributeToInput.tsx.review +0 -0
- /package/{dist → src}/react-admin.d.ts +0 -0
- /package/{dist → src}/types/ActionCallback.d.ts +0 -0
|
@@ -1 +1,63 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __objRest = (source, exclude) => {
|
|
21
|
+
var target = {};
|
|
22
|
+
for (var prop in source)
|
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
+
target[prop] = source[prop];
|
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
+
target[prop] = source[prop];
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
};
|
|
32
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
33
|
+
import { Drawer } from "@mui/material";
|
|
34
|
+
import React from "react";
|
|
35
|
+
const AutoAdminResizableDrawerContext = React.createContext(400);
|
|
36
|
+
const AutoAdminResizableDrawer = (_a) => {
|
|
37
|
+
var _b = _a, {
|
|
38
|
+
children,
|
|
39
|
+
defaultWidth
|
|
40
|
+
} = _b, props = __objRest(_b, [
|
|
41
|
+
"children",
|
|
42
|
+
"defaultWidth"
|
|
43
|
+
]);
|
|
44
|
+
const [drawerWidth, setDrawerWidth] = React.useState(defaultWidth);
|
|
45
|
+
const Dragger = () => {
|
|
46
|
+
return /* @__PURE__ */ jsx(Fragment, {});
|
|
47
|
+
};
|
|
48
|
+
return /* @__PURE__ */ jsx(
|
|
49
|
+
Drawer,
|
|
50
|
+
__spreadProps(__spreadValues({
|
|
51
|
+
PaperProps: { style: { width: drawerWidth } }
|
|
52
|
+
}, props), {
|
|
53
|
+
children: /* @__PURE__ */ jsxs(AutoAdminResizableDrawerContext.Provider, { value: drawerWidth, children: [
|
|
54
|
+
/* @__PURE__ */ jsx(Dragger, {}),
|
|
55
|
+
children
|
|
56
|
+
] })
|
|
57
|
+
})
|
|
58
|
+
);
|
|
59
|
+
};
|
|
60
|
+
export {
|
|
61
|
+
AutoAdminResizableDrawer,
|
|
62
|
+
AutoAdminResizableDrawerContext
|
|
63
|
+
};
|
package/dist/mui/AutoDataGrid.js
CHANGED
|
@@ -1 +1,120 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __objRest = (source, exclude) => {
|
|
21
|
+
var target = {};
|
|
22
|
+
for (var prop in source)
|
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
+
target[prop] = source[prop];
|
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
+
target[prop] = source[prop];
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
};
|
|
32
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
33
|
+
import { useMemo, memo } from "react";
|
|
34
|
+
import {
|
|
35
|
+
Datagrid,
|
|
36
|
+
FunctionField
|
|
37
|
+
} from "react-admin";
|
|
38
|
+
import { AttributeToField } from "./AttributeToField";
|
|
39
|
+
import { TableContainer } from "@mui/material";
|
|
40
|
+
import { ListDeleteButton, ListEditButton, ListViewButton } from "../toolbar/buttons/ListButtons";
|
|
41
|
+
const MemoizedListViewButton = memo(ListViewButton);
|
|
42
|
+
const MemoizedListEditButton = memo(ListEditButton);
|
|
43
|
+
const MemoizedListDeleteButton = memo(ListDeleteButton);
|
|
44
|
+
const AutoDataGrid = (_a) => {
|
|
45
|
+
var _b = _a, {
|
|
46
|
+
resourceConfig,
|
|
47
|
+
schema,
|
|
48
|
+
locale
|
|
49
|
+
} = _b, dataGridProps = __objRest(_b, [
|
|
50
|
+
"resourceConfig",
|
|
51
|
+
"schema",
|
|
52
|
+
"locale"
|
|
53
|
+
]);
|
|
54
|
+
var _a2;
|
|
55
|
+
const _locale = locale || (resourceConfig == null ? void 0 : resourceConfig.locale);
|
|
56
|
+
const _schema = (resourceConfig == null ? void 0 : resourceConfig.schema) || schema;
|
|
57
|
+
if (!_schema || !_schema.filter)
|
|
58
|
+
throw new Error(
|
|
59
|
+
"Schema must be present as prop or as an attribute of resourceConfig object, and must be iterable"
|
|
60
|
+
);
|
|
61
|
+
const schemaIncludesId = useMemo(
|
|
62
|
+
() => _schema.filter((attribute) => attribute.attribute === "id").length !== 0,
|
|
63
|
+
[_schema]
|
|
64
|
+
);
|
|
65
|
+
const processedDataGridProps = useMemo(() => __spreadValues(__spreadValues({}, resourceConfig.dataGridProps), dataGridProps), [resourceConfig.dataGridProps, dataGridProps]);
|
|
66
|
+
const filteredSchema = useMemo(
|
|
67
|
+
() => _schema.filter((attribute) => attribute.inList !== false),
|
|
68
|
+
[_schema, _locale]
|
|
69
|
+
);
|
|
70
|
+
const DefaultGridWrapper = memo((props) => {
|
|
71
|
+
const { children, className, gridWrapperProps } = props;
|
|
72
|
+
return /* @__PURE__ */ jsx(
|
|
73
|
+
TableContainer,
|
|
74
|
+
__spreadProps(__spreadValues({
|
|
75
|
+
sx: { mt: 1 },
|
|
76
|
+
className: "dash-datagrid-wrapper " + (className || "")
|
|
77
|
+
}, gridWrapperProps), {
|
|
78
|
+
children
|
|
79
|
+
})
|
|
80
|
+
);
|
|
81
|
+
});
|
|
82
|
+
const DataGridWrapper = resourceConfig.dataGridWrapper || DefaultGridWrapper;
|
|
83
|
+
const DataGridRootComponent = resourceConfig.dataGridRootComponent || Datagrid;
|
|
84
|
+
const customListButtons = useMemo(() => {
|
|
85
|
+
if (!(resourceConfig == null ? void 0 : resourceConfig.customListButtons)) return null;
|
|
86
|
+
return resourceConfig.customListButtons.map((customButtonConfig, idx) => /* @__PURE__ */ jsx(
|
|
87
|
+
customButtonConfig.component,
|
|
88
|
+
__spreadValues({}, customButtonConfig.props),
|
|
89
|
+
"list_custom_buttton" + idx
|
|
90
|
+
));
|
|
91
|
+
}, [resourceConfig == null ? void 0 : resourceConfig.customListButtons]);
|
|
92
|
+
return /* @__PURE__ */ jsx(DataGridWrapper, { className: ((_a2 = resourceConfig == null ? void 0 : resourceConfig.dataGridProps) == null ? void 0 : _a2.stickyHeader) ? "dash-sticky-header" : "", children: /* @__PURE__ */ jsxs(DataGridRootComponent, __spreadProps(__spreadValues({}, processedDataGridProps), { children: [
|
|
93
|
+
!schemaIncludesId && !(resourceConfig.hideSchemaId === true) && /* @__PURE__ */ jsx(
|
|
94
|
+
FunctionField,
|
|
95
|
+
{
|
|
96
|
+
source: "id",
|
|
97
|
+
sortable: true,
|
|
98
|
+
render: (record) => {
|
|
99
|
+
const val = record == null ? void 0 : record.id;
|
|
100
|
+
if (val && isNaN(Number(val))) {
|
|
101
|
+
return String(val).slice(-6);
|
|
102
|
+
}
|
|
103
|
+
return val;
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"default_id_field_0"
|
|
107
|
+
),
|
|
108
|
+
filteredSchema.map(
|
|
109
|
+
(attribute, idx) => AttributeToField("list", resourceConfig, attribute, idx)
|
|
110
|
+
),
|
|
111
|
+
/* @__PURE__ */ jsx(MemoizedListViewButton, { resourceConfig }, "list_view_btn"),
|
|
112
|
+
/* @__PURE__ */ jsx(MemoizedListEditButton, { resourceConfig }, "list_edit_btn"),
|
|
113
|
+
/* @__PURE__ */ jsx(MemoizedListDeleteButton, { resourceConfig }, "list_delete_btn"),
|
|
114
|
+
customListButtons
|
|
115
|
+
] })) });
|
|
116
|
+
};
|
|
117
|
+
var AutoDataGrid_default = AutoDataGrid;
|
|
118
|
+
export {
|
|
119
|
+
AutoDataGrid_default as default
|
|
120
|
+
};
|
|
@@ -1 +1,53 @@
|
|
|
1
|
-
import{jsx
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { FormTab, ReferenceManyField, ReferenceArrayField } from "react-admin";
|
|
3
|
+
import AutoDataGrid from "./AutoDataGrid";
|
|
4
|
+
import ExtendedPagination from "./components/ExtendedPagination";
|
|
5
|
+
const AutoReferenceFormTab = (reference) => {
|
|
6
|
+
const type = reference.type ? reference.type : "ReferenceManyField";
|
|
7
|
+
return /* @__PURE__ */ jsxs(
|
|
8
|
+
FormTab,
|
|
9
|
+
{
|
|
10
|
+
label: reference.tab || reference.reference,
|
|
11
|
+
children: [
|
|
12
|
+
type === "ReferenceManyField" && /* @__PURE__ */ jsx(
|
|
13
|
+
ReferenceManyField,
|
|
14
|
+
{
|
|
15
|
+
fullWidth: true,
|
|
16
|
+
reference: reference.reference,
|
|
17
|
+
target: reference.target,
|
|
18
|
+
pagination: /* @__PURE__ */ jsx(ExtendedPagination, {}),
|
|
19
|
+
children: /* @__PURE__ */ jsx(
|
|
20
|
+
AutoDataGrid,
|
|
21
|
+
{
|
|
22
|
+
schema: reference.schema
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
),
|
|
27
|
+
type === "ReferenceArrayField" && /* @__PURE__ */ jsxs(
|
|
28
|
+
ReferenceArrayField,
|
|
29
|
+
{
|
|
30
|
+
fullWidth: true,
|
|
31
|
+
reference: reference.reference,
|
|
32
|
+
source: reference.target,
|
|
33
|
+
pagination: /* @__PURE__ */ jsx(ExtendedPagination, {}),
|
|
34
|
+
children: [
|
|
35
|
+
" ",
|
|
36
|
+
/* @__PURE__ */ jsx(
|
|
37
|
+
AutoDataGrid,
|
|
38
|
+
{
|
|
39
|
+
schema: reference.schema
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
reference.reference
|
|
48
|
+
);
|
|
49
|
+
};
|
|
50
|
+
var AutoReferenceFormTab_default = AutoReferenceFormTab;
|
|
51
|
+
export {
|
|
52
|
+
AutoReferenceFormTab_default as default
|
|
53
|
+
};
|
|
@@ -1 +1,46 @@
|
|
|
1
|
-
import{jsx
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Tab, ReferenceManyField, ReferenceArrayField } from "react-admin";
|
|
3
|
+
import AutoDataGrid from "./AutoDataGrid";
|
|
4
|
+
import ExtendedPagination from "./components/ExtendedPagination";
|
|
5
|
+
const AutoReferenceTab = (reference) => {
|
|
6
|
+
const type = reference.type ? reference.type : "ReferenceManyField";
|
|
7
|
+
return /* @__PURE__ */ jsxs(Tab, { label: reference.tab || reference.reference, children: [
|
|
8
|
+
type === "ReferenceManyField" && /* @__PURE__ */ jsx(
|
|
9
|
+
ReferenceManyField,
|
|
10
|
+
{
|
|
11
|
+
fullWidth: true,
|
|
12
|
+
reference: reference.reference,
|
|
13
|
+
target: reference.target,
|
|
14
|
+
pagination: /* @__PURE__ */ jsx(ExtendedPagination, {}),
|
|
15
|
+
children: /* @__PURE__ */ jsx(
|
|
16
|
+
AutoDataGrid,
|
|
17
|
+
{
|
|
18
|
+
schema: reference == null ? void 0 : reference.schema,
|
|
19
|
+
bulkActions: reference == null ? void 0 : reference.BulkActions
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
}
|
|
23
|
+
),
|
|
24
|
+
type === "ReferenceArrayField" && /* @__PURE__ */ jsx(
|
|
25
|
+
ReferenceArrayField,
|
|
26
|
+
{
|
|
27
|
+
fullWidth: true,
|
|
28
|
+
reference: reference.reference,
|
|
29
|
+
source: reference.target,
|
|
30
|
+
pagination: /* @__PURE__ */ jsx(ExtendedPagination, {}),
|
|
31
|
+
children: /* @__PURE__ */ jsx(
|
|
32
|
+
AutoDataGrid,
|
|
33
|
+
{
|
|
34
|
+
schema: reference.schema,
|
|
35
|
+
bulkActions: reference == null ? void 0 : reference.BulkActions
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
] }, reference.reference);
|
|
41
|
+
};
|
|
42
|
+
var AutoReferenceTab_default = AutoReferenceTab;
|
|
43
|
+
export {
|
|
44
|
+
AutoReferenceTab,
|
|
45
|
+
AutoReferenceTab_default as default
|
|
46
|
+
};
|
package/dist/mui/AutoTabs.js
CHANGED
|
@@ -1 +1,19 @@
|
|
|
1
|
-
import{jsx
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Tab, useTranslate } from "react-admin";
|
|
3
|
+
import { AttributeToField } from "./AttributeToField";
|
|
4
|
+
import groupByTabs from "../utils/groupByTabs";
|
|
5
|
+
const AutoTabs = (resourceConfig, schema, options) => {
|
|
6
|
+
const translate = useTranslate();
|
|
7
|
+
return groupByTabs(schema).map((groupOfAttributes) => {
|
|
8
|
+
const label = groupOfAttributes[0].tab || (options == null ? void 0 : options.label) || "";
|
|
9
|
+
const translatedLabel = translate(`dash-auto-admin-tabs.${label}`, { _: label });
|
|
10
|
+
return /* @__PURE__ */ jsx(Tab, { label: translatedLabel, children: groupOfAttributes.filter((attribute) => (attribute == null ? void 0 : attribute.inShow) !== false).map(
|
|
11
|
+
(attribute, idx) => AttributeToField("view", resourceConfig, attribute, idx, options)
|
|
12
|
+
) }, "tab_" + label);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
var AutoTabs_default = AutoTabs;
|
|
16
|
+
export {
|
|
17
|
+
AutoTabs,
|
|
18
|
+
AutoTabs_default as default
|
|
19
|
+
};
|
|
@@ -1 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
18
|
+
import { useContext } from "react";
|
|
19
|
+
import { Pagination, ListContext } from "react-admin";
|
|
20
|
+
const useSafeListContext = () => {
|
|
21
|
+
const context = useContext(ListContext);
|
|
22
|
+
return context != null ? context : null;
|
|
23
|
+
};
|
|
24
|
+
const ExtendedPagination = (props) => {
|
|
25
|
+
const list = useSafeListContext();
|
|
26
|
+
return list && list.total > list.perPage ? (
|
|
27
|
+
// @ts-ignore - pageSizeOptions prop compatibility
|
|
28
|
+
/* @__PURE__ */ jsx(Pagination, __spreadValues({ pageSizeOptions: [25, 50, 100, 250, 500, 1e3] }, props))
|
|
29
|
+
) : /* @__PURE__ */ jsx(Fragment, {});
|
|
30
|
+
};
|
|
31
|
+
var ExtendedPagination_default = ExtendedPagination;
|
|
32
|
+
export {
|
|
33
|
+
ExtendedPagination_default as default
|
|
34
|
+
};
|
|
@@ -1 +1,25 @@
|
|
|
1
|
-
import{Fragment
|
|
1
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Chip } from "@mui/material";
|
|
3
|
+
import invertMap from "../../utils/invertMap";
|
|
4
|
+
const ListStringsField = ({
|
|
5
|
+
record,
|
|
6
|
+
source,
|
|
7
|
+
map
|
|
8
|
+
}) => {
|
|
9
|
+
const invertedMap = invertMap(map);
|
|
10
|
+
return /* @__PURE__ */ jsx(Fragment, { children: record[source].map((item) => [
|
|
11
|
+
/* @__PURE__ */ jsx(
|
|
12
|
+
Chip,
|
|
13
|
+
{
|
|
14
|
+
label: invertedMap && invertedMap[item] ? invertedMap[item] : item
|
|
15
|
+
},
|
|
16
|
+
item
|
|
17
|
+
),
|
|
18
|
+
/* @__PURE__ */ jsx(Fragment, { children: " " })
|
|
19
|
+
]) });
|
|
20
|
+
};
|
|
21
|
+
ListStringsField.defaultProps = { addLabel: true };
|
|
22
|
+
var ListStringField_default = ListStringsField;
|
|
23
|
+
export {
|
|
24
|
+
ListStringField_default as default
|
|
25
|
+
};
|
|
@@ -1 +1,215 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __async = (__this, __arguments, generator) => {
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
var fulfilled = (value) => {
|
|
23
|
+
try {
|
|
24
|
+
step(generator.next(value));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
reject(e);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var rejected = (value) => {
|
|
30
|
+
try {
|
|
31
|
+
step(generator.throw(value));
|
|
32
|
+
} catch (e) {
|
|
33
|
+
reject(e);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const createDashAuthProvider = (config, overrides = {}) => {
|
|
41
|
+
const {
|
|
42
|
+
useAxios,
|
|
43
|
+
storage,
|
|
44
|
+
authPersistence,
|
|
45
|
+
syncToDeviceStore,
|
|
46
|
+
syncFromDeviceStore,
|
|
47
|
+
setAuthEvent,
|
|
48
|
+
logoutFromStorage,
|
|
49
|
+
getAuthEndpoint,
|
|
50
|
+
guestRole = { name: "guest" },
|
|
51
|
+
enableTenantImpersonation = false
|
|
52
|
+
} = config;
|
|
53
|
+
const defaultProvider = {
|
|
54
|
+
login: (_0) => __async(null, [_0], function* ({ username, password }) {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
yield syncFromDeviceStore();
|
|
57
|
+
const axios = useAxios();
|
|
58
|
+
if (!(username && password)) {
|
|
59
|
+
return Promise.reject();
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const loginResponse = yield axios.post("/login", {
|
|
63
|
+
email: username,
|
|
64
|
+
password
|
|
65
|
+
});
|
|
66
|
+
if (loginResponse.status >= 200 && loginResponse.status <= 299) {
|
|
67
|
+
const redirectTo = loginResponse.data.redirectTo;
|
|
68
|
+
if (loginResponse.data !== "") {
|
|
69
|
+
storage.setItem("token", loginResponse.data.token);
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const { data: auth } = yield axios.get(getAuthEndpoint());
|
|
73
|
+
authPersistence.saveAuth(auth);
|
|
74
|
+
storage.setItem("authenticated", "true");
|
|
75
|
+
storage.setItem("user", JSON.stringify(auth.user));
|
|
76
|
+
storage.setItem(
|
|
77
|
+
"roles",
|
|
78
|
+
((_a = auth.user) == null ? void 0 : _a.roles) ? JSON.stringify(auth.user.roles) : JSON.stringify(guestRole)
|
|
79
|
+
);
|
|
80
|
+
if (setAuthEvent) {
|
|
81
|
+
setAuthEvent({
|
|
82
|
+
authenticated: true,
|
|
83
|
+
user: auth.user,
|
|
84
|
+
auth: auth.auth,
|
|
85
|
+
token: loginResponse.data.token,
|
|
86
|
+
roles: (_b = auth.user) == null ? void 0 : _b.roles
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
yield syncToDeviceStore();
|
|
90
|
+
if (redirectTo) {
|
|
91
|
+
return Promise.resolve({ redirectTo });
|
|
92
|
+
} else {
|
|
93
|
+
return Promise.resolve(auth);
|
|
94
|
+
}
|
|
95
|
+
} catch (error) {
|
|
96
|
+
console.error("Error getting user auth data");
|
|
97
|
+
yield logoutFromStorage("login get auth error");
|
|
98
|
+
return Promise.reject(error);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error(error);
|
|
103
|
+
yield logoutFromStorage("login error logout");
|
|
104
|
+
return Promise.reject(error);
|
|
105
|
+
}
|
|
106
|
+
yield logoutFromStorage("login default error logout");
|
|
107
|
+
return Promise.reject();
|
|
108
|
+
}),
|
|
109
|
+
logout: (params) => __async(null, null, function* () {
|
|
110
|
+
yield logoutFromStorage("logout");
|
|
111
|
+
return Promise.resolve("/login");
|
|
112
|
+
}),
|
|
113
|
+
getIdentity: () => __async(null, null, function* () {
|
|
114
|
+
var _a, _b, _c, _d;
|
|
115
|
+
const axios = useAxios();
|
|
116
|
+
const token = storage.getItem("token");
|
|
117
|
+
if (!token) {
|
|
118
|
+
return Promise.reject("No token present");
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
const { data: auth } = yield axios.get(getAuthEndpoint());
|
|
122
|
+
storage.setItem(
|
|
123
|
+
"roles",
|
|
124
|
+
((_a = auth.user) == null ? void 0 : _a.roles) ? JSON.stringify(auth.user.roles) : JSON.stringify(guestRole)
|
|
125
|
+
);
|
|
126
|
+
storage.setItem("authenticated", "true");
|
|
127
|
+
storage.setItem("user", JSON.stringify(auth.user));
|
|
128
|
+
if (enableTenantImpersonation && ((_b = auth.user) == null ? void 0 : _b.tenant_id)) {
|
|
129
|
+
storage.setItem("tenant_id", (_c = auth.user) == null ? void 0 : _c.tenant_id);
|
|
130
|
+
storage.setItem("user_id", (_d = auth.user) == null ? void 0 : _d.id);
|
|
131
|
+
}
|
|
132
|
+
return yield Promise.resolve(auth);
|
|
133
|
+
} catch (error) {
|
|
134
|
+
yield logoutFromStorage("get identity error logout");
|
|
135
|
+
return Promise.reject(error);
|
|
136
|
+
} finally {
|
|
137
|
+
yield syncToDeviceStore();
|
|
138
|
+
}
|
|
139
|
+
}),
|
|
140
|
+
checkAuth: () => __async(null, null, function* () {
|
|
141
|
+
const isAuthenticated = JSON.parse(storage.getItem("authenticated") || "false");
|
|
142
|
+
const user = JSON.parse(storage.getItem("user") || "null");
|
|
143
|
+
if (isAuthenticated && (user == null ? void 0 : user.id)) {
|
|
144
|
+
const persistedAuth = authPersistence.getAuth();
|
|
145
|
+
if (persistedAuth) {
|
|
146
|
+
return Promise.resolve();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return Promise.reject();
|
|
150
|
+
}),
|
|
151
|
+
checkError: (error) => {
|
|
152
|
+
var _a, _b, _c, _d, _e;
|
|
153
|
+
const errorStatus = (_a = error == null ? void 0 : error.response) == null ? void 0 : _a.status;
|
|
154
|
+
window.dispatchEvent(
|
|
155
|
+
new MessageEvent("dash-global-loader", { data: false })
|
|
156
|
+
);
|
|
157
|
+
if (errorStatus) {
|
|
158
|
+
const errors = {};
|
|
159
|
+
switch (errorStatus) {
|
|
160
|
+
case 400:
|
|
161
|
+
case 401:
|
|
162
|
+
case 403:
|
|
163
|
+
case 500:
|
|
164
|
+
window.dispatchEvent(
|
|
165
|
+
new MessageEvent("GlobalError", {
|
|
166
|
+
data: { error: error.response.data || error }
|
|
167
|
+
})
|
|
168
|
+
);
|
|
169
|
+
return Promise.resolve();
|
|
170
|
+
case 422:
|
|
171
|
+
case 409:
|
|
172
|
+
errors.error = "An undefined error occurred, please try again later";
|
|
173
|
+
if ((_b = error.response.data) == null ? void 0 : _b.errors) {
|
|
174
|
+
Object.keys((_c = error.response.data) == null ? void 0 : _c.errors).forEach((key) => {
|
|
175
|
+
var _a2;
|
|
176
|
+
errors[key] = (_a2 = error.response.data) == null ? void 0 : _a2.errors[key].join(" , ");
|
|
177
|
+
});
|
|
178
|
+
} else if ((_d = error.response.data) == null ? void 0 : _d.message) {
|
|
179
|
+
errors.error = (_e = error.response.data) == null ? void 0 : _e.message;
|
|
180
|
+
}
|
|
181
|
+
window.dispatchEvent(
|
|
182
|
+
new MessageEvent("GlobalError", { data: { error: errors } })
|
|
183
|
+
);
|
|
184
|
+
return Promise.resolve();
|
|
185
|
+
default:
|
|
186
|
+
window.dispatchEvent(
|
|
187
|
+
new MessageEvent("GlobalError", {
|
|
188
|
+
data: { error: error.response.data || error }
|
|
189
|
+
})
|
|
190
|
+
);
|
|
191
|
+
return Promise.resolve();
|
|
192
|
+
}
|
|
193
|
+
} else {
|
|
194
|
+
const _errors = {};
|
|
195
|
+
Object.keys(error).forEach((key) => {
|
|
196
|
+
_errors[key] = Array.isArray(error[key]) ? error[key].join(" , ") : error[key];
|
|
197
|
+
});
|
|
198
|
+
return Promise.resolve();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
return __spreadProps(__spreadValues(__spreadValues({}, defaultProvider), overrides), {
|
|
203
|
+
// Ensure required methods are always present
|
|
204
|
+
login: overrides.login || defaultProvider.login,
|
|
205
|
+
logout: overrides.logout || defaultProvider.logout,
|
|
206
|
+
checkAuth: overrides.checkAuth || defaultProvider.checkAuth,
|
|
207
|
+
checkError: overrides.checkError || defaultProvider.checkError,
|
|
208
|
+
getIdentity: overrides.getIdentity || defaultProvider.getIdentity
|
|
209
|
+
});
|
|
210
|
+
};
|
|
211
|
+
var DashAuthProvider_default = createDashAuthProvider;
|
|
212
|
+
export {
|
|
213
|
+
createDashAuthProvider,
|
|
214
|
+
DashAuthProvider_default as default
|
|
215
|
+
};
|