@dashadmin/dash-auto-admin 1.3.25 → 1.3.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/dist/DashAutoAdminComponentRegistry.js +64 -1
  2. package/dist/DashAutoAdminForm.js +137 -1
  3. package/dist/DashAutoAdminResizableDrawer.js +63 -1
  4. package/dist/DashAutoAdminSaveButton.js +57 -1
  5. package/dist/DashAutoCreate.js +102 -1
  6. package/dist/DashAutoDrawer.js +256 -1
  7. package/dist/DashAutoEdit.js +99 -1
  8. package/dist/DashAutoFiltersGenerator.js +193 -1
  9. package/dist/DashAutoFormGroups.js +118 -1
  10. package/dist/DashAutoFormLayout.js +68 -1
  11. package/dist/DashAutoFormMuiTabs.js +291 -1
  12. package/dist/DashAutoFormTabs.js +132 -1
  13. package/dist/DashAutoGroup.js +27 -1
  14. package/dist/DashAutoLayout.js +31 -1
  15. package/dist/DashAutoList.js +218 -1
  16. package/dist/DashAutoPostFilterForm.js +47 -1
  17. package/dist/DashAutoReferenceTab.js +10 -1
  18. package/dist/DashAutoResource.js +77 -1
  19. package/dist/DashAutoResourceLayout.js +16 -1
  20. package/dist/DashAutoShow.js +195 -1
  21. package/dist/DashAutoTabbedForm.js +244 -1
  22. package/dist/DashAutoTabbedForm.review.js +221 -1
  23. package/dist/DashAutoTabs.js +11 -1
  24. package/dist/DashFilterWrapper.js +62 -1
  25. package/dist/DashRedirect.js +56 -1
  26. package/dist/TabbedLayout.js +38 -1
  27. package/dist/common/DashAutoTitle.js +33 -1
  28. package/dist/common/components/FabButton.js +59 -1
  29. package/dist/common/components/TranslatedLabel.js +60 -1
  30. package/dist/common/settings/Settings.js +196 -1
  31. package/dist/common/settings/SettingsBarIcons.js +61 -1
  32. package/dist/context/DashAutoAdminFormContext.js +15 -1
  33. package/dist/hooks/useAutoAdminLoadingStateMediator.js +36 -1
  34. package/dist/hooks/useAutoAdminTranslate.js +61 -1
  35. package/dist/hooks/useHash.js +24 -1
  36. package/dist/hooks/useLogger.js +20 -1
  37. package/dist/hooks/useRoutePathPattern.js +20 -1
  38. package/dist/hooks/useVirtualHash.js +28 -1
  39. package/dist/index.js +77 -3406
  40. package/dist/list/DashAutoListActions.js +57 -1
  41. package/dist/list/DashAutoListDatagridWrapper.js +68 -1
  42. package/dist/list/DashAutoListDefaultActionsWrapper.js +14 -1
  43. package/dist/list/DashAutoListFilterFormWithButton.js +80 -1
  44. package/dist/list/DashAutoListTopToolbar.js +180 -1
  45. package/dist/mui/AttributeToField.js +576 -1
  46. package/dist/mui/AttributeToInput.js +630 -1
  47. package/dist/mui/AutoAdminResizableDrawer.js +63 -1
  48. package/dist/mui/AutoDataGrid.js +120 -1
  49. package/dist/mui/AutoReferenceFormTab.js +53 -1
  50. package/dist/mui/AutoReferenceTab.js +46 -1
  51. package/dist/mui/AutoTabs.js +19 -1
  52. package/dist/mui/components/ExtendedPagination.js +34 -1
  53. package/dist/mui/components/ListStringField.js +25 -1
  54. package/dist/providers/DashAuthProvider.js +215 -1
  55. package/dist/providers/DashDataProvider.js +310 -1
  56. package/dist/providers/index.js +10 -1
  57. package/dist/react-admin.d.js +0 -0
  58. package/dist/toolbar/buttons/BottomToolbarButtons.js +65 -1
  59. package/dist/toolbar/buttons/DashResourceButton.js +181 -1
  60. package/dist/toolbar/buttons/ListButtons.js +80 -1
  61. package/dist/toolbar/buttons/ToolbarButtons.js +135 -1
  62. package/dist/types/ActionCallback.d.js +0 -0
  63. package/dist/utils/SimpleLogger.js +52 -1
  64. package/dist/utils/enumToChoices.js +5 -1
  65. package/dist/utils/evalActionPermission.js +11 -1
  66. package/dist/utils/groupByTabs.js +21 -1
  67. package/dist/utils/hashedGroupByTabs.js +12 -1
  68. package/dist/utils/invertMap.js +12 -1
  69. package/dist/utils/isClassComponent.js +7 -1
  70. package/dist/utils/isComponent.js +29 -1
  71. package/dist/utils/isEnum.js +5 -1
  72. package/dist/utils/isFC.js +8 -1
  73. package/dist/utils/replaceParams.js +9 -1
  74. package/dist/utils/validate.js +19 -1
  75. package/dist/wrappers/UserAction.js +60 -1
  76. package/dist/wrappers/index.js +4 -1
  77. package/package.json +135 -120
  78. package/src/DashAutoAdminComponentRegistry.tsx +75 -0
  79. package/src/DashAutoAdminForm.tsx +155 -0
  80. package/src/DashAutoAdminResizableDrawer.tsx +69 -0
  81. package/src/DashAutoAdminSaveButton.tsx +116 -0
  82. package/src/DashAutoCreate.tsx +118 -0
  83. package/src/DashAutoDrawer.tsx +288 -0
  84. package/src/DashAutoEdit.tsx +109 -0
  85. package/src/DashAutoFiltersGenerator.tsx +208 -0
  86. package/src/DashAutoFormGroups.tsx +146 -0
  87. package/src/DashAutoFormLayout.tsx.review +113 -0
  88. package/src/DashAutoFormMuiTabs.tsx +368 -0
  89. package/src/DashAutoFormTabs.tsx +177 -0
  90. package/src/DashAutoGroup.tsx +42 -0
  91. package/src/DashAutoLayout.tsx +57 -0
  92. package/src/DashAutoList.tsx +237 -0
  93. package/src/DashAutoPostFilterForm.tsx +35 -0
  94. package/src/DashAutoReferenceTab.tsx +9 -0
  95. package/src/DashAutoResource.tsx +85 -0
  96. package/src/DashAutoResourceLayout.tsx +50 -0
  97. package/src/DashAutoShow.tsx +200 -0
  98. package/src/DashAutoTabbedForm.review.tsx +262 -0
  99. package/src/DashAutoTabbedForm.tsx +324 -0
  100. package/src/DashAutoTabs.tsx +19 -0
  101. package/src/DashFilterWrapper.tsx +43 -0
  102. package/src/DashRedirect.tsx +46 -0
  103. package/src/TabbedLayout.tsx +29 -0
  104. package/src/common/DashAutoTitle.tsx +24 -0
  105. package/src/common/components/FabButton.tsx +40 -0
  106. package/src/common/components/TranslatedLabel.tsx +81 -0
  107. package/src/common/settings/Settings.tsx +236 -0
  108. package/src/common/settings/SettingsBarIcons.tsx +72 -0
  109. package/src/context/DashAutoAdminFormContext.tsx +31 -0
  110. package/src/hooks/useAutoAdminLoadingStateMediator.tsx +42 -0
  111. package/src/hooks/useAutoAdminTranslate.tsx +106 -0
  112. package/src/hooks/useHash.tsx +27 -0
  113. package/src/hooks/useLogger.tsx +23 -0
  114. package/src/hooks/useRoutePathPattern.tsx +24 -0
  115. package/src/hooks/useVirtualHash.tsx +34 -0
  116. package/src/index.ts +85 -0
  117. package/src/interfaces/ICustomResourceSubComponent.ts +11 -0
  118. package/src/interfaces/IDashApplicationLayoutMainAction.ts +37 -0
  119. package/src/interfaces/IDashApplicationLayoutMenuItem.ts +24 -0
  120. package/src/interfaces/IDashAutoAdminAttribute.ts +104 -0
  121. package/src/interfaces/IDashAutoAdminCustomFieldComponent.ts +18 -0
  122. package/src/interfaces/IDashAutoAdminFormOptions.ts +22 -0
  123. package/src/interfaces/IDashAutoAdminListActions.ts +13 -0
  124. package/src/interfaces/IDashAutoAdminReference.ts +16 -0
  125. package/src/interfaces/IDashAutoAdminResourceConfig.ts +360 -0
  126. package/src/interfaces/IDashAutoForm.ts +24 -0
  127. package/src/interfaces/IDashAutoGridButton.ts +35 -0
  128. package/src/interfaces/IDashAutoShow.ts +12 -0
  129. package/src/interfaces/IGroupExtraData.ts +8 -0
  130. package/src/interfaces/IRecord.ts +7 -0
  131. package/src/interfaces/IReferenceFilter.ts +55 -0
  132. package/src/interfaces/IResourceComponent.ts +8 -0
  133. package/src/interfaces/IToolbarButton.ts +11 -0
  134. package/src/list/DashAutoListActions.tsx +88 -0
  135. package/src/list/DashAutoListDatagridWrapper.tsx +74 -0
  136. package/src/list/DashAutoListDefaultActionsWrapper.tsx +31 -0
  137. package/src/list/DashAutoListFilterFormWithButton.tsx +93 -0
  138. package/src/list/DashAutoListTopToolbar.tsx +240 -0
  139. package/src/mui/AttributeToField.tsx +657 -0
  140. package/src/mui/AttributeToInput.tsx +728 -0
  141. package/src/mui/AutoAdminResizableDrawer.tsx +69 -0
  142. package/src/mui/AutoDataGrid.tsx +127 -0
  143. package/src/mui/AutoReferenceFormTab.tsx +51 -0
  144. package/src/mui/AutoReferenceTab.tsx +45 -0
  145. package/src/mui/AutoTabs.tsx +32 -0
  146. package/src/mui/components/ExtendedPagination.tsx +23 -0
  147. package/src/mui/components/ListStringField.tsx +32 -0
  148. package/src/providers/DashAuthProvider.ts +341 -0
  149. package/src/providers/DashDataProvider.ts +466 -0
  150. package/src/providers/index.ts +17 -0
  151. package/src/toolbar/buttons/BottomToolbarButtons.tsx +59 -0
  152. package/src/toolbar/buttons/DashResourceButton.tsx +223 -0
  153. package/src/toolbar/buttons/ListButtons.tsx +137 -0
  154. package/src/toolbar/buttons/ToolbarButtons.tsx +186 -0
  155. package/src/utils/SimpleLogger.tsx +46 -0
  156. package/src/utils/enumToChoices.tsx +3 -0
  157. package/src/utils/evalActionPermission.tsx +14 -0
  158. package/src/utils/groupByTabs.tsx +23 -0
  159. package/src/utils/hashedGroupByTabs.tsx +16 -0
  160. package/src/utils/invertMap.tsx +10 -0
  161. package/src/utils/isClassComponent.tsx +9 -0
  162. package/src/utils/isComponent.tsx +45 -0
  163. package/src/utils/isEnum.tsx +3 -0
  164. package/src/utils/isFC.tsx +6 -0
  165. package/src/utils/replaceParams.tsx +6 -0
  166. package/src/utils/validate.tsx +24 -0
  167. package/src/wrappers/UserAction.tsx +67 -0
  168. package/src/wrappers/index.tsx +1 -0
  169. /package/{dist → src}/DashAutoAdminSaveButton.tsx.bkup +0 -0
  170. /package/{dist/DashAutoFormLayout.tsx.review → src/DashAutoFormLayout.tsx} +0 -0
  171. /package/{dist → src}/DashAutoFormTabs.review +0 -0
  172. /package/{dist → src}/DashAutoFormTabs.tsx.formcontext.wip +0 -0
  173. /package/{dist → src}/mui/AttributeToField.tsx.review +0 -0
  174. /package/{dist → src}/mui/AttributeToInput.tsx.review +0 -0
  175. /package/{dist → src}/react-admin.d.ts +0 -0
  176. /package/{dist → src}/types/ActionCallback.d.ts +0 -0
@@ -1 +1,63 @@
1
- import{Fragment as w,jsx as e,jsxs as D}from"react/jsx-runtime";import{Drawer as d}from"@mui/material";import t from"react";const n=t.createContext(400),u=({children:a,defaultWidth:o,...s})=>{const[r,l]=t.useState(o),i=()=>e(w,{});return e(d,{PaperProps:{style:{width:r}},...s,children:D(n.Provider,{value:r,children:[e(i,{}),a]})})};export{u as AutoAdminResizableDrawer,n as AutoAdminResizableDrawerContext};
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
+ };
@@ -1 +1,120 @@
1
- import{jsx as r,jsxs as F}from"react/jsx-runtime";import{useMemo as o,memo as s}from"react";import{Datagrid as _,FunctionField as y}from"react-admin";import{AttributeToField as L}from"./AttributeToField";import{TableContainer as R}from"@mui/material";import{ListDeleteButton as I,ListEditButton as N,ListViewButton as B}from"../toolbar/buttons/ListButtons";const k=s(B),P=s(N),w=s(I),W=({resourceConfig:t,schema:n,locale:m,...d})=>{const c=m||t?.locale,i=t?.schema||n;if(!i||!i.filter)throw new Error("Schema must be present as prop or as an attribute of resourceConfig object, and must be iterable");const l=o(()=>i.filter(e=>e.attribute==="id").length!==0,[i]),p=o(()=>({...t.dataGridProps,...d}),[t.dataGridProps,d]),u=o(()=>i.filter(e=>e.inList!==!1),[i,c]),h=s(e=>{const{children:a,className:f,gridWrapperProps:G}=e;return r(R,{sx:{mt:1},className:"dash-datagrid-wrapper "+(f||""),...G,children:a})}),A=t.dataGridWrapper||h,D=t.dataGridRootComponent||_,b=o(()=>t?.customListButtons?t.customListButtons.map((e,a)=>r(e.component,{...e.props},"list_custom_buttton"+a)):null,[t?.customListButtons]);return r(A,{className:t?.dataGridProps?.stickyHeader?"dash-sticky-header":"",children:F(D,{...p,children:[!l&&t.hideSchemaId!==!0&&r(y,{source:"id",sortable:!0,render:e=>{const a=e?.id;return a&&isNaN(Number(a))?String(a).slice(-6):a}},"default_id_field_0"),u.map((e,a)=>L("list",t,e,a)),r(k,{resourceConfig:t},"list_view_btn"),r(P,{resourceConfig:t},"list_edit_btn"),r(w,{resourceConfig:t},"list_delete_btn"),b]})})};var J=W;export{J as default};
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 as a,jsxs as o}from"react/jsx-runtime";import{FormTab as i,ReferenceManyField as l,ReferenceArrayField as d}from"react-admin";import r from"./AutoDataGrid";import n from"./components/ExtendedPagination";const f=e=>{const t=e.type?e.type:"ReferenceManyField";return o(i,{label:e.tab||e.reference,children:[t==="ReferenceManyField"&&a(l,{fullWidth:!0,reference:e.reference,target:e.target,pagination:a(n,{}),children:a(r,{schema:e.schema})}),t==="ReferenceArrayField"&&o(d,{fullWidth:!0,reference:e.reference,source:e.target,pagination:a(n,{}),children:[" ",a(r,{schema:e.schema})]})]},e.reference)};var g=f;export{g as default};
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 as t,jsxs as c}from"react/jsx-runtime";import{Tab as n,ReferenceManyField as o,ReferenceArrayField as l}from"react-admin";import r from"./AutoDataGrid";import i from"./components/ExtendedPagination";const d=e=>{const a=e.type?e.type:"ReferenceManyField";return c(n,{label:e.tab||e.reference,children:[a==="ReferenceManyField"&&t(o,{fullWidth:!0,reference:e.reference,target:e.target,pagination:t(i,{}),children:t(r,{schema:e?.schema,bulkActions:e?.BulkActions})}),a==="ReferenceArrayField"&&t(l,{fullWidth:!0,reference:e.reference,source:e.target,pagination:t(i,{}),children:t(r,{schema:e.schema,bulkActions:e?.BulkActions})})]},e.reference)};var p=d;export{d as AutoReferenceTab,p as default};
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
+ };
@@ -1 +1,19 @@
1
- import{jsx as p}from"react/jsx-runtime";import{Tab as u,useTranslate as A}from"react-admin";import{AttributeToField as l}from"./AttributeToField";import b from"../utils/groupByTabs";const d=(e,m,a)=>{const i=A();return b(m).map(r=>{const t=r[0].tab||a?.label||"",s=i(`dash-auto-admin-tabs.${t}`,{_:t});return p(u,{label:s,children:r.filter(o=>o?.inShow!==!1).map((o,n)=>l("view",e,o,n,a))},"tab_"+t)})};var y=d;export{d as AutoTabs,y as default};
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
- import{Fragment as p,jsx as n}from"react/jsx-runtime";import{useContext as e}from"react";import{Pagination as i,ListContext as a}from"react-admin";const r=()=>e(a)??null,s=o=>{const t=r();return t&&t.total>t.perPage?n(i,{pageSizeOptions:[25,50,100,250,500,1e3],...o}):n(p,{})};var m=s;export{m as default};
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 as e,jsx as a}from"react/jsx-runtime";import{Chip as l}from"@mui/material";import s from"../../utils/invertMap";const o=({record:n,source:p,map:i})=>{const t=s(i);return a(e,{children:n[p].map(r=>[a(l,{label:t&&t[r]?t[r]:r},r),a(e,{children:" "})])})};o.defaultProps={addLabel:!0};var m=o;export{m as default};
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
- const f=(y,n={})=>{const{useAxios:c,storage:s,authPersistence:d,syncToDeviceStore:l,syncFromDeviceStore:P,setAuthEvent:g,logoutFromStorage:u,getAuthEndpoint:h,guestRole:m={name:"guest"},enableTenantImpersonation:A=!1}=y,i={login:async({username:e,password:a})=>{await P();const t=c();if(!(e&&a))return Promise.reject();try{const r=await t.post("/login",{email:e,password:a});if(r.status>=200&&r.status<=299){const v=r.data.redirectTo;r.data!==""&&s.setItem("token",r.data.token);try{const{data:o}=await t.get(h());return d.saveAuth(o),s.setItem("authenticated","true"),s.setItem("user",JSON.stringify(o.user)),s.setItem("roles",o.user?.roles?JSON.stringify(o.user.roles):JSON.stringify(m)),g&&g({authenticated:!0,user:o.user,auth:o.auth,token:r.data.token,roles:o.user?.roles}),await l(),v?Promise.resolve({redirectTo:v}):Promise.resolve(o)}catch(o){return console.error("Error getting user auth data"),await u("login get auth error"),Promise.reject(o)}}}catch(r){return console.error(r),await u("login error logout"),Promise.reject(r)}return await u("login default error logout"),Promise.reject()},logout:async e=>(await u("logout"),Promise.resolve("/login")),getIdentity:async()=>{const e=c();if(!s.getItem("token"))return Promise.reject("No token present");try{const{data:t}=await e.get(h());return s.setItem("roles",t.user?.roles?JSON.stringify(t.user.roles):JSON.stringify(m)),s.setItem("authenticated","true"),s.setItem("user",JSON.stringify(t.user)),A&&t.user?.tenant_id&&(s.setItem("tenant_id",t.user?.tenant_id),s.setItem("user_id",t.user?.id)),await Promise.resolve(t)}catch(t){return await u("get identity error logout"),Promise.reject(t)}finally{await l()}},checkAuth:async()=>{const e=JSON.parse(s.getItem("authenticated")||"false"),a=JSON.parse(s.getItem("user")||"null");return e&&a?.id&&d.getAuth()?Promise.resolve():Promise.reject()},checkError:e=>{const a=e?.response?.status;if(window.dispatchEvent(new MessageEvent("dash-global-loader",{data:!1})),a){const t={};switch(a){case 400:case 401:case 403:case 500:return window.dispatchEvent(new MessageEvent("GlobalError",{data:{error:e.response.data||e}})),Promise.resolve();case 422:case 409:return t.error="An undefined error occurred, please try again later",e.response.data?.errors?Object.keys(e.response.data?.errors).forEach(r=>{t[r]=e.response.data?.errors[r].join(" , ")}):e.response.data?.message&&(t.error=e.response.data?.message),window.dispatchEvent(new MessageEvent("GlobalError",{data:{error:t}})),Promise.resolve();default:return window.dispatchEvent(new MessageEvent("GlobalError",{data:{error:e.response.data||e}})),Promise.resolve()}}else{const t={};return Object.keys(e).forEach(r=>{t[r]=Array.isArray(e[r])?e[r].join(" , "):e[r]}),Promise.resolve()}}};return{...i,...n,login:n.login||i.login,logout:n.logout||i.logout,checkAuth:n.checkAuth||i.checkAuth,checkError:n.checkError||i.checkError,getIdentity:n.getIdentity||i.getIdentity}};var p=f;export{f as createDashAuthProvider,p as default};
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
+ };